I’ve been listening to podcasts regularly for almost a decade, and there have always been more great podcasts than I’ve had time to listen to. Podcasting doesn’t have a content problem. More great podcasts are always welcome, but there isn’t a lack of great podcasts holding back the medium.
Podcast adoption has always been driven primarily by ease of listening, which has improved dramatically with the rise of smartphones, podcast apps, and Bluetooth audio in cars. When it’s easier to listen, not only do more people listen, but listeners find more opportunities to listen. There’s still plenty of potential to help people who already like podcasts listen to more of them.1
I had been wanting to make a podcast app for a while by late 2012, when I got two ideas that encouraged me to look more into it:
- Smart Speed shortens silences. Playing at faster speeds has always helped people make time to hear more podcasts, but it usually came at the expense of sound quality and intelligibility. Smart Speed is like getting another speed increment for free: it saves time without sounding weird.
- Voice Boost is a combination of dynamic compression and equalization that can make many shows more listenable and normalize volume across all shows. This makes amateur-produced podcasts (including many of my favorites) more listenable in loud environments, like cars, where you’d otherwise need to crank the volume so loudly to hear the quiet parts that you’d blow your ears out when the loudest person spoke.
Neither of these are original ideas, but I knew both would greatly help me as a listener, and none of the podcast apps offered anything like them.2
Over the following weeks, I learned the low-level Core Audio API and made a “Castaway” prototype that could apply these effects to a podcast file. To my surprise, Smart Speed sounded nearly perfect with no audible artifacts. Conversations still sounded natural — often better, with tighter timing. Voice Boost easily normalized and enhanced everything I threw at it. And these ran at full speed on an iPhone with very low CPU usage.3 I knew I had something good, but Instapaper and The Magazine were keeping me too busy to pursue it.
Months later, in the spring of 2013, I sold both for unrelated reasons. Realizing that I had the rare opportunity of a clear plate, I dusted off the Castaway prototype and started the truly hard part: building an entire podcast app around the audio engine I had prototyped.
Smart Speed and Voice Boost are killer features to me, but a lot of people won’t care nearly as much about them, and there’s nothing stopping the other apps’ developers from adding similar features. My podcast app needed to be a compelling overall package, not just two features. There was a lot of work ahead.
By June, I had the server basics running, with feed crawlers trying to find and update as many podcast feeds as possible.
At WWDC, I got even more encouragement. iOS 7 shook up the market and, by pure luck, shifted high-end iOS design away from fashions I could never compete in — heavy use of textures and complex graphical widgets — into what I could actually do: simplicity, space, and typography. I also demoed the audio prototype in my hotel room to Guy English, using his own voice,4 and he was impressed — a great relief to me, as this was the first time anyone else had heard it.
Over the next few months, I worked my ass off, both building the app and naming it. By the time I had announced Overcast in September with my XOXO presentation and blog post, I was already using it myself full-time, so I thought it was almost done when I said it would be out about six months ago, at the latest.
But the audio engine was the easiest part of writing a modern, full-featured podcast app. Yes, I could use it full-time almost a year ago, but that’s because it only did the minimum functionality I needed, I hardcoded it to always be logged into my account, I could adjust settings by changing constants in the code, I subscribed to new shows by typing an INSERT statement into a MySQL command line, and I hadn’t yet tried to rewrite the sync engine. (Twice.)
When I finally started the beta, I expected to ship within two weeks. That was over two months ago, and I’m glad, because my beta testers pushed me to make it much better. I owe them quite a bit of gratitude.
It’s been a long road, but 1.0 is finally done. I’m proud of what I’m shipping today.5
Thank you to everyone who has helped me and Overcast along the way.
If you’re interested, here’s Overcast 1.0.
Many people don’t listen to any podcasts yet, and there’s work to be done there, but that problem is more likely to slowly solve itself. ↩︎
At least, I couldn’t find any. A few months ago, I learned that RSSRadio offers silence skipping and DSP effects, so I’m not the first. ↩︎
Thanks in part to my liberal use of low-level Accelerate vDSP operations, which offer potentially huge speed improvements, battery savings, and geeky intellectual satisfaction at the expense of filling your code with obtuse function names like
Castaway’s test files were The Talk Show #12, Identical Cousins #3, and Bitsplitting #1.
I’ve heard the first minute of that Talk Show episode a lot, as that was loaded when I was first building and tweaking Smart Speed. It’s a great test because John Siracusa and John Gruber talk at very different speeds. ↩︎
Well, I’m scared shitless of unfound bugs and server overloads. But proud. ↩︎