The lab.
Where I run my own infrastructure, my own models, and my own experiments.
What's running.
Docker is the operating system of my workflow. Every service I run — Stockman's full dev stack, local LLMs through Ollama, OpenWebUI behind Tailscale, Immich for photos, Jellyfin for media, Nextcloud for files, Langfuse for trace logging, a personal RAG corpus, Caddy as the ingress, Grafana for the things I want to actually see — runs as a Compose-defined container, declared in code, reproducible from a fresh disk in fifteen minutes. Secrets in a vault. Observability before features. One command to rebuild.
Local models are a daily driver, not a demo. Gemma4:26b runs on the RTX 3090 for quick terminal help, log summaries, API sketches, and private iteration loops. Frontier models still win on hard problems — and I use them — but for the loop of "summarize this log, draft this commit message, sketch this API surface", local is faster, private, and free.
The lab is production with a smaller blast radius. Tailscale gives every device a stable internal address; Cloudflare Tunnel exposes exactly the surface I want without opening a port. The same skills move both directions: a CI pipeline I prototype against a homelab Postgres lands cleanly in a Vercel + Neon production stack the next week.
Self-hosting taught me the unglamorous parts. Immich, Jellyfin, and Nextcloud are useful precisely because they force the whole operating model: volumes, backups, reverse proxies, TLS, upgrades, service discovery, health checks, and the boring habit of writing down the rebuild path before something breaks.
Physics & astronomy
Numerical methods, statistics, and a comfort with messy real-world data are the same toolkit, whether the data is gravitational or commercial. The N-body simulator and the forecasting engine are both downstream of the Physics & Astronomy minor.
Smaller showcases.
From-scratch implementation of BLAST's seed-and-extend heuristic.
Implementations with a focus on side-channel-aware coding habits.
Query planner, B-tree index, transactional buffer pool.
For the personal interests, see /life.