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 it was a bit of a sad day. Well, sort of sad. In some ways, extraordinarily glad and
00:00:15 ◼ ► happy, but in some ways sad. It was sad for my customers, I suppose. So last week, I announced
00:00:23 ◼ ► the sort of, I guess, the end of life, the sunset, the shutdown, whatever kind of words
00:00:41 ◼ ► were going to be ending Google Reader, I had been in the process, actually, of building
00:00:48 ◼ ► an RSS syncing service. They hadn't announced it yet. And then, you know, Google announces
00:00:55 ◼ ► is perfect. I mean, I just have this golden opportunity to kind of jump in here with this
00:01:01 ◼ ► thing that I'd already been building and sort of coincide with Google Reader ending. And
00:01:07 ◼ ► that became a Feed Wrangler. It was a product that I worked on for, I guess, I think it's
00:01:17 ◼ ► time. I had no idea it was that old. I mean, like, if you would have asked me, like, how
00:01:20 ◼ ► long ago did Google Reader shut down, I mean, yeah, that seemed like a long time ago. That
00:01:23 ◼ ► seems like ancient history in internet terms. But to say, oh, this product that you've been
00:01:28 ◼ ► running is X years old, that's a very different feeling, I guess. Yeah, I don't think I've
00:01:37 ◼ ► >> Sure. It's like your blog, maybe your Twitter account, I don't even know. Like, nine years
00:01:49 ◼ ► in terms of, you know, in terms of Pedometer++ and Widgetsmith and WatchSmith and all my
00:01:53 ◼ ► other apps. Essentially, the majority of my app businesses sort of came after this. And,
00:01:57 ◼ ► I mean, there was a period where Feed Wrangler was my main thing. I worked, it had an iOS
00:02:07 ◼ ► that I worked on for a long time. But the thing that was tricky for me is it's the main
00:02:11 ◼ ► work behind Feed Wrangler was web development. And as time went on, that became less and
00:02:19 ◼ ► less something that I was an expert in, less and less something that I wanted to devote
00:02:23 ◼ ► time to, and just less and less of sort of something that I had interest in. And so over
00:02:40 ◼ ► before your subscription is about to renew, I always send you an email saying, "Hey, just
00:02:45 ◼ ► letting you know next week you're going to get a charge for your subscription." And usually,
00:02:51 ◼ ► mostly I'm just giving people a heads up so that if they're not using it and they wanted
00:02:55 ◼ ► to cancel, I'm giving them an opportunity, which is in some ways probably bad business,
00:03:04 ◼ ► do that. And so I will do it myself. And in that email, I always have a little like, you
00:03:09 ◼ ► know, paragraph at the top kind of with what's going on, new features, if they are in the
00:03:14 ◼ ► service or whatever. And about two years ago, in that I started telling people, "Hey, Feed
00:03:18 ◼ ► Wrangler realistically is in maintenance mode now. It's not something that I'm focused on.
00:03:29 ◼ ► in maintenance mode. There's no new features. It's just I'll keep it ticking over." And that's
00:03:34 ◼ ► how it had been for about two years. And then a few months ago, it came to the point where
00:03:47 ◼ ► the amount of time it took to me, but I think it was too much in terms of the fundamental
00:03:56 ◼ ► awkwardness of running a server-oriented system is that servers go down and things happen
00:04:03 ◼ ► on the internet. And when I'm the only person responsible for them, when they go down, it's
00:04:13 ◼ ► I can't solve. And either way, it's my problem. And it can happen at very inconvenient times.
00:04:19 ◼ ► It can happen when I'm trying to be focused on something else. Or it just, you never know.
00:04:37 ◼ ► needed. It was being disruptive in a way that I didn't like both personally as well as professionally,
00:04:48 ◼ ► a laptop with me no matter what, because I never know when a server's going to go down.
00:04:53 ◼ ► I hate that. I hate that feeling in the back of my head that I can't just leave work at
00:05:04 ◼ ► of magnitude, more users. Just runs itself. I have nothing to do with it. If I go on holiday
00:05:10 ◼ ► for a week, there's just no new features were added to Widgetsmith, but nothing bad is going
00:05:16 ◼ ► to happen. Whereas this, with Feed Wrangler, I've had the exact, one of my early experiences,
00:05:22 ◼ ► maybe two years into Feed Wrangler, was the actual literal experience of I went on holiday
00:05:28 ◼ ► to a cabin in the woods with my family. This is when we all thought you were dead, right?
00:05:37 ◼ ► this cabin in the woods has no cell reception, no internet, no nothing. It was lovely, glorious.
00:05:47 ◼ ► like went down hard. It was one of these things where something bad happened to the master
00:06:04 ◼ ► was great. Then I come back, as I'm driving back from the cabin, and all of a sudden my
00:06:10 ◼ ► phone explodes with messages and things. It's the lovely thing where it starts off that
00:06:14 ◼ ► people are annoyed and kind of grumpy at me that the service is down. Then it gradually
00:06:25 ◼ ► somewhere?" Eventually it becomes a eulogy for you. "He was a good man." "He was a good
00:06:31 ◼ ► man, but it's too bad his service is down." I remember that because all of us, all your
00:06:40 ◼ ► is going on. Eventually, "Hey, are you okay?" I was one of those people. I remember. We
00:06:49 ◼ ► is?" I've had that experience. I've had the actual experience of the thing that has been
00:06:55 ◼ ► gnawing in the back of my mind for years. It's like, one day, you never know when it's going
00:06:59 ◼ ► to happen. Feed Wrangler is very stable now, but you just never know. I had one recently
00:07:14 ◼ ► at 9.30 at night, which in some ways was even worse because I was about to go to sleep,
00:07:19 ◼ ► but I hadn't gone to sleep yet. If I'd gone to sleep and I just woke up and it had happened
00:07:23 ◼ ► or something, like, "Okay, that's unfortunate. It's been down for 12 hours, but okay." But
00:07:38 ◼ ► a part of my business to justify the cognitive load that it has and the space that it occupies
00:07:45 ◼ ► in my mind. I need to shut it down." And I think once I reached that point, it was very
00:07:51 ◼ ► freeing. And it's almost like, usually, I think you know that you've made a right decision
00:08:01 ◼ ► For me, if you're me, you make five spreadsheets thinking about all the different aspects of
00:08:05 ◼ ► it. But once you actually get to the point, you're like, "Nope, it's time." And it felt
00:08:13 ◼ ► it in a maintenance mode. I should have just said, 'You know what? I'm going to focus on
00:08:17 ◼ ► the parts of my business that are growing, that I'm excited about, that I'm engaged with,
00:08:21 ◼ ► and not this kind of legacy thing that isn't very exciting to me.'" And so I reached that
00:08:27 ◼ ► point. And then it was just like, now then became the really tricky part, which is sort
00:08:35 ◼ ► anyway, that's sort of the journey that brought me to the point where I needed to shut it
00:08:46 ◼ ► time, it doesn't happen very frequently, which in some ways makes this problem worse. Because
00:08:52 ◼ ► every time something goes wrong with my servers, this is like a once in a six month kind of
00:09:02 ◼ ► servers? How can I get myself out of the server business, or at least reduce my server needs
00:09:07 ◼ ► significantly, or reduce the number of things that can break in a catastrophic way?" And
00:09:17 ◼ ► could I involve CDNs and other stuff to make stuff more static and move some of the dynamic
00:09:24 ◼ ► stuff client-side? Stuff like that, that could let the app still work in a large way, even
00:09:40 ◼ ► since the Tumblr days. That was 2006. So it's been a long time. And that whole time, I've
00:09:49 ◼ ► basically been on call, in case anything goes wrong. I'm the one who's on call for almost
00:09:54 ◼ ► that entire time. And so it is that certain level of just kind of constant stress. I used
00:10:00 ◼ ► to go upstate to visit my family up there, in a place where there's no internet service.
00:10:11 ◼ ► was staying in had no internet for a long time. And so I would just check my email before
00:10:17 ◼ ► I crossed into the no-covering zone, and just kind of hope it would be okay for the next
00:10:22 ◼ ► few hours. And I'd wake up the next morning, drive down to the diner in town that had Wi-Fi,
00:10:28 ◼ ► park my car outside, make sure everything's still up, and then go back to the house. It's
00:10:33 ◼ ► an awkward thing to have that as a constant level of stress in your life for years. And
00:10:45 ◼ ► going to shut something down, I think all of us, indie developers, every indie developer
00:10:58 ◼ ► We want to serve our customers as well as we can, for as long as they are our customers.
00:11:09 ◼ ► inconvenience them or make their job or life harder or less pleasant in some way. And so
00:11:19 ◼ ► a handful of alternatives out there that all do basically the exact same thing, and moving
00:11:24 ◼ ► between them is super easy. And so it's not like, you know, when Google Reader shut down,
00:11:29 ◼ ► one of the reasons why it was a bomb in the industry is that there wasn't anything else
00:11:32 ◼ ► that did that. And so everyone had to kind of scramble and figure out what the heck are
00:11:42 ◼ ► like picks a different icon in their RSS reader app, because like, every RSS reader app out
00:11:47 ◼ ► there supports multiple sync engines. So everyone just picks a different one now and migrate
00:11:52 ◼ ► through, you know, export, opml, migrate stuff over import there. And that's it. And you
00:11:56 ◼ ► even set up a nicer one, which I'm sure you'll talk about. So like that, to me, like, that's,
00:12:00 ◼ ► this is the perfect thing. Because it's like, you know what, I don't need to do this anymore,
00:12:03 ◼ ► because these these three or four other people are doing it. And that's fine. And they're
00:12:08 ◼ ► Yeah, and I think it's, it is so it is, it is so difficult to sort of separate the various
00:12:18 ◼ ► parts of making a decision like this, because there's the, like emotional attachment part
00:12:25 ◼ ► of the, this is something I made, this is something that I worked on for almost a decade,
00:12:30 ◼ ► in terms of, you know, I've, it has been a part of my life for, you know, almost as long
00:12:35 ◼ ► as one of my children, like, it's, it's, it's, it's a huge part of me emotionally. And it's,
00:12:40 ◼ ► you know, it's gone through some great times, it's had some rough times, like, it's, there's
00:12:45 ◼ ► an emotional connection to that. And there's obviously a financial aspect to it that, you
00:13:04 ◼ ► risk or loss that you have in terms of shutting something down, even if you do it in as best
00:13:09 ◼ ► a way as possible, and I tried as did everything I could to try and do it in as clean a way
00:13:13 ◼ ► as possible, is like it is potentially going to annoy some people. And those annoying that
00:13:22 ◼ ► that that that is worth thinking about. And I think even moreover, there's even the thought
00:13:27 ◼ ► to have, it's like, it's the kind of thing where it is always difficult to make a decision
00:13:32 ◼ ► that you can't easily undo, that there isn't an alter, like, you can't just change your
00:13:37 ◼ ► mind and switch back. It's, it's like, once I shut down feed Wrangler, it's pretty much
00:13:47 ◼ ► a year and want to do it again, like, I could sort of try and resurrect it. But, you know,
00:13:57 ◼ ► from the flip side, and the thing that I think I feel good about having gone through this
00:14:00 ◼ ► experience is it's just another little encouragement of the it's like, no, it's okay. Like, I'm
00:14:07 ◼ ► over over waiting and over indexing on a lot of things that aren't ultimately serving me
00:14:16 ◼ ► if you were a feed Wrangler customer, I hope you got the service that you were hoping for.
00:14:25 ◼ ► ones. There are way better systems for doing this. Because I've been in maintenance mode
00:14:43 ◼ ► see into a service that is kind of just plodding along doing its thing. And I think there's
00:15:02 ◼ ► But it's there's a powerful difference. It's sort of in the same way when you think about
00:15:06 ◼ ► with pricing with something where there is a something transformative that happens when
00:15:11 ◼ ► it goes from something costs being cheap and something being free. Like if I have to pay
00:15:16 ◼ ► 10 cents for something, I think about it differently than if it's just free. You know, if I'm
00:15:22 ◼ ► walking out of the doctor's office, and they had a little, you know, had a little candy
00:15:28 ◼ ► there, right? And that candy is free, I might grab it, that candy is 10 cents, I'm probably
00:15:33 ◼ ► not going to get it. Even though it's just 10 cents, it's not a big deal. It's that small
00:15:37 ◼ ► incremental difference. And there's this but the transformative nature of zero versus anything
00:15:44 ◼ ► is something I think I'm more aware of now. And in this case, it's like, even though it's
00:15:47 ◼ ► taking a very little amount of time relative, you know, in whatever I work, however many
00:15:52 ◼ ► hours I we say was, you know, 40 hours a week for 48 weeks of the year or so is probably
00:15:58 ◼ ► about what I work. And even if feed Wrangler is taking a fraction of that, is there was
00:16:03 ◼ ► a huge difference between a fraction and zero. And I think the more I realized that difference,
00:16:22 ◼ ► sort of diving in and saying, Nope, it's not serving me anymore. I don't think it's a good
00:16:30 ◼ ► We are brought to you this episode by Sourcegraph. So you've hired a brilliant developer, that's
00:16:39 ◼ ► developers will be a common occurrence, but it's a big undertaking each time. One of the
00:16:47 ◼ ► is working on. This can be tricky if the code bases your developers are working on are already
00:16:51 ◼ ► large. Thankfully, Sourcegraph makes it easy to move fast even in those big code bases.
00:16:58 ◼ ► Developers know that knowledge is most useful when it's findable. Centralization is helpful,
00:17:02 ◼ ► but given the fact that most companies store knowledge in at least two different locations,
00:17:06 ◼ ► how do you make knowledge accessible to those that need it? As a code intelligence platform,
00:17:14 ◼ ► in different situations. Teams without Sourcegraph need to rely on asking colleagues or reviewing
00:17:19 ◼ ► out of date documentation, which is cumbersome and time consuming. But with Sourcegraph,
00:17:24 ◼ ► every developer can search across millions of repositories to find specific code, saving
00:17:36 ◼ ► lives easier. And today they work with leading companies across every industry, including
00:17:46 ◼ ► Atlassian, and so much more. Visit about.sourcegraph.com to learn more. That's about.sourcegraph.com
00:17:54 ◼ ► to find out why some of the biggest tech companies in the world use Sourcegraph and to see what
00:17:58 ◼ ► it can do for yours. Or just click the link in the show notes to let them know you heard
00:18:02 ◼ ► about them from us. Once again, about.sourcegraph.com. Our thanks to Sourcegraph for their support
00:18:07 ◼ ► of this show and Relay FM. So I think you're doing largely the right thing here. You know,
00:18:12 ◼ ► as I said earlier, you know, you're leaving your customers with a pretty easy migration
00:18:22 ◼ ► In fact, in almost every case I can think of, shutting down some kind of app or service,
00:18:36 ◼ ► API for their block storage platform, so that's easy to move between. But moving between apps
00:18:41 ◼ ► for services usually does not work that cleanly. This is a very unique situation here, and
00:18:47 ◼ ► Yeah. And I think that was certainly something that I decided early on that I wanted to put
00:18:52 ◼ ► in the time and energy to make this transition as absolutely easy and seamless as possible.
00:19:03 ◼ ► think there are easier approaches that I could have taken. I mean, all the way up to the
00:19:07 ◼ ► most extreme version is just like I announce one day, it's like, I'm done with this, and
00:19:10 ◼ ► I just pull the plug and that's it. Like, I could have done that. That probably wouldn't
00:19:14 ◼ ► have been a wise choice. That may have been difficult and caused lots of issues for me.
00:19:18 ◼ ► But the approach that I decided to take instead, I think it was essentially the version of
00:19:24 ◼ ► I would rather this be as painless as possible for my users to the degree such that I can
00:19:37 ◼ ► just make this smooth, easy. Everybody's happy. So they might be a little sad in terms of
00:19:57 ◼ ► shut down, but it isn't shutting down until March 1st of next year. That's the day, essentially,
00:20:01 ◼ ► that the one-year anniversary of the last person who was ever charged for a subscription.
00:20:08 ◼ ► So every person who has paid for a subscription to Feed Wrangler is getting their money's
00:20:12 ◼ ► worth. And obviously, if your subscription was going to renew on March 2nd, then you're
00:20:17 ◼ ► getting an excellent deal because your subscription will be essentially a bonus year for free.
00:20:29 ◼ ► was just sort of much, much simpler than trying to work out any kind of—the last thing I
00:20:33 ◼ ► wanted to go down was issuing partial refunds or some kind of system to prorate people's
00:20:58 ◼ ► that should hopefully just eliminate a whole host of potential problems of people who feel
00:21:01 ◼ ► like they are being cheated out of something. It's like no one was cheated out of anything.
00:21:05 ◼ ► Everyone got exactly what they paid for. And in fact, most people get paid, got more than
00:21:10 ◼ ► they paid for. So I decided to go ahead and do that. And then the second thing I did is
00:21:15 ◼ ► I wanted to make the actual process of getting off of Feed Wrangler even easier. And so like
00:21:19 ◼ ► you said, with RSS syncing, at its core, anybody can get an OPML file, which is just this file
00:21:36 ◼ ► to leave Feed Wrangler, that's probably what you would have done. But I was like, I thought
00:21:52 ◼ ► the best RSS syncing platform of the lot. It's someone who I, you know, it's like, it's
00:22:04 ◼ ► consistent improvement and just has all the great little features and things in it that
00:22:07 ◼ ► I kind of I always wish I'd gotten to in Feed Wrangler, but didn't have the time, energy
00:22:34 ◼ ► you know, it's a good marketing opportunity for him. And he said, Yeah, absolutely. And
00:22:37 ◼ ► he'll he went sort of the extra mile in terms of building out a kind of one click migration
00:22:51 ◼ ► opml file automatically. So you're not like downloading an XML file and uploading it over
00:22:55 ◼ ► there. It's like if you could kind of do it more directly, but he went beyond that. And
00:22:59 ◼ ► even it imports all your start articles and even sort of tries to sync your unread status
00:23:05 ◼ ► to the degree that that's possible. Just using the main Feed Wrangler API, you know, so essentially
00:23:11 ◼ ► it's like he pretends to be a client, just like an RSS, you know, like reader or unread
00:23:17 ◼ ► or any of the RSS clients, NetNewswire, he's a pretends to be one of those to Feed Wrangler
00:23:27 ◼ ► the nature of RSS is that, you know, IDs change and we have slightly different versions of
00:23:32 ◼ ► what a particular article is or make it confusion, but it's like, it can get you to like 99%
00:23:47 ◼ ► me, as soon as I that way, that path became something that was viable. I was like, this
00:23:52 ◼ ► is perfect. Like anybody who sort of wants the easy way out, who just wants to just click
00:23:59 ◼ ► a button and then now they're on a different service, they just have, you know, he clicks,
00:24:03 ◼ ► you can click there and then you just, you sign up with Feedbin and all your stuff will
00:24:07 ◼ ► carry over and then you just go into whatever your, you know, your actual client is that's
00:24:11 ◼ ► going to read that and log in again. And I talked to her from several customers who said
00:24:21 ◼ ► have to necessarily do that. But I think there is definitely something beneficial of really
00:24:27 ◼ ► taking care of customers in terms of you only go, you can go crazy with it probably, but
00:24:32 ◼ ► you really, moreover, it's like that effort of trying to really make this process forward
00:24:43 ◼ ► means that I can feel great about this. I've had nothing but positive reactions. Like I
00:24:48 ◼ ► was a little nervous when I announced it was going to be shut down, like, how are people
00:24:51 ◼ ► going to feel? Is it going to be grumpy? Am I going to have, you know, hate mail and dealing
00:25:02 ◼ ► I understand why. And thank you for making the migration straightforward. And it's like,
00:25:10 ◼ ► extra work, having the existing service linger around for long enough that no one's feeling
00:25:15 ◼ ► crushed, no one's feeling like I'm putting them out. And it's like, I just kind of like
00:25:27 ◼ ► like it has been for, you know, whatever, another 10 months now. And I will feel a little
00:25:34 ◼ ► less urgent in terms of if it happens to go down for a few hours here and there. I feel
00:25:39 ◼ ► a little less bad about that than I would have otherwise, because most people are getting
00:25:48 ◼ ► a great opportunity to move to somewhere else that is even better and putting them into
00:25:52 ◼ ► a better place. And so, like overall, I just feel good about this. And I feel like it was
00:26:02 ◼ ► possible way. I would even say that if anything, people should take away from this lesson that
00:26:08 ◼ ► you don't actually need to do this quite this much for your customers some of the time.
00:26:14 ◼ ► you had a lucky situation in that it was fairly easy to migrate people off, you know, in the
00:26:20 ◼ ► relative sense. You know, if I wanted to shut down Overcast, I don't. But if I wanted to
00:26:29 ◼ ► you mentioned, like RSS feeds have this whole issue of like OPML files can export the list
00:26:39 ◼ ► would support or is even possible to uniquely identify the items in the feed to represent
00:26:51 ◼ ► So like for me to like just stop running Overcast and give people a way to, "Hey, you know what,
00:26:54 ◼ ► here, I'm going to make a deal with, you know, Castro or whatever to export your feeds."
00:26:59 ◼ ► Like that, I think, would go over very poorly because it would work very poorly because
00:27:09 ◼ ► usage pattern in different apps is different, whereas in this case, like most people were
00:27:15 ◼ ► not using your website. They were using the API in an app. And so because the API works
00:27:20 ◼ ► basically the same way, like I moved off of feed wrangler a couple months ago, like when
00:27:23 ◼ ► this was becoming apparent, this was probably going to be the direction you were going.
00:27:27 ◼ ► And I didn't even notice, like the next day, I just stopped. I forgot that I had even done
00:27:31 ◼ ► it because everything was basically the same. But yeah, so if anything, I would say like,
00:27:39 ◼ ► you know, don't bend over too far backwards. Like don't spend months shutting down something
00:27:44 ◼ ► or, you know, don't run something well after the point where it's financially viable for
00:27:50 ◼ ► you to keep running it solely because you feel an obligation to people to always continue
00:27:59 ◼ ► the point where you are losing money or spending way too much time on something like that.
00:28:02 ◼ ► At that point, your obligation is is fulfilled, and you should take care of yourself first.
00:28:09 ◼ ► And I think that's absolutely right. And I certainly don't want to give the implication
00:28:16 ◼ ► it's like I was buying something with that time. And for me, thankfully, it wasn't very
00:28:21 ◼ ► much time. And most of the work Ben was doing it feed bin for the migrator, because it works
00:28:33 ◼ ► people go. And also, but it's just being thoughtful. And it's like being in there's two sides of
00:28:40 ◼ ► it in this in this conversation is like being thoughtful of, is this serving you? Is this
00:28:45 ◼ ► something that is a product or an app or whatever it is? Is this something that should continue
00:28:50 ◼ ► to exist? Or is it reached that process over that to that tipping point and no longer is
00:29:05 ◼ ► the number of things that are weighing down your sort of weighing you down from your past.
00:29:14 ◼ ► customers, take care of people, and then move on. And when as long as you've sort of done
00:29:18 ◼ ► a reasonable job of taking care of people, and not just like sprung it on them in a mean