Catchment
Replaces my dad’s handwritten rain log, and grows into managing the home’s tanks, borehole and irrigation.
Most link to where I’ve used them.
What I’m building now, and a real incident I investigated.
Replaces my dad’s handwritten rain log, and grows into managing the home’s tanks, borehole and irrigation.
Real incident
A small healthcare practice’s website was quietly serving spam. I traced the break-in to one admin login and tracked down what the attacker left behind.
The Linux machines and self-hosted services I run at home, and the segmented Proxmox and pfSense lab I built and documented.
Android spaced-repetition app with SM-2 scheduling, MCQ and cloze cards, synced to my homelab with Syncthing.
Play a short clip, and friends race to name the song.
Token-bucket rate limiting middleware for net/http, written to learn Go concurrency before Catchment.
Versioned schema migrations for SQLite in plain Go, the approach Catchment now uses.
Working out the column count, finding a text column, and pulling the users table, with the parameterised fix.
govulncheck, gosec and an image scan in GitHub Actions, what each one caught on Catchment, and the false positive I suppressed.
STRIDE on a system with a borehole pump, two tanks and a Go API, and why the pump relay is the asset that matters most.
What I built in phase 1, why it’s plain Go and SQLite, and what the first month of real rain data showed.
Three discovery waves, 23 malicious files and one attacker toolkit, worked through with PICERL.