Writing & build logs.
Essays on software development, web builds, and AI tooling. Plus build notes from what I'm actually working on right now.
The video spec had a voice-clone bake-off. The same day, I cut generated voice entirely.
The one open decision in the video-pipeline spec was which synthetic voice would narrate: a clone of mine, or a premium API voice, picked by ear. I deleted the question instead of answering it.
Every route but the blog previewed blank on WhatsApp. The og:image default was missing.
Blog posts set their own share image, so links to them looked fine. That masked the fact that every other route on the site emitted no og:image at all — invisible until someone shared one.
Four cron zeroes in five mornings. Eight articles shipped by hand. The pipeline problem isn't the scheduler.
Five days into a fourteen-day publishing sprint on UK tax calculators, the scheduler fires within a minute of its window every morning. Automated drafts produced: two, one a duplicate cluster. Gov.uk cooperates. The bottleneck is claim extraction and cluster survival.
What shipped on 2026-06-25 wasn't T-004: the verifier is the pipeline's real editor
T-004 was next in the topic-authority backlog — NRB and RNRB explainer, score 11. Two operator-driven publishes on 2026-06-25 shipped IHT rates and property tax reform instead. The backlog had an opinion; the verifier had authority.
The voice-check agents passed two chapters. A three-line recount proved they couldn’t count.
An ultracode workflow’s voice-check agents passed two course chapters as within the em-dash budget. A three-line Python recount found both over. A model can’t reliably count its own tells.

