// blog

Errors, outages,
and what I learned.

The posts worth reading are the ones where something went wrong.

July 14, 2026
Build Logs, Postmortems

Secrets Are Not Configuration

.env files were fine until migrations, rotations, Kubernetes, OIDC, and app sprawl turned them into a liability. Original work date June The problem At small scale, .env files felt good enough. Then the…

July 6, 2026
Automation, Build Logs

Why I Built HexMap

The lab outgrew static diagrams and scattered dashboards, so HexMap became the live, agentless infrastructure map that shows what exists, where it runs, and what depends on what. Original work…

July 5, 2026
Postmortems

Wireguard DNS Betrayal

WireGuard was connected, Technitium was alive, and .fndhome records existed. The problem was that wg-easy generated client profiles using the wg-easy host as DNS instead of Technitium. Original work date June The…

June 2, 2026
Build Logs

Was moving to Proxmox a mistake?

Mid-migration made the new architecture look worse because the overhead arrived before the benefits did. Original work date June The problem During the bare-metal Docker to Proxmox plus k3s migration,…

April 3, 2026
Uncategorized

The mount point that ate my backups

Cleaning up Zhongli mount points was the right move, but Backrest lost sight of the repository path afterward and backups quietly stopped. Original work date Early April The problem NFS…

February 3, 2026
Uncategorized

The monitoring agent I forgot existed

Moving Docker and containerd data to the RAID array was the right infrastructure move, but it broke Dockhand’s host agent because the agent had assumptions about where Docker lived. Original…