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 pre-commit hook that exists because four lines made it to the live site
A build-log article shipped with an absolute path in a plist example: the macOS username, live on the site, publicly indexed. The immediate fix was four file edits. The structural fix was a hook that enforces the constraint at commit time.
Five articles shipped in July. Every one of them needed a hand.
July's cadence log records five published articles. Behind four of them is a distinct failure mode — composer crash, checklist casualty, CLI error, day-cap, or coverage-screening gap — that the operator patched by hand. The July 17 exception shows what the pipeline looks like when everything holds; the rest of the month shows what it looks like when the operator is the error-correction layer.
Fourteen nights of missing telemetry: the four-part skeleton every new skill now inherits
The GSC and GA nightly crons had been logging clean exits and producing nothing for a fortnight. Found out on a Saturday. The fix was straightforward; what it exposed was a pattern gap: three telemetry reads with no single surface for their output. The skeleton that closed that is now the template every new read inherits.
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.




