Writing about code, craft, and shipping software.
Deep dives, project retrospectives, and notes on what I'm learning as I build software for the web.

Morphing Animations with Motion
How to use morphing animations with Motion to make UI state changes clearer instead of noisier.
Create an FFmpeg Layer for AWS Lambda
How to run FFmpeg on AWS Lambda with a Lambda Layer for small serverless media jobs.
RangeFlow: Drag Your Dates
Building RangeFlow, a date range picker with a draggable, resizable range and a faster way to choose dates.
Three Years in Portugal
Three years after moving to Portugal, a personal reflection on pace, paperwork, belonging, and building a life in Lisbon.
Web Component widgets with Preact
Packaging a Preact + Zustand widget as a Web Component that drops into any website.
Lessons From 9 Years at a Startup
A personal reflection on leaving after nine years and what I learned about startups, engineering culture, and long-term growth.
Building a SQL Analyst Agent
How to build a simple AI SQL analyst agent with Node.js, OpenAI, Vercel AI SDK, and SQLite.
I’m Starting to Write
A simple start. Writing about software, products, and figuring things out in public.