Writing & build logs.
Essays on software development, web builds, and AI tooling. Plus build notes from what I'm actually working on right now.
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.
The bass portal doubled as a scene swap. The hole geometry already owned the reveal.
A bass-driven radial mask opens a hole in a spring panorama to reveal winter behind it. When the track hits its midpoint, the same mask — scaled to frame-covering size — swaps the two scenes without a cut. The reveal mechanism was already running from frame one.
The diff check passed forever. That was the bug.
A test that checked whether verify.py was modified by a wiring PR became trivially true the moment PR #43 squash-merged. Phase X.8 replaced it with replay hashes, pre-registered gates, and hermetic sabotage cycles — tests designed to fail when they should.
Bass as a seasonal portal: routing the kick into a radial alpha mask
The captain-random visualiser stacks two panoramas: spring in front, winter behind. The spring layer carries a radial alpha mask whose radius tracks bass energy. When the kick hits, the mask opens and winter shows through; when the energy decays, spring closes back over it.



