Sequential Timer
A ritual timekeeper for the iPhone and Watch.
Between two sets in a gym, phone in my hand, checking what exercise comes next. Eight lifts that session. Twenty-four working sets, just under an hour on the clock.
Sequential Timer is the app that's meant to make that check unnecessary. It holds a workout as a chain of timed blocks and paces me through them, on the phone and on the watch. The point is that I don't have to remember what's coming. The bar I set myself is one number: zero phone pick-ups between sets.
So it wasn't doing its job. I was standing there holding the phone.
In July I'd taken the whole thing apart on paper. Agents read every line of the phone and watch code, and a second pass argued back. Three serious defects came out of that. About fourteen smaller ones. I'd marked them all fixed. Both apps came out clean.
Then I spent an hour in a gym, and it broke in six places at once.
Finishing a set made no sound. The app's calm mode hushes things when a hard block drops into a long rest, and it hushed the bell, the buzz on my wrist and the voice together. That's the moment I'd built to feel like an accomplishment. It was the quietest thing in the hour.
Then the screen that knew what was coming and wouldn't say it. During the rest before a new exercise it showed one word: Change. That was the whole label. I'd filed the exercise's name under the block after that one, so it wasn't spoken until ninety seconds later, once the change-over had already begun.
Then the rest itself. Ninety seconds of hush. The gym took my attention back.
Then the alarms. Starting a workout queues its whole remainder into the phone's notification system up front, roughly 115 of them for that one session, and those outlive the app. I force-quit both apps. The bells kept arriving.
The one I'd already marked fixed
My own audit says that one was fixed, resolved in July, and what I actually shipped was a clean-up that ran in exactly one place: the watch, on launch. The phone never ran it. So force-quitting the phone mid-workout left every queued bell sitting there, which is exactly the bug I'd signed off as resolved, and I met it again in a gym twenty-four days later.
I went back and amended the audit in place. The miss stays legible there now. I flagged one other finding as deserving the same suspicion. I'd sooner my own document carry the scar than read clean.
There's no test suite here. I check the app with a small checker built into it, running the real workout with the clock squeezed down until a full pass finishes fast. I wrote the checks that mattered on the day of the gym, once the room had told me where to look. The checker found none of what the gym found.
The fixes went in that same day. All in one go. A voice that says the next exercise out loud, into the silence the calm mode opens. A ladder of endings: a set closes with one sound, an exercise with a bigger one, and the hour itself with the biggest. And only a few alarms queued at a time now, each one pulled back the moment the app rings that block for real.
It doesn't connect to anything else I've built. There's nothing to download either. The last time I ran it in a room with weights in it, I was still picking up the phone.