# Logs

- [Phased State: Modes as Tagged Unions](/logs/16-phased-state-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.
- [Derive, Don't Mutate](/logs/15-derive-dont-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.
- [Phantom Merge Conflicts](/logs/14-phantom-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.
- [Reduced motion and GSAP: The Invisible Collision Layer](/logs/13-working-with-reduced-motion)
- [The Render Pipeline](/logs/12-the-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.
- [WTF Is Layout Thrashing](/logs/11-wtf-is-layout-thrashing) — What forced reflows are, why interleaving DOM writes and reads tanks your frame rate, and how to batch them.
- [Color Spaces sRGB & Linear](/logs/10-color-spaces-srgb-linear) — How sRGB encoding spends precision where your eyes care most, and why shader math must happen in linear space.
- [Performance Monitor](/logs/09-performance-monitor) — Chrome DevTools' real-time Performance monitor panel for catching memory leaks, layout thrashing, and jank as it happens.
- [WebGL Scroll Sync](/logs/08-webgl-scroll-sync) — Why WebGL canvas content drifts from the DOM during fast scrolls and how to fix it with compositor-aware techniques.
- [Promises, PPR, and the Root Provider Pattern](/logs/07-nextjs-promises-ppr) — Pass promises instead of awaited data to context providers so the shell renders instantly with PPR.
- [Parallel Claudes with cw](/logs/06-parallel-claudes-with-cw) — Run multiple Claude Code sessions on the same repo without conflicts using git worktrees managed by cw.
- [Group-has-\[.magic\]](/logs/05-group-has-magic) — Style distant elements based on child state using Tailwind's group and has-\[*\] modifiers instead of lifting state.
- [Context is all you need](/logs/04-context-is-all-you-need) — Replace prop drilling with React context to share state and derived values across deeply nested components.
- [Agentic Thinking](/logs/03-agentic-thinking) — Design fewer but more capable tools, enforce clear usage criteria, and keep context windows lean.
- [AI Driven Development](/logs/02-ai-driven-development) — Managing your main attention thread, shaping features with AI, and offloading long-running work to background agents.
- [The Slot Approach](/logs/01-the-slot-approach) — Style inner elements from the parent using data-slot attributes instead of multiple className props.