RunPee on iPhone Launch Day (2009 Edition)

In the spring of 2009, RunPee had been live on the web for about a year. It was a PHP page, basically. You went to runpee.com, you picked your movie, and it told you the best time to run to the bathroom — how long you have, what you miss, whether the scene matters. My wife Jill came up with the idea. I built it.

The web version worked fine. We had traffic. But the App Store had opened the previous summer and everyone with a website was trying to figure out what an "app" meant for their thing. For RunPee it was obvious: the whole point is that you're sitting in a dark theater with your phone. You need it there, in the moment, not on your laptop at home.

So I learned Objective-C. I want to be precise about what that experience was like: it was like being handed a manual written by someone who understood the problem perfectly and had no interest in explaining it to you. Coming from PHP and JavaScript, the memory management alone was enough to make me question my career choices. But eventually I had an app that did what the website did, more or less, and I submitted it to Apple.

The App Store review process in 2009 was not what you'd call transparent. You submitted your app and then you waited. How long? Unknown. What were the criteria? Mostly unknown. Could you check on the status? Sort of — there was a status field that changed states without explanation. "In Review" for days. Then "Ready for Sale" with no warning, no email (or maybe an email, I honestly don't remember), no fanfare.

I'm telling this story because the launch itself was almost anticlimactic. The app went live. I told Jill. We watched the download numbers trickle in. It was fine.

And then, maybe a week later, CNN ran a piece on RunPee.

I didn't pitch them. I didn't know this was happening. Someone at CNN saw the site, or the app, or a tweet about it — I never got a fully coherent account of the origin — and decided it was a story. The kind of quirky human-interest thing that cable news needed between whatever catastrophe was on the hour. "Man builds app to tell you when to pee during movies." I can write that headline in my sleep; I've seen fifteen variations of it over the years.

Downloads went from a trickle to a waterfall overnight. The servers — such as they were, a shared hosting plan that had been perfectly adequate until that moment — did not enjoy the experience. I spent the day refreshing error logs and trying to remember whether I'd ever set up any kind of caching.

What strikes me now, looking back seventeen years, is how accidental all of it was. The CNN piece was luck. The timing was luck. The iPhone existing at exactly the moment when RunPee needed a mobile platform was luck. I built something because it was a useful problem to solve, and then circumstances landed it in front of people, and they liked it.

There's a version of that story people tell as a lesson: build something real and the rest follows. I'm not sure that's what happened. I think the lesson is more that you can't manufacture the moment — but if you've built the thing, you're at least positioned to take advantage of it when the moment arrives.

Or you're not. Plenty of useful things never get their CNN story. The app store is full of them.

RunPee is seventeen years old now. It's still going. There are pee times for movies in theaters this weekend. My daughter runs it, mostly. It has a 4.8 rating in the App Store, which still genuinely surprises me every time I look at it.


Objective-C, for the record, was actually quite elegant once you understood it. I'm not sure I ever fully understood it. Swift came along and I was relieved in a way that said something about my Objective-C confidence level.