196: Not-So-Secret Plans
00:00:00
◼
►
Welcome to Under the Radar,
00:00:02
◼
►
a show about independent iOS app development.
00:00:04
◼
►
I'm Mark O'Arment.
00:00:05
◼
►
- And I'm David Smith.
00:00:06
◼
►
Under the Radar is never longer than 30 minutes,
00:00:08
◼
►
so let's get started.
00:00:09
◼
►
- So here we are about almost halfway through the summer,
00:00:12
◼
►
which is kinda scary, depending on how you define it.
00:00:15
◼
►
You know, we have a lot of work to do,
00:00:18
◼
►
and it's tempting a lot of times
00:00:20
◼
►
to keep what we're doing very secret,
00:00:23
◼
►
because we might be working on a brand new app
00:00:25
◼
►
or a major update to our existing app
00:00:27
◼
►
to take advantage of all the new Apple functionality
00:00:29
◼
►
that they give us in the next OS version.
00:00:32
◼
►
And a lot of developers keep those secrets
00:00:36
◼
►
until they're ready to release.
00:00:37
◼
►
A lot of developers are much more public about them
00:00:40
◼
►
and just say like, "Hey, yeah, I'm working on all this stuff
00:00:42
◼
►
"hope to have it done by September," or whatever.
00:00:45
◼
►
Where do you fall on that?
00:00:46
◼
►
Like, what are you working on?
00:00:47
◼
►
Are you willing to tell us what you're working on,
00:00:49
◼
►
and then how do you fall on that decision?
00:00:51
◼
►
- Sure, so I've definitely taken both approaches
00:00:55
◼
►
for the various apps that I've launched.
00:00:57
◼
►
Like the most recent app I launched, WatchSmith,
00:00:59
◼
►
was very much, like, it was relatively secret.
00:01:02
◼
►
Like, not in concept, like I think I had talked
00:01:04
◼
►
a little bit about what it was and where it was going,
00:01:07
◼
►
and certainly having a venue like a podcast
00:01:09
◼
►
is a great place to kind of talk about things
00:01:11
◼
►
before they're public,
00:01:13
◼
►
but without being quite as public about it.
00:01:16
◼
►
But I've also gone the other approach
00:01:17
◼
►
where I've just like, you know, talked openly
00:01:19
◼
►
and as much as I could about what I'm working on
00:01:21
◼
►
ahead of time.
00:01:22
◼
►
And I think this summer, I'm leaning towards
00:01:25
◼
►
the less secretive approach,
00:01:26
◼
►
and I don't know if exactly why,
00:01:29
◼
►
but it's like I am starting to like talk about
00:01:32
◼
►
in Twitter or blog posts or here
00:01:34
◼
►
about the things that I'm working on.
00:01:35
◼
►
It's like my main thrust for the summer
00:01:37
◼
►
is going to be the obvious updates to my existing apps,
00:01:40
◼
►
and then I'm also currently planning
00:01:42
◼
►
to launch two apps this fall.
00:01:44
◼
►
So I'm working on a widget-based version
00:01:46
◼
►
of WatchSmith, essentially.
00:01:48
◼
►
So like a highly customizable, configurable,
00:01:51
◼
►
schedulable widget system called WidgetSmith,
00:01:54
◼
►
and then I'm working on an update to an old app of mine
00:01:56
◼
►
called Check the Weather, which--
00:01:59
◼
►
- I am thinking of bringing back as a test case
00:02:04
◼
►
for me to get really confident
00:02:07
◼
►
at multi-platform SwiftUI work,
00:02:11
◼
►
because I, like well, you know,
00:02:13
◼
►
Check the Weather was this app,
00:02:14
◼
►
one of my early apps like from years and years ago,
00:02:16
◼
►
and eventually it just didn't work out financially.
00:02:20
◼
►
That, you know, the difficulty with the weather system
00:02:22
◼
►
is that it requires an ongoing sort of subscription
00:02:25
◼
►
in order to pay for its data sources,
00:02:28
◼
►
and at some point Check the Weather just never kind of,
00:02:31
◼
►
it became financially not viable.
00:02:33
◼
►
But what's interesting now is that like,
00:02:35
◼
►
now we're in a world where rather than one-time payments
00:02:39
◼
►
are the norm, like subscriptions are much more the norm,
00:02:41
◼
►
and like I already have kind of an established
00:02:43
◼
►
subscription base from WatchSmith
00:02:45
◼
►
that I would expect with any of these things
00:02:47
◼
►
that there's kind of, in some ways,
00:02:48
◼
►
a bit of a shared subscriber system there,
00:02:51
◼
►
so that if you're subscribed to one of my apps,
00:02:53
◼
►
you'll have access to them all,
00:02:55
◼
►
and like the existing subscriber system base
00:02:57
◼
►
is such that I could easily support Check the Weather,
00:02:59
◼
►
and so I'm like planning to build an app called
00:03:02
◼
►
Check the Weather, it's gonna be different visually,
00:03:04
◼
►
'cause things are, you know,
00:03:05
◼
►
Check the Weather was designed for, I think, an iPhone 4?
00:03:09
◼
►
Screen, an iPhone 4? - Is it that old?
00:03:13
◼
►
Not even the 5?
00:03:14
◼
►
- It's very old. - Yeah, wow.
00:03:18
◼
►
- I remember when it was a big deal
00:03:21
◼
►
that they introduced Control Center,
00:03:24
◼
►
because, let's just get a sense of how old this app is,
00:03:27
◼
►
because one of its original conceits
00:03:29
◼
►
was that you would swipe up from the bottom
00:03:31
◼
►
to get the radar map, you'd swipe left to get hourly,
00:03:36
◼
►
you'd swipe right to get daily,
00:03:38
◼
►
and swipe up from the bottom to get the radar map,
00:03:40
◼
►
and then they introduced Control Center,
00:03:41
◼
►
and suddenly I couldn't have my upward swipe,
00:03:43
◼
►
because that was taken over by Control Center,
00:03:47
◼
►
and I was like, that was a big deal,
00:03:48
◼
►
and like, I mean, Control Center, I feel like,
00:03:49
◼
►
has been with us a long time,
00:03:51
◼
►
and this is, you know, a pre-iPhone 10's Control Center,
00:03:55
◼
►
where now it's in the top right corner,
00:03:56
◼
►
but like, for a long time, it was, you know,
00:03:58
◼
►
the bottom of the screen, but anyway,
00:03:59
◼
►
so it's been there for a long time,
00:04:01
◼
►
and so it's kind of fun to redesign it and work on it
00:04:05
◼
►
and build it in SwiftUI, and then be able to take in,
00:04:08
◼
►
you know, to sort of build something
00:04:10
◼
►
that I think works well from the Apple Watch
00:04:14
◼
►
all the way to the Mac, so that I can, you know,
00:04:16
◼
►
build something that works, like,
00:04:18
◼
►
naturally and natively in all those places,
00:04:20
◼
►
'cause increasingly I feel like that's gonna be
00:04:22
◼
►
an important aspect of my, like, skill set to develop,
00:04:26
◼
►
and my other apps don't really work as well with that,
00:04:29
◼
►
like, you know, a lot of my apps are very watch-focused
00:04:31
◼
►
or very iPhone-focused, because they're health and fitness,
00:04:33
◼
►
and so they require, like, you know, step counting,
00:04:36
◼
►
for example, like, I don't think the Mac
00:04:37
◼
►
is ever gonna get step counting,
00:04:39
◼
►
even if it has Apple Silicon inside of it,
00:04:41
◼
►
it's never gonna be, you know,
00:04:42
◼
►
you're not gonna be looking around your laptop
00:04:44
◼
►
counting steps, so anyway, so I'm working on
00:04:47
◼
►
Check the Weather, and I'm just reusing the name,
00:04:50
◼
►
but it'll be at sort of a different app this summer,
00:04:53
◼
►
and then, like, but I think for me,
00:04:55
◼
►
I've decided that, like, secrecy doesn't make
00:04:57
◼
►
as much sense this summer, and I think it seems like
00:05:01
◼
►
largely I've kind of ended up on that place,
00:05:04
◼
►
because if anything, these are, like,
00:05:07
◼
►
a, building a weather app is nothing, like,
00:05:09
◼
►
new or novel, and usually secrecy's primary benefit
00:05:12
◼
►
is to, like, to protect your novelty,
00:05:14
◼
►
to, like, slow down people being able to copy
00:05:17
◼
►
or sort of imitate it, and, you know,
00:05:20
◼
►
a weather app is a weather app, in many ways,
00:05:22
◼
►
so while I like my approach to weather,
00:05:24
◼
►
it's still just a weather app, and then, like,
00:05:26
◼
►
with Widget Smith, like, it's nothing,
00:05:29
◼
►
like, I've, like, the secret sauce or the approach
00:05:32
◼
►
or whatever is, like, way out of the bag with WatchSmith,
00:05:35
◼
►
and it's, like, it's basically the same app,
00:05:36
◼
►
just with a different end result of what you're scheduling
00:05:40
◼
►
and what you're displaying onto the screen,
00:05:41
◼
►
and if anything, I have the active desire
00:05:44
◼
►
to, like, scare off people, like, if someone else was like,
00:05:48
◼
►
huh, I wonder if I'm about making something like WatchSmith,
00:05:52
◼
►
but for widgets, like, I would hope that there would be
00:05:57
◼
►
less of an interest in doing that,
00:05:59
◼
►
if they know that I'm gonna do it too,
00:06:00
◼
►
because then you're, like, it's like,
00:06:02
◼
►
you're gonna have a tough time out underscoring underscore,
00:06:05
◼
►
like, I am, you're not, you're never gonna have
00:06:08
◼
►
as many widgets, you're never gonna have as many options,
00:06:10
◼
►
like, this is what I do, so, like,
00:06:13
◼
►
I kind of wanna stake my claim and say, like,
00:06:15
◼
►
this is what I'm working on, this is how I'm gonna make it,
00:06:18
◼
►
like, good luck trying to keep up, so,
00:06:21
◼
►
that's sort of where I ended up on secrecy this summer.
00:06:24
◼
►
- I think that's the most you've ever flexed in public.
00:06:26
◼
►
- Yeah. (laughing)
00:06:28
◼
►
- That's awesome, no, and well-deserved.
00:06:31
◼
►
I, I, just, sorry, can't get over that.
00:06:34
◼
►
No, I think I'm falling in a similar way here, like,
00:06:41
◼
►
we've talked about this a little bit before,
00:06:42
◼
►
but, like, I have, I have long since given up most secrecy
00:06:47
◼
►
for, like, what I'm doing, because what I'm doing,
00:06:51
◼
►
like, I used to think that it was super important for me
00:06:54
◼
►
to not let my competitors, A, know what I was doing,
00:06:58
◼
►
or B, beat me to, like, a good idea or a good feature,
00:07:03
◼
►
and over time, I eventually realized that
00:07:07
◼
►
most of my competitors don't try to beat me to features,
00:07:11
◼
►
like, it's not really that kind of race in most industries,
00:07:14
◼
►
like, you know, everyone has their own customers
00:07:16
◼
►
and their own roadmaps, and they're all doing
00:07:18
◼
►
their own thing, and occasionally, somebody will, like,
00:07:21
◼
►
launch a feature that's so compelling that it starts
00:07:23
◼
►
stealing users away from someone else,
00:07:25
◼
►
and then everyone else will start implementing that idea
00:07:26
◼
►
because they have to, because they're losing customers
00:07:28
◼
►
to it, but for the most part, that's not most features
00:07:30
◼
►
or most ideas, you know, most features and most ideas
00:07:34
◼
►
for apps don't really shift customers back and forth
00:07:37
◼
►
between them so much that everybody is desperate
00:07:40
◼
►
to, like, quickly copy things or to beat someone to market,
00:07:42
◼
►
like, that's usually not how things go for most things,
00:07:46
◼
►
and also, you know, most apps that are based upon, like,
00:07:51
◼
►
being the first to an idea, that is such a flash in the pan
00:07:56
◼
►
thing that even if you nail it and, like, quote, win,
00:08:00
◼
►
which that's not, you know, that's a pretty big if,
00:08:03
◼
►
if you're the first person to market with some great idea,
00:08:05
◼
►
like, the market, first of all, you might not be first,
00:08:07
◼
►
you might not even realize it, it might not be
00:08:09
◼
►
a great idea, you might not realize that either
00:08:12
◼
►
until it launches, it might not resonate with the market,
00:08:14
◼
►
you know, et cetera, et cetera, but even if it does,
00:08:17
◼
►
best case scenario, you have a big hit,
00:08:20
◼
►
you're gonna get ripped off in, like, two days.
00:08:22
◼
►
It's gonna take no time at all for all the people
00:08:25
◼
►
in the app store who look specifically to do this,
00:08:29
◼
►
to, you know, find what's, like, what's really hot
00:08:31
◼
►
and trending and rip it off as quickly as possible.
00:08:34
◼
►
Like, you can't beat those people, and so even if you succeed
00:08:39
◼
►
in, you know, quote, winning at the secrecy side of things,
00:08:42
◼
►
those victories are short-lived, so it's not really worth
00:08:45
◼
►
worrying too much about that, but I've always found, like,
00:08:48
◼
►
I, my app lives or dies based on what I do,
00:08:54
◼
►
not what my customers do in the vast majority of cases.
00:08:58
◼
►
This isn't always true, like, you know,
00:09:00
◼
►
if your customers are free and you're not, that hurts,
00:09:03
◼
►
right, but as far as, like, feature decisions
00:09:06
◼
►
or, like, you know, release planning and everything,
00:09:09
◼
►
you generally don't have to worry too much
00:09:11
◼
►
about what your competitors are doing,
00:09:12
◼
►
'cause for the most part, your customers will, you know,
00:09:15
◼
►
come or go based on what you do,
00:09:18
◼
►
not what everyone else does.
00:09:20
◼
►
So secrecy is largely overrated, and it's a thing
00:09:23
◼
►
that we all think instinctively that we should be
00:09:26
◼
►
super careful about so that no one else sees,
00:09:28
◼
►
but, you know, just like in real life, like,
00:09:30
◼
►
everyone always thinks that everyone else is thinking
00:09:33
◼
►
about them a lot more than they are,
00:09:34
◼
►
but everyone's too busy thinking about themselves
00:09:37
◼
►
to worry about everyone else for the most part,
00:09:39
◼
►
and that applies to apps, too, like,
00:09:42
◼
►
you don't have to worry so much about your competitors
00:09:44
◼
►
or strangers coming and ripping you off immediately
00:09:46
◼
►
with the loss of some secrecy,
00:09:48
◼
►
because that doesn't usually happen in practice,
00:09:50
◼
►
and if you're in that kind of business,
00:09:51
◼
►
it's gonna happen anyway, and you're gonna lose that race.
00:09:55
◼
►
- Yeah, 'cause I think, too, it's like,
00:09:57
◼
►
if your hook is purely about novelty,
00:10:02
◼
►
about something being new or different,
00:10:05
◼
►
like, that is a very tenuous place
00:10:08
◼
►
to build a sustainable business on,
00:10:11
◼
►
because sort of, by definition, as soon as you have launched
00:10:16
◼
►
your novelty has disappeared, and so,
00:10:20
◼
►
like, that can never really be,
00:10:21
◼
►
there is no path to a sustainable app
00:10:23
◼
►
that is purely based on novelty.
00:10:25
◼
►
Like, there is sometimes maybe, like, what is it,
00:10:27
◼
►
like, the first mover advantage,
00:10:28
◼
►
that you have, like, some advantage to that,
00:10:31
◼
►
but even then, like, it's, I feel like
00:10:34
◼
►
that is much more likely to be a short-lived benefit,
00:10:37
◼
►
and is, like, if anything, the harder challenge
00:10:42
◼
►
that we face as sort of small developers
00:10:44
◼
►
is just being, having people aware of your work
00:10:47
◼
►
or, like, knowing what you're doing in the first place.
00:10:51
◼
►
Like, that is a much bigger problem
00:10:53
◼
►
than being worried about, you know, sort of the,
00:10:55
◼
►
what you're building is being ripped off,
00:10:57
◼
►
and, like, I'm expecting to probably do,
00:11:00
◼
►
like, I might do public betas for these apps and things,
00:11:03
◼
►
like, trying to expand the audience
00:11:05
◼
►
and get people aware of them and make them known,
00:11:07
◼
►
so that, like, when it does actually come to public launch,
00:11:09
◼
►
there's just a broader base of interest,
00:11:12
◼
►
and, like, that seems much more useful
00:11:13
◼
►
and much more beneficial to me
00:11:15
◼
►
than, like, trying to start that process in September.
00:11:20
◼
►
Like, that's, it's much better off using whatever audience
00:11:25
◼
►
or whatever platform or voice that I have now
00:11:27
◼
►
to kind of get that ball rolling now.
00:11:29
◼
►
It's gonna benefit me way more this fall
00:11:33
◼
►
than if I try and wait out now,
00:11:34
◼
►
'cause obviously, like, when we talk about secrecy,
00:11:36
◼
►
whenever we're not necessarily talking about complete secrecy
00:11:39
◼
►
we'll try and talk to people in the press,
00:11:41
◼
►
or maybe we'll reach out to the app store,
00:11:43
◼
►
there's, like, you know, there's that black box email
00:11:45
◼
►
that you can email for the app store editorial team.
00:11:49
◼
►
Like, we're talking about it, but it's,
00:11:51
◼
►
I think the best thing we can do is to just, you know,
00:11:53
◼
►
tap into all possible avenues for promotion,
00:11:56
◼
►
and also I think there's also a value in a little bit
00:11:59
◼
►
about talking about things ahead of time
00:12:02
◼
►
to get a sense of what the problems, confusions,
00:12:05
◼
►
questions that you're gonna get about your app is
00:12:08
◼
►
ahead of time, so that it's, you know,
00:12:10
◼
►
you're exposing it to, if there are gonna be issues
00:12:13
◼
►
or problems that come down the road,
00:12:15
◼
►
you can potentially identify them, like, ahead of time.
00:12:18
◼
►
You don't wanna go too far down that road
00:12:19
◼
►
where it's, like, designed by committee,
00:12:20
◼
►
and, like, anytime someone on Twitter comments
00:12:22
◼
►
on something that you post and says, like,
00:12:24
◼
►
oh, it should be different,
00:12:25
◼
►
or they have an idea for a design change or whatever,
00:12:27
◼
►
like, you don't wanna get too wrapped around that,
00:12:29
◼
►
but it's still very useful to be, like,
00:12:31
◼
►
if you mention a feature or talk about something,
00:12:33
◼
►
like, if that creates excitement
00:12:35
◼
►
or if that creates confusion, like, useful to know.
00:12:38
◼
►
- Oh, totally, and it really is helpful
00:12:40
◼
►
to have that feedback early in the cycle,
00:12:41
◼
►
rather than thinking you have everything right in,
00:12:44
◼
►
you know, in your head, and the way that you do,
00:12:46
◼
►
the way that you're designing and implementing everything,
00:12:48
◼
►
your own choices and your points of view,
00:12:51
◼
►
and never showing it to anybody until it's out and,
00:12:53
◼
►
quote, done, because the market will give you feedback,
00:12:57
◼
►
and the market, you know, whether you think they should
00:12:59
◼
►
or not, like, they will, and there will be things
00:13:02
◼
►
you didn't get right in your first guess,
00:13:04
◼
►
and if you haven't shown anybody until your big launch,
00:13:08
◼
►
your big launch will probably be less successful,
00:13:11
◼
►
because not only will people not be excited about it yet
00:13:13
◼
►
'cause you didn't show anybody
00:13:14
◼
►
and nobody was beta testing it or anything like that,
00:13:16
◼
►
but then any design or business choice
00:13:20
◼
►
or functionality choice you got wrong,
00:13:22
◼
►
anything about your app that's confusing to people,
00:13:25
◼
►
that's all gonna affect your launch
00:13:27
◼
►
instead of being ironed out in the beta process
00:13:29
◼
►
where it should have been.
00:13:31
◼
►
- So, and so that's what you're doing, that's good.
00:13:35
◼
►
- Yeah, what are you doing this summer?
00:13:36
◼
►
- What I'm doing is very boring.
00:13:39
◼
►
I'm doing what I usually do this summer,
00:13:41
◼
►
which is being a huge procrastinator and slacker
00:13:45
◼
►
for the first half of the summer.
00:13:47
◼
►
So I have done almost nothing to adapt my app to iOS 14.
00:13:53
◼
►
Instead, I've been doing other projects.
00:13:56
◼
►
I finished up some things on the ATP CMS
00:13:59
◼
►
that had to be done, that is now,
00:14:00
◼
►
I think as of a few days ago, I think that's now done
00:14:04
◼
►
in the sense that I don't have to touch it now for months,
00:14:07
◼
►
for a long time, so that's good.
00:14:10
◼
►
I've cleared the way there.
00:14:11
◼
►
So I switched back to Overcast work,
00:14:14
◼
►
and I've been doing server-side problems.
00:14:17
◼
►
I've been addressing server-side problems
00:14:19
◼
►
for this last few days, and that's been
00:14:23
◼
►
absolutely productive, but not incredibly productive.
00:14:25
◼
►
What all this is really doing is,
00:14:27
◼
►
I'm a huge procrastinator, and what procrastinators know
00:14:32
◼
►
is that to get us to do something requires for it
00:14:36
◼
►
to be the second most important thing that we have to do.
00:14:40
◼
►
The most important thing we have to do,
00:14:41
◼
►
we will procrastinate forever on,
00:14:44
◼
►
and we will instead look for side work
00:14:46
◼
►
that quote has to be done.
00:14:48
◼
►
This is one of the reasons why I'm the person in the house
00:14:50
◼
►
who cleans the kitchen, because there's always work
00:14:52
◼
►
to be done cleaning the kitchen in every house forever.
00:14:55
◼
►
Even when a meal hasn't happened in hours,
00:14:56
◼
►
there's always something you can do to clean the kitchen.
00:14:58
◼
►
And so that's me, because it's usually the second most
00:15:01
◼
►
important thing I have to do right then.
00:15:03
◼
►
So I'm really good at that.
00:15:04
◼
►
I was doing some office changes
00:15:09
◼
►
for some various home office needs,
00:15:11
◼
►
and I was really good at that these last few weeks.
00:15:13
◼
►
And doing some house logistical stuff,
00:15:17
◼
►
had to do all that, really good at that.
00:15:19
◼
►
But overcast work I knew was this big, scary, awful thing
00:15:23
◼
►
that I have to really dive in heavily with Swift and SwiftUI
00:15:27
◼
►
and jump forward, not only from iOS 13 stuff,
00:15:30
◼
►
but from iOS 12 stuff, 'cause I'm still based on iOS 12.
00:15:33
◼
►
So jump forward from that, adopt all this new stuff.
00:15:36
◼
►
It's a huge undertaking.
00:15:37
◼
►
And the upside of putting it off until very recently,
00:15:42
◼
►
or rather, I haven't even started yet,
00:15:44
◼
►
I'm gonna start probably tomorrow.
00:15:47
◼
►
The upside of putting off the actual Xcode side of my work
00:15:51
◼
►
is that it's given us time to have beta two,
00:15:54
◼
►
and possibly even beta three by the time I actually start.
00:15:58
◼
►
And so every summer I benefit from this,
00:16:00
◼
►
where I'm never the first person to start discovering
00:16:04
◼
►
the new APIs, I'm never the first person to be filing
00:16:06
◼
►
all the early bugs.
00:16:07
◼
►
I'm thankful for all those people who do all that,
00:16:10
◼
►
but I'm not one of them, and I probably never will be.
00:16:13
◼
►
When I jump in, it is significantly more stable.
00:16:17
◼
►
Many of the biggest problems have been ironed out,
00:16:19
◼
►
many of the biggest bugs are gone,
00:16:21
◼
►
many of the beta rough edges are gone,
00:16:24
◼
►
and so I'm able to jump in, and even though I start late,
00:16:28
◼
►
I'm able to start faster and have fewer problems.
00:16:31
◼
►
And so I don't necessarily recommend this
00:16:34
◼
►
as a productivity course of action for anybody,
00:16:37
◼
►
because ultimately I do lose a lot of time
00:16:40
◼
►
doing side tasks and second priority things,
00:16:44
◼
►
but ultimately this is how I like to work,
00:16:48
◼
►
where I was able to do house stuff,
00:16:52
◼
►
'cause that was separate at any time,
00:16:53
◼
►
I was able to do server side work,
00:16:54
◼
►
'cause my server side stack is really mature and stable,
00:16:57
◼
►
and I knew exactly how everything worked,
00:16:59
◼
►
and I had to make a few changes and improve a few things,
00:17:01
◼
►
fix a few things, and that's been,
00:17:04
◼
►
I can go at full speed then.
00:17:06
◼
►
And then now when I land finally back at Xcode,
00:17:10
◼
►
I can really blast through it, I can work really fast
00:17:14
◼
►
and just get a ton done in a small amount of time,
00:17:17
◼
►
as opposed to slowly trickling out work
00:17:20
◼
►
throughout the entire summer
00:17:21
◼
►
and hitting a lot of roadblocks along the way.
00:17:23
◼
►
So that's where I'm hoped to be,
00:17:25
◼
►
I'm gonna begin that final part of that process
00:17:28
◼
►
probably in the next day or two.
00:17:30
◼
►
And so what I plan to do with Overcast,
00:17:32
◼
►
once I finally start working on it,
00:17:35
◼
►
is I'm gonna jump directly to requiring iOS 14
00:17:39
◼
►
for a branch of the code.
00:17:42
◼
►
And I'm not necessarily going to release it
00:17:45
◼
►
any time near day one, but I am gonna jump forward
00:17:49
◼
►
and skip 13 and go right to requiring 14
00:17:52
◼
►
and go right into heavy adoption of Swift and Swift UI.
00:17:56
◼
►
And I'm not gonna rewrite the entire UI,
00:17:58
◼
►
because frankly, that is just a ton of work,
00:18:01
◼
►
and none of my customers are asking me for that.
00:18:03
◼
►
But I am gonna rewrite a lot of it,
00:18:05
◼
►
and I think I'm gonna start out with the Watch app,
00:18:06
◼
►
as I originally planned last year when I said,
00:18:09
◼
►
I'm finally gonna learn Swift UI now, now is the year.
00:18:13
◼
►
I said that all a year ago,
00:18:15
◼
►
and I'm gonna do the same thing this year.
00:18:17
◼
►
I'm gonna say that now, and I'm gonna hopefully
00:18:18
◼
►
actually do it this time,
00:18:21
◼
►
because my Watch app is kind of on fire.
00:18:25
◼
►
It's not in a good state, as it usually isn't,
00:18:28
◼
►
but it's in a particularly bad state right now
00:18:30
◼
►
for some of its customers.
00:18:32
◼
►
I basically made it a lot better for most of its customers
00:18:36
◼
►
and a lot worse for some,
00:18:37
◼
►
so I need to fix that.
00:18:40
◼
►
- And I'm finally gonna really do it right.
00:18:43
◼
►
I kind of did it like half right this last update.
00:18:46
◼
►
Now I'm gonna do it fully right.
00:18:47
◼
►
I'm gonna actually bring over a local sync,
00:18:50
◼
►
or direct sync, rather,
00:18:51
◼
►
like where it syncs directly to the cloud
00:18:52
◼
►
and not through your iPhone, stuff like that.
00:18:55
◼
►
So it's gonna be a big job,
00:18:57
◼
►
and I also intend to rewrite most or all of the UI
00:19:00
◼
►
in Swift UI, which is also gonna be a big job,
00:19:02
◼
►
but this will teach me Swift UI, hopefully.
00:19:06
◼
►
And you went through a similar thing
00:19:09
◼
►
where you learned Swift UI first on the watch.
00:19:12
◼
►
Does that work?
00:19:12
◼
►
Is that a good path to take to learn it?
00:19:15
◼
►
- Yeah, I think so.
00:19:16
◼
►
I think what is,
00:19:17
◼
►
so my experience was I wrote the WatchSmith Watch app
00:19:22
◼
►
completely in Swift UI,
00:19:23
◼
►
and that was my first experience with Swift UI
00:19:26
◼
►
in any context,
00:19:27
◼
►
and I think what is most important,
00:19:31
◼
►
what I think from my experience in Swift UI,
00:19:32
◼
►
is the understanding that it is a complete cognitive shift
00:19:36
◼
►
in terms of how you build an app,
00:19:38
◼
►
how you structure it,
00:19:39
◼
►
the way in which you program,
00:19:40
◼
►
the way in which you have to think about programming.
00:19:43
◼
►
It's a different mindset that you have to be able to adopt,
00:19:47
◼
►
and I think it was the kind of development
00:19:50
◼
►
where there's a certain minimum amount of time
00:19:54
◼
►
that you have to spend with it
00:19:55
◼
►
before you will kind of click,
00:19:57
◼
►
and you'll see the matrix,
00:19:58
◼
►
and you'll kind of be like,
00:19:59
◼
►
"Oh, okay, I see what's happening now."
00:20:01
◼
►
At least that was my experience.
00:20:02
◼
►
And so I think the watch was a good place for this
00:20:06
◼
►
because if you think of it,
00:20:10
◼
►
in most, in sort of Swift UI,
00:20:12
◼
►
at its most basic sense,
00:20:14
◼
►
is about sort of breaking up your interface
00:20:16
◼
►
into smaller and smaller views
00:20:18
◼
►
that have sort of their own self-contained logic
00:20:21
◼
►
inside of them.
00:20:22
◼
►
That's sort of conceptually what you end up doing a lot of,
00:20:24
◼
►
is you break it down,
00:20:25
◼
►
and you have this view that has a few inputs
00:20:28
◼
►
and a few things that it displays,
00:20:31
◼
►
and then you compose your interface of many of these.
00:20:34
◼
►
And what's nice with the watch
00:20:36
◼
►
is that even your most complicated,
00:20:39
◼
►
largest UI that you're gonna build
00:20:42
◼
►
is relatively simple,
00:20:43
◼
►
is relatively small,
00:20:45
◼
►
like is a few hundred by a few hundred pixels at most.
00:20:48
◼
►
Like there's only so many things you can do in that space,
00:20:51
◼
►
and so it was a really nice constraint to learn in
00:20:56
◼
►
that now that I've now,
00:20:57
◼
►
like I'm building all of WidgetSmith in Swift UI,
00:21:01
◼
►
and like I'm essentially rebuilding a lot of the UI kit
00:21:04
◼
►
that I had done in WatchSmith on the iPhone app,
00:21:07
◼
►
and some of these views are very complicated.
00:21:10
◼
►
Like I have my crazy 24-hour clock scheduler system,
00:21:14
◼
►
where you can drag different wedges around
00:21:19
◼
►
and schedule things and adjust the start and end time
00:21:21
◼
►
of when you want a widget to show and all this.
00:21:23
◼
►
And it's pretty like,
00:21:25
◼
►
many hundreds of lines of UI kit code to make happen,
00:21:30
◼
►
and I've rebuilt that in Swift UI,
00:21:32
◼
►
and I had the confidence to tackle it
00:21:34
◼
►
because I've done so much work on the watch.
00:21:37
◼
►
And so I definitely recommend,
00:21:39
◼
►
it is a great place to start,
00:21:40
◼
►
and I think it's a smart thing for you to,
00:21:41
◼
►
to start in an area of your app,
00:21:44
◼
►
like if you're gonna be doing any kind of conversion work,
00:21:47
◼
►
where a part of your app is going to become Swift UI,
00:21:51
◼
►
it feels like starting in a place that has less visibility
00:21:55
◼
►
is a great sort of thing to go with,
00:21:57
◼
►
where if there are rough edges,
00:21:59
◼
►
if there are issues,
00:22:00
◼
►
both in terms of with the platform,
00:22:01
◼
►
which is less the case now,
00:22:03
◼
►
like Swift UI seems relatively stable now,
00:22:05
◼
►
but if there's rough edges in your understanding,
00:22:08
◼
►
and as a developer,
00:22:10
◼
►
the first time I built a lot of,
00:22:12
◼
►
like if I was going to go back
00:22:13
◼
►
and rewrite a lot of the WatchSmith Swift UI work,
00:22:17
◼
►
it's like I would write it differently now.
00:22:18
◼
►
I have a better understanding of how to use the APIs.
00:22:20
◼
►
I know what's gonna ultimately catch me out
00:22:22
◼
►
and what are gonna be the problems.
00:22:24
◼
►
And so being able to leverage that going forward
00:22:29
◼
►
is a good place to do it on the watch,
00:22:31
◼
►
which has fewer users whose interactions
00:22:34
◼
►
are gonna be more lightweight
00:22:36
◼
►
than messing around with your main podcast list screen
00:22:40
◼
►
or something where it is like 80% of the use of your app.
00:22:44
◼
►
So if something is funny or problematic
00:22:46
◼
►
or not quite how you like it,
00:22:48
◼
►
it will show off in a much bigger way.
00:22:50
◼
►
So I think that seems like a great place
00:22:51
◼
►
to sort of camp out and spend time learning.
00:22:55
◼
►
And I think also it means that you can do things
00:22:58
◼
►
that are just not possible in WatchKit.
00:23:00
◼
►
So if you wanna make a good watch app,
00:23:03
◼
►
you have to use Swift UI,
00:23:04
◼
►
so you may as well go there and sort of get started.
00:23:09
◼
►
- Yeah, that's good advice, thanks.
00:23:10
◼
►
Yeah, 'cause I do face this kind of roadblock
00:23:14
◼
►
in my motivation and in my mind of like,
00:23:17
◼
►
I want to tackle Swift UI in the main app,
00:23:20
◼
►
but that's so intimidating
00:23:21
◼
►
because I don't know it at all yet.
00:23:24
◼
►
And so it's like the idea, my main root screen
00:23:28
◼
►
and the whole framework that does like the three column stuff
00:23:31
◼
►
I would love to tackle that right now
00:23:33
◼
►
because that would directly make the Mac app easier to make.
00:23:38
◼
►
But I know that like I just am nowhere near
00:23:42
◼
►
that level of skill yet to do that.
00:23:44
◼
►
Like if I was building a brand new app from scratch,
00:23:46
◼
►
that would be different.
00:23:47
◼
►
But I'm like taking apart this app
00:23:49
◼
►
and putting it back together like mid-flight
00:23:52
◼
►
in the middle of a surprisingly complicated app.
00:23:55
◼
►
Most people who would suggest like,
00:23:57
◼
►
oh, just rewrite the whole UI.
00:23:58
◼
►
Like I don't think you understand
00:23:59
◼
►
how much UI there is in a podcast app.
00:24:02
◼
►
There's way more than you think.
00:24:03
◼
►
There's way more than I thought
00:24:04
◼
►
when I started making one, that's for sure.
00:24:07
◼
►
Yeah, and so there is just, there's so much UI.
00:24:11
◼
►
And that's part of the reason why I want to do this
00:24:13
◼
►
because my UI is this massive amount of like code liability
00:24:18
◼
►
and technical debt and bloat in my app
00:24:22
◼
►
that I'm trying to make lighter.
00:24:23
◼
►
I'm trying to make it easier for me to deal with my UI.
00:24:27
◼
►
And so ultimately adoption of 50Y should do that.
00:24:29
◼
►
But in the meantime, the road to get from here to there
00:24:32
◼
►
has to start somewhere.
00:24:34
◼
►
And learning how to use SwiftUI
00:24:37
◼
►
to do something very complicated at first
00:24:39
◼
►
is probably not the best idea.
00:24:40
◼
►
So yeah, I think I will start with the watch app,
00:24:43
◼
►
bring over all the data layer stuff,
00:24:46
◼
►
and then tackle the UI side of things.
00:24:49
◼
►
And hopefully that should be a simple enough problem set.
00:24:53
◼
►
I mean, you know, it's like a three painless view.
00:24:55
◼
►
Like how hard could that be?
00:24:57
◼
►
So it should be a simple enough problem set
00:25:00
◼
►
that should give me some familiarity and comfort
00:25:04
◼
►
with using SwiftUI.
00:25:05
◼
►
And then I'll be able to think about what parts
00:25:08
◼
►
of the main app to tackle with it and in what order.
00:25:12
◼
►
- Yeah, and I think too that you have the benefit
00:25:13
◼
►
of coming at, like coming at watch development
00:25:18
◼
►
with SwiftUI this summer is gonna be a lot less painful
00:25:22
◼
►
than it was last summer.
00:25:24
◼
►
It's come a long way in terms of capability,
00:25:28
◼
►
in terms of structure and reliability.
00:25:30
◼
►
And I think also, like Apple has been very specific now
00:25:35
◼
►
about how to lay out your app
00:25:39
◼
►
and what it should do and look like.
00:25:41
◼
►
And they got rid of contextual menus.
00:25:42
◼
►
And with that, they've sort of changed the,
00:25:45
◼
►
it's like their human interface guidelines
00:25:47
◼
►
a lot around the watch.
00:25:48
◼
►
And so there's, in many ways, like a lot of things
00:25:51
◼
►
are easier because they've kind of, Apple has explicitly said
00:25:55
◼
►
they want everything to be obvious and intuitive.
00:25:57
◼
►
And you just like, if you wanna have a button,
00:25:59
◼
►
you put it here.
00:26:00
◼
►
And it feels much more prescriptive now,
00:26:02
◼
►
which in some ways I think is a nice benefit
00:26:04
◼
►
rather than kind of feel like you have to find
00:26:06
◼
►
all that stuff out for yourself
00:26:08
◼
►
and kind of invent what a watch app is.
00:26:10
◼
►
I feel like this summer Apple has made a much clearer vision
00:26:13
◼
►
of like, this is what a standard watch app should be,
00:26:19
◼
►
how it should behave, what your controls should look like
00:26:22
◼
►
and that type of thing, which I think is just a very big help
00:26:25
◼
►
in terms of also, like it's a,
00:26:28
◼
►
you have a much stronger starting point doing it now
00:26:31
◼
►
than you would have if you'd tried to do this,
00:26:35
◼
►
this list last summer.
00:26:36
◼
►
And I think too, it's a good time,
00:26:39
◼
►
generally just as like, you're gonna have to learn SwiftUI.
00:26:44
◼
►
And I don't see you ever tackling it
00:26:46
◼
►
in the iOS app for a while.
00:26:47
◼
►
And so you gotta, I think you either have to start it
00:26:49
◼
►
on the watch or you have to start it on the Mac.
00:26:51
◼
►
And it feels like starting it on the watch
00:26:53
◼
►
because it's gonna be the most different anyway,
00:26:55
◼
►
whereas once you start working on the Mac,
00:26:57
◼
►
that code would need to sort of naturally flow back
00:27:00
◼
►
into the iOS app probably, whereas I don't expect
00:27:03
◼
►
a lot of overlap necessarily between the watch
00:27:06
◼
►
and the iPhone app.
00:27:07
◼
►
So like you have a little bit more flexibility there.
00:27:10
◼
►
- And it seems like, my approach usually is to work
00:27:13
◼
►
from the bottom up as opposed to the top down
00:27:16
◼
►
in design and code structure.
00:27:18
◼
►
So usually I do things like I'll write a very,
00:27:21
◼
►
very rudimentary UI and then really flesh out the data layer.
00:27:25
◼
►
And the data layer is where I put all my time
00:27:26
◼
►
and the audio layer.
00:27:27
◼
►
Like I love doing all that stuff.
00:27:29
◼
►
And then eventually I'll build the UI
00:27:31
◼
►
to be a little bit more functional on top of that.
00:27:33
◼
►
But for the most part, my heart is not in the UI.
00:27:37
◼
►
Like I don't love making UI stuff.
00:27:40
◼
►
And it weighs me down conceptually and psychologically.
00:27:44
◼
►
And so going this direction is smart,
00:27:46
◼
►
but yeah, I think you're right.
00:27:48
◼
►
Starting on the watch is so much easier.
00:27:49
◼
►
And I'm glad to hear that you think it's gonna be easier
00:27:52
◼
►
this year because similar to how the old app review quote
00:27:57
◼
►
of running to the press never helps is hilarious
00:27:59
◼
►
'cause running to the press always helps.
00:28:02
◼
►
Similarly, like procrastination doesn't pay in theory,
00:28:05
◼
►
but actually it seems like in reality procrastination
00:28:07
◼
►
is a really good idea on pretty much
00:28:09
◼
►
any new developer technology.
00:28:12
◼
►
- Yeah, well I feel like it has exactly the same,
00:28:15
◼
►
there's this like, it's a graph where it pays,
00:28:19
◼
►
it pays, it pays, and then suddenly
00:28:21
◼
►
like it catastrophically does not.
00:28:23
◼
►
- Yeah, well that's the pattern of every procrastinator.
00:28:25
◼
►
Like we're used to this.
00:28:26
◼
►
We can do this.
00:28:28
◼
►
Do nothing, nothing, nothing, nothing,
00:28:29
◼
►
and then do it all at once.
00:28:30
◼
►
Like that's how we work.
00:28:32
◼
►
- Yeah, and so you just gotta find that sweet spot
00:28:34
◼
►
where your procrastination has not overcome
00:28:37
◼
►
the volume of the work that needs to be done.
00:28:41
◼
►
Like as long as you can find that sweet spot
00:28:43
◼
►
where you've procrastinated enough for things
00:28:45
◼
►
to stabilize underneath your feet,
00:28:46
◼
►
but not so much that there's now this giant mountain
00:28:49
◼
►
you have to climb.
00:28:50
◼
►
Like as long as you can find that sweet spot,
00:28:51
◼
►
you're in a good place.
00:28:52
◼
►
- Yes, sadly that's a very hard thing to do.
00:28:54
◼
►
And that's typically where people like me fail.
00:28:58
◼
►
Because we're very good at the do nothing for a while part.
00:29:01
◼
►
Yeah, we'll get to it.
00:29:02
◼
►
We'll start soon.
00:29:03
◼
►
We'll start next week.
00:29:04
◼
►
We'll start tomorrow.
00:29:05
◼
►
We'll start soon.
00:29:06
◼
►
And then, yeah, then we do fall off the mountain at the end.
00:29:08
◼
►
But it also can be argued that it might not necessarily
00:29:12
◼
►
matter how fast you are to market with certain things
00:29:14
◼
►
we said earlier.
00:29:17
◼
►
I think whether or not you have your,
00:29:18
◼
►
when exactly your watch app is ready
00:29:20
◼
►
is a more minor point than the fact that it starts
00:29:23
◼
►
to improve it in general.
00:29:25
◼
►
And honestly, I think it's much more about,
00:29:27
◼
►
it's less about how this will benefit Overcast
00:29:30
◼
►
and more how it will benefit you.
00:29:32
◼
►
And how it will make you feel more confident
00:29:34
◼
►
about going into SwiftUI, which clearly is something
00:29:37
◼
►
that at some point you're gonna have to tackle.
00:29:39
◼
►
So like it's a personal development rather than
00:29:41
◼
►
an app development sort of priority in that way.
00:29:43
◼
►
Fully agreed.
00:29:45
◼
►
Thanks everybody for listening.
00:29:46
◼
►
And we'll talk to you in two weeks.
00:29:49
◼
►
[BLANK_AUDIO]