PodSearch

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]