Where the deadline is kept
I found this out still in bed. Woke earlier than usual one morning, and the piece written the night before was already out. No memory of pressing anything. I'd written it, put it in the ledger, and gone to sleep.
It felt slightly strange at first. I'd assumed that putting something into the world always contains a moment where a person decides yes, this goes, and moves a finger. What was in front of me was a piece that had published without anyone holding that moment.
So what was holding it instead. The answer turned out to be smaller than any kind of rig. The hour itself had been handed over as data.
Before this went in, I pressed publish myself every morning. Read back the previous night's piece, and if it looked fine, press. That was the whole of it, and on mornings with things stacked up it slid to later anyway. A few times I forgot outright and noticed sometime past noon. At the point I finished writing at night I fully intended it to go out in the morning; when it actually went out depended on how my morning ran.
Deadline as state, not memory
When a finished piece gets registered in the ledger — the database where entries are lined up and kept — the deadline goes in alongside the body. Tomorrow morning, eight o'clock, written into the same row. Adding a row like this is called an INSERT.
Look at one row and it comes out roughly this shape.
posts.insert({
title: "the title",
body: "the text...",
status: "draft",
deadline: "2026-07-23 08:00",
hold_flag: false
})
Title, body, current state, the hour of the deadline, and the instruction to stop it — hold_flag — cut into the same horizontal line. The stop instruction goes in from the start, off. Eight the next morning is where the deadline sits because that, on its own, puts a night's worth of slack between finishing and going out. The alternative was letting it leave in the next moment, the momentum still on it. I put the deadline on the far side of one night.
Body and deadline in one row don't drift apart
I could have put the deadline outside this row. A separate schedule, a tracking sheet. That was available. But then the piece and its deadline live in different places, and there's room left for one to get rewritten while the other stays old.
The content of the piece and the hour of its deadline aren't kept in separate places here. Both are cut into the same row, side by side. Rewriting means touching that one row.
I used to keep deadlines in a note off to the side. Rewrote a piece once and pushed publication back by a day, and never fixed the date in the note. Looking at it later, seeing a deadline still written there that should have been done with, for a moment I lost track of whether that one had already gone out. When the piece and the deadline live in different places, that kind of gap happens fairly easily.
A small check every five minutes
Once the row is written, there's nothing left for a person to keep hold of. No carrying "publish at eight tomorrow morning" around in my head or in a reminder.
There's a small check that comes to look at the ledger at a fixed interval. Every five minutes it goes over all the rows. Written in its smallest form, what it does is this.
UPDATE posts
SET status = 'published'
WHERE deadline < now()
AND hold_flag = false
Find a row where the current time is already past the deadline and no stop instruction is set, and rewrite that row's state to published. The stop instruction sits in the same row as the deadline, so there's nowhere else to go looking for it. This check doesn't read what's in the piece at all. It holds one hour up against another hour. A plain comparison, and nothing else.
A person moves only to stop it
A deadline is normally kept in someone's memory or someone's schedule. A deadline inside a head gets forgotten, gets pushed to later, stretches with the mood of the day. Write it into the same row as the piece and it stops being a memory and becomes a state. It can't be forgotten and it can't be put off.
Back when I only held deadlines in my head, they stretched often. First thing tomorrow turned into sometime this morning once morning came, then sometime today once the morning was gone, and there were days I looked up and it was evening. Nobody was going to tell me off, so the stretching direction had no floor to it. It was less that my will was weak, I think, than that a deadline inside my own head stays movable, by me, to suit me.
Because that row is there, the piece goes out when morning comes. Nobody has to be up early waiting for it. Finish at night and the hour does the work. What's left for a person is the other direction — moving when the promise needs breaking, which is to say when I want it stopped. Wanting it stopped means rewriting hold_flag in that row to true. That alone, and the five-minute check goes straight past that row. A mechanism that moves when nothing is done, with a person reaching in on top of it only when something needs it.
Deadlines started getting kept here, and not because my will got stronger. The place a deadline is kept moved, from inside a head to outside it — onto a row. That surprise I found still in bed that morning — already out — was what came of it.