Under the Radar

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:58   - Oh!

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:30   - Yeah.

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:39   (laughs)

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:46   (laughs)

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:12   (laughs)

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:39   - Sure.

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   - Yeah.

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:11   (laughs)

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   (laughs)

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:57   (laughs)

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:15   (laughs)

00:29:16   - Oh, sure.

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:48   - Bye.

00:29:49   [BLANK_AUDIO]