Code

Paseo

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.

Ghostty

I was a die-hard iTerm2 user until I started using Ghostty. Once I started using it, there was no going back.

GitHub

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.

Astro

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.

Cloudflare Pages

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.

Umami

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

System76 Meerkat

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.

Hetzner CX33

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.

pfSense XG-7100 Desktop

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.

Ubiquiti UniFi

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.

Tailscale

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.

Cloudflare

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.

Cloudflare R2

Every image on this site is served from R2. It's also where my OpenTofu state and offsite backups live.

Home Assistant

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

Journalistic

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.

Paper

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.

Raycast Notes

For quick, throwaway notes. It's a keystroke away, so I can jot something down without losing my train of thought.

Learning

Feedbin

My RSS reader. Blogs, newsletters, and anything else worth following end up here, without an algorithm deciding what I see.

Audiobookshelf

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.

Kobo Clara BW

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

Todoist

Every task, big or small, ends up here. If it's not in Todoist, it's not getting done.

Fantastical

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

Bitwarden

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.

Raycast

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.

Hammerspoon

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.

Claude

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

Mac mini (2024)

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.

MacBook Pro (2021)

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.

LG 40WP95C-W

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

Herman Miller Embody

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.

Uplift V2 4-Leg Standing Desk

I switch between sitting and standing throughout the day. The 4-leg frame is rock solid, even at full standing height.