Writing & build logs.
Essays on software development, web builds, and AI tooling. Plus build notes from what I'm actually working on right now.
150 clusters ranked, zero drafted: ground attrition is the load-bearing constraint
Five days of autonomous publishing logs made the pattern clear. The cron fired on schedule every morning. Ground attrition killed the drafts before the drafter ran. One usable cron draft across five days; ten articles published via a different route entirely.
Seven navigation phases. The prerequisite chips encoded the one thing the others couldn't.
The learning navigation spec ran seven phases from foundational structure to site-wide search. P5 — prerequisite chips, a static 'Read first' link at each chapter head — was the smallest implementation. It was also the highest return: every other phase encoded page structure, and P5 encoded reader intent.
Six PHP classes, no Composer: a cPanel newsletter backend with enumeration-resistant auth
The captainrandom.co.uk newsletter backend runs on a cPanel shared host with zero framework and no Composer. Six small PHP classes, around 600 lines, and an eight-stage subscribe pipeline that tells the caller nothing about whether an email address already exists.
Pagefind shipped last. The prerequisite chips had already closed the harder problem.
The learning hub's navigation plan ran seven phases and ended with site-wide Pagefind search. The highest-leverage phase was five: a three-word chip at each chapter head pointing to the one thing to read first. By the time search shipped, most readers who needed it no longer did.
The cron said zero twice and ten-of-thirteen once. Every answer was correct.
Five mornings of cron firing produced two zero-draft rejections, one partial-pass, and six operator-path publishes. Zero drafts is not a pipeline failure. It is the verifier doing its job when the inputs do not warrant a draft.




