My Raspberry Pi could not carry the dream. A 2018 Mac mini could.
I wanted a small army of agents running 24x7 and a place to host all my homelab apps. The Pi was never going to do it. A colleague handed me his 2018 Mac mini and the whole thing took shape in one sitting.
Why My One-Line Installer Worked Everywhere Except WSL
From three-day onboarding to docker compose to a one-line interactive installer, until one Windows developer hit a CRLF wall in WSL. Here is the full arc and the fix.
The disk that filled itself
Homelab box said 100 percent full, du said half the disk was free. Docker was holding open a log file I had rm'd months ago. lsof +L1 untangles the knot.
The node_modules That Wouldn't Die
An internal app deploy kept importing an old Vite plugin export. The lockfile was right, the build was wrong. The culprit was older than the bug.
The sed that didn't stick
A failing nightly backup, a sed hotfix that worked once, and the next morning's cron that failed anyway. Node's require cache had eaten my patch.
Why I Stopped Arguing About Docker Port Conventions
A colleague raised port conflicts in the daily. A suffix vote lost to the 16-bit limit. A prefix rule worked but still felt wrong. Then docker-compose.override.yml.example made the whole debate go away.
Setting Up a MinIO CDN with Nginx Reverse Proxy on Docker
A practical walkthrough for self-hosting an S3-compatible CDN with MinIO, Docker Compose, and Nginx - including the small config bits everyone seems to miss until presigned URLs start failing.
Building docling-server: a one-command document API for our AI pipeline
Why I wrapped docling into a full Docker Compose setup with FastAPI, Celery, and nginx — so our AI project could stop worrying about messy PDFs, Word files, and scanned junk, and just get clean markdown back.
I upgraded our 2.5-year-old self-hosted Sentry without losing a single byte
A self-hosted Sentry instance, 2.5 years behind, 0 bytes of swap free, 4 mandatory version hops, 78 containers, and one afternoon where I learned that enabling a feature and using a feature are not the same thing.
diskdoc and dockit: same problem, two languages, different answers
I built two disk cleanup CLIs — one in Rust with a TUI, one in Go with risk scoring. Here's what each language and design taught me that the other couldn't.