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 schedule held. The composer failed. That's what July's headline rescues exposed.
Three weeks of cadence data from ukcalculators: the approval gate works, the schedule holds, and every high-signal publish — May HPI, fiscal-drag projections, the Santander rate — required manual intervention when the composer failed. The bottleneck was never the schedule.
I wrote it as a quality signal. The prospect read it as a rejection.
Five copy fixes on captainrandom in 2026. Contact page, learning hub, creative sub-brand, album credits, a placeholder. Different surfaces, same root: the copy said what I intended; a first-time reader read something different.
The cron ranked 150 clusters and drafted none: what a corrective verifier is built to surface
On 2 July, the morning cron ranked 150 clusters and produced zero drafts. The cron exited clean. The gap between those two facts is the surface a corrective verifier is built to make legible—without one, every zero-draft run looks identical from the outside.
Both corrections came from the phone. The catalogue was reading the README.
Four web-history cards merged in the afternoon. Two were withdrawn before evening — one for describing the wrong project entirely, one for using a product name the app had dropped earlier in the year. Both corrections came from Cj reading the live page from his phone. The catalogue had a single source of truth. It was the wrong one.
One note on the contact page. The same mistake on three more.
Rewriting the /contact/ timelines note taught one thing: copy written to signal the founder's values reads differently to a prospect who doesn't share those values. The lesson ran through three other copy fixes that quarter.




