The story of building state-in-url: turning the browser URL bar into real, type-safe React state — the design decisions and trade-offs.
Writing
Blog
Notes on React, Next.js, TypeScript, testing, and building frontends that hold up in production.
Browse by tag
Define and use responsive breakpoints as variables in pure CSS — no preprocessor or JS — for cleaner, DRY media queries.
My experience with CodeRabbit, an AI code review tool that actually adds value to pull requests — what it catches and where it helps.
Automating npm package releases with GitHub Actions: versioning, changelogs, and publishing to npm from CI without manual steps.
Practical use cases for React's useInsertionEffect hook — what it's for, how it differs from useEffect and useLayoutEffect, and when to use it.
What actually separates clean code from bad code — practical heuristics and examples, beyond the usual book quotes.
TypeScript function overloading explained with a realistic, real-world example — when it beats union types and how to write overloads cleanly.
How to share serializable state between unrelated React components — including server and client components in Next.js — without prop drilling.