306: Overcast "Wrapped" - podcast episode cover

306: Overcast "Wrapped"

Nov 20, 202429 minEp. 306
--:--
--:--
Listen in podcast apps:

Episode description

The podcaster did not provide a description for this episode.

Transcript

Welcome to Under the Radar show about independent iOS app development. I'm Marco Arment. And I'm David Smith. Under the radar is usually not longer than 30 minutes, so let's get started. So you know how you can tell that this is usually not longer than 30 minutes? Well, if you're an overcast listener and you happen to subscribe to Overcast Premium, then you can look at my new history and stats features.

So these are some, a couple of new features I'm launching for Premium, probably today or tomorrow, currently in beta. And they let you by very popular demand. And I'll get to that in a moment. Browse back and see, like, you know, what are my top-listened podcasts by time for this month or this year? And separately, so that's the stats feature. And separately I have a history feature, which is based on the same engine, which is basically short term, detailed, undue-able history.

So the history feature is only the last 48 hours, and it's like every listening session or kind of user modifying action you've taken on an episode. So if you listen for a while and you want to undue and revert back to the previous timestamp, you can do that from the history review.

If you accidentally delete a podcast or a playlist, you can do that. You can undo that from the history review or if you marked the wrong thing played, you know, that kind of stuff. These two features, I, these have both been a long time coming.

Every, and it's always November, every November or early December, I believe the first app to do these yearly wrap up summary top charts things. I believe it was Spotify, the first one that did it at least popularized it with Spotify wrapped. And this is, they say, like, here's the top artists you listen to this year or whatever.

And here's the new you listen to this many hours or whatever, maybe it's sometimes just the top list, the design changes every year, but the idea is they gave you a top list of here that you are wrapping up your year and I, yes, I'm very aware. The year still has like 12% of itself left like this. The idea that you're wrapping up the year in mid November.

Okay, but but let's set that aside. The idea is, you know, they gave you this like top chart that you can you can look at yourself for your satisfaction and you can also oftentimes share it to social media.

There is a reason why the format of these is usually a 16 by nine graphic or rather a nine by 16 graphic because that is the shape of a vertical phone social network. So Instagram stories, Snapchat, that's, you know, the whole idea is they want you to go share this in social media to promote their app. That's the whole thing.

So Spotify did Spotify wrapped starting a few years back. Everyone loved it. Everyone shares it like crazy. Apple in recent years started doing it with Apple music. I believe they started it last year or maybe the year before Apple music now does their like year end wrap up thing. Again, you can like you can look at it. You can share it.

I believe in the podcast space. It's not that common. I think pocket casts. I know I know they're doing it now. I think they did it last year, but I'm not sure. But anyway, what happens is every single time Spotify wrapped launches. I get a thousand requests from people saying when's overcast going to add this. The question is not, would you like to add this or should you add this or will you add this? It's when will you? Like the presumption this is so important. It must be added.

And to be fair, like it's a cool feature. I get it. All right. So anyway, so I knew this feature. You know, this has been highly demanded for a few years now. And so in late 2022. I submitted an update to overcast that started recording the data needed because before I I couldn't even launch like I couldn't launch this feature in a random November because I didn't have the data before.

So in late 2022, I started collecting the data so that I would have full data for 2023, figuring at the end of 2023, I'll be able to launch this feature and it'll be great. Well, that was like the, you know, the middle of the rewrite and it just didn't happen. It was not going to happen because I get to some of the challenges in this feature in a minute. But it just wasn't going to happen.

And then finally now 2024 comes or and I'm like, all right, this fall, I have to launch this feature. I have now I will have two years of data for it. So I'll have plenty of data to do the 2023 and 2024 graphics. If people want for some reason, people want 2023 one. I have the data. Okay. And then I'm like, all right, well, every year it seems like they released gets earlier because it is kind of like a jumping the gun effect.

You know, kind of like if you've noticed, I'm sure you have because you exist. If you've noticed black Friday sales somehow have have been going on for about three weeks. Right. Right. You know, they started like in late October, a month before black. It's like at the end of Halloween. Oh, it's black Friday. Yeah, exactly. Exactly. Like because what happens is there's an incentive for for people who are selling things to hey, everyone's doing their stuff. Let's jump jump on it.

Really say everything now because we've got all the attention. Everyone's looking for it right now. And when you do that, you maybe you boost a number somewhere. And so the incentive then in the future is, okay, can we boost that number a little bit earlier and get that get that boost even sooner? Why don't we make the whole year black Friday.

So anyway, so similarly to that, once you see one of these graphics from one of these services on social media, then everyone bothers everyone else who makes the other apps and services saying, hey, where's mine? Where's I won't mind. So there is an incentive to like jump the gun and like, and like, be ready whenever everyone else does it, you got to be ready. So I knew that like, I basically had to have this feature ready by November 1st.

Because I knew like this is probably like, who knows when Spotify is going to release theirs. And that's the one that really is like the big dog that really triggers like, you know, the whole wave of them. And so sure enough, I don't think Spotify's long stayers yet Apple launched theirs for Apple podcasts, which I think is new yesterday.

And so I've had this feature ready to go about to release it. I've been making tweaks here and there really up until yesterday, like making little small tweaks to like the layout of the graphic and everything. But for the most part, you know, it's been solid. It's been ready. And so I submitted it yesterday. It should be in the app store today or tomorrow.

And so I this year for the first time I'm finally getting this top chart your top podcast of the year wrapping up your year in mid November, finally doing that. But the way I've done it also is this is just a feature you can call up at any time and show the graphic and your stats for any time interval.

Day, week, month, year, or actually not week, day, month and year, you can you can bring them up at any time. So if you want to jump the gun and and ride the wave at everyone else with their Spotify and Apple podcasts things. And if you want to post your thing now, even though the year still has some time left that you can listen to more podcasts, go for it.

Or at some later date in the year or even next year, you can go and generate your 2024 image whenever you want with updated stats of like so that way, whatever you listen to in late November and all of December isn't just, you know, disappeared into the ether. Anyway, so this feature is getting out there now and it's been a long time coming by and my very popular demand. So I'm very happy to finally get it out there.

Yeah, I think features like this are really interesting in a couple of ways. I think the first one is the most obvious of it is challenging to build a feature that requires you to have made a choice a year ago. Because it is definitely sometimes like sometimes it's great like the nature of being small agile developers like a lot of indies are is you see something that is really cool or topical or interesting and you can just jump on it and do it right away.

Great, that doesn't work for a situation like this where you must have been collecting the data over a long period. And so it's just one of those you just have to, you know, sort of accept that you couldn't have done it last year, but hopefully if you decided to do it, you put in the infrastructure to do it now.

And I think perhaps most importantly, what I think about the features like this is they're like this perfect combination of like the win win from a user's perspective and from a developer's perspective where like word of mouth advertising is so vital. I think the long term viability of most products because if you only exist on paid marketing you're kind of chasing your tail inevitable sort of indefinitely in that scenario and it can work and it can be viable, but it's just difficult.

And if you need sort of this ideally you'll have this baseline, a word of mouth advertising where people are using your product on a regular basis and then telling other people about it because they like it so much. And so in this case like these kinds of features and any kind of sharing generally that you create a scenario where you're doing some activity inside of your app that a user may want to share with someone else.

You give them the infrastructure to do that in a aesthetic nice, you know, clear way. They're getting the benefit of being able to share this cool thing that they are excited about like this is unique to them in a way that is even more compelling than I think of like in overcast you can share a pot in an episode of a podcast or clip or things like that. And that's sort of interesting, but it's also not unique to you anyone can share that thing, whereas these stats are truly the unique to you.

And so there's a certain more even more compellingness to them, but then on the plus side in addition to a user being happy because they just got this ability to share something that's unique to them. You get the benefit of being able to put your some kind of branding or entry, you know, some way for it to reflect back on to you and get your name of your application out there in the world.

And it's this lovely kind of win win in that regard that it's a feature that benefits the user, but also has this knock on marketing effect. And I think particularly it's interesting and it makes me think so in pedometer plus plus I just did a very similar thing where I've added sharing cards for daily steps and workouts and I'm working on doing sort of over broader trends.

So you know, you're in review month and review those kinds of things for similar reasons where it's it's useful as a feature to kind of be able to in addition to just doing this Spotify wrapped version, which we're having a one big hit of this where like in mid November, you know, beginning of December, you can have give people an opportunity to share if you instead build it as something that has perennial value that is potentially regularly interesting.

You potentially expand the surface area of when someone might look at this information share this information and those kinds of things. And so it's I think compelling the way that you built it of it isn't a screen that will only pop up once in, you know, mid November and then never show up again if anyone is curious about what they've been listening to in the last month, they can go and look at that and maybe that's less compelling as a sharing card just because it's not as topical, but it's certainly still interesting and you never know.

Like it just is the kind of thing that it's not, you know, these kind of sharing events are not going to be massive in terms of the draw that they pull to you most likely, but I think they're the kind of thing that snowballs over time and you only really benefit from, you know, it's a nice thing for people to want to talk about your product and giving them any reason to do that is a useful thing, you know, in this case, it's like what the what have you been listening to in print on plus plus cases like what if you know how much they've been walking what kind of workouts that you're going to be able to do.

And I think it's it feels of you know, if it's like feels that void where otherwise I'm always struck by that how much of modern life is sort of mediated by people just taking screenshots of things and sending it on and it's like if you can make a cleaner nicer, prettier version of that, you know, you're saving the users of some trouble and you know making a wrap look better as a result is, you know, it's like additionally a wonderful benefit.

Yeah, exactly and and you know, and that's part of the reason people are people were asking for this because they they like the ability to show their friends and family whatever hey look here's here's the stuff I like isn't that cool and something interesting to see like it's interesting to see your own metrics even if you don't want to share them at all.

It's it's good to see like oh that's you know if you would have asked me what are my top listened to podcasts I might have had a different answer than what the actual data shows how I actually spend my time listening. And it's all sorts of ways to build useful features on top of this like I've been playing I'm experimenting for years with like auto prioritization options for playlists and this is one thing I could base that on like you know it.

A big challenge of doing this kind of feature as you mentioned is like you have to have the data and you have to be collecting data and you know it was easy for Spotify to have that data because Spotify pays royalties for the music they play based on how much people play them so they have to they like.

Spotify was already having to track that data for listening time for their for the basics of their business model a podcast app doesn't need to have that data like I don't need to track how when you listen how often you listen like how much time you spent listening I don't need that information for other reasons so it was it was difficult for me at first to even just convinced myself to store anything like that and the way I ended up storing it you know privacy concerns were certainly foremost in my mind you might think you know I'm not going to be able to do that.

You might think you know it's just a podcast who cares but you know suppose you're going through something in your family and you're listening to podcasts about like divorce or you know something something sensitive or suppose maybe you you listen to podcasts that have like you know political topics that might be sensitive in your community or your or your household or you know your queer and you listen to something in your family doesn't know your queer and like that like there's all sorts of reasons why.

Listen to like the podcast you listen to could actually be sensitive personal data that you don't want to be shared or to be visible so when building this feature I had to really make sure like that there's ways to delete these records so if you if you see in your stats list that there's something that like you would rather not be there you can just delete it and that data that data is gone and also even just like the way I built the history in the stats together.

The history with the detailed overview that is just 48 hour retention and then at the end of that 48 hours things are rolled off the end into an archive table that just lists like user ID podcast ID total time listened so it's not episode specific it's you know it's more cumulative it's very little data per day and again that's all very easily

readable from the UI if you want to so there were lots of like you know privacy concerns and it's like all right let me let me store reasonably as little as I can to achieve this very highly demanded feature like let me only store like total times you know past the 48 hour window and stuff like that and I think I hope I've achieved a good balance here with that and I guess you know feedback will tell and then

get into the data to like trying to decide what data to store to build a feature like this like again you have to decide that a year in advance so that's why I went only with like the total total times and I I'm measuring two times wall clock time like how much actual wall clock time has passed playing this podcast so if you play a one hour podcast at 2x that'll be 30 minutes you know 30 minutes of all time then there's also media time which I call episode length so that's like if you play a one

podcast at 2x you'll get one hour episode time in your in the so and you can switch between those two stats I'm mainly doing listening time by default to your work is that's kind of the more precise and easily defined one because media time has problems like well if you skip forward 30 seconds I actually count that because you know you like you listen to the episode you know quote but like but if you skip forward 10 minutes I don't count that like

there's all sorts of these weird little gotchas like this was a surprisingly difficult features to develop you would think it would be really easy and it's really not because you're dealing with you know how do you define time listen to all those challenges of all those little decisions of like how do you you know does this count does this count do you what happens if you pause it goes back a few seconds do you get a few

extra seconds of duration like there's so many you know do you count when it's paused what if it's pause for a brief time like there there are so many little implementation questions and that's why like the this is more intended to be like a high level overview not like extremely to the second accuracy because it's just very difficult to define what that means so I made a couple of

decisions here and there that kind of you know smooth over some bumps of like all right well if you if it goes back one second you know you can count that in episode time but you know don't count the pause like there's all sorts of little tricks like that and then once you have the times

well then you had then you had the now you're dealing with calendar dates all right so you have to figure out well I can't just say when the server thought this was I have to know when the user like the user calendar that's what I'm defining for the date of like did you listen on this day or yesterday well that's that's dependent on your local calendar not my servers that are in a date is that are in Texas like so there's

all those decisions to define then when you're presenting it like you have to look at the user's calendar look at date boundaries of like OK well when in this in this user's local time what time stamp is the beginning and end of the day unfortunately the calendar API in in frame in foundation is very very good they give you all sorts of

calendar based API to do things like given this date what was the start of the day like what was midnight this day you can do that you can say what's the next instance of a Wednesday like you can do all that with with the calendar and decomponents API is very very good anyway so you have to do all that for the UI even just like defining what counts as a new session for the history of you were like if you play a

podcast for a little bit and then you pause it and you go make a sandwich you come back 10 minutes later and you hit play again is that a new session and the whole idea like defining what makes a new session that's a whole can of words like this and what you know what if the app is force quit by the swipe up thing and then you bring it back should that continue the session you were in should

make by the way make sure you save the session when you were force quit by the way if you don't know if when the user force quit your app you actually can do some work before your app is terminated you will get an application will terminate notification and you can you can't async anything you can't dispatch anything but whatever you can do synchronously you can do in that block so if you want to

quickly serialize something to a file or to user defaults as long as you call synchronized you can do all that when the user swipes up you have a brief window of time and one run through the run loop to do whatever you need to do to

like save whatever your status so anyway little tip out there anyway so all of all of the work that went into all the session deciding time measurement date considerations calendar considerations like it was and then all the privacy considerations and then the UI design of the whole thing

oh my god it was this was a massive feature but it was I think it's worth it because not only will this as you mentioned like this will pay off for years to come and I won't have to do that much every year like you know maybe I'll update the design of the sharing images every year just to fresh them up a little bit but otherwise like this features basically going to be done for the foreseeable future so that's great and I was able to build the history

undo feature which I've been wanting to do that forever for years I'm going to do a history with undo and this finally gave me the the the kind of underpinnings and motivation to do that and so I'm very very happy with that even like the history and one of the things I added just last week that I think is incredibly useful and I've wanted to this forever is you can undo deletions of not only episodes but of playlists or entire podcast subscriptions so if you

accidentally swipe the wrong thing and delete a playlist that you put a lot of time into making that playlist and all the settings are really custom now you can undo that that's an incredible gain I think for usability and for protection and I've been wanting to

the forever and I literally just like I serialized the model and stuff into the undo table and it stays for in the 48 hour table and like that again like all the all the back and forth with the rewrite and the work and put and learning swift and all this stuff and switching everything to blackbird

like all of these new things were made either possible or much faster to do and much easier and more reliable by all the rewrite changes so this is the rewrite paying off like not only do you have you know the app is way faster than

was before but like finally I'm seeing benefits of having done the massive rewrite and that makes me very very happy so overall that I'm very happy with these two features they seem minor but it took a lot of work to get here and I think they will have pretty high utility over time. So something that you just said that I'm curious about is the degree to which you thought process you went through to make these part of overcast premium.

I think they're both strike me as like compelling features which is awesome for something that's in premium right you want to make your premium offering something that people are going to want so you want it to be compelling. But it's imagine especially on the like you know overcast wrapped side of things there's attention between it being super compelling so you want to make something that people want and then also something that will increase the share ability of what you're making.

And so if he seems in some ways like those two things are intention so I can see the desire to be like well this is a reason to get overcast premium this is a reason to do this and you're doing this extra work that you know sort of it's good to get.

Sort of paid for and compensated for accordingly and you would imagine in some ways by doing it this way you'll get more sign ups now towards the end of the year of people who see the other someone else sharing it they want to do it themselves and they want to do it but on the other side you have the you know the count the other force of well if everyone has it then you have that many more people sharing images talking about how much they like overcast and so it seems like the that that tension is a really.

Imagine something that you had to really wrestle with for kind of like where to put the the the line between free and paid in this case oh yeah definitely it was a tough call and I mean who knows if I made the right call maybe I'll tweak it over time but i'm also at the same time finally raising my price on premium it has been $10 a year US for its entire life so it's eight years so far of every cast premium existing so for eight years it's been ten bucks I'm falling way behind both inflation and the market.

And so I'm raising it to fifteen with this update fifteen dollars a year and that's mainly because with the app store you can raise a subscription price by five dollars per year or equivalent once a year and everybody will still be opted in by default will be notified look at those emails that you get from who constantly and Disney plus all the other services ever turn the raise the prices you you they'll be email by apple in advance of the renewal saying hey the price has gone up if you want to cancel here so.

I think it's a link to but if they take no action they'll be opted into the new price and five dollars a year is the most you can raise it by and have that be opted in otherwise will be opted out by default you really don't want that so I'm going to fifteen dollars and because my my whole idea here is first of all let me catch to the market a little bit and recover some inflation losses but also I want to make over catch premium more compelling it's hard to define where to draw that line that will do whole separate episodes on that we have and we will again but I'm going to get a little bit more.

But these features seemed like this is really stuff that like average users who are just kind of casually listen to pop up guys in my app won't really care these are power user features these are like you know enthusiast features and so the this was kind of a no brainer and people tell me for years that they want me to add more to premium and look at what my competitors do like I am giving away a lot more than most of them I think and so I do want to develop more you know power user

e enthusiast features and put them behind premium I think that's the right call to make because the absence of them won't impact people at all so like the right now I have you know the stats are collected whether your premium or not but if you want to see them and make the pretty graphics you have to pay premium

and then it the on the 48 hour undo and history thing that is there but free users only get one hour of it and can't undo so it shows people like here's what you can get with premium and here is some of the utility of it but if you want the full utility it's almost like a trial feature like the one hour history thing it's almost a trial feature but it does provide some utility so it's there to show people here's an offering here's a basic version if you want to lift this gate here's had to do it

and I'm basically going to see how that works out you know my with overcast premium I have incredible retention over time of subscribers but I don't get a lot of new subscribers so as a as a business is fine although I've never raised the price in eight years so you know that's sure that I'm going to you know we'll see how that goes but it's hard to get new people in the door so I'm trying to you know pushing that directly especially as the ad market has cooled over the last few years

trying to get more people in the door for premium and I think this is a good way to do it I have other ideas to like this is not going to be the only things I add to premium you know I'm going to be working on more things over the coming months as well

but here I think this is a pretty strong start yeah and I think it the thing that strikes me to about overcast is it's very difficult to be the like I don't know like the have the highest number of users in an industry and it's certainly in like the podcast listening ecosystem when you have Apple podcasts and Spotify that exists on the free side that in some ways it is more likely which what you are going to end up with are

sort of people who are more likely to be to go premium to they're looking for something and more advanced or more specific or more more something because there's plenty of good free alternatives that may be directly integrated into like in the case of Spotify

that maybe where they listen to all their music and so it's like you know adding a podcast to that makes perfect sense to them and so the compellingness of it in that way I think works works in your favor for making these kind of features that

could benefit everyone making them premium in the sense of hoping that you ultimately end up with a much higher proportion of your user base that are premium and that that's a much ultimately a much more sustainable place for you to be then having a in some ways it isn't great for or it's probably unlikely for overcast ever be this you know this app that has massive free user ship and then a very narrow paid user ship just because that's just doesn't line up with its

sort of the demographics of that user so I think it makes perfect sense but anyway just something I was curious about because it's tricky when you have this kind of a socially feature that usually you want everyone to get the social feature but in this case I think it makes sense it's like it's another reason to go ahead and get the up you get the upgrade because it's a cool feature it's fun like as soon as I saw it in the

beta as like this is exciting immediately go look at it play with the data it's fun and interesting and I think a time you can have a feature that creates that kind of spark and that little bit of like you know like feeling you're going to win or so I it's been super fun to see how it goes well thank you very much thanks listening everybody talk to you in two weeks bye

This transcript was generated by Metacast using AI and may contain inaccuracies. Learn more about transcripts.