Writing & build logs.
Essays on software development, web builds, and AI tooling. Plus build notes from what I'm actually working on right now.
Before the first word: three architecture decisions in an 8-chapter GSC and GA4 course
An 8-chapter guide to Google Search Console and GA4 automation forced three architecture decisions before any writing started: a throwaway GCP project per reader, Steps components over prose, and inline chapter links from day one. I made the first two immediately. The third I retrofitted.
Calendar → Day → Back Landed on Accounts. The Stack Was Correct; the Model Wasn't.
A8 in the round-2 device QA pass: tapping Back from the day view skipped the full-screen calendar and landed on Accounts. The NavigationStack had done nothing wrong. The navigation model had no concept of levels.
My canonical tags were deindexing my own articles. GA4 had been right all along.
GA4 showed 2 events per seven days across a site with 70+ articles. The first instinct was broken tracking. The real cause was canonical tags instructing Google to ignore the pages meant to rank — a discovery collapse that looks identical to a measurement failure until GSC gives it away.
The privacy policy was correct. The article body wasn't.
A production audit found the macOS username in a published plist example and private project names on two public pages. Neither would have been caught by a policy document. The fix was a pre-commit hook and an aggregation change — pipeline enforcement that runs whether the author remembers or not.
Five Phase B fixes in 48 hours. They were all patching the same missing type.
Twenty percent autonomous success across five scheduled slots. The same breach shape surfacing twice from different audit trails. Five fixes shipped in 48 hours — and when the sixth investigation opened, the pattern became unmistakable: the slot had never been an entity.




