0%

0000000

0x00

Journal · page 3

Writing

Field notes on full-stack engineering, DevSecOps, self-hosted AI and real-time browser graphics. Written from the work, not about it.

25 entries7 categoriespage 3 of 3

  • Browser Creative9 min read

    Web MIDI Permission, statechange and the Stuck Note

    A Web MIDI app has three states to track: permission, device and connection. When an input disconnects, release every note it started, or the note sticks after the device returns.

  • Infrastructure9 min read

    Self-Hosting Next.js and Payload on One VPS: What Broke

    How one VPS runs Next.js and Payload behind Cloudflare and nginx: the request path, why the build needs a self-hosted runner, migrations on deploy, scheduled publishing, and what is not covered.

  • Engineering Leadership8 min read

    AGENTS.md vs CLAUDE.md: Read by Five Tools, Enforced by None

    A shared AGENTS.md file gets five AI coding tools reading the same rules. It does not make them follow the rules: that still needs review guidelines and a CI gate that actually checks.

  • Next.js8 min read

    Green Deploy, Stale Page: Docker's Layer Cache, Not Next.js

    A Next.js deploy passed build, migrate, health check and smoke test, yet the live site kept serving the old content. The cause was Docker's layer cache.

  • Next.js5 min read

    Why a Loading Screen Can't Wait for React to Hydrate

    A React-driven loading overlay can't leave before the bundle it hides has hydrated, because that's the same cost it's meant to be covering for.

  • Next.js5 min read

    Why generateMetadata in Next.js Must Be Async

    A synchronous metadata builder reading an unprimed module-scope snapshot put localhost:3000 in page titles and emptied their Person JSON-LD across ten routes.

  • Next.js4 min read

    Why backdrop-filter Breaks After a Lightning CSS Build

    Lightning CSS merges duplicate backdrop-filter declarations and keeps the wrong one, deleting a glass effect and the containing block it quietly provided.