The site had five case studies and no place to put anything shorter. Everything I wanted to write about — a debugging trace, a pattern that keeps paying off, a skeptical read on a tool the timeline is excited about — needed the same weight as a full case study or it got dropped. That's the wrong shape.
What this is
/blog supports four formats:
- Case Study — long-form, receipts attached, commit hashes referenced.
- Build Log — chronological, dated, mid-work. This post is one.
- Field Note — skeptical take on something popular. Short, arguable.
- Pattern — a rule I keep applying, why, and when it breaks.
Each post lands with reading time, tags, and (where relevant) a Receipts aside — links to the actual commits, prompts, or artifacts behind the claims. If I can't cite it, I don't write it.
Under the hood
- MDX with frontmatter validated at build time (invalid frontmatter throws).
-
/rss.xmlis generated from the same source with CDATA descriptions. - Google Search Console meta tag ships via env var, so the feed shows up.
- Analytics: GA4 with IP anonymisation, off by default for EU visitors until you click accept.
proxy.ts(Next.js 16's edge middleware convention) reads Vercel'sx-vercel-ip-countryheader and sets ageo-eucookie so the client knows which path to render. - No third-party tracking beyond that. No newsletter form yet.
What's next
First real posts land over the next two weeks — one Field Note on prompt patterns that stopped working when I moved from Sonnet to Opus, one Build Log on Sprint 11 itself, and a Pattern write-up of STABLE_LOGIC.md (the file that keeps AI collaboration from unwinding your own fixes).
Subscribe via RSS, or wait for the LinkedIn + dev.to cross-posts — Sprint 14 wires the schedule-driven automation that lands this very post on both platforms.
Top comments (0)