Build LogCreative Coding
#146
2026-07-045 min read

A hole in spring: the bass-masked radial portal that skipped the shader

Two panoramas at identical dimensions, one layered in front of the other. Cut a radial hole in the front layer, drive its radius with bass energy, and winter is visible through spring. No shaders, no post-processing pipeline — just winding-order arithmetic on a canvas clip path.

Read post
Build LogCreative Coding
#147
2026-07-046 min read

Bass as a window: the low end punches a hole in spring and shows you winter

Adding a winter panorama behind the spring layer did nothing until the spring canvas got a radial alpha hole driven by bass frequency. The moment that connection landed, the low end stopped being a brightness signal and became a literal window between seasons.

Read post
Build LogDevOps
#148
2026-07-045 min read

Four lines in a published article leaked my macOS username to the live site

PR #17 was a four-line diff across two files. One of those lines was in the body of a published article, rendering a real macOS username in the browser. The fix was substitution — but the pattern it revealed was wider: three surfaces in the same audit window, the same failure.

Read post
Build LogLearning
#149
2026-07-045 min read

We captured thirteen GCP screenshots in one sitting. The OAuth console had changed while we weren't looking.

Chapter 2 of the GSC + GA4 automation course needed thirteen screenshots of the Google Cloud project setup flow. The session that produced them found that the OAuth consent screen had been redesigned since the prose was written — and showed why that kind of discovery only happens in a live browser, not a mockup.

Read post
Build LogLearning
#150
2026-07-035 min read

Chapter 2 had thirteen screenshots and one OAuth rewrite. The three architecture decisions explain both.

The Google Cloud setup chapter of the GSC+GA4 automation guide forced three architectural calls before any screenshot was captured. Then Google redesigned the Auth Platform UI and the OAuth section had to be rewritten. This is what the decisions looked like at runtime.

Read post