Writing
Notes on software, systems, and the craft of building things.
how I actually navigate an unfamiliar codebase
a repeatable method for navigating any unfamiliar codebase: orient, run, locate, dig. works on a 3-file API or a 200-module monorepo.
2026-06-08
i learned terraform by destroying everything
five layers of infrastructure, built and destroyed, until a full EKS cluster ran from .tf files
2026-05-28
kubernetes finally clicked for me
i spent months hearing about kubernetes and nodding along. then i actually sat down and mapped it to things i already understood. heres how it actually clicked.
2026-05-21
My dev setup is better than yours
opt+f and i'm in any project with two tmux panes, nvim on the left, terminal on the right. you're still cd-ing into directories. this isn't luck — i built this over years, one small piece at a time.
2026-05-14
Stop running a Jenkins server for one app
A client was paying $60/month for a t3.large EC2 instance running Jenkins that sat idle 95% of the time. We replaced it with SST + GitHub Actions. Now deploys are faster, reproducible, and cost nothing when idle.
2026-05-13
Kafka is not a job queue
A client was paying $1000/month for AWS MSK to process under 4000 messages a day. We replaced it with BullMQ in a week. Bill dropped to $180.
2026-05-09
Your TS Server Is Fine. Give the Heavy Work to Go.
One year. Same stack. Every project. API, workers, file processing, all TypeScript. I wasn't stuck because TypeScript is bad. I was stuck because I forgot what other options even feel like.
2026-05-05
How to Use Server Actions in Your Application
Learn how server actions can simplify and secure your application's interaction with the server using createSafeAction and useAction.
2024-06-01