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:18
◼
►
So often the way isn't it?
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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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:05
◼
►
Yeah, please.
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: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: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: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: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: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:21
◼
►
Thanks everybody for listening and we'll talk to you in two weeks.
00:29:25
◼
►
[BLANK_AUDIO]