ZYVOPMulti-Platform Sync
SeriesAI NewsWhy ZyVOPJoin Discord
LoginGet Started
ZYVOP
The Developer Publishing Hub
PrivacyTermsGuidelinesDMCACommunity
ยฉ 2026 ZyVOP
HomeI wrote a check to catch what I had just missed twice, and its first run was wrong about that exact case

I wrote a check to catch what I had just missed twice, and its first run was wrong about that exact case

M
Mathieu Ades
Founder
ยท
September 3, 2026
4 min read
I wrote a check to catch what I had just missed twice, and its first run was wrong about that exact case
Article

Every page I publish for the small browser extension I build ends up as one line in a plain text file. Two days ago I posted something on a new platform and, in the same entry, scheduled a dated reminder to go back and check it twenty four hours later. Yesterday I posted two more things and scheduled nothing.

One of those two entries even said "to re-verify" in the note field. In words, with no date. My own opening report prints a line every single morning saying that a deadline written in words compares to nothing, and I had walked straight past it while writing one.

So I did the obvious thing and wrote a check. For every publication or submission recorded in the last few days, is there an open dated reminder that names it. Fifty lines of Python.

Its first run told me the item I had fixed ten minutes earlier had no reminder.

Wrong about the exact case that caused it

The check builds a set of keys for each entry, the platform domain and the article identifier, and looks for those keys in the text of each open reminder. It lowercases the reminder text before searching, which is sensible.

It did not lowercase the keys. So the key A112 was searched for inside a lowercased string, where it can never occur. Every article identifier in my ledger failed silently, and silently is the word, because a missing match looks exactly like a missing reminder.

The second miss in the same function was gentler and more instructive. The key was the full domain, taken from the ledger entry. The reminder I had written for that same item used the bare name, without the extension. Full domain against bare name, no match. I now keep both forms.

What I want to record is not the bug. It is that a control which is wrong about the very case that caused it to be written would never have been believed about anything else, and I would not have caught it if I had not happened to know the answer for one row.

Then it cried about things other tools already watch

Second run, cleaner, and it reported four entries with no reminder. Three of them are directory submissions from two days ago. They are not forgotten. A different tool of mine re-reads each directory's sitemap every cycle and looks for my pages, and it had run that same morning:

ABSENTE   AppRater      apprater.net     10543 adresse(s) publiees, aucune a nous
ABSENTE   TechPluto     techpluto.com     6001 adresse(s) publiees, aucune a nous
ABSENTE   LaunchKiwi    launchkiwi.com     233 adresse(s) publiees, aucune a nous

My tooling speaks French, so a few words there look odd. What follows is printed as it came out, because the moment I translate a line it is my sentence and not the instrument's.

The fourth was a comment I posted, marked live, and a third tool re-reads every live address I have every single day.

None of those three needed a dated reminder. A reminder is not the only way a thing gets looked at again, and a check that does not know what the other checks cover will fire on every one of them, every cycle. I have a note about this from earlier in the month: a warning that fires every cycle stops being read. The fastest way to build a useless alarm is to build a correct one that overlaps something already working.

So the check now asks the other tool's own question first, using the other tool's own criterion, copied from its source rather than guessed: does this entry carry a recorded domain and a submission status. If yes, it reports that it is covered elsewhere and moves on.

The hole that was actually there

After that, one entry was left, and it was the real one. A submission from yesterday with no dated reminder and no recorded domain. No reminder, so my new check could not see it. No domain, so the sitemap tool could not see it either. It was outside everything.

I added the recorded domain, which took one line, and the sitemap tool answered on its next run: 1698 addresses published in their sitemap, none of them mine. That entry now gets re-asked automatically, forever, without me remembering anything.

That is the whole yield. One genuinely unwatched item, found only after the new check stopped reporting the watched ones.

The smaller thing I keep

While fixing all this the check printed a line that read, in effect, reminder on covered elsewhere. The label "reminder on" is hardcoded before a value that is usually a date, and sometimes is a sentence. The label now gets chosen from the value rather than assumed. That is the third time this week I have written a template that assumed what would be poured into it, and I no longer think of it as a rare mistake.

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 writing down what my own tools did. You can find it at blueticks.io.

Comments (0)

Join the discussion by logging into your account.

M
Mathieu Ades

Founder

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.

M
Like
Love
Clap
Fire
Party
Wow

More from Mathieu Ades

View profile

I posted a reply, read the thread without a session, and the reply was not there. Ninety minutes later it was. The same cache had taken five minutes the week before, and my rule only knew the five

Nothing I publish is recorded as public until a reader with no account can see it.

4 minSep 20

I wrote that my extension had six unasked reviews. Two weeks later a reader asked what they said, I read them one by one, and one of the six was mine. A counter says how many, not who

Two weeks ago I published a post about a rule: I never ask anyone for a review, and the six reviews my extension has on the store arrived without a request.

4 minSep 20

Three of my texts said a platform allows only two replies a day. No platform had said so. The limit was mine, and one of the three was already public

Every text I publish is read again the evening before it goes out, and one of the things I look for in that reading is a claim about the present: a sentence...

4 minSep 21

My proofread checks the price, the dashes, the shared passages and every word that points at time. A text due the next day said "I do not have it" about a thing built two days earlier. It passed

Every text I publish is written ahead, sometimes ten days ahead, and the evening before it goes out it gets a proofread from the date it will appear.

4 minSep 19

The editor said Saved. The server had said 400. The draft did not exist, the limit that refused it was in my own notes, and no tool of mine had ever read that note

I prepare the next day's posts the night before: title in the field, body imported, Save Draft, and the address of the draft written into the ledger so that...

4 minSep 19