Uses
The tools, services, and gear I use day-to-day, at work and at home, with links wherever I've written about them in more depth.
Code
VS Code was my go-to for a number of years and I still use it when necessary, but I started using Paseo with Claude Code and it quickly became my daily driver.
I was a die-hard iTerm2 user until I started using Ghostty. Once I started using it, there was no going back.
I've kicked around the idea of storing my code on Forgejo, but once I started using GitHub Actions, that idea went out the window. I back up certain repos to Forgejo locally, but GitHub is the primary spot where everything lives.
This site is built with Astro. It's fast, it ships next to no JavaScript, and every page is just a Markdown file in a repo.
My go-to for static website hosting. I used Vercel for a while, but I always keep coming back to Cloudflare Pages. It just works.
When I went with Plausible, I said I'd give Umami a try some day. Some day came. It's self-hosted, cookie-free, and the stats for this site are public if you're curious.
Homelab
The heart of my homelab. It runs Ubuntu and around 47 Docker services, from Plex and Audiobookshelf to this site's analytics. Intel Core i7-1260P (12 cores, 16 threads, up to 4.7 GHz, 18 MB cache), 64 GB of memory, and a 500 GB PCIe Gen4 SSD.
My VPS, in Nuremberg since I moved off DigitalOcean. It runs the services that need to stay up even when the house doesn't, like the UniFi controller, behind Caddy. Once a quarter, a CI job boots its latest snapshot on a throwaway instance to prove the backups actually restore.
Set it and forget it. It handles routing, firewalling, DHCP, DNS, and ad blocking for every VLAN in the house, and backs up its own config to the NAS and R2. The last time I got clever with it, it didn't go well.
UniFi handles Wi-Fi and switching, while pfSense does the routing. I have two U7 Pro XG access points, two older AC Pros, and three switches, with a USW-48-PoE at the core. The controller runs in Docker on the Hetzner VPS.
The glue that holds my network together, and the cornerstone of most of my homelab. Twenty machines share one tailnet, from hosts like the Hetzner VPS and pfSense to services like Gluetun that join on their own. It's how I reach everything from anywhere, and for private services, it's the only way in. The ACLs are managed as code like everything else.
All my DNS is hosted here, along with the tunnels that get traffic into my homelab. The whole account is managed with OpenTofu, so nothing gets changed by hand in the dashboard.
Every image on this site is served from R2. It's also where my OpenTofu state and offsite backups live.
The hub for everything in the house that isn't a server. Heating and cooling, the alarm and cameras, lights, sprinklers, the vacuum, and energy usage all run through it, along with hooks into pfSense, UniFi, and the NAS. It runs on its own Raspberry Pi 5 and backs up every night to the NAS and offsite. If it's down, the whole house notices.
It also runs my voice assistant: the Ollama Cloud API for conversation, Groq for speech-to-text, and ElevenLabs for the voice.
Writing
A micro-journaling app I wrote from scratch, inspired by the original Journalistic app. Daily thoughts go in a few bullet points at a time, and since it's self-hosted, the data stays mine.
For anything longer than a few bullet points. It's a clean, distraction-free writing app that stays out of the way, which is exactly what I want when I'm drafting.
For quick, throwaway notes. It's a keystroke away, so I can jot something down without losing my train of thought.
Learning
My RSS reader. Blogs, newsletters, and anything else worth following end up here, without an algorithm deciding what I see.
Self-hosted on the Meerkat, serving audiobooks and podcasts from the NAS. It's also the source of truth for my ebooks, which is what makes the Kobo setup below work.
Every ebook in my Audiobookshelf library lands on it automatically, and BookBridge keeps my place in sync between the audiobook and the ebook. I can listen on a walk and pick up reading on the same page that night.
Planning
Every task, big or small, ends up here. If it's not in Todoist, it's not getting done.
The best calendar app I've found for the Mac. Typing out an event in plain English and having it land in the right place never gets old.
Tools & Utilities
My password manager, and with Secrets Manager, where my homelab's secrets live too. Nothing sensitive gets committed; it's all resolved at deploy time, with a cached lookup to keep Ansible runs reliable.
It replaced Alfred for me. Launching apps is the least of what it does; between the extensions, clipboard history, and snippets, I'd have a hard time working without it.
My window manager on macOS. It's scriptable in Lua, so windows go exactly where I want them with a keystroke instead of a drag.
My go-to for thinking through problems, writing code, and regular sanity checks. Paired with Claude Code in Paseo, it's where most of my coding happens now, and it even keeps my homelab docs current. I'm upfront about where it shows up in my writing, too: every post carries an AI Level.
Gear
My desktop, and where most of my day happens. M4 Pro with a 14-core CPU and 20-core GPU, 64 GB of unified memory, and a 1 TB SSD. It drives the LG ultrawide, and it's so small and quiet that I barely notice it's there.
My laptop, and the machine I manage the homelab from. M1 Max with a 10-core CPU and 32-core GPU, 32 GB of unified memory, and a 500 GB SSD. Years in, it still handles everything I throw at it.
40 inches of curved 5K2K (5120 × 2160) is enough room that I don't miss a second monitor. A single Thunderbolt cable handles video, USB, and up to 96W of power, so the desk stays clean.
Workspace
I'm a huge believer in the whole "buy once, cry once" mentality. I'd rather drop a large sum of money on something that's going to bring me comfort or protection instead of paying multiple times for cheap things that will just never do the job right. That goes double for anything that goes between me and the ground, and a chair I'm in for most of the day is at the top of that list. It's the most comfortable chair I've owned.
I switch between sitting and standing throughout the day. The 4-leg frame is rock solid, even at full standing height.