Go & Kubernetes
- Gooperators, ConnectRPC, pgx/v5
- kubebuilderCRD design, CEL validation, admission webhooks
- controller-runtimeenvtest, kind e2e, reconcile loops
Infrastructure / Go / Applied AI
Infrastructure engineer. Full vertical slice - kernel TCP stats up to LLM prompt architecture. Go operators, distributed cache mesh, agent infrastructure. Off the clock: local LLMs and a homelab that keeps growing.
Infrastructure engineer in Austin. Mostly Go: operators, microservices, distributed systems. Full vertical slice - from kernel TCP stats to LLM prompt architecture. Built an agent harness twice - Python first, then Go. Custom MCP servers, safe-eval sandboxes with AST allowlists, model routing with health-class failover. Side-channels keep full result sets out of the LLM context. Security in code, not prompt.
Observability that catches real signal - Prometheus recording rules, Grafana dashboards as code, Envoy access logs through ClickHouse to Prometheus gauges. CI that respects developer time - dependency-aware test matrices, timing-fed sharding. The goal is always the same: make the system legible enough that someone else can run it.
This site is static, served from Cloudflare's edge. Dynamic stuff lives on subdomains pointing back to the homelab through a Cloudflare Tunnel.
What I reach for, by category.
Things I've built. Hit shuffle for a random tour.
python -I -S with AST allowlists - imports, dunders, open, subprocess all blocked. Model sees analyze_result, never run_analysisHEAD with Range: bytes=0-0.version_num = microsecond wall-clock epoch. Two PUTs same microsecond = 503.getsockopt: RTT, retrans, cwnd, delivery rate, pacing ratestartup_policy: optional - degraded backend cannot block agent startupgo.work, including stdlibatomic.Pointer - hot-swap without locks_bucket series - histogram_quantile returns nothing. Threshold-on-gauge alerting instead.The rest of it. Where the hours go when the laptop closes.
batchison@lab:~$ cat current_state.yml
homelab:
os: Unraid
compute: 8th gen Intel i5 NUC (32GB, 1TB SSD, USB 2.0 drive)
storage: Synology DS1621+ (96TB raw)
llm: [LM Studio, Ollama]
network:
isp: AT&T Fiber
gateway: UCG Fiber
switching:
- USW Pro XG 8 PoE
- 3x USW Flex 2.5G 8 PoE
- USW Flex 2.5G 8
aps:
- 2x U7 Pro Wall
- U7 Lite
backup_wan: [U5G Max, C4P Shield]
dns: NextDNS
ingress: Cloudflare Tunnels
desk:
case: Jonsbo Z20 (SFF)
cpu: Ryzen 9800X3D
gpu: RTX 5090
display: LG C3 42" OLED
batchison@lab:~$ _
I want to feel a wall of sound. Why use bass shakers when you can just make BASS?
Someone else's cloud is just a computer you can't touch. The rack hums in the corner, 96TB on the Synology, ingress through Cloudflare Tunnels.
2023 BMW M2 (6MT) after an MX-5, Mazda3, and RAV4. Performance first - CS tune and midpipe / valve controller on the list. Weekend clears, find the good roads.
Chasing the next flight and the next bowl.
Destiny, Halo, Cyberpunk, Civ VI, AC Black Flag. Zelda, Pokemon, Mario, DK - Nintendo in general. OSRS for the grind, Overwatch and MapleStory in the mix.
Ganja White Night, LSDREAM, Of The Trees, ATLIENS, Illenium, Excision
Martin O'Donnell / Michael Salvatori - Halo, Destiny
Hans Zimmer, Hania Rani
Phil Collins, Coldplay
Lost Lands, Illfest
Sushi, steak, chicken wings, 8.85lb beef plate ribs, Yonezawa Wagyu. AllClad pans, overnight dry-brine, reverse sear with wagyu tallow. Oven and stainless steel - grill to come.
LinkedIn is the best way to reach me. GitHub works too.