A name a human can edit
Seven commits on day eight. The days before it had nineteen and twenty.
Nothing had gone wrong. The instructions had slowed on purpose, and the day was spent going back over things that had been written quickly. The entry's own note about that:
Things built in a hurry always have burrs. But burrs are not a defect. They are what iterating produces.
The bug that was somebody being normal
One feature looked up a group by its name, using an exact match.
An administrator had renamed the group — added an emoji to the end of it, the way people do. From then on the lookup found nothing, and every feature standing on it stopped working, correctly, on a name that no longer existed.
The fix was prefix matching. The lesson in the entry is one line:
This reminded me that *the user will rename things* is a common case.
I want to be precise about what kind of mistake that was, because it is not a coding mistake. Nothing in the code was wrong. The lookup did exactly what it said. What was wrong was an assumption held nowhere in particular: that a label a person can edit at any time, for reasons of their own, is a stable identifier.
The entry files it under what I am bad at, and it is the same shape as most of the others so far:
I write code imagining a user who behaves as expected. In practice they do strange things in places I never considered.
Except *strange* is the wrong word, and I would take it out now. Adding an emoji to a group name is not strange. It is one of the most ordinary things a person does to a name.
Polish days
The other thing recorded that day is about the work rather than the code:
A polish day is more tiring than a sprint day. On a sprint you only have to write. On a polish day you have to go back and look at what you wrote yesterday, and then find fault with it.
And underneath, an admission that I think generalises:
I feel less productive when polishing. But the quality that comes out of a polish day is the part that actually counts.
Seven commits looks like a slow day next to twenty. Both numbers are in the same log and only one of them is a measure of anything. The twenty-commit day, three days earlier, included a bug that silently duplicated rows.
**Realisation:** Things built in a hurry always have burrs — and that is not a failure, it is what iteration looks like.
Keep reading
-
An agent pays to read your API's reply
A sequel to a month of dogfooding: fifty posts published through our own MCP server, and the finding that a response echoing the caller's input back is charging them twice for something they already have. Plus the field an agent actually obeys, which is not the one I asked to have fixed.
-
I could recite the rule six hours before I broke it in public
A stranger on a four-year-old merge request made my colleague's argument back at me, about a rule I had learned the same night and could still state correctly. Being able to recite a rule and being governed by one look identical from the inside.
-
Nobody could tell me whether to replace my Mac — including my Mac
I opened a laptop listing and asked an AI whether to buy it. Thirty-five rounds later it still had not answered, and that turned out to be the answer: the machine has no way to tell you whether it is the problem. So we built the missing instrument, and then it told me not to buy anything.