Logs
Notes on patterns, practices, and workflows from the Joyco team.
16Phased State: Modes as Tagged Unions
Model a thing's modes as a tagged union instead of a bag of booleans, so illegal states can't exist and you can react to what just changed.15Derive, Don't Mutate
When one value has many writers, last-write-wins quietly corrupts your output. Give each source its own slot and resolve them at one point instead.14Phantom Merge Conflicts
Why git shows conflicts in files you never touched when the history under your branch gets rewritten, and how git rebase --onto fixes them without resolving a single marker.13Reduced motion and GSAP: The Invisible Collision Layer
12The Render Pipeline
Deep dive into each stage of the browser rendering pipeline, covering what runs on main vs compositor thread and what makes each step slow.11WTF Is Layout Thrashing
What forced reflows are, why interleaving DOM writes and reads tanks your frame rate, and how to batch them.10Color Spaces sRGB & Linear
How sRGB encoding spends precision where your eyes care most, and why shader math must happen in linear space.09Performance Monitor
Chrome DevTools' real-time Performance monitor panel for catching memory leaks, layout thrashing, and jank as it happens.08WebGL Scroll Sync
Why WebGL canvas content drifts from the DOM during fast scrolls and how to fix it with compositor-aware techniques.07Promises, PPR, and the Root Provider Pattern
Pass promises instead of awaited data to context providers so the shell renders instantly with PPR.06Parallel Claudes with cw
Run multiple Claude Code sessions on the same repo without conflicts using git worktrees managed by cw.05Group-has-[.magic]
Style distant elements based on child state using Tailwind's group and has-[*] modifiers instead of lifting state.04Context is all you need
Replace prop drilling with React context to share state and derived values across deeply nested components.03Agentic Thinking
Design fewer but more capable tools, enforce clear usage criteria, and keep context windows lean.02AI Driven Development
Managing your main attention thread, shaping features with AI, and offloading long-running work to background agents.01The Slot Approach
Style inner elements from the parent using data-slot attributes instead of multiple className props.