DEV Community

Ruslan Hrekov
Ruslan Hrekov

Posted on Originally published at hrekov.dev

Launching the journal

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.xml is 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's x-vercel-ip-country header and sets a geo-eu cookie 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)