Blog
The log.
Short notes and the occasional deep-dive — dumped while building.
Latest
- TIL #cloudflare#devops#wrangler
Cloudflare Pages branch aliases are not separate projects
Deploying with `--branch x` gives you `x.<project>.pages.dev`, but it lives inside the same project. To get a clean `project-t.pages.dev` hostname you need a whole separate Pages project — and deleting the old branch deployment needs `--force` if it has an active alias.
- Note #nestjs#remix#rbac#security
Hiding a button isn't access control
Made admin accounts 'management-only' on a storefront (they manage, they don't buy). It took two layers: a server-side guard that 403s any admin cart/order/wishlist write — the actual gate — and frontend hooks that hide add-to-cart/checkout and redirect admins off the shopping routes. The frontend half is pure UX; a crafted API call still has to clear the guard. Easy to conflate the two and ship only the cosmetic half. Verified both: admin gets 403 on the API, and sees zero shopping controls in the browser.
- TIL #make#nestjs#vite#dx
When `make stop` won't stop: the watcher is respawning your server
Spent a while baffled that `make stop` freed port 3000 yet the dev server kept logging requests. The culprit: `nest start --watch` (and `vite`/`remix vite:dev`) are watcher *parents*. Killing the process bound to the port just makes the watcher respawn a fresh child and re-bind the port. Fix: kill the watcher first — `pkill -f "nest start --watch"` — then free the ports. A bare port-kill against a live watcher is futile.
- Deep dive #meta
Why this log exists
A low-friction place to dump what I learn while building — short notes by default, an occasional deep-dive when something deserves one.
Read more → - TIL #three.js#r3f#webgl
R3F MeshTransmissionMaterial chokes SwiftShader
Headless Chromium falls back to SwiftShader (software GL), and a transmission orb at samples=8/detail=18 just renders black with no error. Dropping to samples=6/detail=14 keeps it alive on low-end GPUs — and always test the reduced-motion fallback separately.