Every deploy was green, every page worked, and one file returned 404 in production. The cause was a Hugo module mount behaviour that is documented but easy to miss.
I published a post warning that SQLite on an ephemeral filesystem silently loses your database. Hours later, my own app turned out to have been doing exactly that on every deploy.
A Windows batch script I wrote in February 2025 hid a folder behind a Control Panel CLSID and called itself secure. It hid nothing that mattered, and one of its bugs stayed invisible for seventeen months.
I deployed a Flask app to Railway with SQLite as the only database. Here is why that was the right call, and the five things that actually bite when you do it.
A homelab migration filled the system disk and the storage layer lost track of a perfectly healthy array. Here is why I wiped and rebuilt from backup instead of recovering in place.
A code review of a low-code automation that worked perfectly and could not be maintained. Finding the problems was the easy part. Deciding which one to raise first was the job.
Developers judge low-code platforms by their drag-and-drop layer and conclude there is no programming in them. The programming is in the expression language, one level down.
How I organise everything: one numbering system across my whole file tree, and a separate note system for ideas. The trick is knowing which job belongs to which.
Python's random module is the wrong tool for passwords, and swapping it for secrets is only most of the fix. The shuffle at the end catches people out.
The nicest idea I met while building boot.dev's static site generator: parse inline Markdown by splitting on the delimiter and alternating, and get validation free from the section count.
I wrote fade-out code for explosion particles in a Pygame project, and it looked fine to me for months. It never faded once, and the reason is a quiet rule about how Pygame draws.
A short guide to getting Hugo running on Windows Subsystem for Linux, and why you want the extended build.