Latest posts
Page 2 of 3-
Infra/Docker
Multi-Stage Docker Builds for a Leaner Node Image
Our production image was 1.4GB and rebuilt from scratch on every dependency change. Multi-stage builds fixed both problems at once.
-
Tools/Git
Git Worktrees Changed How I Review PRs
I used to stash my work, check out a branch to review it, then unstash and hope nothing broke. Worktrees ended that entire dance.
-
Essays/Life
Slow Letters in a Fast Inbox
I started writing an old friend actual letters instead of messages. The three-week delay turned out to be a feature, not a bug.
-
Backend/Node.js
Debugging a Node.js Memory Leak in Production
The process crashed once a week, always in the middle of the night. Here's how I found the leak with heap snapshots instead of guessing.
-
Frontend/CSS
Container Queries Finally Fixed My Card Grid
The same card component lives in a sidebar, a full-width grid, and a modal. Media queries couldn't handle that. Container queries can.
-
Ghost/Themes
Building a Table of Contents for a Ghost Theme
A table of contents needs two things done right — an accurate heading list, and knowing which section is currently in view. Here's how I built both.
-
AI/Agents
Building a Small Agent Loop with Tool Calling
Before reaching for an agent framework, I built the loop by hand in about eighty lines. It made every abstraction the frameworks provide obvious.
-
Reading/Books
A Year of Reading 2/3: The Unhurried Mind
Second in the reading log: a book that argues boredom is a skill, and the one idea from it I actually kept.
-
Projects/Garden
The 2026 Vegetable Plot: A Planting Log
This year's vegetable plot, tracked from seed to harvest — including the zucchini that quietly took over two other beds.
-
Essays/Craft
How I Actually Take Notes
My actual note-taking system is a folder of dated plain text files and a habit of linking backward. Here's what it looks like in practice.