Writing & build logs.
Essays on software development, web builds, and AI tooling. Plus build notes from what I'm actually working on right now.
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.
Not a fade, a life: energy decay and perpendicular wobble in a music visualiser
The onset particles were launching correctly and dying identically. Tying an exponential energy decay to the perpendicular wobble amplitude was the difference between particles that travel and particles that live.
One audit finding, eight chapters: closing content-5 with a hub instead of inline links
The SEO audit said to retrofit inline links across seventy articles. I built a guide hub instead, and the link-graph problem stopped being about retrofitting and started being about new direction.



