PodSearch

Under the Radar

50: Checking the Weather for the Last Time

 

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 this week, I had a sad thing happen to me that I wanted to unpack on the show.

00:00:16 ◼   ► So I had to retire one of my apps.

00:00:19 ◼   ► And one of the apps that, obviously I have a lot of apps, and I've quietly retired many of them in the past.

00:00:25 ◼   ► The ones that never had any downloads, the ones that just didn't work out, and you kind of just remove them from the store, and that's that.

00:00:32 ◼   ► But I had one of them, I had to remove an app from the store that wasn't one of those apps, that had some success.

00:00:38 ◼   ► That was something that I was proud of, being out there.

00:00:41 ◼   ► I think this is actually the first app of yours that I've ever both heard of and downloaded that you're also now killing.

00:00:47 ◼   ► There you go. It all comes full circle.

00:00:50 ◼   ► And the app is called Check the Weather, and it is a weather app that at the time I launched it, and I know exactly when I launched it,

00:00:58 ◼   ► because it was four years ago as of last Monday.

00:01:03 ◼   ► And I publicly announced its end of life last Monday for that reason, when I was planning this and scheduling it out,

00:01:09 ◼   ► and I looked at the schedule and I was like, "Wait, I think I launched it somewhere in the middle of October."

00:01:14 ◼   ► And it turned out it was exactly four years ago.

00:01:18 ◼   ► So the app had a four-year life.

00:01:21 ◼   ► And it's just a weather app.

00:01:23 ◼   ► It's a strange thing in some ways to try and describe what it is or what it does, what made it special.

00:01:28 ◼   ► Because a weather app is like, they're all strange in the sense that they all have the same basic data,

00:01:34 ◼   ► and then the differences between all the apps are just questions of style, of nuance.

00:01:41 ◼   ► But Check the Weather always has kind of a special place for me,

00:01:45 ◼   ► because it was the first app that I ever felt that I kind of did it right.

00:01:50 ◼   ► I started from the beginning and said, "You know what?

00:01:54 ◼   ► What happens if I take a run at a very well-established category, doing everything right?"

00:02:00 ◼   ► So having a proper actual marketing plan, that was an actual thing that I did,

00:02:04 ◼   ► rather than just kind of throwing it over the wall or sending some blind emails.

00:02:09 ◼   ► And it was localized from day one.

00:02:12 ◼   ► It had great voiceover support. It had all the things that in my mind were always the things that you had to do

00:02:19 ◼   ► to launch an app that was, you know, if you're going to do it right, if you're going to give it an honest chance.

00:02:24 ◼   ► And, Inc., if you're curious, if you're a listener to this show, but you weren't a listener to the podcast I used to do

00:02:29 ◼   ► called Developing Perspectives, I'll have links in the show notes, too.

00:02:32 ◼   ► I did a whole series of episodes on Developing Perspective,

00:02:37 ◼   ► which rather than being 30 minutes long is only 15 minutes long.

00:02:40 ◼   ► So even though this is a lot of episodes, it wouldn't take that long to catch up.

00:02:43 ◼   ► Where I actually walked through in real time as I was building back in 2012,

00:02:49 ◼   ► I walked through the process of what went into this.

00:02:52 ◼   ► But anyway, the long and the short of it is I had this app, I launched it, it did great.

00:02:57 ◼   ► It had a very big, spiky launch. I think it peaked at number three overall in the App Store,

00:03:03 ◼   ► which at the time for me was just mind-bending.

00:03:06 ◼   ► I actually have very warm and specific memories of that day when it launched,

00:03:10 ◼   ► just celebrating having my wife, I found someone to watch the kids and came into the office

00:03:16 ◼   ► with, I think it might have been Chinese for dinner and a bottle of champagne,

00:03:21 ◼   ► and we actually celebrated.

00:03:23 ◼   ► So it all kind of worked, and it kind of all worked out.

00:03:26 ◼   ► But that was four years ago. That was a long time ago in App Store terms.

00:03:31 ◼   ► And so this week I announced that it will no longer be supported,

00:03:36 ◼   ► and for something like a weather app, that means I'm turning off the API at the back end.

00:03:42 ◼   ► And that's kind of a sad thing, but it was kind of inevitable.

00:03:47 ◼   ► Because the tricky thing with an app like Check the Weather is that, at least the way that I launched it,

00:03:52 ◼   ► is at the time we didn't really have a lot of the subscription-y options we have now.

00:03:56 ◼   ► And so I was really more sort of like free or paid were my options four years ago.

00:04:00 ◼   ► I could have sort of done subscriptions with some kind of, you buy an in-app purchase,

00:04:04 ◼   ► and then you buy another one, and then you buy another one.

00:04:06 ◼   ► But there certainly wouldn't have been able to be auto-renewing.

00:04:09 ◼   ► So I made it a paid app, and I put that out.

00:04:14 ◼   ► So I had a whole lot of people who gave me money four years ago.

00:04:17 ◼   ► I think about a third of the users bought it the first day.

00:04:21 ◼   ► It had a nice big spiky launch.

00:04:24 ◼   ► But most of them, they've never subsequently given me any revenue.

00:04:28 ◼   ► And ongoing costs are really rough, especially when they aren't just two or three Linode boxes.

00:04:37 ◼   ► Things like weather data, and even fonts, actually.

00:04:40 ◼   ► I had some custom fonts in this application that had annual subscriptions that I have to pay.

00:04:46 ◼   ► That's the worst. I have to tell you one thing.

00:04:48 ◼   ► I mean, server costs, you kind of can't get around that.

00:04:52 ◼   ► But as somebody who has licensed a lot of fonts for apps over the years,

00:04:56 ◼   ► anything you can do to avoid ongoing, recurring costs in your app, you should do that.

00:05:02 ◼   ► And if you have a fancy font, try to get one that you can license for a flat fee.

00:05:07 ◼   ► Especially these days, you can often get decent fonts for either free or for maybe a few hundred dollars.

00:05:14 ◼   ► Up front, flat, forever. And if you can do that, that's great.

00:05:18 ◼   ► Sure. Because any of these things, it was always a strange thing because it forced me to,

00:05:23 ◼   ► every year, I had to sit down and decide, do I still want to pay for this font?

00:05:28 ◼   ► Because at this point, the app had kind of, I followed the usual trajectory.

00:05:31 ◼   ► It had that big spike at the beginning, and then it all kind of fell to almost nothing.

00:05:35 ◼   ► And it became kind of like a charity project because I still use the app.

00:05:40 ◼   ► I mean, through this week, I was still using the app.

00:05:43 ◼   ► But at some point, I had to decide.

00:05:45 ◼   ► Every year, when I get my email from the font foundry and says,

00:05:48 ◼   ► "Hey, would like to charge you another three or four hundred dollars,"

00:05:52 ◼   ► it's like, "Great."

00:05:54 ◼   ► And every month when I get my bills from the radar provider and the weather data provider,

00:05:59 ◼   ► it's like, "Hmm, you know, this is fine."

00:06:02 ◼   ► I mean, the costs involved weren't killer, at least up until recently,

00:06:06 ◼   ► and that's part of why I have to shut it down now

00:06:09 ◼   ► because there's a pricing change with my radar provider that meant that it would just have gone from,

00:06:14 ◼   ► "Oh, it's kind of fun. It's a little charity project,"

00:06:16 ◼   ► to something that would have just been kind of absurd to keep going.

00:06:21 ◼   ► Well, I think ultimately you need to think about what--

00:06:25 ◼   ► and I think we'll get to this later--

00:06:27 ◼   ► what do you owe your users?

00:06:29 ◼   ► Because in my opinion, the second you are losing money,

00:06:32 ◼   ► there is no acceptable amount of money to be losing on an ongoing basis for an app.

00:06:37 ◼   ► To me, once you're losing money, that's it. It's gone.

00:06:41 ◼   ► Sure, and I definitely can see where you're coming from.

00:06:44 ◼   ► It is such a hard thing, though, from the emotional perspective,

00:06:48 ◼   ► but what you're saying makes total sense that if I'm running a business

00:06:51 ◼   ► and I have a division of my business that is making a loss

00:06:57 ◼   ► with no prospect of turning that around,

00:06:59 ◼   ► the logical good business move is to just shut it down and move on.

00:07:06 ◼   ► But it's hard when you kind of have something that you feel more emotionally invested in

00:07:10 ◼   ► where it feels like, "Oh, no, this app was my first big break.

00:07:15 ◼   ► I feel sad for it to go."

00:07:19 ◼   ► And so I think I definitely, in this case, I probably did let it go longer than in retrospect I should have,

00:07:25 ◼   ► and not necessarily even just for the money reasons, because I think what you're saying makes sense.

00:07:28 ◼   ► But even just in retrospect, as I think of the burden it places on you cognitively

00:07:35 ◼   ► when you have something that you have this affinity for and you're kind of proud of,

00:07:41 ◼   ► but it isn't really going well.

00:07:43 ◼   ► And every time an iOS update comes out, it's like, "Hmm, should I do this to check the weather?"

00:07:48 ◼   ► Like the Apple Watch came out, and I was like, "Oh, there's some really cool things you could do

00:07:51 ◼   ► for a weather app on the Apple Watch."

00:07:54 ◼   ► I was like, "Oh, man, the app just doesn't make money.

00:07:56 ◼   ► It just really isn't getting traction, and I don't know if just putting more effort into it

00:08:01 ◼   ► is really going to get the outcome."

00:08:03 ◼   ► But every time there's a big thing, I'd have that sense of doubt,

00:08:07 ◼   ► and I feel like that's the kind of thing that, honestly, more than the money,

00:08:10 ◼   ► is a bit better incentive to make sure that when something is clearly not going anywhere,

00:08:15 ◼   ► that you just kind of say, "Yep, it's done," and move on.

00:08:19 ◼   ► Anyway, so that is why I have gotten to the point that I had to pull "Check the weather" from the store.

00:08:24 ◼   ► And it's probably worth mentioning a little bit about kind of what that process looks like mechanically

00:08:32 ◼   ► before we get into some of the kind of the implications and things that come out of that.

00:08:36 ◼   ► So when you decide that you want to pull an app from the App Store, it's surprisingly easy to do.

00:08:42 ◼   ► You just go into iTunes Connect, you click on the app.

00:08:45 ◼   ► I think it's Availability and Pricing is the area in the App Store that you can go into,

00:08:49 ◼   ► or in iTunes Connect that you go to, and say, "You know, it says you removed from sale."

00:08:53 ◼   ► You used to have to go in there and specifically select every country that you didn't want it in

00:08:58 ◼   ► until you had selected them all.

00:09:01 ◼   ► Now you can just push a button, I think, that says "Remove from sale."

00:09:05 ◼   ► And that worked pretty well. It was gone from the App Store.

00:09:08 ◼   ► And then you have the more interesting question, perhaps, of how you communicate to your users.

00:09:14 ◼   ► So most of the people who download your app don't know who you are, they don't follow you on Twitter,

00:09:19 ◼   ► they don't read your blog.

00:09:22 ◼   ► And I kind of struggle with this in this case.

00:09:24 ◼   ► I've certainly done the "I have a blog post mentioned on Twitter" to kind of put it out as best I could.

00:09:30 ◼   ► For most of your users, either you would need to do an app update and just mention this in the release notes,

00:09:37 ◼   ► that the app is going away, or you would probably need to have some mechanism built into the application

00:09:44 ◼   ► to reach out to them, some kind of messaging scheme.

00:09:48 ◼   ► At this point, the app has so few users that I didn't decide that something like that was worth doing,

00:09:53 ◼   ► of building a special build of the app and putting it out there that popped up a window that said,

00:09:57 ◼   ► "Hey, your data is going to go away."

00:10:00 ◼   ► That's something that you would have to do for a variety of reasons.

00:10:05 ◼   ► There are a variety of reasons that you would have to turn something off.

00:10:08 ◼   ► And in this case, it's turning it off because the usership has fallen off dramatically.

00:10:12 ◼   ► But I certainly have friends who ended having to end a product in some ways because it was too successful,

00:10:20 ◼   ► that it had gotten ahead of itself in terms of usership, but didn't have a revenue model to back it up.

00:10:25 ◼   ► At a certain point, they're just like, "Well, I just have to turn it off because the money is just running away from me."

00:10:30 ◼   ► So in that case, you'd probably have to build something into the app to turn it off.

00:10:35 ◼   ► And then you need some kind of mechanism to actually physically turn it off.

00:10:39 ◼   ► In this case, because I'm not hosting much myself, there's not like I have servers and infrastructure that I have to physically unwind.

00:10:47 ◼   ► I mostly am just stopping paying for things, and then the ultimate providers will turn it off.

00:10:52 ◼   ► But it is definitely something that I would say that I never really thought of.

00:10:57 ◼   ► It's easy to not think about when you're making something, but what would I actually do if I needed to turn this off?

00:11:04 ◼   ► At some point, if some of my other projects that have web services that I run were to go away,

00:11:10 ◼   ► it's kind of a tricky question to be like, "Well, what do I do with the data, for example?

00:11:14 ◼   ► How do I safely and securely turn everything off?"

00:11:18 ◼   ► It's the kind of thing where it can so easily get away from you when you're developing.

00:11:22 ◼   ► You can just add things and be like, "Oh, this will be fine. This will be fine."

00:11:24 ◼   ► Or just not even think about all the different services you're starting up.

00:11:27 ◼   ► API memberships, you're starting up with different providers and everything.

00:11:30 ◼   ► It can get away from you pretty fast.

00:11:32 ◼   ► Oh, sure. I mean, it's probably also worth saying that a lot of these same considerations come into play if you ever transfer an app.

00:11:37 ◼   ► Oh, yeah.

00:11:38 ◼   ► So if you ever sell an app, it's something that's probably worth, as a pro tip,

00:11:43 ◼   ► is keeping track in a document or somewhere just at a high level.

00:11:47 ◼   ► All of the various things that you've ever paid for or bought associated with the development of an app,

00:11:54 ◼   ► in terms of keeping track of--there's a domain associated with this app.

00:11:59 ◼   ► If you go to checktheweather.co, I think it was, there's a domain.

00:12:03 ◼   ► I need to remember to go and turn off auto-renew on that domain.

00:12:08 ◼   ► There's all--I think there's three or four different weather data providers that I have created accounts with at some point for this app.

00:12:17 ◼   ► And while, in some ways, some of them would just kind of turn off on their own if their usership went to zero,

00:12:25 ◼   ► the reality is I also should probably go and actually terminate my account there,

00:12:30 ◼   ► so I don't have all these little open things in the future that could come back and bite me in some weird way.

00:12:37 ◼   ► Then on the flip side, on the positive, say, "Hey, the app had been acquired and been shipped over to somebody."

00:12:41 ◼   ► You're going to have to be able to give the new owner the list of, like,

00:12:45 ◼   ► "Here's all of the things that I actually have to give you," which is way more than just the source code to the app.

00:12:51 ◼   ► We're sponsored this week by Pingdom. Go to pingdom.com/radar to start monitoring your websites and servers today.

00:12:58 ◼   ► Pingdom offers a 14-day free trial, and when you enter offer code RADAR at checkout, you get 20% off your first invoice.

00:13:04 ◼   ► Pingdom is focused on making the web faster and more reliable for everyone who has a site or service.

00:13:09 ◼   ► They offer powerful, easy-to-use monitoring tools and services.

00:13:13 ◼   ► So if you're a Pingdom user, you can monitor the availability and performance of your servers, databases, websites, all very, very easily.

00:13:20 ◼   ► They take care of this by using more than 70 global test servers that emulate visits to your site.

00:13:25 ◼   ► They can check its availability as often as every minute, and they can do different tests with that,

00:13:28 ◼   ► things like they can use a cookie to log in, they can follow forms,

00:13:31 ◼   ► they can check for certain strings on the resulting page, they can check for certain timeouts.

00:13:37 ◼   ► Pingdom is incredibly great. I use it to monitor all my stuff, and I've used it since the Tumblr days,

00:13:42 ◼   ► a very, very long time ago, since long before they were a sponsor, before I even started podcasting at all.

00:13:47 ◼   ► I've been using them for a very, very long time, and I have had nothing but great experiences with Pingdom.

00:13:52 ◼   ► That's why I can personally recommend them, even though they cannot pay me to say that.

00:13:55 ◼   ► I can actually say that directly. They are awesome, and you should be using them.

00:13:58 ◼   ► Pingdom makes it very, very easy to monitor your sites.

00:14:02 ◼   ► All you need to do is give them a URL that you want to monitor,

00:14:05 ◼   ► and the various optional conditions you want to check for, and they take care of the rest.

00:14:09 ◼   ► When they detect an outage, you can be immediately alerted, so you can fix the error before the downtime affects you.

00:14:15 ◼   ► You don't want to be caught with your site down, and you not even knowing it,

00:14:19 ◼   ► and people on Twitter telling you, "Hey, by the way, you know your site's been down for the last couple hours."

00:14:23 ◼   ► No. You want to be the first person to learn.

00:14:25 ◼   ► And with Pingdom, you will be the first person notified so you can fix it before anybody else really sees it.

00:14:30 ◼   ► Go to Pingdom.com/Radar for a 14-day free trial, and use offer code radar to get 20% off at checkout.

00:14:37 ◼   ► Thank you very much to Pingdom for sponsoring our show.

00:14:39 ◼   ► So the other kind of consideration or thing that I've--all this process that made me think of,

00:14:44 ◼   ► because it's probably only sort of helpful to talk about the actual instances of this app,

00:14:48 ◼   ► but if I take a step back and think about just in general as I'm developing an app,

00:14:54 ◼   ► are there lessons that I can learn from this that I think would be useful going forward?

00:15:00 ◼   ► And the first one that I was trying to think of and came up with was the importance of being careful

00:15:05 ◼   ► about what I'm communicating or promising to my customers as I start out.

00:15:13 ◼   ► Because I feel like it's easy when you're starting out, and everything's kind of rosy and nice,

00:15:19 ◼   ► to get a little carried away and kind of make commitments that are down the road

00:15:25 ◼   ► going to be more difficult for you to follow through on.

00:15:28 ◼   ► And it's a tricky thing maybe on this case was the pricing, where it's really not a sustainable business model

00:15:33 ◼   ► for an app that has an ongoing cost to have a one-time purchase up front.

00:15:38 ◼   ► But in the early days of the app, I kind of gave the impression, whether implied or actual,

00:15:42 ◼   ► you know, I have to actually go back and look at my communication to see what I actually said,

00:15:46 ◼   ► but I definitely implied that, you know, you buy this app and you have weather data.

00:15:50 ◼   ► And there was no end date put on that.

00:15:54 ◼   ► And that creates some really awkward things that kind of feel like they tie my hands,

00:15:59 ◼   ► whether necessarily or just because of the way that I feel going forward, that kind of reduce my options.

00:16:06 ◼   ► Because in this case, I said about a third of the users bought it in one day.

00:16:10 ◼   ► So whatever I communicated to those people that first day when everything was cheerful and rosy

00:16:15 ◼   ► and I was so optimistic about its future, I kind of have to live with going forward.

00:16:21 ◼   ► And it definitely kind of makes me think of as I launch things now or as I move forward,

00:16:26 ◼   ► while it's also good for me to be thinking about, you know, is this sustainable and so on,

00:16:31 ◼   ► but it's even the importance of being careful about what I say, that I'm not making promises into the future.

00:16:38 ◼   ► It's kind of like anytime I see a company that now says something's unlimited

00:16:44 ◼   ► or a lifetime subscription or those types of words, I am immediately skeptical.

00:16:50 ◼   ► I immediately think, no, that can't be right.

00:16:54 ◼   ► You know, you can't use those words with actual honesty because you can't give someone an unlimited something

00:17:01 ◼   ► or a lifetime of something because you're making promises into the future that you really can't stand behind.

00:17:08 ◼   ► And that's probably a dangerous thing for me, especially a small developer, to ever do.

00:17:12 ◼   ► Well, especially because when you have a paid-up front app or any kind of--however people are paying for it.

00:17:17 ◼   ► If somebody pays for your app, many people, maybe even most people, have this expectation at the moment of payment

00:17:24 ◼   ► that I am paying for this app for it to work forever.

00:17:28 ◼   ► And of course, in reality, that's not how anything in this industry works, but that is kind of like the mindset.

00:17:34 ◼   ► And that's why people get so upset when an app that they paid for two years ago all of a sudden gets discontinued

00:17:41 ◼   ► or requires a paid upgrade to keep working on the newest whatevers.

00:17:45 ◼   ► People, when they pay up front as something that's presented as a one-time fee, they really do assume,

00:17:53 ◼   ► even if it's subconscious, they see that purchase as a lifetime purchase, when in fact that is impossible to sustain.

00:18:01 ◼   ► I mean, people--basically, software needs ongoing revenue streams because people expect ongoing updates,

00:18:10 ◼   ► ongoing service, ongoing compatibility fixes, and even ongoing improvements.

00:18:16 ◼   ► And yet, they pay once up front and they expect all those things to come for free forever.

00:18:22 ◼   ► So, like, some kind of recurring subscription or recurring revenue model, whether it's subscription or ads or other things,

00:18:28 ◼   ► the reason why this is so helpful is because that matches up more to people's expectations of what the product will do for them

00:18:34 ◼   ► and how the product will keep moving.

00:18:36 ◼   ► But when you have something like you had with Check the Weather, which was what, like three or four bucks up front?

00:18:40 ◼   ► I think it was, yeah.

00:18:41 ◼   ► Yeah, so it was like, you know, whatever it is, three or four bucks up front, then, you know, people who paid three or four bucks

00:18:46 ◼   ► two, three years ago, you know, they're going to expect that app to still be working now if they're still using it.

00:18:51 ◼   ► And you're going to get some people who are very upset about this discontinuation.

00:18:55 ◼   ► But I don't really see how you could have kept it going otherwise.

00:18:59 ◼   ► I mean, if you had--I mean, we can talk about different business models and stuff, but, you know,

00:19:03 ◼   ► if it was subscription funded from the very beginning, that would be another thing.

00:19:06 ◼   ► If it were ad funded, then, you know, it would just kind of keep making money through usage,

00:19:12 ◼   ► hopefully enough to cover it, but that's not even a guarantee.

00:19:15 ◼   ► And, you know, so if there was ongoing revenue, you could possibly sustain it more.

00:19:21 ◼   ► But people really do, you know, when it comes to, you know, geeks like us know to doubt claims of unlimited or lifetime.

00:19:29 ◼   ► But when you have paid up front, that is literally what people expect.

00:19:33 ◼   ► They expect it to be a lifetime purchase, even though they might not care in a year or two.

00:19:38 ◼   ► But the ones who still use it, they will care.

00:19:41 ◼   ► Sure. And I think beyond even just the consideration of, like, what's the best business model,

00:19:46 ◼   ► and obviously, like, in retrospect, I think of myself four years ago being very naive that this kind of would have worked.

00:19:52 ◼   ► And I think the important thing there is to, A, to think it through, that, like, I got so caught up in the actual process of building it

00:20:01 ◼   ► and thinking that it was cool, that I don't think I thought four years into the future about what would happen.

00:20:07 ◼   ► And then, B, even if you don't have a good alternative for the business model,

00:20:11 ◼   ► like, even if I'd still launched the app as a, you know, paid up front app,

00:20:14 ◼   ► I likely should have given some thought to how I talked about it and how kind of the expectations that I set.

00:20:22 ◼   ► You know, maybe I should have said, you know, the app includes weather data for two years,

00:20:26 ◼   ► and maybe I don't have a good answer for what happens in two years.

00:20:29 ◼   ► But there's sort of the expectation that maybe down the road there will be some more money that you'll have to pay for me to keep doing it,

00:20:37 ◼   ► and communicating that rather than kind of, if you don't say anything, like you're saying,

00:20:42 ◼   ► the customer's expectation is that it's like, well, I make one payment, and then it's the rest of my life,

00:20:47 ◼   ► or as long as I want to use it, you know, I will be sitting there ready for them to help them, however that goes.

00:20:53 ◼   ► Well, and for a while, that actually works for a lot of apps.

00:20:57 ◼   ► Like, especially in the earlier days of the apps, like four years ago when you launched this,

00:21:00 ◼   ► that was a totally reasonable thing to do.

00:21:02 ◼   ► Like, when I launched Instapaper on, you know, day one of the app store in 2008,

00:21:06 ◼   ► well, it was more like day three, whatever, in 2008,

00:21:10 ◼   ► it was just an upfront paid app, it was first 10 bucks, then about a year later lowered it to five bucks,

00:21:17 ◼   ► and it stayed that way for a long time.

00:21:19 ◼   ► And the idea, you know, I was running this big, expensive web service behind it,

00:21:22 ◼   ► but every month I just kept selling more copies of the app, and so the growth was just funding it.

00:21:28 ◼   ► Like, just the additional new copies that we're selling every month, that was enough to fund the app.

00:21:34 ◼   ► And Overcast, first year, I did the same thing, with the $5 one-time in-app purchase

00:21:39 ◼   ► to unlock the good features, and it did the same thing, and it worked fine for a little while.

00:21:45 ◼   ► But as the app store has gone on, that incredible growth that we had in the earlier years

00:21:50 ◼   ► is harder and harder to come by, and the money you're getting from each person is often going down,

00:21:56 ◼   ► as we've had to lower prices to be more competitive in the market.

00:21:59 ◼   ► And so now, you really have to think from the beginning, how am I going to get ongoing revenue from this?

00:22:06 ◼   ► Whereas even as recent as four years ago, when you launched this, we really didn't have to think about that.

00:22:11 ◼   ► It wasn't you being naïve, it was actually the conditions of the market at the time.

00:22:15 ◼   ► You could just fund an app entirely by its own growth.

00:22:19 ◼   ► Sure, and you know, it's...

00:22:21 ◼   ► Ah, the good old days.

00:22:23 ◼   ► But, I mean, nevertheless, the reality is, it's something that I mention here as a cautionary tale,

00:22:29 ◼   ► both for myself and others, that if you don't think about this up front,

00:22:35 ◼   ► eventually you're going to have to deal with it.

00:22:37 ◼   ► I mean, it reminds me in a weird way of contract negotiation.

00:22:40 ◼   ► I remember getting the best advice, I was talking to a guy who was my lawyer,

00:22:44 ◼   ► but in this case he wasn't acting as my lawyer, but he was, you know, a lawyer who was telling me,

00:22:48 ◼   ► the reason he likes doing contracts for developers is his job, he felt, was to think through

00:22:57 ◼   ► all of the worst case scenarios for them that they don't want to think about,

00:23:01 ◼   ► that they're sitting down with a client and they're super excited, like it's the first big client they've ever gotten or whatever,

00:23:07 ◼   ► and they're really excited about it and they can talk about all the fun things they're going to do

00:23:11 ◼   ► and the awesome work they're going to be able to do and collaborate together,

00:23:15 ◼   ► and you just don't think about these things that, what do we do in the sense of a contract?

00:23:21 ◼   ► Like, what happens to the code at the end of this project?

00:23:23 ◼   ► What happens if you're sick and unable to continue working?

00:23:27 ◼   ► What happens if you just have massive disagreements and don't get along?

00:23:31 ◼   ► Like, those kinds of contingencies, those kinds of things that you never really hoped for,

00:23:37 ◼   ► you just hope it's always going to be the best case.

00:23:39 ◼   ► In this case, with Check the Weather, if the sales had just kept going forever,

00:23:42 ◼   ► the app would just keep going forever, but if you force yourself to think about the weird,

00:23:48 ◼   ► not so great things up front, you can just plan for them, or at least have some sense of what you might do,

00:23:54 ◼   ► and it probably would have helped, in this case, would have helped me avoid, kind of, it feels a bit awkward.

00:23:59 ◼   ► It feels a bit more like I'm letting people down, and generally people have been really gracious about it.

00:24:04 ◼   ► I think the nice thing about a third of the users buying it in the first day,

00:24:07 ◼   ► and probably about half of the users buying it in the first month, is that that was all four years ago,

00:24:13 ◼   ► and so either they've stopped using the app, or if they have used it, they've been using it for four years,

00:24:17 ◼   ► and paying less than a dollar a year is perhaps reasonable to them.

00:24:22 ◼   ► But if anything, it's just the cautionary tale of think about these things.

00:24:26 ◼   ► Think about what this would look like down the road, and have, if not a plan in specifics,

00:24:31 ◼   ► at least a plan in general, for how you're going to deal with it.

00:24:35 ◼   ► The other thing that I've kind of been running into as I've been unraveling it,

00:24:39 ◼   ► that is kind of a lesson that I thought would be worth talking about,

00:24:42 ◼   ► is as much as I feel like I think of the App Store and the way people use my app

00:24:48 ◼   ► as only ever using the latest app on the latest version of the OS, which is in general surprisingly true,

00:24:56 ◼   ► as I've been kind of unwinding this app and working out what I need to turn off,

00:25:01 ◼   ► I always went back and looked at old users of the application,

00:25:05 ◼   ► and this is where things get funny and why I've changed data providers, for example.

00:25:09 ◼   ► And I need to make sure that I go and turn off those first accounts that I used to get weather data from,

00:25:15 ◼   ► because people are still using the app that has really, really, really old versions.

00:25:21 ◼   ► I went and looked in my analytics, and I have people who are using the app that was published in 2013 still.

00:25:29 ◼   ► As of a couple of days ago, I was still having people who were hitting my web services with that version string.

00:25:37 ◼   ► Is this from people who are using really old iOS versions?

00:25:40 ◼   ► Yes, that is usually the situation. It's like somebody has an old iPod Touch

00:25:47 ◼   ► or an old iPhone that can't be upgraded beyond a certain point,

00:25:52 ◼   ► and I think the version they were using there was the last version that worked with iOS 6 or with iOS 5 even.

00:25:59 ◼   ► It's getting really far back in time, and so they're just stuck using that version.

00:26:04 ◼   ► And if they're still using it, in some ways, good for them, that's fine.

00:26:09 ◼   ► But I usually don't worry about those people in terms of new development,

00:26:14 ◼   ► but when you turn things off, it is definitely something that I felt like I have to think through now.

00:26:19 ◼   ► Are there any things that old, old versions of the app do that I need to think about now?

00:26:28 ◼   ► And in a weird way, it gives me thought to being careful or being thoughtful as I develop about where I put things in the app.

00:26:37 ◼   ► It reminds me, there's a mechanism in Check the Weather to dynamically change some of the API keys inside of the application

00:26:48 ◼   ► so that if I had a problem with the weather provider, I could in some ways switch things around dynamically,

00:26:55 ◼   ► and it does that through a web service.

00:26:58 ◼   ► And I'm glad I've definitely used that a few times, and especially for--

00:27:01 ◼   ► this is a good reminder for me of building mechanisms like that into our apps is probably a good idea,

00:27:08 ◼   ► at least to some degree, because you can't always rely on the App Store updates being the way you change that.

00:27:14 ◼   ► You know, if something breaks, I have to go and submit it, and even though App Review is amazing--

00:27:18 ◼   ► I had an update yesterday where I submitted it in the morning, and about three hours later it was approved,

00:27:24 ◼   ► which is crazy and awesome, but that's only ever going to capture 90% of users.

00:27:30 ◼   ► So at least give some thought to what happens to that 10% of users.

00:27:34 ◼   ► Yeah, it's also really nice to have, from day one, a mechanism server-side to show a message,

00:27:41 ◼   ► like show an alert box to everybody with server-side provided text.

00:27:45 ◼   ► And you can have it be like every time or just a one-time showing,

00:27:49 ◼   ► but somehow have something in there in your app so that you could, at this point,

00:27:54 ◼   ► rather than have it--once everything shuts down, rather than the app just launching and erroring out with some kind of server error,

00:28:00 ◼   ► like no internet connection, even though it's not really--

00:28:03 ◼   ► Yeah, that's what it's going to say.

00:28:04 ◼   ► Right, then to have a different method where you can put a file in S3 somewhere that basically--

00:28:09 ◼   ► that the app checks and says error, and then you can show a box that says,

00:28:12 ◼   ► "Sorry, we've had to shut down this app because of blah, blah, blah."

00:28:15 ◼   ► It's something that I have occasionally built into my apps, and I've been very thankful every time I have.

00:28:21 ◼   ► And I think the last thing, this is the thought I have, is the--

00:28:24 ◼   ► as I finish up this app, it's a weird thing because I still have ideas for what a cool weather app could be and do,

00:28:33 ◼   ► and I've had to go navigate a little bit the thought of, "If I made another one, would it make people mad

00:28:39 ◼   ► or feel like I've cheated them out of something, or I should have just put that into the app that they've already paid for?"

00:28:44 ◼   ► But obviously, the reality is--and this is the end of the thought that I came to--

00:28:49 ◼   ► if I decide to make a weather app again, it'll just be a new thing, and hopefully--

00:28:55 ◼   ► if the reality is I just need to take the lessons I learned from this, put it into it, and that will be okay.

00:29:02 ◼   ► And it's being careful of not making choices just to avoid people being mad at you,

00:29:09 ◼   ► because people are always going to be mad at you for something.

00:29:12 ◼   ► And so in this case, I was having the thought, "I don't know why--part of why I didn't pool check the weather

00:29:17 ◼   ► is that at some point I've always thought, 'I have these cool ideas for weather app.

00:29:21 ◼   ► Maybe I'll put them in to check the weather, and then sort of keep it around just to avoid people being mad.'"

00:29:27 ◼   ► But the reality is, if I have those ideas, and at some point down the road I want to do it, I should just do it.

00:29:32 ◼   ► And if people are mad, they're mad, but I won't be. I'll be happy, and I'll be glad,

00:29:36 ◼   ► and I'll be making something that I'm excited about.

00:29:38 ◼   ► And so that's just an encouraging thought that I gave myself this week as I went in and had to hit the button

00:29:45 ◼   ► to say, "It's finally time to put this to bed."

00:29:49 ◼   ► Next time use a free font.

00:29:50 ◼   ► There you go.

00:29:51 ◼   ► All right, thanks for listening everybody, and we'll talk to you next week.

00:29:54 ◼   ► Bye.