HOME · Twitter · LinkedIn · publications · @ Ars Technica · Running IPv6 (Apress, 2005) · BGP (O'Reilly, 2002) · BGPexpert.com · presentations · iljitsch@muada.com

My advice to podcast app developers

Posted 2013-09-30

As an avid podcast listener, I felt a strong urge to dispense some advice after listening to Marco Arment talk about his ideas for his upcoming Overcast podcast player application for iOS. First a rant about iTunes 11.1.

iTunes 11.1

Apple seems to have lost its way when it comes to podcasts in iTunes. The old bugs and issues, such as the one where manually downloaded episodes don't honor the autodelete setting, are still there. But the weird and inflexible ways in which iTunes 11 insists content must be displayed have now infected the podcast section in iTunes 11.1. Which is the only version of iTunes that iOS 7 will sync with, so upgrades are pretty much mandatory. The old list view is still there, except for one tiny issue: it now always displays all episodes in a feed, even if you've already listened to them. Perhaps this is not an issue for the kids from the Twitter generation who want newest stuff on top, but that ordering is simply incompatible with the way my brain works, so now I have to scroll past months or years of old episodes to find the first unplayed one.

At first I thought newest-on-top is now mandatory in the new My Podcasts view which has its own issues but at least only shows unplayed episodes. Turns out that there is a setting to return to sanity with oldest-on-top, but it's not in the View menu but rather in the Settings thingy. There is no rhyme or reason to the ordering the list of podcasts on the left uses, but it turns out that you can manually drag those in the desired order. Which is very useful because the view always opens with the podcast that's first in the list, not the one you were looking at when you left this screen.

So if there's ever a reason to look at moving all your podcast playing needs to the iPhone and ditch iTunes, it's now. Obviously an app for playing podcasts on the iPhone (or other iOS device) needs to be easy to use in a number of ways. Marco talked about the playback screen, which is important, but there is something that's much more important: managing episodes.

Use cases

If you get in at least two hours of podcast listening a day like I do, you're probably going to end up with several of the following use cases, if not all five:

  1. Listen immediately

    These are your favorite podcasts, or maybe they're time sensitive. So you want them on your iPhone as soon as they're released.

  2. Listen within a few days

    These are podcasts that you enjoy a lot. You don't feel the need to drop everything to listen to them as soon as they're released, but you typically listen to each episode before the next one comes out. (I.e., within a few days for weekly podcasts.)

  3. Pick and choose

    These feeds are either too busy, or the subject matter varies a lot so you're interested in some episodes but not others.

  4. Saving up

    For one reason or another, you're not keeping up with these episodes as they're released, so you're building up a back log. Obviously this can happen because of lack of time, but sometimes I save up some podcasts before a trip so I know I have something to listen to.

  5. Catching up

    This is when you find a new podcast you like, and you're going through old episodes.

These use cases inform the discussion below.

Picking episodes to download

With the podcast players I've tried, the pick and choose use case is typically the most problematic. I'm subscribed to a feed that has small segments from the Dutch national public radio news station, which has more than 20 episodes a day. I don't have the time to listen to all of them, so I have to go through that massive feed episode by episode to pick out the ones I want to listen to, downloading those and marking the others as played. So you look at the list of available episodes. Often, the episode title and/or the description is too long so they're truncated, and then you need to bring up another screen that shows the entire title and description. Going in and out of that full details screen 20 times in a row gets old fast. Also, you need to touch every episode: either tell the app to download the episode, or to mark it as played. Few feeds are this massive, but picking individual episodes is still often a drag.

What I want here is a view that shows all the episode details: the entire title, as well as half a screen's worth of description. Then, let me choose "download" or "keep unplayed" and let me swipe to the next episode, without having to go back up in the hierarchy to the episode list view. In the episode list view, there needs to be a "mark everything not downloaded (or marked for download) as played" option, or maybe "mark this episode and everything older as played" for those situations where "mark everything as played" does too much and marking episodes as played one by one is unworkable.

Picking episodes to play

The apps I've tried have a list of all downloaded episodes. That's important to have. But once you have more than one or two episodes of a podcast downloaded, this view gets rather cluttered. So a view that I'd like to see is one where you see a limited number of downloaded episodes per podcast feed. Just the oldest would be good, but perhaps both the oldest and the newest would also be useful. Obviously only unplayed episodes should be listed in these views.

Once you have that list of episodes, it's important to be able to get them to play in the right order easily. The new Pocket Casts has the right idea here: in the list of downloaded episodes, most of the width of the screen is taken up by the episode title, which you can tap to bring up details and options. But there's also a little playback icon to the right, which you can tap to start playing the episode. Pocket Casts also has a "play next" feature, which is exactly what I want, but unfortunately it suffers from two issues.

The obvious way for this to work would be that if you're already playing something, tapping the playback icon for another episode adds that the "play next" list. It doesn't it just start playing that episode immediately. If you want to play the episode after the current one is finished, you need to tap the title for more options, then a + icon, and finally either "play next" or "add to playlist". That is way too much work for such a commonly used action. If there's no room in the interface to make this easier, this is an excellent feature to expose through tap-and-hold.

And "play next" does really mean play next: if you're currently playing A and B is already set up to play next, then choosing "play next" for C will make the order A-C-B. I would strongly prefer A-B-C. Or even pop up a choice: start playing now, play next, play last.

The four list views

If you add it all up, you need four different episode list views:

  1. All episodes in the feed.
  2. All unplayed episodes in the feed.
  3. All downloaded episodes.
  4. The one or two episodes per feed the user is most likely to want to play next.

That's a lot, but omitting any of these is going to make life harder for non-casual users.

Network traffic and power use

One thing I'm worried about with having my iPhone handle podcast feed syncing by itself is that there are a lot of feeds with huge numbers of old episodes in them. For instance, have a look at the feed for The Skeptics' Guide to the Universe, which has eight year's worth of weekly episodes in it, and is a quarter of a megabyte. If you sync that feed every hour, you use up more network traffic for syncing the feed than for actually downloading the episodes. Hopefully in most of these cases, the feeds are cacheable using an If-Modified-Since HTTP header, but still, it's important to avoid syncing feeds too often.

One solution, which Pocket Cast uses, is to run servers that monitor the feeds and send a push notification when there are new episodes. But I'm assuming not all podcast app developers want to deal with that. Also, all else being equal, I would prefer to not have to depend on an ongoing third party service for an app to function.

A good way to at least minimize unnecessary data plan and battery use would be for podcasts that aren't in the "listen immediately" category to only sync their feeds and download their episodes when the iPhone is connected to power and connected to Wi-Fi. Obviously that would also go for downloading episodes.

Minimizing storage

Speaking of downloading, I don't want to spend too much of my iPhone's precious storage capacity—unbelievable that they still sell them with a paltry 16 GB!—on downloaded podcast episodes. So it would be really useful to only keep 3 or 5 or so episodes for every feed, unless the user has indicated she/he wants to download all episodes of a given feed. Obviously these need to be the oldest episodes. Let me explain:

When I subscribe to a new podcast, I probably want to listen to the latest couple of episodes, and not immediately go back to the early days of that podcast 200 episodes ago. So showing the latest 5 or 10 podcasts immediately after subscribing makes sense. But if I then decide I like this podcast and want to listen to back episodes, the app should show those, and let me mark as played all the ones that I don't like. This leaves me with a big list of old episodes I now want to go through. So the app would download episodes 1, 2 and 3. I then listen to 1, so that night, as the iPhone is sitting in its dock, happily connected to power and Wi-Fi, it downloads episode 4. And so on. But it should of course still be possible to download episodes manually.

It should work the same way with podcasts that I haven't listened to for a while. So if I never play episode 420, the app should download 421 and 422, but then stop auto-downloading more episodes until I've listened to 420, at which point it should download 423. Et cetera.

I'm envisioning that for every podcast, there's two settings: sync: "always", "Wi-Fi", "overnight" and download: "always", "Wi-Fi", "Wi-Fi and power", "overnight", "manually". (Note that syncing overnight should probably happen multiple times, perhaps every two hours, to catch episodes that are released in the middle of the night.) A nice side effect from not immediately downloading would be that the servers where the files are hosted don't get hit by everyone at the same time as soon as a new episode is released.


Then there's the question of when to send notifications. If the settings are such that a download attempt is going to happen immediately for a new episode, then it makes sense to delay the notification until after the download has finished (or has failed). Or maybe send a notification immediately that says "episode such-and-such is now downloading". If downloading is not going to happen immediately, there should be a notification that a new episode is available. The user may then opt to connect to power or Wi-Fi or download over cellular anyway. I don't think notifications for episodes in feeds with a backlog are terribly useful.

Search for:
RSS feed (no photos) - RSS feed (photos only)
Home, archives: 2007, 2008, 2009, 2010, 2011, 2012, 2013