Writing & build logs.
Essays on software development, web builds, and AI tooling. Plus build notes from what I'm actually working on right now.
One visitor, seven minutes, no exit: the data that wrote the brief
A GA4 segment query ran before any design work started on /work/, the homepage, or the contact page. What it found wasn't a vague underperformance signal — it named a specific gap. Every build that followed was a direct response.
Seven of eight green, still rejected: the AdSense hub-listing gap the checklist doesn't cover
ukcalculators passed every automated AdSense readiness check — 78.6% indexed, eight pillar articles live, image diversity closed. Seven of eight green. Google rejected it for Low value content anyway. The issue wasn't content depth. It was navigation: pillar pages with no hub listing are orphans a reviewer can't reach.
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.




