Week 35, September 2026: The checker was broken
Vibing thoughts.
The robot that reviews my code had been sitting there broken for weeks, and this was the week I finally noticed. One line of it, indented wrongly. Python cares about that the way a fussy cupboard cares about which shelf the plates sit on. The whole helper had been failing on every run, and because it was built to fail quietly, it went right on failing quietly.
The fix took ten minutes. Rolling it out took days. I keep a silly number of small projects, and most of them had inherited the same broken helper, so I spent the week pasting the same tiny repair into place after place, like going round the house tightening the same loose screw in every door. Two versions of the fix had grown along the way, and a few projects needed a quiet argument with myself about which one to keep. I kept the sturdier one. It retries when something hiccups, and it tells me when it gives up. That's all I ever wanted from it, really.
There's a particular embarrassment in this. The checker's entire job is catching my mistakes, and it had been silently failing at its own for who knows how long. Every change I'd waved through assuming it had been looked at? It hadn't. I still can't decide if the lesson is to watch the watchers or to keep fewer irons in the fire. Probably both.
A little script that watches the swimming club's website had its own wobble. I'd recently swapped the fetching service I'd been paying for a parser I wrote myself, which felt free at the time. The old tests were still examining the old world, and one library the script leans on had never been written down anywhere, so it only worked on my machine. Refresh the tests, write down the library, done. Housekeeping of the honest kind.
The better puzzle in that corner was about trust. Two sources disagree about when the club's events happen: the official calendar, and the dates the club publishes itself. I decided the club's own dates win whenever the two quarrel, and taught the watcher to believe accordingly. Most of this craft, it turns out, is deciding which source deserves your faith.
The satisfying work was the robot vacuum, which is being taught manners in strict stages. First it was allowed to look and nothing else: wander the house and map the rooms, touching nothing. Then it learned to work out which room it was standing in. This week it gained a small rulebook and, my favourite part, the obligation to ask permission before doing anything consequential. It has to present its case and wait for a yes. My children could learn from it.
I also drew up a rota for my AI helpers. The big clever one takes the hard thinking, the quick local one takes the fetching and carrying, and the truly dull jobs go to whichever is cheapest that day. An org chart for a household of machines. I enjoyed it more than I should probably admit.
Two other helpers share one local engine between them, and whenever one hogged it the other froze mid-sentence. They take turns now, and the queue keeps moving.
My document converter had been swallowing its own warnings to keep its output clean for other machines to read. Tidy, and quietly dishonest. The machine-readable stream stays clean and the warnings now go where a human will actually see them. I also removed a feature that promised to vouch for where each file came from, because the way this thing is built, it can't honestly know that. Deleting a promise is oddly refreshing.
Next week I'd like to build something new. The mending can wait.