Skip to main content
    All projects

    Kanban Board

    Active

    Interactive task board with drag-and-drop. Create, organize, and share your boards via URL.

    Productivity
    React
    dnd-kit
    Drag cards between columns.

    Ideas

    5

    Draft plans and attach them, then move to To Do

    LogQL / CloudWatch Insights Builder

    Visual query builder for LogQL and CloudWatch Insights. Language toggle, stream selectors, pipeline stages, and presets for common queries.

    Medium
    SRE
    Tool

    Metric Naming Linter

    Lint metric names against Prometheus/OTel conventions. Severity-coded issues, auto-fix suggestions, bulk apply and export.

    Small
    SRE
    Tool

    React Component X-ray

    Analyze React code to visualize component trees. Flag render anti-patterns (inline functions, missing keys, unstable deps).

    Medium
    Learning
    Tool

    Prometheus Recording Rules Generator

    Generate recording rules from PromQL queries. Naming conventions, analysis hints, YAML export with presets for HTTP/K8s rules.

    Medium
    SRE
    Tool

    Regex Log Parser

    Build regex parsing rules interactively. Highlight fields, live matching preview, export to grok/Logstash/Fluent Bit/Vector formats.

    Medium
    SRE
    Tool

    To Do

    0

    Planned tasks ready to start

    In Progress

    0

    In Review

    0

    Change Log

    83

    Blog: The Indexing Audit That Found a Redirect Loop

    Google Search Console reported seven flavors of indexing trouble. Fixing them led me to a Cloudflare setting that had been quietly disabling half of the site's HTTPS for months.

    Blog

    redirect stale 2025 blog URLs + align home canonical [skip-review]

    Search Console flagged real issues uncovered after PR #301 deployed: - 5 blog posts with legacy 2025-MM-DD URLs were renamed to 2026-MM-DD without redirects, so Google was hitting genuine 404s. Add explicit static redirects to their canonical 2026 counterparts (or their custom-slug canonical for the two posts that have one). - Home page <Seo> didn't pass a url prop, so the canonical rendered as https://dylanbochman.com (no trailing slash) while the sitemap advertises https://dylanbochman.com/. The mismatch likely triggered the Soft 404 classification on home-page URL variants. Pass url="/" so the canonical exactly matches the sitemap entry. After deploy, the Not Found (404) bucket should validate cleanly and the Soft 404 bucket should converge once Enforce HTTPS is also on in the repo Pages settings. Co-authored-by: Claude Opus 4.7 (1M context) <[email protected]>

    Bugfix
    PR #302

    align prerender + sitemap, add trailing-slash and legacy redirects

    Fixes the route generation issues behind the Search Console indexing buckets by aligning sitemap URLs, prerendered artifacts, and canonical tags. - prerender sitemap-facing routes as slashless `.html` files for GitHub Pages - emit static meta-refresh artifacts for every trailing-slash variant and legacy slug (manifest-driven blog aliases + a small hardcoded list in `src/data/seo-redirects.json`) - omit draft projects from the sitemap; use the generated blog manifest so custom slugs receive real prerendered pages - move canonical URL generation into the React SEO component to avoid duplicate/root canonicals - add `verify-seo-routes` as a pre-deploy gate (canonical artifacts + matching trailing-slash and legacy redirects, derived from sitemap and `seo-redirects.json`) - add `smoke-live-routes` in a separate post-deploy job that polls `/build-info.json` for the new build's sha, then verifies live routes serve real content or the expected redirect — catches any GitHub Pages serving regression that pure dist checks can't see 🤖 Generated with [Claude Code](https://claude.com/claude-code)

    Bugfix

    restore "Supply Chain" in title

    "Two Attacks in One Day" was too generic without the security framing.

    retitle and tighten voice

    - Retitle to "Two Attacks in One Day"; the previous parenthetical was the AI-flavored part - Break the rule-of-three opener - Replace five em dashes with periods or parens - Vary the engineered subheader parallelism in "What we changed" - Rewrite "What I keep thinking about" as "What stuck"; cut the meta-introspection and the prior-post callback that restated points already made in the body - Drop dramatic flourishes ("The economics changed", "the most underestimated attack vector") slop-guard score unchanged at 100/100; em dashes 5 -> 0.

    prerender root route to eliminate Soft 404 reports

    Google Search Console flagged http://dylanbochman.com/index.html (and www variant) as Soft 404. The prerender script generated content for /blog, /projects, etc., but not for /, so dist/index.html shipped as the empty Vite SPA shell. Googlebot's no-JS pass saw an empty body and classified it as Soft 404. Adding / to the prerender routes overwrites dist/index.html with the fully rendered homepage (~120KB vs. 10KB shell), matching the pattern used for every other route. Both / and /index.html serve the same file on GitHub Pages, so this fixes both reported URLs. Co-authored-by: Claude Opus 4.7 (1M context) <[email protected]>

    Bugfix
    PR #299

    restore prerendered deploys for indexed routes

    restore prerendered deploys for indexed routes

    Bugfix
    View full Change Log