00:00:00 ◼ ► Welcome to Under the Radar, a show about independent iOS app development. I'm Marco Arment.
00:00:05 ◼ ► And I'm David Smith. Under the Radar is never longer than 30 minutes, so let's get started.
00:00:10 ◼ ► So today, we wanted to talk about, I guess, it's a bit of a hard thing to put into a box,
00:00:16 ◼ ► but I think it's the general topic of continuously changing editorial content. So if there are
00:00:23 ◼ ► things in your app that aren't at all technical features, these aren't things that you are
00:00:35 ◼ ► changing and updating as a result of you taking action within your app to put content into
00:00:41 ◼ ► your app. And so some examples of this, and this is where this feature is sort of coming
00:00:45 ◼ ► from and why I thought it would be an interesting topic, is I recently added a new thing to
00:00:50 ◼ ► Pedometer++ called monthly challenges. So every month, there is going to be a new little
00:00:55 ◼ ► challenge badge that you can earn by doing something. So in the first month, it was you'd
00:01:02 ◼ ► reach your goal 19 times in January. In February, it's going to be have a 10-day streak. There's
00:01:08 ◼ ► examples of these, and I'm just going to continue to kind of create and manage these going forward.
00:01:13 ◼ ► Another example might be the Discover section in Overcast, where you have a whole bunch
00:01:18 ◼ ► of different links to different shows, but it's a curated list that you have to manage.
00:01:24 ◼ ► Or you have the App Store's Today tab, which is something that they're committing to update
00:01:30 ◼ ► on a regular basis. And this kind of continuously updating content has a lot of interesting
00:01:40 ◼ ► to add this monthly challenges thing, I think there were a bunch of aspects of it that I
00:01:44 ◼ ► just hadn't thought about that I'm now having to deal with. That's what made me think that
00:01:48 ◼ ► it would be kind of a useful thing to talk about, because it's exciting and interesting,
00:01:53 ◼ ► and I've had a really positive reaction to it. But now I'm also having to face down all
00:01:57 ◼ ► kinds of challenges and deadlines and things that I had never really had to deal with before.
00:02:02 ◼ ► - Yeah, it's the kind of thing where it can really add a lot of value to an app, to have
00:02:07 ◼ ► some kind of editorial content in there. But I suggest going into it from an indie perspective
00:02:14 ◼ ► very, very carefully. It's one thing if you have a staff, if you have a company that has
00:02:25 ◼ ► a very different story. When you're just one person though, committing yourself to like,
00:02:30 ◼ ► "Oh, I'm going to post a new bit of whatever into my app every week or every month or whatever,"
00:02:37 ◼ ► that adds up very quickly. And I had the extreme of this when I ran the magazine, where I had
00:02:47 ◼ ► for with the app. It wasn't an app that happened to have some editorial content that rotated
00:02:51 ◼ ► out every month. It was like, no, literally, we are paying people, or people are paying
00:03:06 ◼ ► means every month. And you might think in March, "Oh, that sounds great." But then when
00:03:12 ◼ ► August rolls around and you're on vacation, all of a sudden it's like, "Wait, every month
00:03:17 ◼ ► I have to do this." When December rolls around and you're really busy with the holidays,
00:03:31 ◼ ► really have to be careful when you're committing to something like this, to build a feature
00:03:35 ◼ ► of your app around that people will actually use. You really have to be careful that you're
00:03:39 ◼ ► not biting off more than you can chew, that you can actually deliver on the pattern that
00:03:47 ◼ ► >> Yeah. And on the flip side, it is really cool and compelling in a very different way.
00:03:54 ◼ ► And I think there's definitely a lot of challenges, and I have a whole list of things that I've
00:04:00 ◼ ► run into that will make it hard. But I do think it's also really compelling that I think
00:04:04 ◼ ► it's interesting to add something to our apps that lets us give users a reason to come back
00:04:12 ◼ ► to the app on a regular basis, which is useful just in general, that it creates an engagement
00:04:16 ◼ ► that you just can't get with features. Adding new features to the app can sometimes be useful,
00:04:22 ◼ ► but it doesn't have that same sense of timeliness, that there's this sense that hopefully you
00:04:28 ◼ ► build a sense of trust with your user where they're going to be coming back to your app
00:04:33 ◼ ► on a regular basis because they're expecting something that they like. And if you can keep
00:04:37 ◼ ► delivering that, you've locked them into this great little virtuous cycle where they're
00:04:46 ◼ ► It also, I think, is nice that it allows you to enhance your app without having to actually
00:04:52 ◼ ► add features or do code, that if you build it in a thoughtful way, you're not necessarily
00:04:59 ◼ ► going into Xcode every month or every week or whatever you're adding this kind of content.
00:05:15 ◼ ► have people working on creating this content who aren't you, who are less technical, whether
00:05:22 ◼ ► that be someone you outsource this to or even just your spouse or a friend or something
00:05:43 ◼ ► people may not be aware of by drawing their attention to it because you have this mechanism
00:06:01 ◼ ► For example, if I want to make sure that people realize that Pedometer++ can do floor counting
00:06:06 ◼ ► if you have a device that supports that, then I can have a challenge that includes floor
00:06:16 ◼ ► Lots of challenges, lots of commitments. The reason I wanted to do the show today is because
00:06:29 ◼ ► just had January in it. It didn't have a mechanism for adding future months or anything because
00:06:34 ◼ ► I just wanted to have it in by January 1st because that seemed like the really opportune
00:06:39 ◼ ► time to launch a feature like this. Then I got to the middle of January and I got a bit
00:06:44 ◼ ► sick and I had to take a week off working. Then I was like, "Oh, no. February 1st, this
00:06:48 ◼ ► needs to be in the App Store. I need to have this thing in the App Store by February 1st,"
00:06:58 ◼ ► latest and ideally a bit before that so it can propagate out to the App Store and everyone
00:07:07 ◼ ► - Yeah, but you're right though. It does really add a lot of potential upside. That's why
00:07:14 ◼ ► these features are so compelling because not only are feature editions by themselves harder
00:07:20 ◼ ► to get people to care about, but they're also just less effective at boosting engagement
00:07:44 ◼ ► or gotten tired of it? Most of the time they really just have forgotten about it. They've
00:08:07 ◼ ► ultimately a lot of value in giving something that people actually want as notification
00:08:13 ◼ ► to say, "A new challenge just arrived," or something. Again, it's a really, really fine
00:08:19 ◼ ► line. If you're going to do this ethically, it's important that people know what they're
00:08:28 ◼ ► very good fine-grained controls to turn those off without disabling all notifications from
00:08:35 ◼ ► There are ways to do this well. I've thought before about things like with Overcast, how
00:08:40 ◼ ► maybe I could make, when you get a new recommendation for the Twitter recommendations feature, maybe
00:08:46 ◼ ► you can get a push notification for that optionally. There's all sorts of things that I could do
00:08:57 ◼ ► when they haven't been using it for a little while. There's lots of ways to do this badly
00:09:09 ◼ ► get turned off by and that they have fine-grained controls over disabling if they don't like
00:09:13 ◼ ► it, I don't think there's anything wrong with that. That's just not usually the way it's
00:09:24 ◼ ► there's even moreover the interesting things that you can do around communicating within
00:09:28 ◼ ► the app. How do you let people know that there's new things for them to see? The classic examples
00:09:35 ◼ ► of this is any kind of social media app where obviously the content isn't coming from the
00:09:46 ◼ ► kinds of indicators and things to be like, "Hey, there's something cool and interesting
00:09:50 ◼ ► over here. Come and look at it," and to create that sense of there's something new for you
00:10:15 ◼ ► do it correctly. If someone has opted in for it, then maybe there's a case for it. There's
00:10:35 ◼ ► bubble that popped up just one time this month to indicate to tell people that there's a
00:10:42 ◼ ► new feature in the badges section that's called monthly challenges. I wanted to let people
00:10:49 ◼ ► know because it was a time-based thing that they had to do something with that I didn't
00:10:58 ◼ ► probably because you're not earning badges every day and then you discover, "Hey, there's
00:11:09 ◼ ► frustrating. I did a little thing, it's like, "Hey, there's something here, take a look.
00:11:15 ◼ ► There's new monthly badges," which I usually tend to shy away from a lot of those kinds
00:11:25 ◼ ► you have this kind of editorial content that is potentially time-based, and in some ways,
00:11:38 ◼ ► may actually be. Sometimes the frequency or the timeliness of it is what makes it interesting,
00:11:46 ◼ ► that you have a sense of, "This is something that is useful and interesting right now."
00:11:51 ◼ ► In my case, it's like, "This is the challenge for this month and you have to earn it this
00:11:54 ◼ ► month. You can't wait and do it later." Or in another example, a content that was something
00:12:00 ◼ ► that was dealing with a live event or performance or that type of thing where there's a sense
00:12:06 ◼ ► of urgency about it is good in that it creates that engagement, but it's definitely this
00:12:12 ◼ ► funny slippery slope of making sure that you're not pushing it too strongly, but you're taking
00:12:21 ◼ ► - Right, because if you start pushing that button too often, you have to be careful that
00:12:27 ◼ ► if you're going to basically create a button that you can push that increases engagement
00:12:32 ◼ ► of your app immediately, that's a very dangerous thing to create because you basically create
00:12:38 ◼ ► a very strong incentive for yourself to push that button more and more often over time.
00:12:45 ◼ ► Notifying people of challenges or of new content or whatever else to try to get them to start
00:12:49 ◼ ► using your app again, it's a form of spending political capital. If you push that button,
00:12:57 ◼ ► you're costing yourself something. Every time you push that button, you're going to annoy
00:13:01 ◼ ► a certain percentage of those people. Certain percentage of those people are going to think
00:13:08 ◼ ► delete the app entirely. It's an expensive action to do frequently. For what you're talking
00:13:16 ◼ ► about, having monthly challenge, new monthly challenge, come to the app and do this, that
00:13:30 ◼ ► A lot of apps start doing it daily, and then that becomes a bigger problem. You have to
00:13:36 ◼ ► be sure that when you're creating a mechanism that you can basically push a button whenever
00:13:40 ◼ ► you'd like and benefit from that immediately, the temptation starts becoming very great
00:13:46 ◼ ► and you have to exercise a lot of self-control to not abuse that to the point where it destroys
00:13:52 ◼ ► >> The thing too, it's that awkward thing where you want to make sure that you are still
00:14:00 ◼ ► keeping the core experience of your app at the forefront of what it is that you're still
00:14:17 ◼ ► time we made the app and the initial way that you might use it, I think it's easy to start
00:14:22 ◼ ► to imagine that all of your users are as familiar with all of the features, that are as engaged
00:14:33 ◼ ► in the stage where they're getting used to the core features of it, like just the basic
00:14:37 ◼ ► utility of the application. If you start to barrage them with, "Hey, have you done this?
00:14:43 ◼ ► What about this? This thing over here, you should check this out," there's a way in which
00:14:48 ◼ ► that may just turn them off and it may be too much too soon. It's not actually prompting
00:14:54 ◼ ► engagement. If anything, it's pushing someone away because it's like, "Whoa, whoa, what
00:15:10 ◼ ► to just remember that you're not, in many ways, a lot of these types of things are maybe
00:15:17 ◼ ► starting to gear towards your more experienced users, so making sure that you're keeping
00:15:27 ◼ ► would be the user installs the app and then, say, a naive implementation of monthly challenges
00:15:34 ◼ ► is like it pops up and it's like, "Hey, here's the challenge for October. Hey, here's the
00:15:38 ◼ ► challenge for September. Hey, here's the challenge for August. Hey, here's the challenge for
00:15:42 ◼ ► July." You could imagine a naive, simple implementation where it's just like the first time you load
00:15:51 ◼ ► installed the app," and it's completely overwhelming and not actually useful. I think it's important
00:15:57 ◼ ► to keep that kind of thing in mind too where it still has to make sense for someone who
00:16:02 ◼ ► is just first coming to the app who isn't in the place of like if you have an editorial
00:16:12 ◼ ► That's great in terms of as a new user, it's useful to go in there and like I don't know
00:16:26 ◼ ► could potentially become just too overwhelming, then you have to be careful that you're not
00:16:41 ◼ ► your choice of Linux distro, resources, and node location. Linode serves their customers
00:16:46 ◼ ► with the help of 10 data centers around the globe so far, and they're about to add more.
00:16:51 ◼ ► Mumbai, India, and Canada will all have data centers before 2020. Linode features native
00:16:57 ◼ ► SSD storage, a 40 gigabit network, and Intel Xeon E5 processors. This is really high-end
00:17:08 ◼ ► stress about overspending. Linode has designed their pricing tiers to feature hourly billing
00:17:13 ◼ ► with monthly caps on all plans and add-on services, including backups and node balancers.
00:17:18 ◼ ► So check out Linode today. They have pricing options to suit everyone. Their plans start
00:17:22 ◼ ► at one gig of RAM for just $5 a month, and they have lots of plans above that for whatever
00:17:37 ◼ ► under the radar with hyphens, under dash the dash radar, and use promo code radar2019 to
00:17:50 ◼ ► And with a seven day money back guarantee, there's nothing to lose. So go to linode.com/undertheradar
00:17:57 ◼ ► and use promo code radar2019 to learn more, sign up, and make the most of that $20 credit.
00:18:09 ◼ ► >> All right, so another aspect I think that has emerged as I've dived into making this
00:18:19 ◼ ► which you want to make content that is broadly appealing for your whole audience, or at least
00:18:31 ◼ ► them or whatever it is. And this can take a variety of different issues. But the issues
00:18:37 ◼ ► that I run into are kind of the things that are specific to a fitness based application,
00:18:43 ◼ ► where people are going to be coming to my app with a variety of different fitness goals,
00:18:49 ◼ ► a variety of different capabilities physically, and it's trying to make something that is
00:18:55 ◼ ► appealing and relevant to them. And, you know, for example, like I have users of pedometer++
00:19:01 ◼ ► who are in wheelchairs, and so having a goal that is entirely based on steps or based on
00:19:07 ◼ ► climbing stairs or things like that would become -- you know, it would be rather problematic
00:19:12 ◼ ► and not a good thing. Or even if I just make the goal be something that is just fixed at
00:19:34 ◼ ► typical able bodied person, potentially, but it's maybe something that is completely out
00:19:45 ◼ ► reach goal. Like, they've really hit it out of the park, and that's a super big accomplishment
00:19:49 ◼ ► for them. And so it's something that I've kind of had to think through and be very thoughtful
00:19:59 ◼ ► broad appeal, that it isn't tied into specific people. Or if it is, if I want to make a goal
00:20:11 ◼ ► relevant to that user. And I mean, I have the benefit of knowing a lot about their past
00:20:14 ◼ ► history typically, so I can -- or like, are they in a wheelchair? Do they have a device
00:20:18 ◼ ► that can count floors? What is their average step count? And I can make adjustments and
00:20:28 ◼ ► keep in mind that you want to be ideally broadly specific. And I mean, I imagine in the same
00:20:33 ◼ ► way, like, when you're doing your collections of podcasts and overcasts, you have to make
00:20:37 ◼ ► sure that you're not -- they're not all just tech podcasts or whatever it is that you listen
00:20:45 ◼ ► a lot of relevance for, but if a broad enough proportion of your users are interested in
00:21:01 ◼ ► not nailed it yet, but I have learned a few things on the way. I mean, the first version
00:21:07 ◼ ► of it was edited. It was hand-curated by me, and I looked into -- like, I talked to some
00:21:17 ◼ ► and the reality of the practice of it had the same problem, which is that when you just
00:21:21 ◼ ► have one person curating a directory of content that could include -- that is a large section
00:21:33 ◼ ► -- like, you would have to hire a staff larger than, like, YouTube staff to do that. And
00:21:38 ◼ ► so there has to be some limiting factor there, and for me, my problem was twofold. Number
00:21:45 ◼ ► one was I only can understand and write English. And so I'm lucky in podcasting. Podcasting
00:22:00 ◼ ► in other languages relative to English. And so that's mostly not a problem for me, although
00:22:10 ◼ ► you run into with curation by one or a handful of people here is just a severe lack of diversity.
00:22:17 ◼ ► Like, there's no way I can listen to everything. I don't even listen to all the tech podcasts.
00:22:36 ◼ ► so I switched it to an automated system a few months in. And so what it is now is literally
00:22:44 ◼ ► just based on number of recent recommendations, so that however many people hit the star button
00:22:48 ◼ ► in Overcast for a podcast in each one of those iTunes-defined categories, that's what shows
00:22:54 ◼ ► up there. Like, it's like, you know, a rolling, you know, one-week window or something like
00:22:57 ◼ ► that. And that is not -- you know, that has its own set of diversity challenges and editorial
00:23:23 ◼ ► like, the recommendations for you, which is based on what you subscribe to and what other
00:23:27 ◼ ► people who subscribe to those things subscribe to. So that's all, you know, well and good
00:23:34 ◼ ► and better than what I can do individually. There are a lot of challenges to user-generated
00:24:14 ◼ ► all sorts of problems that can result from letting people do their own content that shows
00:24:24 ◼ ► The reason why there is nowhere in Overcast to rate a podcast or to leave a review, with
00:24:30 ◼ ► the sole exception of recommending individual episodes with just the on or off star, is
00:24:42 ◼ ► you have a big problem of spam, harassment, illegal content, stuff like that. And so I've
00:24:53 ◼ ► only way to do that is to make a podcast and submit it to iTunes, which themselves filter
00:25:03 ◼ ► avoided having to deal with user-generated content filtering problems and abuse problems,
00:25:25 ◼ ► is fault, part of that is the kind of rich get richer problem of what is being recommended
00:25:46 ◼ ► it's definitely way better being algorithmic the way it is now, and user-generated. It's
00:25:52 ◼ ► way better that way than it was when it was just me, one person, trying to edit an entire
00:25:59 ◼ ► >> Yeah, I feel like the algorithmically-generated content thing is such this, it's great in that
00:26:14 ◼ ► be put on a deadline and have to constantly be able to deliver it, then turning to a machine
00:26:25 ◼ ► or rather than me making monthly challenges, you can just have the computer do it. Sounds
00:26:30 ◼ ► great. But immediately there's so many problems that come into that that are so funny because
00:26:36 ◼ ► it just doesn't necessarily have the benefit of a person, a person with opinions, which
00:26:42 ◼ ► can be good and bad, or even just making judgments. And I think of an example of this is in the
00:26:48 ◼ ► activity app currently, it does monthly challenges, and the way that it does it is that Apple
00:26:54 ◼ ► has just taken the complete algorithmic approach, where it's just looking at one of your health
00:27:00 ◼ ► metrics for the past month, and then it sets a goal for you based on some increase of that
00:27:06 ◼ ► value, which in theory sort of is good, except for it can lead to these completely absurd
00:27:13 ◼ ► goals or badges that don't make sense. I've had a month where I was traveling a lot and
00:27:33 ◼ ► this month," or whatever it is. I know exactly what happened there. The algorithm looked
00:28:03 ◼ ► at the same time, as soon as you rely on an algorithm to create the content, it's going
00:28:07 ◼ ► to become problematic in different ways because it just doesn't have the benefit of being
00:28:22 ◼ ► I think there's definitely this balance that we have to find between creating compelling
00:28:37 ◼ ► of your users and highlights useful features of your app and is compelling in and of itself
00:28:43 ◼ ► that doesn't destroy you and make you tied to deadlines that pushes you to do too much.
00:28:49 ◼ ► But finding that balance, I think, is a really compelling tool that we have available to
00:28:53 ◼ ► us. But yes, I so want to go down the route of just algorithmically generated challenges,
00:29:02 ◼ ► I want to be on this treadmill of coming up with a new challenge every month and hopefully