-
The cleanup job that deleted 239,000 live search chunks
A nightly orphan-chunk sweep in my Elasticsearch library deleted 239k live chunks from 19.4k documents for four weeks. Why its liveness check was wrong, how I recovered, and the count-first circuit breaker that followed.
-
13 hours of question marks: a canary for LLMs that look healthy
After a llama.cpp router restart my main model answered every request with question marks for 13 hours while every health check stayed green. A known-answer canary now catches it within 10 minutes.
-
How small local models finish hour-long agent tasks
Left alone, my 9B agent closed tasks without doing them and invented a 10 KB report from an empty sub-agent result. Scaffolded task trees, evidence checks and deterministic gathering let it finish 66-minute projects.
-
DNS is not a firewall: splitting Traefik into LAN and public
My internal services had no public DNS, yet anyone could reach them by sending the right Host header to my public IP. How I proved it over Tor, split Traefik into LAN and public entry points, and the two test mistakes I made.
-
A provenance ledger for a home library, anchored in Bitcoin
How I fingerprint every file in my research library (CIDv1 + SHA-256), log them in a signed append-only Merkle tree, anchor each daily root in Bitcoin with OpenTimestamps, and verify it all offline.
-
A post-reboot check script for a one-machine home lab
A cold boot of my lab produced 37 failed jobs; three were real defects hidden for up to two weeks. Here is the read-only OK/FAIL script I now run after every reboot, and the failures it catches.
-
One GPU, many LLMs: the VRAM guards that stopped a driver deadlock
With 33.9 of 34.2 GB of VRAM in use, a desktop app triggered a 24.7 GB eviction and froze my GPU driver. Here is the VRAM budget and the two guards that now enforce it.
-
Agent skills as SKILL.md playbooks, not plugins
My agent's plugin folder auto-loaded code as ungated tools. I moved procedures to SKILL.md playbooks in one git library: validated in CI, root-owned, read-only to the agent, and promoted only after review.
-
NetworkPolicy gotchas: hostNetwork Traefik and Docker DNAT
A hostNetwork ingress shares the node IP with everything on the host, and Docker rewrites destinations before kube-router filters egress. What that broke on my k3s cluster, how a forged header created an admin, and how to write exact policies.
-
Velero said Completed. It had backed up a RAM disk.
Velero's Kopia backup skipped my main Postgres because it used hostPath, saving only an in-memory temp volume; 13 of 17 databases had no backup anywhere. PV fixes, two OOM kills, and a byte-exact restore.
-
Local AI study guides for thousands of books, capped on purpose
Hosted study guides cost 80k tokens per part, so I moved to a local 4B model. What broke, the guardrails that fixed it, the 100-chunk and 60-section caps, and why breadth beat depth.
-
From Ollama to a llama.cpp router: 49 models down to a few presets
I replaced Ollama with a llama.cpp router on my home-lab GPU: on-demand presets, sleep timers, embedding parity tests, and a log-driven retirement that freed about 400 GB.