Twenty-nine finished articles sat on my laptop for a month, and not one of them was reachable. That was the point.
The bottle only counts what happened
FocusBottle is a timer with a jar of light in it. You pick 25, 50 or 90 minutes, the light gathers while you work, and when you get up and leave it dims. There is no account and nothing to set up, which means there is also no way to argue with it. The bottle reports the session you had, not the one you intended.
I mention this because I spent the same week building the same rule into a blog. I wrote thirty articles in a burst and then made it structurally impossible for twenty-nine of them to be seen.
It was not modesty. It was the only way I could keep writing.
A flag that records rather than promises
Every article has one field next to it, and that field is either draft or published. Nothing else about the file changes. The build step reads the field, copies the published ones into the folder that ships, and lists them in the sitemap. The rest stay in a folder that never leaves my laptop and never gets uploaded anywhere.
The useful part is what this does to the word later. A draft is not queued, not scheduled, not half-live. It is not indexed, not crawlable, not a page that someone might stumble onto at two in the morning. It genuinely does not exist yet, and the search engine agrees with me.
Writing thirty pieces is easy when twenty-nine of them cannot embarrass you. The flag is not a promise to publish. It is a record of what already happened.
Two folders, and only one of them is the internet
The trap is that the folder I edit and the folder that ships have different names. I write into one; the host reads the other. Every change means build, then copy, then deploy — and the copy step is the one nobody notices skipping, because the deploy still succeeds and still says the right words.
It shipped yesterday's site more than once. Then the images: the article references a cover image at a path that resolves correctly on my machine and 404s online, because the copy grabbed one asset folder and not the other. Nothing errors. You just get a page with a small broken square where a picture should be, and you only find out when you look at it from somewhere that is not your laptop.
A path is a base, not a label
The worst one was the redirect. The blog lives at a subpath, and a link written without the trailing slash made every relative link underneath it resolve from the wrong place — so clicking an article sent you to the landing page instead. Add a prefix-matching redirect and the page starts chasing itself until the browser gives up and tells you there were too many redirects.
Two lines of config, four days of reading the wrong file. What I keep from it is smaller than the fix: a path is not a name you gave something. It is the base that everything underneath it is measured from.
Twenty-nine drafts, one published page, and a bottle that fills only when you actually sit down. Both of them are counting the same thing.