ONLINE · OPEN FOR FREELANCE BUILDS// BUILDING IN PUBLIC
$ whoami → captain-random

I BUILDRANDOMTHINGS

YEARS WEB DEV
20+yrs
YEARS IN RETAIL
23yrs
POSTS PUBLISHED
247articles
RECENT COMMITS
342/30d

Hey — this is Captain Random. I build production software and experiment with how far I can push my imagination into the digital realm, bridging the gap between technology and the problems worth solving. This site is for everyone — here you can see real projects, real workflows, and honest evaluations of the tools I use and build. It's a new project, and it'll grow with every commit. Stick around and watch it take shape.

Recent writing.

Essays, notes & build logs
ObservabilitySEO
#01
2026-08-235 min read

ga-telemetry shipped the same morning as the Phase 1.6 sitemap push — they're the same job

Two pull requests landed on 2026-06-20: a stdlib-only GA skill and an operator-side sitemap push. One queried Google Analytics. The other filed Request-Indexing nudges. Underneath both was the same question — did Google see this? That's one discipline, not two.

Read post
Build LogUKCalculators
#02
2026-08-235 min read

`mortgage-abandoned-about-above`: Title-Mangling, Claim Blocks, and the Corrective Pass That Held Fourteen Pillars Together

The Day 2 cron draft came with an unusable slug and three claim blocks that would have shipped unverified. Both got caught and corrected. That pattern — not just the gate, but the corrective pass — is what held a fourteen-pillar streak together.

Read post
Build LogContent Pipeline
#03
2026-08-235 min read

The pipeline ran every day in July. Every published article started as a rescue.

Five publish events across July. Every one required a human to notice the cron had failed and pull a piece through by hand. The one exception — a two-day autonomous streak on 16–17 July — proved the pipeline can work. The rescue rate is the metric no one was tracking.

Read post
Build LogContent Pipeline
#04
2026-08-235 min read

Zombie draft, dead zone, zero-draft cron: three failure modes from one misread index

Ten cron cycles between 30 June and 13 July produced exactly one ready draft while the skip counter climbed from 2 to 7. Three distinct failure modes were active simultaneously—a zombie IHT draft reaching its third PR, a dead-zone mortgage cluster that never re-drafted, and zero-draft mornings with clean exit codes. The root cause was identical in each case: draft.py could not tell failure from success.

Read post
AdSenseSEO
#05
2026-08-225 min read

AdSense re-review submitted: the last fix was deleting content, not adding it

AdSense rejected the UK Calculators site for low-value content on 10 July. The fix over fourteen days was real hub listings, six verified SVG diagrams, and a quality sweep that removed fabricated trust signals — not more pages. Most remediation write-ups budget for additions; this one ends with a deletion sprint.

Read post
DevOpsBuild Log
#06
2026-08-225 min read

The GSC and GA crons failed silently for two weeks. That's a telemetry blindspot, not a cron problem.

The nightly GSC and GA telemetry crons for UK Calculators had been dying every night since 20 June. On 4 July a Saturday morning review found the gap — fourteen days of dark data, no alerts, clean-looking logs. The fix took an afternoon. The monitoring lesson took longer.

Read post
Build LogDesign
#07
2026-08-215 min read

Branded card names rot. /work's don't any more.

Two corrections arrived within the same hour: one product had rebranded six months earlier, one client project couldn't be named publicly. Both pointed at the same design gap. Closing it required a policy, not a patch.

Read post
Build LogContent Pipeline
#08
2026-08-216 min read

The cadence clock resets on zero-draft runs. The publishing schedule is manual rescue.

On 17 July the approval gate worked exactly as designed: the first multi-day autonomous streak since the pipeline launched. By 20 July I was writing another manual rescue. The 14-day cadence clock had reset again.

Read post
Build LogPipeline
#09
2026-08-215 min read

The Pipeline Conflated failed-* with Successful Publishes. Skipped Hit 7.

Ten cron cycles from 30 June to 13 July produced one ready draft and zero auto-publishes while every log showed a clean exit. The mechanism: draft.py treated failed-* index entries identically to successful publishes — permanently consumed. Skipped climbed from 2 to 7 before the root cause surfaced.

Read post

Build log.
In your inbox.

What shipped, what broke, what worked. No marketing. No sponsorships. Sent when there's something worth sending.

Plain-text only. Unsubscribe in one click. We store your email, the date you confirmed, and a one-way hash of your IP (for abuse triage). Nothing else. Privacy policy.