Setup
Hardware, software and infrastructure I use day to day. I’ve always found /uses pages helpful for discovering tools, so here’s mine.
2021 M1 Max · 32GB RAM · 1TB SSD
Bought for the 32GB, which is the spec that actually decides my day: a Next.js dev server, a Spring Boot backend and Docker running at once used to mean closing things, and now it doesn't. The 16-inch panel fits an editor and a browser side by side at readable type, which is the only reason I don't carry a second monitor more often than I do.
1920 × 1080 · 60Hz LED
A second screen that lives in the laptop sleeve. One USB-C cable carries power and display, so setting up at a coffee shop is the same two seconds as at my desk. 1080p and 60Hz — fine for a terminal, docs or a diff, and I wouldn't grade a design on it.
Wireless mechanical keyboard
Swapped in from a Keychron K8 because I wanted something thockier — deeper, more muted typing sound for long sessions instead of a sharp clack. The little display and the knob sold me too — volume and scrolling without reaching for a modifier.
Wireless productivity mouse
I switched for the horizontal wheel, which turns out to matter mostly for wide diffs and D3 charts that run off-canvas. The thumb buttons are mapped to browser back/forward and Mission Control. It's heavy and it doesn't travel — the trackpad handles that.
In-ear monitors
About twenty dollars, and the reason they're here is passive isolation rather than sound quality — sealed in, an open office or a coffee shop goes quiet enough to read code in. The V-shaped tuning is not neutral and I wouldn't mix on them.
Everything else
The phone is where I check that a layout actually survives a real viewport instead of a resized browser window. The iPad is for sketching and reading PRs away from a desk. The hub is for ethernet and a second display when I'm working somewhere fixed.
Theme: Catppuccin Mocha
Catppuccin Mocha for contrast that holds up at night without going full black. The nine extensions I'd reinstall first: Claude Code, ESLint, Prettier, Tailwind CSS IntelliSense, Pretty TypeScript Errors, Error Lens, GitLens, axe Linter for accessibility checks in the editor, and the Catppuccin theme itself. There are another thirty-nine installed; most are language packs I touch a few times a year.
Theme: Powerlevel10k
The instant prompt and configurable segments make it fast and informative without being overwhelming — git status, execution time and directory context at a glance. Plugins: git, zsh-autosuggestions, zsh-syntax-highlighting, web-search.
Design and prototyping
Where a layout gets decided before it costs me a component tree. I use components and auto-layout so a spacing change propagates instead of being redrawn, and I hand off to myself — nobody else is opening these files.
Anthropic
Daily, mostly for the part before code: talking through a design until the tradeoff is stated plainly, and reviewing my own diffs for the thing I stopped seeing an hour ago. It is good at structure and confident when wrong, so I check the claims it makes about my code against my code.
API testing
Environments are the feature I actually use — the same collection pointed at localhost, preview and prod without editing a URL. For a single request I usually reach for curl first.
Containerization
Mostly a way to run Postgres and Redis without installing either. It is the heaviest thing on this list and I quit it when I'm not using it — on battery that's real.
Notes
Plain markdown files in a folder I own, which is the whole reason. Notes that outlive the tool are worth more than notes with better features, and I've migrated enough times to believe that.
Browser
It has everything I loved about Arc — workspaces, split view, a UI that stays out of the way — with the added benefit of being open source. I keep Vivaldi around for the things Zen doesn't cover yet, so dozens of docs, Stack Overflow threads and localhost ports still end up split across both.
Music
Replaced Spotify. On my iPhone it's Musi; on the laptop I just leave YouTube open, since an ad blocker gets me most of the way to a music app anyway. Mostly live worship and focus mixes for getting into flow during long sessions.
Hosting and deployment
Push to dev and a preview URL appears on the PR; merge to main and it ships. This site moved here from Cloudflare Workers in July after the blog broke there — it reads posts from disk with fs, and workerd has no filesystem.
Domains and DNS
Registrar and DNS, still, after the hosting moved to Vercel. At-cost domain pricing and DNS changes that propagate in seconds are enough reason to leave it where it is.
Storage
Sync across the MacBook, iPad and iPhone. It is not a backup strategy — anything that matters is also in a git remote.
I wrote a detailed breakdown of my 2026 tech stack — React 19 and Next.js 16 through to backend choices and AI integration, with the reasoning behind each pick. Read it here.
Got a suggestion for something I should try? Reach out or find me on GitHub.
Last updated August 2026