Under the Radar

46: Legacy Support


00:00:00   Welcome to Under the Radar, a show about independent iOS app development.

00:00:04   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 a little bit about compatibility, testing, and those types of things.

00:00:18   So iOS 10 just launched, and we're about a week into it, and so I think looking at it,

00:00:23   it's a time of year that I often kind of have to think about my testing strategy.

00:00:28   I guess a week and a day ago, I had to really think about it, because whenever a new iOS release comes out,

00:00:35   you have your last opportunity to go through your testing devices and work out which ones you want to upgrade,

00:00:41   so in this case, to iOS 9, which ones you wanted to leave where they were,

00:00:45   because obviously after iOS 10 comes out, it becomes much more awkward or tricky to revert a device back to iOS 9

00:00:54   or do something like that, and so it just seemed like a topic that was worth thinking through in the way we approach it,

00:01:00   because back in the day, back in the early days of the App Store, I used to keep a very comprehensive compatibility suite,

00:01:08   and I think I'll actually probably have a link in the show notes to an image of it,

00:01:11   where I used to have an iPad running essentially every version of iOS that it could have been running,

00:01:19   and I had the same thing with a device or an iPhone or an iPod Touch running every version of iOS possible,

00:01:25   so I think this is going back from iOS 2 and iOS 3 and iOS 4 and iOS 5.

00:01:29   I used to keep devices around even once I was past a point where I would no longer support them anymore,

00:01:37   and that's changed a little bit now.

00:01:39   I think at this point, iOS compatibility has changed, I feel, where A, it used to be that there was only one screen size,

00:01:47   and so if I had an iPad running a particular version and I had an iPhone running a particular version,

00:01:54   I completely covered all of my possible configurations, whereas now, if I were to actually try and do this,

00:02:00   and every now and then you'll see images from companies like Facebook or these big, huge development companies

00:02:06   where they actually still have this, but if I wanted to have all the different screen sizes,

00:02:11   so I would have had to have the 4s size, the 5 size, the 6 size, the plus size, the iPad, non-retina, the iPad retina,

00:02:25   the big iPad, it starts to get really complicated, because now if I wanted to even keep that for two different versions,

00:02:32   I suddenly have twice that, or if I wanted to keep it for three versions, say I wanted to have iOS 8, 9, and 10,

00:02:37   now suddenly I have three times that many devices, and that just becomes completely impractical,

00:02:42   both from a logistical perspective and from an expense perspective.

00:02:46   And so now, for the most part, I just have a sacrificial device that I keep running the oldest, I think,

00:02:55   which at this point for me is usually iOS 9. I don't think I support anything below that on any of my apps,

00:03:00   and so I'm just like, you know, if some user is still running iOS 8 and contacts me with an issue with something weird in iOS 8,

00:03:08   it's kind of like one of those "sorry, I just can't deal with it," but it's still something that I think about.

00:03:14   On my desk, as I'm sitting here, I'm surrounded by iOS devices. I have, let's see, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 iOS devices

00:03:24   in my line of sight right here, and so it is still something that I do, but I'm curious, we used your approach,

00:03:30   how do you manage the number of devices that you want to keep for testing purposes?

00:03:37   I don't actually keep that many of them. I used to be like you, like what you're describing,

00:03:44   how I would try to keep one on every major version and all the different screen sizes and everything,

00:03:49   and I realized about a year ago or so, I realized that it had been a very long time since that theoretical email had ever come in about like,

00:04:00   "Hey, you know, this app is crashing on the iPhone 4s when running iOS 7.5."

00:04:04   Like, I know that wasn't a real OS, but oh well. I know somebody out there would be like, "Wait a minute!"

00:04:10   You know, I always thought that I needed to keep all these testing devices just in case somebody had a problem

00:04:16   and I couldn't reproduce it in the simulator, and the fact is that just hasn't happened in years.

00:04:21   I mean, the last time that happened was with Instapaper. It was a very long time ago.

00:04:24   And the fact is, in general, as we move kind of higher level in capabilities, in the programming languages,

00:04:35   and especially things like memory on these devices, the opportunities for those, for like one particular version

00:04:44   of the iPhone or iPad to be a problem for your app that you need the hardware to reproduce,

00:04:48   those opportunities get lower and lower every year, basically.

00:04:52   Like, the chances of that being a problem get lower and lower.

00:04:54   With one exception, I know our friend James Thompson, who writes Peacock, just had to get an iPhone 7 Plus

00:05:00   because his widget was crashing only on the 7 Plus and not on the 7, so he's been testing with that.

00:05:07   But that's the first time I've heard about anybody needing to do that in quite a long time.

00:05:11   Because, you know, really these devices have so much memory, so much fast performance now,

00:05:17   such great CPUs and GPUs and everything, that you really, like most apps are not going to be pushing the boundaries

00:05:26   of either performance or memory and would need, would possibly hit these issues.

00:05:31   You know, games might be a different story. I would imagine games need a lot more testing hardware

00:05:36   just because the GPUs matter so much more, you're kind of pushing their limits more.

00:05:40   But for the kind of apps that you and I make and that many of our listeners make

00:05:44   that aren't really games and aren't really pushing the boundaries much in terms of performance or memory,

00:05:48   I don't think you really need that at all. I mean, again, there was a time when we did,

00:05:53   but I think that time was a long time ago. And the issue of expense really can't be overstated.

00:05:59   I mean, Apple has made nice strides in reducing the cost of developing, you know,

00:06:06   keeping the developer program inexpensive and making a lot of it free now.

00:06:10   And people who are just starting out, who are, you know, maybe they don't have a lot of money to spend

00:06:18   on extra devices or, you know, testing devices, like most people, their testing devices are just their own personal devices they had anyway.

00:06:25   And by the way, that's me too. I have never bought a testing phone except for the 6 Plus.

00:06:30   That was the only one I ever bought. I've never bought an iPod Touch for testing.

00:06:35   I know a lot of developers do this. I just never have because I just have my current phone

00:06:40   and then I will have a couple of old phones because I usually don't sell them.

00:06:44   So that's obviously a luxury right there that I don't sell my old stuff.

00:06:47   But for the most part, I've gotten away with having relatively few test devices.

00:06:52   And I could have even fewer if I really wanted to. You know, I have my main phone.

00:06:57   I have last year's phone. I will occasionally use my wife's phone or her last year's phone if we still have it,

00:07:03   which we usually do. And the only things I really use them for are not really for OSes.

00:07:09   They're really for performance. Because my feeling is if you have the, you know, some like, you know,

00:07:17   one to two year old device, it is completely reasonable to require you to run the newest OS in most cases.

00:07:24   You know, maybe not necessarily a day after it's released, which we'll get to,

00:07:28   but like I don't feel like I really need to have hardware to test like last year's iPhone on last year's OS.

00:07:36   I think having last year's phone is enough even if it's on the current OS.

00:07:39   Because it isn't that ridiculous to ask customers, "Hey, you know what?

00:07:43   I don't really support this edge case that you're running into on this two year old OS.

00:07:49   Please update if you can." You know, so that, in practice, having that kind of attitude towards OS versions

00:07:55   has been totally fine for me so far. Obviously this could vary with your audience,

00:08:01   with the kind of people who use your app, with the amount of support you have to give in whatever business you have.

00:08:07   It's different for people like consultants where you kind of can't give the middle finger to anybody who's using the app.

00:08:14   Like, it's kind of your job to make it work. But for indie developers selling your own app or making your own app,

00:08:21   I'd say you really don't have to have that many devices, and you don't really have to worry too much about those edge cases anymore.

00:08:26   Yeah, and I think there's certainly something too that the simulator too, I would say, has gotten a lot better,

00:08:33   and is just a much more useful and practical tool for doing a lot of the kind of compatibility work.

00:08:39   But obviously there's certain classes of problems that you can never verify or look at on the simulator.

00:08:46   You know, things that are performance related or memory bound or these types of things.

00:08:49   The simulator isn't a great tool for that. But for things like layout problems, and those types of issues,

00:08:57   which are honestly, like the biggest issues I tend to have going from device to device are layout issues,

00:09:04   where something just doesn't look quite right on, usually for me, I'm going through my development on my,

00:09:11   and I guess it's now my iPhone 7, I keep trying to call it an iPhone 6s, but on my iPhone 7 now,

00:09:16   I'll be doing my development, it's great, and then I'm getting ready to ship it to the App Store,

00:09:20   and I launch it on the SE simulator, or one of the old smaller narrow ones, and suddenly all my layouts look terrible,

00:09:28   and there's all these dot dot dots at the end of all my labels because I'm so used to having all this extra screen real estate.

00:09:35   And so, but that kind of testing, you can just totally get by with the simulator.

00:09:40   Because for layout purposes, it's doing a tremendous job of just showing it to you,

00:09:44   and moreover, you can switch between things so much more quickly, and you can set up test databases and things like that really quickly,

00:09:51   because you have file system access really straightforwardly to each of the simulator instances,

00:09:57   and so you can copy, what I tend to do is I copy the database off my actual phone,

00:10:03   so say I'm working on Pedometer++, so I have this huge step history going back years and years,

00:10:08   I just copy the database out, and then I can paste it into all the different simulator file systems,

00:10:14   launch them all up, and make sure they all lay out and look correct.

00:10:17   I mean, the simulator's a great tool, and a funny little anecdote, I shipped my first iOS app to the App Store,

00:10:24   I guess it was an iPhone OS app back then, eight years ago, without owning an iPhone.

00:10:30   I had done all of my development on the simulator, and I didn't buy an iPhone because at the time they were expensive,

00:10:36   and I looked at the cost of buying an iPhone, and I was like, "Oh, man, I'm not even sure if this whole App Store thing's going to work out.

00:10:43   I don't want to spend $600 and have this not turn out to go anywhere."

00:10:48   Turns out, it did go somewhere, and I've since bought an iPhone or two,

00:10:53   but you can go a long way with just the simulator if that is what you need to do from a cost perspective,

00:11:00   or from a capability, you know, that's just what's available to you.

00:11:03   Don't feel bad about that. That's where I started, and it worked out just fine.

00:11:07   Yeah, exactly. People always ask, "What kind of Mac do I need for developing?

00:11:13   Is this MacBook or whatever good enough? Can I develop on this? Do I need testing devices? What devices do I need?"

00:11:23   The answer basically is, you can develop on pretty much any Mac, and you don't really need any test devices necessarily,

00:11:31   although having one or two helps, but that could just be your own personal devices.

00:11:36   And that's like, basically, having anything more than that, having the fastest Mac or a bigger screen,

00:11:45   or having more and more test devices, those are all luxuries. They're nice to have.

00:11:50   They might make development easier in certain ways.

00:11:52   Like, for example, one of the reasons I use multiple test devices is I always keep one of them

00:11:58   logged into an in-app purchase sandbox store account, because I don't know if this is still the case,

00:12:06   because I haven't done it in a couple years, but back in the day, a couple years back,

00:12:10   trying to do sandbox testing of in-app purchases on your main phone, which requires basically, like,

00:12:17   signing out of your app store account on your phone, signing into a test account,

00:12:20   and then trying to make the purchases that way, that was always such a pain.

00:12:25   You always see constant purchase failures and prompts for relogging into the store,

00:12:29   trying to basically shuffle two different app store accounts, one of them being a sandbox account,

00:12:33   on the same device that you're using also for all your other apps.

00:12:36   So having a separate device, which in my case is an old iPhone 5S, that is only used for in-app purchase testing,

00:12:44   and you never touch the in-app purchase sandbox on any other device, on your main device that you use every day,

00:12:50   that is really handy, because you don't want that complexity, the confusion of having some apps logged into the sandbox,

00:12:58   some apps not logged into the sandbox, different apps trying to restore purchases from different accounts,

00:13:01   and some people who use multiple Apple IDs or who share one with their spouse or their family,

00:13:08   they've seen a lot of this complexity, so they'll know what I'm talking about here,

00:13:12   but to have in-app purchase stuff, it is very nice to have separate devices just for that purpose alone.

00:13:19   And to do various testing of things like, has this in-app purchase account bought the purchase before?

00:13:27   Has this account ever bought it? Will this account buy it once and have it expire?

00:13:32   So having different devices that just make that stuff faster and easier to test and will keep complexity and crap off your main phone.

00:13:38   But those are all just luxuries. If you only have one iPhone or an iPod touch or one iPad, you can do quite a lot with just that.

00:13:47   Yeah, and it's the thing that I was just recently pulled up, I maintain a stats page of all the stats from one of my apps called Audiobooks,

00:13:58   which I use as my kind of testing, for statistical purposes seems the best app for me,

00:14:05   because it's a very broadly used app in terms of it's not like a lot of my other apps are fitness related,

00:14:10   and so they only work on, sorry, are they most used by people who have more devices that have a motion processor and these kinds of things.

00:14:20   So you have this app that goes all the way back. I mean, I have people still using it with the iPhone 3GS, I think.

00:14:27   I still have active users using it today. So it goes way, way back.

00:14:31   I think what's fascinating too is how modern and quick Apple has been able to get people to kind of be into the cycle of updating.

00:14:40   So I look at these devices, so other than for what you're saying, we're having these devices for specific uses.

00:14:47   Like I have, for example, I still have, like my 5Ss are my most precious devices to me right now from a testing perspective,

00:14:55   because pedometer++, my most important app, it was first possible on that phone.

00:15:01   So anything before a 5S, which is when they introduced the motion processor, is irrelevant to me.

00:15:06   But 5Ss are really important to me because I expect, at least until Apple drops, you know, whatever,

00:15:12   if in iOS 11 they drop support for the 5S or something like that, until that happens, that's where, if I can make my app work, that's most important.

00:15:20   But in general, the thing that's kind of fascinating to me is one of the stats I keep is the average device age.

00:15:28   And right now, I'm seeing that the average device age for iPhones is about 850 days.

00:15:36   And so device age is time since that device was released.

00:15:41   So the iPhone 7's device age would be like a week right now.

00:15:45   But if you go back, it's only about two or three years is sort of the average device age, which is not too bad.

00:15:54   And the majority of my use is coming from iPhone 6s, iPhone 5Ss, 6S, 6 Plus, and yeah, that is, to do the quick math in my head,

00:16:05   that's a good 60% of my users is using just those devices.

00:16:10   And so people are, you know, it's the delightful thing that while the iPhone was successful early on,

00:16:17   there's just not as many of those old devices still in use, that there's just not as many 4Ss or 5s or 5Cs and those kinds of devices.

00:16:27   Like, the natural process of an iPhone is that it gets replaced on a regular basis.

00:16:32   Like, for better or worse, and maybe this will change as, you know, go forward, we hear all these things where people are,

00:16:37   "Oh, maybe I'll skip this," you know, "Maybe it's going from a two-year cycle to a three-year cycle," who knows?

00:16:41   But the reality is, there is, you know, I kind of feel bad when I think of the poor Mac developers,

00:16:48   where, you know, a lot of Macs are still in use that were sold almost a decade ago,

00:16:56   because that's just the nature of Mac hardware, is that it has this different, it's less consumable.

00:17:03   And so maybe, you know, device testing there is more tricky, but for us in iOS land, you know,

00:17:08   you really don't need that much to cover the vast majority of your users.

00:17:13   Yeah, I wouldn't feel too bad about the Mac people, as they can charge like 50 bucks for software and have no App Store review requirement.

00:17:19   There you go. They can afford those old testing devices.

00:17:22   Although, honestly, it is, you know, having a whole bunch of old Macs around is definitely a lot more expensive and clunky than having a drawer full of old iPhones.

00:17:32   But no, I mean, like, also I think you have to consider, like, as an indie developer, like, basically, once you have more users than time,

00:17:40   which, if your app gets any kind of traction, that will quickly happen, you kind of have to be okay with saying,

00:17:46   "Sorry, you know, this might not work on really old phones or really old OSs."

00:17:51   Like, you have to kind of accept that. You might get an email or a tweet from somebody who says,

00:17:57   "Hey, this is broken on my iPhone 4S," and you'll have to say, "I'm sorry, like, I just can't, I can't put the time into making this work,"

00:18:05   or "I don't have the resources to make this work," or "I don't even have a 4S anymore that will power on to test that."

00:18:12   And so you have to be okay to say, like, to 1% of your customers out there, "I'm sorry, I can't support this."

00:18:20   Yeah, and I think it feels, too, I think it's definitely a trap that I think I can fall into, where as an engineer,

00:18:27   I see, if there's a problem that I think I'm capable of solving, so in this case, if someone says,

00:18:35   "Your app doesn't work on an iPhone 4S," it's like, in my mind, if I had in my possession a 4S, I could solve that.

00:18:41   And so it's like this solvable but unsolved problem is the worst, like, most insidious kind of problem,

00:18:48   that if a user comes to me and says, "Oh, I'm having this weird bug that happens, but it's only when I'm in this situation,

00:18:55   but it doesn't happen all the time, and it seems like maybe it's when I'm switching Wi-Fi from work to home,

00:19:00   but I'm not sure, it doesn't happen," you know, those kinds of bugs, I can very much more easily just put down and say,

00:19:04   "You know what? I can't help you. This is going to take hours and hours of my time,

00:19:11   and I may or may not even be able to get a solution at the end of that."

00:19:15   But if it seems like it's just a device compatibility problem, there is such this, you know, there's that insidiousness of just being like,

00:19:22   "Oh yeah, I could totally do that if I just had a device, if I just had a device."

00:19:26   And so yeah, like you said, you have to get comfortable with saying, "There's only so much you can do,"

00:19:31   and it's the weird sort of, like, it is a strange feeling, I think we'll get into this more if we start to talk about iOS adoption,

00:19:40   where being okay with saying, you know, "The needs of the many for your users outweigh the needs of the few,"

00:19:47   where if you can make the experience for 80, 90, 95% of your users really good,

00:19:53   you're probably doing that at the expense of a smaller proportion of your users,

00:19:58   and you just have to be okay with that, because if you aren't, you're just going to go crazy.

00:20:02   Well, you know, not only is that, like, not only is that the kind of thing that you should be acceptable, you know, with,

00:20:09   like, you should be able to accept that you might not do it for everybody,

00:20:12   but also, that is what you, like, you actually should be doing that, like, strategically and time allocation wise, too,

00:20:19   like, it is, it's not only that you should avoid feeling bad about not solving the 1% needs,

00:20:25   it's that solving the 1% needs are actually a bad use of your time, like, you should be,

00:20:30   whatever time you would have spent on that, you should probably spend making the rest of your app better for everybody.

00:20:35   Yeah, it's a classic thing of, what is it, the perfect is the enemy of the good, or,

00:20:41   it's like those kinds of things where if you focus too much on trying to be 100%, you'll never actually get anywhere.

00:20:46   What a fantastic phrase to just kind of approximate it.

00:20:49   You know, it's good enough.

00:20:51   We are sponsored this week by our friends at Linode.

00:20:54   Go to linode.com/radar for $20 towards any Linode plan.

00:20:59   Linode is an awesome web host that both David and I use. Oh, it's so good.

00:21:05   They're a VPS host, so you get virtual private servers, nice little cloud instances, which is the new name for VPSes,

00:21:11   new being 10 years old, but that's me, I'm old.

00:21:14   It is such a great host, so they're incredibly high performance, SSD based, and these are like enterprise grade SSD,

00:21:21   all these high end Linux servers.

00:21:23   They have powerful Intel Xeon E5 processors.

00:21:27   These are the facets available in the cloud market, and they have a 40 gigabit network backing them with multiple levels of redundancy.

00:21:33   They also have an API that makes it really, really easy to automate tasks if you want to spin up more instances,

00:21:38   if you want to develop custom applications that use the API to do cool things.

00:21:42   I use their API for a bunch of little utility things.

00:21:44   I have some scripts if I want to generate new web servers.

00:21:46   I have things that can use the API to get a list of all my servers for things like monitoring applications.

00:21:52   If you look around the industry, what you get at Linode for the price,

00:21:55   not only does it beat other cloud vendors that I've seen, it beats dedicated hosts.

00:22:00   It's really impressive what they can offer for the price.

00:22:03   The pricing all offers hourly or monthly billing.

00:22:07   If you're using hourly, but you run into the amount that would have been for the whole month,

00:22:12   they just charge you the monthly rate.

00:22:13   You don't get pushed over, so you don't have to worry, like, which one do I pick up front.

00:22:16   Go to linode.com/radar.

00:22:19   It's kind of spelled like Linux, Linode.

00:22:20   linode.com/radar to support us, and you get $20 towards any Linode plan.

00:22:26   And with a seven-day money-back guarantee, there's nothing to lose.

00:22:29   Once again, linode.com/radar to take advantage of that $20 credit or use promo code radar20 at checkout.

00:22:35   Thank you so much to Linode for supporting this show.

00:22:37   All right, so for the rest of today's episode, it seemed like we also just wanted to briefly touch on something

00:22:44   that always comes up this time of year, but when we start and a new big iOS release comes out,

00:22:48   is adoption.

00:22:50   So at this point, I'm seeing about a week into iOS 10 being in the world, I've seen about 30% adoption

00:22:57   for most of my apps. I think it's a little bit higher in a few of them, depending on how modern of an app it is.

00:23:06   But overall, that's very encouraging.

00:23:09   And obviously, it's easy to poke our finger at other platforms where they don't have quite the same adoption.

00:23:16   But this kind of approach that Apple has been able to kind of, in some ways honestly, a little bit overly aggressively

00:23:22   push their new OSes. Like, every time one comes out and it's like, "Would you like to do it now or later?"

00:23:27   You say later, and it's like, "Are you sure? How sure are you that you want to do this later?

00:23:32   Are you going to come back? Are you lying to me?" It gets a little aggressive about it.

00:23:35   But either way--

00:23:36   Try setting up a phone without a passcode.

00:23:38   How sure are you you don't want a passcode?

00:23:42   But anyway, we get the result of all of that.

00:23:46   And I'm sure it's all these fun new things in my message, and there's lots of reasons that push people to update.

00:23:51   And the result is, very quickly, you start to think about when you can drop support for older OSes.

00:24:00   And it's probably worth mentioning, I think dropping support for older OSes,

00:24:04   there's a bit of a philosophical question there that I've definitely talked to developers who,

00:24:08   in their mind, they want that just dropping support for its own purpose is kind of, philosophically, doesn't work for them.

00:24:17   Or they want to, you know, it's like, "If I can make it work, why shouldn't I?"

00:24:21   I tend to, I think, come at it from the other side of that.

00:24:25   And my goal is to streamline and simplify as much as I can.

00:24:29   That even if theoretically I could support the old version, there's not this breaking feature that makes it so that I can't.

00:24:35   If it makes my life easier, it's going to make the app better.

00:24:39   Because I'm going to be able to do more, I'm going to spend my time on things that are pushing my app forward,

00:24:45   rather than on making sure that it still works behind me.

00:24:49   And so for me, I tend to drop it fairly aggressively.

00:24:52   Like, I currently, for most of my apps, I support iOS 9 and 10.

00:24:56   And then I will likely drop iOS 9 probably the end of the year, beginning of next year, something like that.

00:25:03   So probably within three to four months of iOS 10 coming out, it'll be iOS 10 only.

00:25:09   And that might be a little aggressive, but for me, I found that that worked.

00:25:13   That's basically what I did for iOS 9, and it worked fine.

00:25:16   The majority of my users will be running the main OS at that point.

00:25:20   And in a weird way, I think the users who won't be, the people who are falling behind,

00:25:24   usually are doing it for a particular reason, and are going to be used to, at this point,

00:25:30   things not working for them, or things not being updated for them.

00:25:33   And it's also probably worth keeping in mind that if I support only iOS 10,

00:25:37   it's not like I'm taking it off their device.

00:25:39   They still can run whatever the last compatible version was.

00:25:43   And I really appreciate that in the App Store, if they go into the purchased area and hit Download,

00:25:48   it'll say, "The most recent version of this app isn't compatible with your current device.

00:25:53   Would you like to get the last compatible version?"

00:25:56   And it downloads it for you, which is a very good user experience

00:25:59   that I never have to feel like, "Oh, someone paid me for this app.

00:26:02   I don't want to take it away from them."

00:26:04   And so I can just drop support as quickly as I can, and then move on.

00:26:08   And my code isn't riddled with all these weird, "If platform version this, then do this.

00:26:13   If platform version this, then do that."

00:26:17   And in general, that probably makes my current version, my main version,

00:26:20   like the flagship version of my app that I'm really focused on and putting my attention on,

00:26:24   better and more reliable, because I'm not having all these weird hacks and ifs into things.

00:26:28   And I can adopt new approaches to things more quickly and more aggressively than I could otherwise.

00:26:35   Yeah, I think it's especially important for indie developers like us to really aggressively adopt the new stuff

00:26:41   for that reason, because we really need any productivity help we can get from the platform,

00:26:47   from the new SDKs, from the new APIs.

00:26:49   So if Apple releases something that makes certain tasks a lot easier, that makes them require less code,

00:26:54   maybe you had to do something manually before with a whole bunch of hacky code,

00:26:58   and now you can get rid of all that code and stop maintaining it and stop debugging it and everything,

00:27:02   because anything they do to make our jobs easier, we need to jump on,

00:27:07   because we are only single or small teams working against competition in an environment

00:27:13   where there's lots of very engineering-heavy organizations that can pump lots of resources

00:27:18   at the same problems that we try to solve.

00:27:20   So we need to basically multiply our productivity by whatever means necessary.

00:27:24   So if iOS 10 comes out and it has a big new API that makes handling all of your interfaces way easier,

00:27:32   all of your networking, whatever it is that changes, jump on that.

00:27:36   And for new apps, I'd say making a new app, even if you're releasing a brand new app on day one of a new OS,

00:27:43   just require that new OS.

00:27:45   And as I said, for older apps, for existing apps rather, when you release a new version,

00:27:50   you're only requiring the new version of the OS for updates of your apps,

00:27:56   and people can still use those old versions.

00:27:58   So it kind of solves the problem for us.

00:28:01   For me, I would say it is very safe for pretty much any indie app to require the newest OS only

00:28:08   within maybe a month of the new OS's release.

00:28:12   And again, for brand new apps, just require it on day one, you'll save yourself a lot of headaches.

00:28:16   Yeah, even existing apps within a month is totally fine.

00:28:20   I'm working on Overcast 3.0. It's probably going to be out in a couple of months,

00:28:24   and of course it's going to require iOS 10, because why wouldn't it?

00:28:27   There's no reason that I would need to support old OS's that is more compelling than the aforementioned,

00:28:35   as you said, the advantages in keeping my code clean, free of multiple code paths for different OS versions,

00:28:44   and being able to use all the newest stuff in all the best ways, all natively,

00:28:49   no backwards compatibility hacks necessary.

00:28:52   There's no gain in supporting old OS's that's better than that for indies.

00:28:57   And the only reason that anyone ever typically comes back with is,

00:29:01   "Well, if 10% of my sales are on the old version, then I'm giving up 10% of my sales."

00:29:07   And while everyone's mileage may vary, I can say in my experience,

00:29:11   when I say no to that 10% of sales, I almost always make up for it in new platform sales,

00:29:19   because it makes the app better.

00:29:22   And don't get stuck on that, "Oh no, I'm going to lose 10% and that 10% is important."

00:29:27   No, focus on making the app forward and better and better, because that 10% is just going to keep shrinking,

00:29:32   and you're putting effort after something that necessarily isn't going to get any better,

00:29:37   better or bigger for you. The upside is severely limited, whereas on iOS 10, in this case,

00:29:43   your upside is not limited. It can just keep growing. So focus on that thing.

00:29:47   Don't focus on the thing that's going away.

00:29:49   And don't skate to where the puck literally has already been and is leaving.

00:29:53   Exactly.

00:29:54   Alright, thanks a lot for listening everybody. We're out of time this week, and we will talk to you next week.

00:29:58   Bye.