uppinote
Writes about software, gardens, bread and reading. This is the demo site for the Ieum theme.
-
DevEnv/Shell
Zsh Functions I Actually Use Every Day
I've deleted dozens of clever shell functions over the years. These are the small, boring ones that actually stuck around.
-
Backend/Postgres
Postgres Indexing That Actually Moves the Needle
Adding an index and hoping is not a strategy. Here's how I actually diagnose slow queries before I touch the schema.
-
Ghost/Setup
Ship It 3/3: Self-Hosting Ghost on a Small VPS
Ship It, part three: the build was reproducible and the release script was solid. All that was left was an actual server to put it on.
-
Frontend/React
Optimistic Updates in React Without the Footguns
Optimistic UI feels great until two requests race each other. Here's a small hook I use to keep it predictable.
-
Automation/Scripts
Ship It 2/3: Turning the Release Checklist Into a Script
Ship It, part two: I had a release checklist in a text file that I re-read every time and still managed to skip a step eventually. So I stopped trusting myself.
-
Projects/Kitchen
Six Sourdough Starters Later
My first five sourdough starters all quietly died. Here's exactly what was different about the sixth one, step by step.
-
AI/Prompting
Prompting Patterns That Cut My Token Bill in Half
Most of the token savings didn't come from clever wording. They came from structural changes to what I was sending on every single call.
-
Tools/Editors
My Old Vim Config, for the Record
This is the plain Vim config I used for years before switching to Neovim. Keeping it around mostly out of nostalgia and as a before/after reference.
-
DevEnv/macOS
Taming macOS for a Distraction-Free Dev Setup
Most "productivity setup" advice is aesthetic. These are the handful of changes that measurably cut down how often I got pulled out of focus.
-
Automation/CI
Ship It 1/3: From Laptop to a Reproducible Build
Ship It, part one: before automating anything else, I had to fix the fact that my build only worked reliably on my own laptop.