Esc
  • Design SystemsFrom Figma Variables to Tailwind, Without the Copy-PasteDesign tokens only help if design and code read from the same source. Here's how I set up a pipeline where Figma variables become Tailwind theme values and React props, and what I learned about naming along the way.
  • Next.jsBuilding a Like Button, From Database to DelightThe heart at the bottom of every article on this site is a tiny full-stack feature. Here's how it works, from the SQLite table and API route to optimistic updates and batched requests.
  • AnimationA Friendly Introduction to Spring PhysicsSprings make interfaces feel alive. Instead of picking a duration and an easing curve, you describe how something should move, and physics does the rest. Let's build an intuition for stiffness and damping with a live playground.
  • UI DesignDesigning Dashboards People Can Actually ScanData-heavy screens fail when every number shouts at once. A practical guide to hierarchy, tables, filters and progressive disclosure for dashboards that engineers and analysts use all day.
  • CSSUnderstanding Flexbox Alignment, Visuallyjustify-content or align-items? Main axis or cross axis? If you still guess which property to use, this interactive guide will fix that for good.
  • BrandA Brand System Is More Than a LogoA logo is the smallest part of a brand. What makes a brand recognizable is the system around it, from type and color to iconography, voice and the way the product itself behaves. Here's how I approach building one that survives contact with real products.

The blog

Articles & Tutorials

Deep dives, interactive explainers and lessons learned while building for the web.

Next.js3 min read

Building a Like Button, From Database to Delight

The heart at the bottom of every article on this site is a tiny full-stack feature. Here's how it works, from the SQLite table and API route to optimistic updates and batched requests.

Animation3 min read

A Friendly Introduction to Spring Physics

Springs make interfaces feel alive. Instead of picking a duration and an easing curve, you describe how something should move, and physics does the rest. Let's build an intuition for stiffness and damping with a live playground.

UI Design2 min read

Designing Dashboards People Can Actually Scan

Data-heavy screens fail when every number shouts at once. A practical guide to hierarchy, tables, filters and progressive disclosure for dashboards that engineers and analysts use all day.

CSS2 min read

Understanding Flexbox Alignment, Visually

justify-content or align-items? Main axis or cross axis? If you still guess which property to use, this interactive guide will fix that for good.

Brand2 min read

A Brand System Is More Than a Logo

A logo is the smallest part of a brand. What makes a brand recognizable is the system around it, from type and color to iconography, voice and the way the product itself behaves. Here's how I approach building one that survives contact with real products.

React2 min read

Why Your useEffect Needs a Cleanup Function

Intervals that never stop, event listeners that pile up, requests that resolve after you've left the page. A hands-on look at effect cleanup and why React Strict Mode runs your effects twice.

Career2 min read

How I Keep Side Projects Shippable

I used to have a graveyard of half-finished side projects. These days I actually ship most of them. Nothing changed about my motivation. I changed how I scope, plan and finish.