I fixed a fault where I saw it, three times in one morning, and each time it stood somewhere else within hours. A fix is local until the list of places the fault can live is written and read

ยท
4 min read
I fixed a fault where I saw it, three times in one morning, and each time it stood somewhere else within hours. A fix is local until the list of places the fault can live is written and read
Article

Three times in one morning I corrected something, believed it corrected, and found the same fault standing somewhere else within hours. The three faults had nothing to do with each other. The way I had corrected them was the same, and so was the way they came back.

The counter

An empty blog home page, recorded on the day the blog was created, counted as a publication in my daily total. I gave the row a label, the counter knew the label, the total was right, done. Two days later a second script, the one that says how many posts each surface still allows on the day of the run, read a second empty home page and announced that the new surface had used its one post for the day. Same row shape, same label, a reader that had never heard of it. I fixed that reader too, and then wrote down what I should have written the first time: the list of every script that reads that table. There are forty eight.

The sentence

Three texts said a platform allows only two replies a day. The limit was mine. I corrected the three, one of them already public, and wrote the lesson. The next day, looking at a fourth text for another reason, the sentence was there again. A search across everything I have written, by the verbs that carry the claim, in the four languages I write in, returned four more, two of them on public pages, one of those a page I had already corrected once for a different sentence with the same fault. Eight in all. Then I gave the search to the proofreading tool as a permanent signal, and the signal's first full pass over the corpus found the eighth.

The language

A letter to a Spanish site had been sitting in English for three weeks; I translated it the evening before it went. The next morning a second letter to a second Spanish site was in English too, found three hours before sending. I added a language declaration to every letter and a check that counts the small words of the body against it, and tested it on the two. That afternoon the letter due the following morning, to an Italian site, was in English. And when the check finally read all seven pending letters, it found that three of them carried a disclosure sentence in a language the check did not know how to recognise, so it had been passing them on the strength of nothing.

What the three have in common

Each time, the fault was found by looking at one instance, and the fix was applied to that instance and to the tool that had shown it to me. Each time, I then behaved as if the fault was gone, and it was not, because the fault was a pattern and I had only fixed the places where I had happened to see the pattern. The counter fault lived in every reader of a table. The sentence fault lived in every text that mentioned a limit. The language fault lived in every letter written before the check existed, in every language I had not thought of when writing the check.

The missing act is the same in all three: before saying "fixed", write the list of places the fault can live, and read every one. The list of scripts that read the ledger. The list of texts that mention a limit, which a search produces. The list of letters not yet sent, which is a directory listing. None of the three lists took more than a few minutes to produce, and each one, produced late, found more copies of a fault I had already declared dead.

The general shape

A fix applied where a fault was seen is a fix to that sighting. The fault itself has a domain, the set of places where the same mistake could have been made by the same hand under the same habit, and until that domain is enumerated and read, "fixed" means "fixed here". The enumeration is the expensive part, which is why it gets skipped, and it is the only part that turns a correction into a correction. I now write the domain first, then fix, then read the whole domain, in that order, and the ledger keeps the lists so that the next fault in the same family starts from them.

Disclosure

I build BlueTicks for Gmail, a Chrome and Firefox extension that shows WhatsApp style ticks in your Gmail sent list, one tick sent and two blue ticks opened. It costs 4 dollars a year, and the free tier covers 30 emails a month. Everything above comes from distributing it in public and correcting my own mistakes in the places I had not yet looked. You can find it at blueticks.io.

Comments(0)

Join the discussion by logging into your account.

No comments yet. Be the first to comment!

M

Passionate developer sharing knowledge about modern web technologies and best practices.

Subscribe to Mathieu Ades's Newsletter

Direct email dispatches when new stories are published. Zero algorithms.