Notes on the things that broke, and what fixed them.
Subscribe via RSSPart 5 of HazShield AI. I put a "run a simulation" button on a public control room and had to solve the real problem behind it: how do you let anyone trigger an expensive, resource-hungry plume without letting them take the whole system down?
Part 4 of HazShield AI. Three phases of backend work lived in journals and SQL queries. This one builds the control room: a live wall where you watch a methane plume bloom across the plant, and read the machine's isolation plan seconds after it writes it.
Part 3 of HazShield AI: an async worker cluster folds thousands of alarms into incidents, hands hazard context to a local LLM, and learns the hard way that a model can write perfect JSON and still misdiagnose a methane leak.
Ten thousand sensor readings a second into a Rust gateway capped at 512MB — then I killed Postgres mid-cascade during a simulated gas leak. Zero alarms lost, counted rather than assumed.
A distributed industrial safety system running on one mini PC under my desk - OpenStack squeezed into 28GB of RAM, five public domains with zero open ports, and a database built to survive the firehose.
Turning a hand-built OpenStack tenant into reproducible Infrastructure as Code — and the service-catalog wall that makes connecting Terraform to a self-hosted cloud harder than the docs suggest.
An end-to-end build log: a bare GMKtec mini PC to a public-facing OpenStack cloud you can SSH into, with no public IP and no port forwarding — including every wall I hit and how I got past it.