Writing & build logs.
Essays on software development, web builds, and AI tooling. Plus build notes from what I'm actually working on right now.
Thirteen sentences. Ten checked out. Three would have shipped wrong.
A mortgage rate-spike draft cleared ten of thirteen sentence-level checks and failed three. Without a corrective verifier, the three failing claims would have shipped alongside the ten correct ones. The 10/13 split is where LLM content pipelines silently break facts.
AdSense approved the ads.txt — the hub pages had nothing for reviewers to evaluate
The AdSense rejection arrived on 10 July at 17:42 BST: Low value content. Ads.txt status was Authorised, which narrows the problem immediately — the authorisation chain was intact, and the content-quality gate was not. The hub routes /resources/blog and /resources/guides were rendering skeleton pages with no real article listings for Google's reviewer to see.
I deployed Next.js to cPanel. The three bugs weren't in any tutorial.
A static Next.js deploy breaks in three specific places on cPanel: the LiteSpeed .htaccess configuration, next/image's optimisation API assumption, and a trailing-slash 404. None of the tutorials document them together. Eight chapters now do.
The link preview is blank and the build passed
Sharing a captainrandom.co.uk album page on WhatsApp returned a blank white card. Per-page og:image overrides were working on writing posts; the root layout had no default image. Typecheck passed, build passed, Lighthouse passed — WhatsApp showed a grey rectangle.
The rebrand lived in the spec. The card read the README.
Two /work/ cards shipped in the same session. One named a product that had been renamed six months earlier. The other described the wrong project entirely. Both errors traced back to the same cause: the wrong document at the wrong time.




