Dirty Flag. Skip Work That Does Not Matter Yet.Introduction Sometimes your program does expensive calculations over and over for no reason. The input changed three times but you only needed the output once. You are throwing away work. The dirty flApr 12, 2026·5 min read
Why SharedArrayBuffer Is So Powerful in Game DevIntroduction JavaScript is single-threaded. Your game loop, your physics, your terrain generation, your rendering. All fighting over one thread. Web Workers give you more threads. But moving data betwApr 12, 2026·9 min read
Building a Particle System in Three.js From ScratchIntroduction A particle system is a list of tiny objects. Each object has properties: position, size, color, speed, lifetime. Every frame you spawn new ones, update existing ones, kill dead ones, and Apr 12, 2026·7 min read
I Animated 250 Particles in React and It Froze. Canvas Fixed It in 100 Lines.Introduction We needed a celebration effect. Confetti, stars, bubbles exploding across the entire screen. Hundreds of them, all at once, chaotic and fun. It went from smooth to stuttering to buttery aApr 12, 2026·6 min read
AAC Audio LOD for Game StreamingThe Problem You are streaming game audio to a player over mobile or web. The connection is bad. 3G or spotty wifi. The audio needs to keep playing without cuts or buffering. Raw audio is huge. One secApr 11, 2026·3 min read
How to Build Good APIs With Next.js and TypeScriptIntroduction Stripe's API is the gold standard. Consistent error envelopes. Idempotency out of the box. Rate limit headers that actually help. SDK types that match the spec. Every endpoint feels like Apr 10, 2026·11 min read
Framer Motion useAnimate Returns Empty Animations Array. Fix for motion v12 and prefers-reduced-motionThe goal Spring pop animation on a button when it goes from disabled to enabled. Track previous disabled with a ref, detect the flip in useEffect, fire an imperative animation. Simple enough. First atApr 10, 2026·3 min read