Skip to main content

Uses

My digital toolbox — the stuff that's survived real-world use. What started with a $50 Raspberry Pi in 2015 has evolved into a homelab and workflow that actually works for me. Living document. I update it when I change something significant.

The physical layer

Hardware

Desktop PC2019 · self-built
Intel i9-9900K, 64 GB RAM,RTX 3090, 1TB NVMe + 8TB HDD. The 24GB VRAM handles 7B–34B LLMs comfortably. Killed a 2080 Ti overclocking for inference in 2020 — taught me to respect thermal limits.
Framework Laptop2022 · DIY Edition
i7-1260P, 32 GB RAM, 1 TB NVMe, Ubuntu 24.04 LTS. After three laptops became e-waste because one component failed, the modular design won me over. More expensive than a Dell with similar specs — I value the right-to-repair philosophy.
LG 34WK95U34″ ultrawide · 3440×1440
One seamless ultrawide beats dual 27″ monitors. Three vertical code panes side-by-side, no bezel gap. Game changer for monitoring dashboards.
Wooting 80HEkeyboard · ~$185
Analog hall-effect keys. Thought it was marketing hype until I tried it. Per-key actuation points and analog input changed how I interact with my machine. Can't go back to mechanical.
Glorious Model Omouse · ~$50
67 grams. After years of heavy gaming mice and wrist pain, going ultralight was a revelation.
SteelSeries Arctis 7X+headset · ~$150
Wireless that actually works. 30+ hour battery, comfortable for all-day wear, and the mic doesn't sound like I'm in a cave.
Steam Deck1 TB · first-gen LCD
The original LCD model, maxed out to 1 TB. Half handheld console, half pocket Linux box — it runs Arch, so a fair share of its screen time is me SSH'd into the homelab from the couch. Occasionally I also play games on it.
Steam Machine512 GB · SteamOS
Valve's second swing at a living-room PC, a decade after the first Steam Machines quietly flopped. The 512 GB model, just arrived — a SteamOS box on the TV that doubles as one more place to check whether something actually runs on Linux.
Chemex 10-cup + Baratza Encorecoffee · $50 + $170
Good security engineering requires good coffee. Non-negotiable. The ritual of manual pour-over gives me time to think through problems.

The server rack

Homelab

Ubiquiti UDM Profirewall · ~$380
Spent years with pfSense on repurposed hardware. UDM Pro isn't as flexible, but it's stable, fast, and I don't maintain another box. VLAN segmentation, IDS/IPS, DPI. Handles gigabit without breaking a sweat.
Dell PowerEdge R9102017 · ~$800 used
Main hypervisor. 4× Xeon E7540 (48 threads), 256 GB RAM, ~400 GB ZFS pool. Runs Incuson Ubuntu 24.04 with BOSH-managed Cloud Foundry and Concourse CI. Sounds like a jet engine at full throttle. ~$150/month at idle — cheaper than equivalent cloud.
Raspberry Pi 5×3 · $80 each
Dual Pi-hole for DNS, Authentik for SSO, assorted auxiliary services. The ARM tax is real but power draw is negligible.
Raspberry Pi 42015 · the OG
The one that started it all. Still running after ten years. Handles Chrony NTP for the lab. Won't retire it out of principle.

The editor

Software & Development

Ubuntu 24.04 LTSdaily driver
Tried Fedora for six months, kept breaking after updates. Ubuntu LTS is boring, which is exactly what I want on machines I depend on.
Incusvirtualization
Fork of LXD after Canonical's licensing changes. Cleaner virtualization than ESXi for a homelab, less overhead than KVM alone.
VS Codeeditor
Left it for Neovim in 2023 over Electron's memory footprint, ran a tidy Lua config for two years, and quietly came back. The AI coding tools live here now, and fighting my editor to reach them stopped feeling like a principled stand. The RAM it eats is a rounding error next to a browser anyway.
Astrostatic site framework
What this site is built with. Islands architecture, zero JS by default, excellent Markdown and MDX support. The sweet spot between Jekyll and Next.js.
Git + GitHubversion control
Everything lives in git. Dotfiles, homelab configs, blog posts, scripts. If it's not in git, it might as well not exist.
Terraforminfrastructure as code
Managed firewall rules as code. Best investment I made in automation. Turned "click 20 things in Ubiquiti's UI" into a reviewable pull request.

The perimeter

Security & Monitoring

WazuhSIEM · self-hosted
Self-hosted SIEM for the homelab. Open source, integrates with CISA KEV and AlienVault OTX threat feeds. Detects real things, not just noise.
Bitwardenpassword manager · self-hosted
Self-hosted via Vaultwarden. Integrated with YubiKey for 2FA. If a service doesn't support 2FA, it doesn't get my data.
YubiKey 5C NFChardware token · $55
Hardware-backed 2FA for everything that supports it. Two keys — one on my keychain, one in a safe as backup.
Pi-holeDNS filter · ×2 for HA
Network-wide ad and tracker blocking. Blocks ~40,000 malicious or privacy-invasive domains. Caught a smart bulb trying to phone home 47,000 times in one day.
Prometheus + Grafana + Lokiobservability stack
Metrics, dashboards, and log aggregation. Alertmanager pushes tontfy for mobile notifications.

The assistants

AI & Coding Tools

Claude Codedaily driver
Primary AI coding assistant. Strong at architecture, long-context reasoning, and multi-file refactors. Most of my AI-assisted work runs through this.
Codex / Gemini / OpenCodemulti-model
Different models for different tasks — routed viaNexus Agents. Gemini for research, Codex for deep code analysis, OpenCode for privacy-sensitive work.
Ollamalocal LLM runner
Runs Llama, Qwen, and Mistral models locally on the 3090. Privacy-sensitive work never leaves my machine.

The subscriptions

Services

GitHub~$4/mo · Pro
Where my code lives. Pro tier for private repos and Actions minutes. This site auto-deploys from GitHub Pages.
Cloudflarefree tier
DNS, DDoS protection, edge caching. Free tier covers everything I need for personal projects.
Backblaze B2~$50/mo · off-site backup
Off-site backup for homelab. 3-2-1 strategy. Cheaper than S3, fast enough for nightly restores when needed.
SimpleLogin~$3/mo
Email aliases for every service signup. When a company gets breached, I know who leaked my address. Compartmentalization reduces blast radius.

Running on my metal

Self-Hosted

VaultwardenBitwarden-compatible
Rust rewrite of Bitwarden server. Lighter than the official container, same clients, same features I actually use.
AuthentikSSO / identity provider
Self-hosted SSO for homelab services. OIDC, SAML, LDAP. Integrates with everything that speaks standard identity protocols.
BookStackwiki · documentation
Homelab wiki. Procedures, runbooks, and "why did I configure this like that" notes. Future-me always thanks past-me for writing things down.
ntfypush notifications
Self-hosted push notification service. Alertmanager, cron jobs, and scripts all send alerts through it.

The shell

CLI Tools

Zsh + Starshipshell + prompt
Modern shell, fast prompt. Starship is written in Rust and stays out of my way. Git status, exit codes, runtime indicators at a glance.
ripgrep (rg)replaces grep
Faster than grep, respects .gitignore by default, sensible defaults. I've genuinely forgotten how to use plain grep.
fdreplaces find
Faster than find, friendlier syntax, respects .gitignore. The find command's argument order has haunted me for years.
batreplaces cat
Syntax-highlighted cat with line numbers. Looks better piped into less or used directly. Small quality-of-life win.
ezareplaces ls
Modern ls with git integration and tree view. The successor to exa.
zoxidereplaces cd
Directory jumper that learns your habits. z proj to jump to your most-used "proj*" directory. Saves hundreds of keystrokes a day.
fzffuzzy finder
Fuzzy finder for everything — files, command history, git branches, process lists. Ctrl-R will never feel the same again.
tmuxterminal multiplexer
Sessions survive SSH disconnects, split panes for parallel work, shared sessions for pair debugging. Can't work without it.
htop + btop + ncdusystem monitoring
htop for process monitoring, btop when I want the pretty view, ncdu when I need to find what's eating my disk.

Last updated .