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 in-chapter TOC needed live JavaScript. It still got a mockup first.
The captainrandom learning hub navigation retrofit ran five phases. Every one went through the UI gate — interactive approval mockup before production code. The most interesting case was P4: the subsystem's only client-side component, with a live IntersectionObserver scroll-spy in its mockup, still approved before a line of React was written.
The privacy work isn't on the /privacy/ page
The /privacy/ page went live in June and covers what it covers. The actual privacy work on this site happened in a data-locality choice, a brand-separation rule, and a username leak in published MDX. Only one of the three announced itself.
10 of 13 sentences made it. The verifier caught the rest before they reached a pillar page.
The June 30th cron produced a mortgage rate-spike draft grounded in April 2026 data. Ten of thirteen sentences passed. The three that didn't never reached a pillar page — and the next two days showed why that distinction matters at publishing scale.
14 days of daily publishing: the three failure modes I hadn't designed for
A 14-day publish cadence on UK Calculators surfaced three failure modes: title-mangling produces permanent ugly slugs, zero-draft mornings expose the absence of a fallback queue, and triage without memory republishes the same cluster it shipped the day before.
AdSense low-value rejection: thin pages, empty hubs, and six SVG diagrams
UK Calculators was rejected for low-value content on 10 July — ads.txt was authorised, so this was purely a content-quality judgement. Three concrete moves addressed the specific inventory-value criteria: expanding thin calculator landings, adding SVG diagrams across the pillar estate, and populating empty hub pages the rejection identified.




