PodSearch

Under the Radar

258: A Less-Cloudy Outlook

 

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.

00:00:06   Under the Radar is usually not longer than 30 minutes, so let's get started.

00:00:10   I think my plans were all wrong, and I'm going to change them.

00:00:15   Oh no.

00:00:18   So often the way isn't it?

00:00:20   Yeah.

00:00:21   So, you know, over the last few months I've talked about, you know, how I've been – I've

00:00:26   had a bunch of server challenges the past year just trying to get things scaled and

00:00:30   cost managed in reasonable ways and was basically getting nowhere with a lot of it.

00:00:35   I tried a bunch of different things that ended up being either no benefit or minimal benefit

00:00:40   for tons of work and tons of cost.

00:00:42   And so anyway, so you know, server stuff wasn't going great.

00:00:45   And my plan has been – as I've discussed on this show and on ATP, my plan has been

00:00:49   to – basically to move user data to CloudKit in Overcast and keep, you know, keep like

00:00:58   the servers around in a smaller state for all the feed crawling and stuff like that

00:01:02   and notifications and everything, but basically to move the user data part of it.

00:01:06   You know, your list of subscriptions, your progress within each episode, you know, that's

00:01:10   the bulk of the data.

00:01:13   And each episode state, like whether it's deleted or played or – like that's – those

00:01:17   things, that's pretty much all my user data.

00:01:19   So – but it's just a huge volume of very tiny flags and stuff on these rows.

00:01:26   So anyway, so my plan was move all that to CloudKit and then keep the servers as a much

00:01:31   smaller thing.

00:01:33   And that's why about a month ago I posted a notice on the Overcast web interface saying

00:01:38   I was going to discontinue the web interface sometime in 2023.

00:01:42   Because while there are ways to access CloudKit from servers, they are terrible and unreliable.

00:01:49   I know because I tried using them for my login system for a few years.

00:01:53   And it's still there, but I've been backing away from it because it's terrible and unreliable.

00:01:57   [Laughter]

00:01:58   That's not good for something like login.

00:02:00   That's a pretty fundamental thing.

00:02:01   Yeah, like I had to build this whole QR code thing instead because the CloudKit thing was

00:02:05   so unreliable and so limited.

00:02:07   And it feels like – you know, you don't really want ever to be in an area of Apple's

00:02:13   stuff that they barely seem to notice or care about.

00:02:18   And I think CloudKit on the web is clearly one of those areas where like, yes, it technically

00:02:25   exists but you don't want to build a product on that.

00:02:29   Sure.

00:02:30   It remains a service in their lineup or whatever you might say.

00:02:32   Right, exactly.

00:02:33   CloudKit on the web remains a service in their lineup.

00:02:36   Exactly.

00:02:37   So basically I decided, you know what, not a lot of people use the web interface.

00:02:42   I hate working on it.

00:02:43   It's ugly and hideous because I'm not a very good web designer.

00:02:47   I just haven't had the motivation or talent or time to work on it.

00:02:51   So I was just going to let it die.

00:02:53   And so I posted this note saying, "No more web interface.

00:02:55   Sometime in 2023 I'm going to take it down.

00:02:58   Sorry everyone.

00:02:59   I'll figure out some way to make file uploads work but otherwise that will be it."

00:03:03   Over the last week or so I released a build of Overcast to the App Store that is still

00:03:09   in phased rollout.

00:03:10   So not everybody has it yet.

00:03:12   But it has a new analytic stat that I'm measuring which is how many people have an iCloud account

00:03:20   logged in?

00:03:22   Because in order to use CloudKit, at least to use any kind of private user specific data,

00:03:27   that user on that device has to have an iCloud account logged in.

00:03:31   I have since also learned that for that to work for apps they also need to have iCloud

00:03:35   Drive enabled which is a little detail I didn't know until a few days ago.

00:03:39   Sure.

00:03:40   So I posted on Mastodon.

00:03:42   By the way, I'm all on Mastodon now.

00:03:43   No more Twitter.

00:03:44   So I posted on Mastodon.

00:03:45   By the way, it's great.

00:03:46   I highly recommend it.

00:03:47   Anybody out there, if you want to follow all of us nerds talking about nerd stuff in a

00:03:52   more peaceful way without all the stuff around Twitter, come to Mastodon.

00:03:56   It's great.

00:03:57   Anyway, so I posted on there asking basically like, "Hey, my early data on this stat is

00:04:04   suggesting that more people than I expected don't have an iCloud account logged in."

00:04:10   And I asked, "Hey, other iOS devs, what do your numbers look like for this?

00:04:13   What do I need to know here?"

00:04:16   And it turns out I learned a whole bunch from the replies for that.

00:04:19   I'm very thankful to all the people who replied.

00:04:22   Key takeaways are, again, that iCloud Drive thing where if iCloud Drive is disabled on

00:04:26   the device, apps can't use CloudKit.

00:04:29   That's it.

00:04:30   And I don't think that's an obvious thing to the users.

00:04:35   So a lot of people will go and fiddle with settings to achieve some goal like we've

00:04:41   all seen in our apps that people will "force quit" our apps in order to do whatever they

00:04:46   think that's going to do.

00:04:48   And that can cause, in the past, it has caused problems with things like receiving background

00:04:53   updates or notifications or being able to refresh.

00:04:57   And so anyway, people tweak settings and they mess with things and then things break, but

00:05:03   they don't necessarily know why things broke.

00:05:05   They might blame us or email us or whatever else.

00:05:08   And this is one of those things where having iCloud Drive disabled just kills CloudKit,

00:05:12   and I don't think anyone knows that.

00:05:13   I didn't know that as a user.

00:05:15   And so that's one thing.

00:05:18   Also, the big factor that I think I was, I think, under-considering or not considering

00:05:24   was that I learned from all these responses that most business-deployed devices, like

00:05:31   if you have a phone from work that's MDM-managed, in many cases, either iCloud itself will be

00:05:38   prohibited or at least iCloud Drive will be prohibited, which kills CloudKit.

00:05:46   And so anyway, so this is combining with over the last few weeks since I announced that

00:05:52   I was going to kill the web interface.

00:05:53   I mean, look, my numbers on actual usage of the web interface are very low.

00:05:59   It's like, you know, I think it's like less than 1%.

00:06:01   I think it's well less than 1% of active users actually use the website every day.

00:06:07   It's a pretty low percentage.

00:06:10   The absolute number is not nothing, but it's not a huge number.

00:06:14   But it's kind of, you know, you just made a Remains of Product Center lineup joke.

00:06:18   It is kind of the Mac Mini of Overcast in the sense that while its actual numbers of

00:06:25   usage are low, a lot of people use it here and there for kind of edge case or unusual

00:06:33   uses that are not well solved just by having an iOS app.

00:06:40   And that turned out to be, people kept bringing up over and over again different use cases,

00:06:46   and one of them was, hey, I listen on my work PC.

00:06:50   And we're not allowed to install anything, but I can go on your web interface and listen

00:06:54   on my work PC.

00:06:56   And you know, again, usually I don't do that much to cater to like, you know, Windows PC

00:07:03   users or anything.

00:07:04   It's just that's not my world and I don't have the resources and everything else.

00:07:07   But I heard from so many people who said, oh, yeah, you know, I really am sad to hear

00:07:15   this because I use the web interface for XYZ.

00:07:19   And I think I should keep it and I think I should bail on CloudKit because the combination

00:07:26   of the web interface being more used and more useful to people than my stats would have

00:07:34   suggested as well as my surprisingly high stat of people who don't have iCloud account.

00:07:43   So right now, and I'll tell you, you know, right now I'm still in like day three or four

00:07:47   of phased rollout of this version, but my no account percentage started out at almost

00:07:55   nine percent on the first day.

00:07:58   And as the days goes on, it's slowly climbing up.

00:08:01   I'm now like 10 and a half percent.

00:08:05   And so I think it's probably going to stay somewhere in this range, I think, you know,

00:08:08   around 10 percent.

00:08:10   And that's a lot.

00:08:11   And so when I look at how many people would not be able to use CloudKit in Overcast, if

00:08:18   it's going to be 10 percent, that's a very high percent.

00:08:23   That is too much for me because I'm not at the point in my career where I'm willing to

00:08:29   just throw away 10 percent of my users for easily avoidable reasons.

00:08:35   And the thing is, this is not, you know, the plan to change to CloudKit was not going to

00:08:41   be without other downsides.

00:08:43   I just had decided that they were probably going to be worth it.

00:08:46   But it would involve a large amount of work, like a huge amount of work.

00:08:53   And of course there's direct cost to that.

00:08:55   There's also opportunity cost to that.

00:08:56   You know, I could be building other features during that time.

00:08:59   So you know, that's a huge amount of work there.

00:09:02   And then I would be taking on risks that I don't currently know about.

00:09:07   So for instance, if I hadn't issued this build with this analytic stat, I would have just

00:09:11   plowed forward and not even realized that I would be killing 10 percent of my users.

00:09:16   And you know, good thing I learned that now instead of after I built it and switched everything

00:09:20   over.

00:09:21   >> Yeah, for sure.

00:09:22   >> And also, you know, again, like dealing with areas of Apple that are not as high of

00:09:29   a priority as things like, you know, the iPhone.

00:09:32   You know, and I think CloudKit, I've heard overall pretty good things about it.

00:09:37   But it does seem like it suffers a little bit from this problem of not being a super

00:09:42   high priority.

00:09:43   Not as bad as like, you know, CloudKit for the web.

00:09:45   That's a whole different degree of low priority.

00:09:49   But just CloudKit itself and iCloud in general, it seems like it's pretty good most of the

00:09:53   time.

00:09:55   But am I willing to like bet all of my data on pretty good most of the time?

00:10:00   And especially since I already have this whole system in place that doesn't use it at all

00:10:05   and doesn't need it.

00:10:07   So I think that's a major factor there.

00:10:12   And I think I'm learning that, you know, the assumptions I make or the things that I hear

00:10:19   or, you know, various, you know, various little data points I can pick up here and there might

00:10:25   suggest, you know, because the responses I got when I asked people like what their numbers

00:10:30   were for, you know, how many people didn't have iCloud accounts.

00:10:33   Most of their numbers were way lower than mine.

00:10:35   I did have some that were a little higher, especially things that targeted business users

00:10:39   in particular.

00:10:40   But most of their numbers were way lower than 10%.

00:10:45   But mine aren't.

00:10:47   And you know, there is no substitute for having your own numbers from your own user base because

00:10:52   those can vary.

00:10:53   They can vary wildly and what I'm seeing here is this whole assumption I made that, you

00:11:01   know, how many people are really using an iOS device without an Apple ID logged in,

00:11:08   you know?

00:11:09   That whole assumption was not only incomplete in the sense that I didn't realize things

00:11:14   like the iCloud Drive thing, stuff like that, but it just didn't reflect my user base.

00:11:20   And my actual user base, you know, people listen to podcasts at work.

00:11:23   Like that's a common thing.

00:11:25   Or you know, a lot of people, their only iPhone is their work iPhone.

00:11:29   That's a very common thing.

00:11:31   And so there are all these conditions that, you know, the plan I had made, it just, it

00:11:38   didn't take into account all these things or I didn't know all these things.

00:11:41   And now that I have more information and more knowledge, now I can see, you know what, this

00:11:46   is a bad idea.

00:11:48   It also helps that in the meantime, over the last couple of months, I also actually finally

00:11:55   was able to do a few server changes that actually helped.

00:11:59   That actually worked.

00:12:00   >> Wonderful.

00:12:01   >> After a whole spring and summer of doing things that didn't work and didn't help in

00:12:05   the fall, I actually, you know, I cleaned up a couple database index sets and things

00:12:10   like that and, you know, made a few things more efficient and, you know, dropped some

00:12:14   unused indexes and columns off some major high traffic tables.

00:12:18   And it just worked better.

00:12:20   Like and I think I bought myself a lot of headroom.

00:12:23   So I think I'm just going to keep going with the plan I already was, with the structure

00:12:30   I've already had.

00:12:32   Just keep going on that and, you know, try to make little improvements where I can, you

00:12:36   know, probably stop trying to make massive improvements that, you know, might involve

00:12:40   other services and backend stuff that I don't have any experience with.

00:12:44   Just keep going with the really simple, you know, MySQL setup that I have now and just

00:12:49   get back to working on user features.

00:12:51   Because that's what people actually want from me.

00:12:55   That's what both my app and my business actually need.

00:12:59   And you know, the server stuff, if I can improve server stuff over time, that's great.

00:13:04   But I think this has shown me like that whole plan turned out to be wrong.

00:13:11   And I'm not afraid to admit it now.

00:13:13   And I'm going to now take down the notice on the website that I'm going to shut down

00:13:17   in 2023 because I think now I'm not going to.

00:13:20   This episode of Under the Radar is brought to you by POW, P-O-W, the SwiftUI effects

00:13:24   and transitions library by Moving Parts.

00:13:26   POW is the perfect tool for adding some excitement to your app's user interface.

00:13:30   POW was created by experienced designers and developers to easily integrate even into existing

00:13:34   SwiftUI apps.

00:13:35   And with its simple one-time purchase of $99, you can add professional level effects and

00:13:40   transitions to your app without breaking the bank.

00:13:42   I've actually been following the creation of POW myself.

00:13:45   As I've been getting more and more into SwiftUI, I've been finding it really helpful to see

00:13:48   them make this and to get a sense of what's possible and to get ideas for little touches

00:13:52   and things that I can add to my apps.

00:13:54   And then if I do, would increase the just that level of polish that it would have.

00:13:59   I especially like their change effects, which give UI a really lively feeling.

00:14:03   These are visual touches that you can kick off in response to user action, which I feel

00:14:07   like really elevate the sense of interaction and the pizzazz your app ends with.

00:14:12   But you can see it for yourself.

00:14:14   You don't have to take my word for it.

00:14:15   If you-- POW has created an example app on GitHub where you can download and see all

00:14:20   these effects and actions so you can know what you're getting before you do.

00:14:24   If you'd like to check it out, head to movingparts.io/radar to learn more about POW and to try it out for

00:14:29   yourself.

00:14:30   And when you're there, you can use code RADAR at checkout for 10% off on your purchase.

00:14:35   That's movingparts.io/radar and code RADAR for 10% off.

00:14:39   Thanks to POW for moving parts, for supporting this show, providing developers with a great

00:14:42   tool to make stunning user interfaces in SwiftUI, and for their support of all of Relay FM.

00:14:46   Yeah, I mean, I think that makes a ton of sense to what you're saying about-- and I

00:14:52   feel like in some ways this is a good endpoint for one of the things that I've been learning

00:14:57   about this in 2022 is this reality of having ideas, but then verifying them or exploring

00:15:07   them with numbers before you act on them or before you go too far down a road.

00:15:12   And I feel like this is that perfect example where it's so easy, I think, to make assumptions

00:15:17   about our users, about their preferences, about their setups, assume that they're similar

00:15:25   to us, that they have setups and preferences that are similar to ours, whatever that might

00:15:29   be, and to end up shoehorning ourselves into directions, places, features that in reality

00:15:38   aren't as in practice going to be that impactful.

00:15:42   And obviously, I feel earlier in my career or earlier in this year, if I'm being honest,

00:15:48   I think I would look at a lot of these kind of things and say, oh, I don't want to be

00:15:53   driven by numbers.

00:15:54   I don't want to be one of those sort of businessy analytics persons that's all just Mr. Spreadsheet

00:16:00   running around, and that's how I run my business.

00:16:02   And I think, as is so often the case, viewing that as an absolute position that you're

00:16:08   either the artisanally crafted, deep, thoughtful, sort of deep designing things with a great

00:16:16   amount of opinion and thoughtfulness.

00:16:18   You're either that or you're the other, I don't know, like the mustache twirling spreadsheet

00:16:23   man.

00:16:24   And it's like-

00:16:25   Do they have mustaches?

00:16:26   I don't know.

00:16:27   Maybe they have mustaches.

00:16:28   Maybe I'm just conflating things.

00:16:29   They probably did in the '70s.

00:16:33   Before they had spreadsheets.

00:16:34   Right.

00:16:35   But anyway, but I suppose the reality is that this is one of these things of like, there's

00:16:40   so much information that is available to us that we can use to improve our choices and

00:16:46   decisions and not availing ourselves of that is sort of just foolish at a certain point.

00:16:53   And it's just so many things in my products and it sounds like in Overcast where it's

00:17:00   by gathering the right amount of the right data at the right time in the right way, you

00:17:04   can really improve your decision making process.

00:17:07   And the way you're talking this through, I think it makes a ton of sense.

00:17:09   And I think, especially the thing that I look forward to in some ways is you've already

00:17:14   built the Overcast backend.

00:17:17   It exists.

00:17:18   It works.

00:17:19   It's been working for a decade, basically.

00:17:22   Like it's there.

00:17:24   And I would love for you to just be able to turn your focus from that to other things.

00:17:31   And would I like the end result of Ammarco completely divorced from a lot of server maintenance

00:17:39   and a lot of scaling issues and things and instead relying on CloudKit for that?

00:17:44   I like that that end result sounds great, but the next six months to get there, I don't

00:17:50   like as much.

00:17:51   And I think has always been like, well, if in the end, the end result is so much better,

00:17:56   it's worth that now.

00:17:57   But the thought of instead, if you got things stable in the servers to instead be like,

00:18:02   you know, 2023 is the year of new features in Overcast, like how awesome would that be?

00:18:06   Or being freed up in that way because you're just taking advantage of the thing that already

00:18:10   exists rather than having to kind of reinvent it a second time.

00:18:15   So I think in that sense, it sounds like a big win.

00:18:17   And certainly it's nice to not have to turn things off.

00:18:21   And you know, it's like, it's I mean, it's all these things.

00:18:24   There's always tensions and trade offs is the reality.

00:18:26   Like I, I am not going to lie that it was a part of me that's like, I really wish you

00:18:30   could have, you know, as I look forward to in March, I'm turning off feed Wrangler.

00:18:36   And getting out of essentially the server business, like I am so looking forward to

00:18:40   that part of the year.

00:18:41   And obviously, you're never getting out of the server business, you run something that,

00:18:45   you know, has to scrape hundreds of thousands of RSS feeds constantly throughout the day,

00:18:49   24 hours a day, all day, like, okay, whatever.

00:18:54   There's a lot of internet happening there.

00:18:57   And I, you can't get out of that internet business in that sense.

00:19:00   But it's like, wouldn't it have been nice to be able to reduce that slightly?

00:19:04   Sure.

00:19:05   And what sounds pretty nice is having this kind of data to be like, you know, this isn't

00:19:09   the path it has the downsides have now crossed over that threshold.

00:19:13   And now, you can just focus on other things.

00:19:16   And hopefully, the servers stay happy and just kind of keep trucking away as they have

00:19:19   been.

00:19:20   And you know, it's not something that you're going to sort of regret in the future, but

00:19:24   more likely or not, you know, you're not because it's been working pretty well up

00:19:29   until now.

00:19:30   Yeah, and the times that it has worked less well were mostly because I was trying to add

00:19:36   levels of caching and things like that, you know, different, you know, data denormalization

00:19:41   steps to make things faster, that ended up resulting in possible failures and bugs.

00:19:45   Like, you know, like one of the big shifts I did over the summer that I've now partially,

00:19:51   if not, I've almost completely gotten rid of was, you know, I was moving a lot of the

00:19:57   feed contents data, like, you know, what basically my like my JSON normalized version of what's

00:20:02   in an RSS feed for podcasts, you know, split by episodes and everything else.

00:20:06   I was moving that from just database reads that were cached on a couple levels to actually

00:20:11   like static files that were that were stuck onto Amazon S3 or linear object storage, and

00:20:18   then proxied by Cloudflare in front of them as a CDN.

00:20:22   So the idea was take a whole bunch of traffic and load off of my servers and put it on CDNs

00:20:27   where it would not only be not served by my servers, but it would be faster and download

00:20:32   faster to everyone's devices, especially especially people who don't live near Texas.

00:20:37   And it turns out like that whole thing that introduced, you know, three different layers

00:20:42   of possible failures and cache invalidation bugs and things like that, that, you know,

00:20:49   it just made everything worse.

00:20:50   And it and like it didn't actually save a ton of resources like it saved some, but

00:20:57   didn't save a ton.

00:20:58   My server still to do a bunch of work.

00:21:00   And now you had more bugs and more costs.

00:21:03   It's like it actually backfired completely.

00:21:05   And so, you know, getting away from, you know, all that kind of stuff as much as I can and

00:21:09   keeping things simpler and everything is letting me do more work like, you know, over the last

00:21:15   couple of weeks, I actually started developing the back end for a feature.

00:21:20   I know.

00:21:21   >> Trevor Burrus Like what?

00:21:22   >> Mike Stowe Yeah, like, you know, so everyone always gets

00:21:25   these like Spotify wrapped, you know, year end wrap up kind of things in December.

00:21:30   And there's always this like this one or two week period in December that's just unbearable

00:21:36   for me because all of my emails and social network responses are all about like, hey,

00:21:42   when can we get this for Overcast?

00:21:44   And the answer before has been I don't have the data to do that.

00:21:48   And doing that would require collecting way more data than I want to and currently can

00:21:53   collect.

00:21:54   Well, this build that I just released collects that data.

00:21:58   I had to get it out before January 1st so that your data for 2023 will be complete.

00:22:03   But now I will have the data to say, all right, you listen to, you know, podcast number one,

00:22:08   two, three for six minutes today.

00:22:11   And then, you know, at the end of the year, I can show you, you know, pretty graphs or

00:22:14   whatever and hopefully in the meantime, hopefully you don't have to wait till the end of the

00:22:18   year.

00:22:19   Like hopefully in the meantime, I will build a feature that will actually display the ongoing

00:22:22   data or you can select, you know, certain time periods.

00:22:25   I have it down to granularity by day on the back end.

00:22:29   So we'll see, you know, and just, you know, it's like user four, five, six, listen to

00:22:33   podcast one, two, three for six minutes on this date.

00:22:35   It's that level of granularity.

00:22:38   So you know, that's hopefully small enough.

00:22:39   The servers won't totally collapse under all that.

00:22:42   They haven't yet.

00:22:43   So anyway, there's that.

00:22:46   And that's also using Blackbird by the way.

00:22:47   So Blackbird is now shipping in Overcast.

00:22:51   Nothing else in Overcast using Blackbird yet, but what you're telling me is it's production

00:22:55   ready.

00:22:56   That's what I'm hearing you say right there is Blackbird is now production ready.

00:23:00   Everyone should just go forth, use it in all their products.

00:23:03   It is out there in the wild.

00:23:04   Oh my God.

00:23:05   Yeah, please.

00:23:06   Not quite.

00:23:07   Please don't.

00:23:08   Don't do that.

00:23:09   That was sarcasm.

00:23:10   Just in case that was not clear.

00:23:11   That is 100% sarcasm.

00:23:12   Do not use it.

00:23:14   Marco is the wild man doing it himself and he should be the only one who does that.

00:23:17   Exactly.

00:23:18   Give me a little while to tame this wild beast.

00:23:21   But anyway, yeah, and it felt good to actually work on a feature and to actually do something

00:23:29   that's going to move the app forward even though there's nothing visibly there yet

00:23:32   to users.

00:23:33   Like I know I'm moving the app forward in a useful way that will hopefully soon result

00:23:38   in something that people actually want.

00:23:41   And so just doing that, just like you know what, screw it.

00:23:45   I'm just going to hit create table on MySQL that I already have, make a new table, start

00:23:49   collecting new data and just hope it continues to work with the systems I already have.

00:23:54   And I just did it and it worked and I was able to move on and ship something quickly

00:23:59   and I hope to do more of that.

00:24:01   There's so many features or changes or improvements that I want to make that I haven't really

00:24:08   been able to make for a year.

00:24:12   And I still want to do the whole redesign of the now playing screen.

00:24:15   I still want to rewrite the whole app in SwiftUI.

00:24:17   I still want to redo the whole bottom end of the app using Blackbird and Swift.

00:24:22   There's so much I want to do and I've done almost none of it for almost a year and that's

00:24:29   very frustrating.

00:24:30   So now to be able to get this big roadmap that I had about server stuff that was going

00:24:36   to result in pretty much no visible benefit to users to now say, "You know what, never

00:24:42   mind.

00:24:43   I'm not going to do that anymore."

00:24:44   That's actually very freeing and I think it's very good news for users and it's very good

00:24:51   news for me if I can keep the server stuff under control.

00:24:53   And I think if I'm careful enough and assuming that all of a sudden podcasts don't become

00:25:01   the next Twitter, which I don't think will happen, I think I'll be okay server-load-wise.

00:25:06   I'll be paying a little more for it but I'll be much more sane and I'll take that trade

00:25:11   off.

00:25:12   Yeah, and I think there is something, I mean, you and I have known each other a long time

00:25:18   and you are always happiest when you're building features in apps, like when you're properly

00:25:23   coding, when you're in Xcode making things.

00:25:26   That is 100% Marco's happy place.

00:25:28   It is my happy place too.

00:25:31   That's why we do what we do.

00:25:32   That's why we got into this industry.

00:25:33   That's why we are indies because we don't want to spend a lot of time in a boardroom,

00:25:39   go doing design reviews and working through stuff.

00:25:41   We want to be building stuff.

00:25:43   And I think any plan that increases the likelihood that your next six months are going to be

00:25:50   very much in Xcode making stuff, sign me up.

00:25:53   That sounds great.

00:25:54   And I think who knows what the future holds.

00:25:56   Hopefully your servers hold up.

00:25:58   Hopefully everything's fine.

00:26:00   But I think overall that's going to be a much better place to be.

00:26:03   That's going to be a place that is much more sort of, I don't know, like defensible.

00:26:07   That's a position that it's unlikely that it's going to be like, it may not be the optimal

00:26:13   path, but it is definitely going to be a good path.

00:26:15   I think is the reality.

00:26:16   And who knows what optimal even means, but like in five years, if you look back, maybe

00:26:19   you'll be like, Ooh, I wish I had done the thing, but like there's a very good chance

00:26:23   that isn't going to be the case.

00:26:24   And it's going to be much better off if you've built a bunch of stuff and the app has moved

00:26:27   forward and is modernized and as someone who's been going through that recently myself, like

00:26:32   I'm essentially rebuilding pedometer plus plus and Swift UI.

00:26:34   It is amazing how transformative it's been to my experience at work where I feel so much

00:26:42   more free and excited and able to make progress on this app that I feel like had been stuck

00:26:49   for so long in Objective-C and UIKit just because that's what it was.

00:26:53   And I didn't feel like I had the bandwidth to work on it.

00:26:56   And now that I have, it's like, it's amazing and I'm adding features and moving it forward

00:27:00   and the velocity and sort of both in terms of the app as well as like my personal, I

00:27:05   don't know, like development for a lot of velocity.

00:27:07   Like I feel like I'm running downhill rather than uphill which is just a lovely feeling.

00:27:13   And I hope that's, you know, this seems like a good point in the year to be able to just

00:27:16   make this decision, put it behind you, you know, for six months between now and W and

00:27:21   to be able to see, put your head down and just focus on making stuff.

00:27:25   And if in six months it turns out it wasn't a great idea, it's like, okay, well, you

00:27:28   can work on it then.

00:27:29   But between now and then you can really build some cool stuff and that sounds awesome.

00:27:33   Yeah, that's the thing.

00:27:34   Like that's a very good distinction because, you know, it's not that I, if I decide not

00:27:39   to do this now, it's not that I can never do it.

00:27:41   Like I can, if I decide in the future that I actually do want to go back and do CloudKit,

00:27:46   I can do that at any time.

00:27:48   Like it's not, there's no difference whether I do it now or in five years or never.

00:27:53   Like there's no, like it's not a plan that expires.

00:27:56   So if that proves to have been the right path, then someday I can pull that lever.

00:28:02   Well, you know, someday I can spend the year it'll take to pull that lever.

00:28:08   But you know, right now I'm just not going to do it.

00:28:10   And I currently have no plan to go that direction because, you know, what I've learned as you

00:28:14   said earlier is like, you know, this app by nature is going to have a bunch of servers

00:28:20   to run.

00:28:21   Like that's it.

00:28:22   If I'm crawling millions of podcast feeds every few minutes, that's going to take a

00:28:25   bunch of servers.

00:28:26   Like it's simple as that, you know, keeping track of everything, you know, and sending

00:28:30   updates to mobile clients, no matter what they're doing for user data, this is going

00:28:34   to be a server intensive task.

00:28:37   And you know, so if I want to get out of the business of running servers, I can't do it

00:28:43   with this app and I don't want to work on anything else.

00:28:46   So I'm going to be in the business of running servers no matter what.

00:28:49   So I might as well make a great app in the process.

00:28:52   Yeah, no, I think that makes a ton of sense.

00:28:54   And I think the biggest thing is probably just to draw a line on it and say, you know,

00:28:58   it's like, you know, sometimes in my to do list where I'll have an item that I want to

00:29:02   do and there's something powerful about just deferring it and being like, I'm not going

00:29:05   to, I'm not going to think about this for another, you know, for six months and it'll

00:29:09   come back to come back to you at an appropriate time.

00:29:11   But between now and then, put it behind you, don't think about it and just dive forward

00:29:15   into the new year with, you know, new creativity and hopefully, you know, energy and ideas.

00:29:20   Yeah.

00:29:21   Thanks everybody for listening and we'll talk to you in two weeks.

00:29:25   Bye.

00:29:25   [BLANK_AUDIO]