The Forty Seconds FocusBottle Would Never Ask You For

2026-10-29 · 4 min read

The screen was blank for forty seconds and then the whole chapter arrived at once, as if it had been waiting behind the wall the entire time.

The first test of my own app

Last week I typed three keywords into the novel generator I have been building and pressed the button. Nothing happened. The screen stayed blank for about forty seconds, and then a whole chapter appeared at once, as if it had been sitting behind the wall the entire time. FocusBottle, the timer I shipped a few months earlier, has never once made anyone sit and wonder whether it was doing anything — and that contrast bothered me more than the bug did.

I had built the feature exactly as specified. What I had not built was any reason to believe it was working.

The light was already the answer

Nineteen minutes into a session I reached for my phone out of habit, glanced up, and watched the particles go dim. I put it back down without thinking. Nothing had to be explained to me.

My novel app did the opposite. For forty seconds it asked the user to take it on faith, and faith is expensive when someone has just installed something they have never heard of.

The fix was not a spinner

I could have added a loading spinner, which is what most people do. Instead I switched the backend to stream the text out chunk by chunk as the model produced it, so the first sentence lands in under a second and the rest keeps arriving. The user is never waiting for the app; they are reading it.

That change was not really a technical one. Waiting forty seconds with a spinner and waiting forty seconds with text both take forty seconds. Only one of them feels like a product.

There was a side effect I did not expect. Streaming also made the model's mistakes visible early — if the opening line went somewhere wrong, I could stop it before it burned through a thousand more words. The old version hid everything until it was too late to do anything but start over.

What I keep asking now

The question I ask before shipping anything now is not does it work. It is what does the user see in the first three seconds, and does it tell them the truth.

FocusBottle passes that test because its loop is short enough to be honest: you stay, the light brightens; you leave, it dims. A forty-second silence does not fail the test because it is slow. It fails because during those forty seconds the product is saying nothing, and the user is left to guess.

It is the same reason the timer has three buttons and no settings. Choosing between twenty-five, fifty and ninety minutes takes two seconds, and then the only thing left to do is start — which is the entire point of the thing.

Field notesstreamingproductfocusshipping
"Waiting is not the problem. Saying nothing while someone waits is."
Twenty-five minutes, one button, no settings — the shortest loop is the one that can still be honest at minute nineteen.