00:00:00 ◼ ► Welcome to Under the Radar, a show about independent iOS app development. I'm Marco Arment.
00:00:05 ◼ ► And I'm David Smith. Under the Radar is usually not longer than 30 minutes, so let's get started.
00:00:14 ◼ ► Reading from your design, it's a big update, which I know you don't use those, you know, those kind of adjectives without giving them some thought.
00:00:28 ◼ ► I can tell you from experience, it is not an easy platform necessarily to turn things around on.
00:00:33 ◼ ► So congratulations on shipping a completely new rebuilt watch app, which is perhaps the fourth time you've rebuilt the watch app, I think.
00:00:48 ◼ ► Yeah, like anybody who has a watch component to their app, especially if you've been around since the beginning of the Apple Watch,
00:00:53 ◼ ► you've probably rewritten your watch app at least three times and possibly more because, you know, the, you know, watch kit, the original watch kit had to, you know, that was terrible.
00:01:02 ◼ ► And then like the, then the new version of watch kit, then Swift UI and now single target and, you know, advances in Swift UI.
00:01:12 ◼ ► Like all these, like there's been so many changes in watchOS since its launch and in how we can and should develop software for it.
00:01:20 ◼ ► The good thing is it is a, it is much less painful now than it was in the past because the simulator is better.
00:01:38 ◼ ► And that's saying a lot because it, uh, it came from a pretty rough place in the early days.
00:01:47 ◼ ► Like it's one of those funny things of like getting things to like this, the debugger to connect to the Apple Watch during development.
00:01:53 ◼ ► There's a complete aside, you know, I know we only have 30 minutes, but I just got to get the stories in of like the things that I do.
00:01:58 ◼ ► Like I have a particular cable, like a, like a, like a Thunderbolt five or four cable that like I always use to connect my phone to when I'm doing debug sessions on my watch.
00:02:07 ◼ ► I don't think that it should make any difference, but I do it because maybe it'll help.
00:02:12 ◼ ► You know, and I, it's, there's all these little, it's like, Oh, if it starts acting funny, it's like reboot everything, turn everything off, turn it all back on.
00:02:18 ◼ ► And then it's just like, these are these things that I do and it works well enough now that it doesn't get in my way in the way that it maybe once did.
00:02:24 ◼ ► But you know, and maybe it's all my collection of superstitions holding it all together.
00:02:28 ◼ ► That's really the key to making, making, making watch development successful for myself these days.
00:02:33 ◼ ► Cause there's so, yeah, there's so many cases where like, Oh, now the, the trust this computer dialogue has popped up twice.
00:02:40 ◼ ► Then you have, you know, you have to unplug the phone, rebuild the phone, reboot the watch, reboot the phone.
00:02:45 ◼ ► Um, the cables do help if you can, I think this, I've never actually measured this, but I think if you use a cable compatible, that's USB three rated.
00:02:57 ◼ ► Um, but, uh, that could be wrong, but like there's, Oh my gosh, it's just so many hoops.
00:03:03 ◼ ► If it jumped through to get something running on the watch, but mostly once you have it working once, if you then edit the code and hit build and run again, usually it goes pretty well for, you know, subsequent builds and runs on it in that same session.
00:03:18 ◼ ► The problem comes when you have to like set up a new watch or delete the app and reinstall it.
00:03:25 ◼ ► Uh, or if once the OS version of anything changes, copying symbols, copying cache files, you might as well just go do something else.
00:03:34 ◼ ► Except you can't actually go very far because I guess you, you know, if your watch is on your wrist, right?
00:03:52 ◼ ► It's like, it's, it's definitely like if you are at all unmotivated to do software development that day, trying or having to do something.
00:04:02 ◼ ► To do something on the watch is just death because it's, there's so many discouraging moments or delays or times when you have to be fighting the tools, which is always, you know, discouraging that like it's.
00:04:15 ◼ ► And this is part of why like I, this was very poorly timed for me, this release cycle, because I thought in the fall, I'm going to have all this time after, you know, after I did the rewrite, launch the rewrite in the summer and the fall, I can do the watch app.
00:04:32 ◼ ► Um, there were, you know, more bugs lasting longer into the fall than I expected there to be.
00:04:40 ◼ ► Um, but, um, there were a lot of things people didn't like about that I had to address again.
00:04:45 ◼ ► Uh, but the result of the, of all that was that I got started on the watch app later than I thought.
00:04:51 ◼ ► And then the restaurant stuff started in, in the, you know, January, February timeline.
00:04:55 ◼ ► So then I had to deal with, you know, setting up the restaurant accounts and getting all that stuff going and, you know, doing all my projects there.
00:05:08 ◼ ► So what I was coming, what I had backburnered was a like three quarters done watch rewrite migration to the Swift UI lifecycle for the main app.
00:05:19 ◼ ► Um, a couple other, like, you know, fairly significant, you know, architectural improvements in the iOS app.
00:05:33 ◼ ► And that was an absolutely terrible process of like getting, getting my brain to unfreeze, to get back into the habit of writing code at all.
00:05:45 ◼ ► And then to re-familiarize myself with where I had left this project and what still needed to be done and then actually getting myself to do it.
00:05:53 ◼ ► And when, when that thing you need to be unfreezing and getting back into is a three quarters done watch app.
00:06:02 ◼ ► And, you know, and I will say too, like I was, I was getting into this at a time when I was also very discouraged by the feedback I was receiving on the app.
00:06:14 ◼ ► Um, you know, I, as I, you know, the restaurant's been open now for, uh, about a month and I love going into the restaurant and, you know, going over and shaking hands at tables and stuff and meeting people.
00:06:52 ◼ ► Uh, people who still don't like the rewrite or who have like their one pet request or their one starring me until they get, um, or, you know, or there's, they're, they're running into a bug that I don't know how to fix.
00:07:04 ◼ ► Like it, there, there are just so many conditions like that where it's like the feedback I get from software is so much more negative than the feedback I get doing the restaurant.
00:07:14 ◼ ► Stuff that it, it made it very difficult for me to push myself back into the software world.
00:07:32 ◼ ► Like the time I had taken away, what I was working on being a watch app and all the friction that comes with watch apps combined with, you know, the, the pretty large difference in feedback attitudes that I get.
00:08:09 ◼ ► And I, I realized, and, and again, like another huge contributing factor to the kind of, you know, malaise or brain freeze around all of this is, you know, the, the attitude that we're getting from Apple towards developers recently is, is awful and toxic.
00:08:28 ◼ ► And so again, I, that also was kind of a hindrance of like in the middle, in the midst of all these other problems.
00:08:33 ◼ ► Also, I think the relationship between Apple and developers is, is worse at this moment than it has ever been in the app store history, uh, which is saying a lot.
00:08:44 ◼ ► And, and the answer for me, what I have come to is, you know, if I'm not doing this for the people in my community, because they don't care about Overcast, like the, like the, the people, the restaurant, the people in my town, they don't know what I do.
00:09:06 ◼ ► Uh, they've, they've made that very clear, you know, again, there, there are a few people in the company who might, but certainly at the top, they,
00:09:15 ◼ ► I'm not even doing it for all my customers, I guess, because so much of the feedback from them is, is negative.
00:09:25 ◼ ► That's like what I have come to is like, I want to do this because I use this app every single day and I'm doing this for myself.
00:09:33 ◼ ► And that's kind of been, you know, that sounds dismissive maybe towards, towards like customer needs and customer, you know, expectations.
00:09:40 ◼ ► But what I have realized is that I have been most successful with Overcast when I have done something that I wanted it to be.
00:09:50 ◼ ► When I've made a change that I wanted, written a feature that I was going to use, that's, that's what has brought me the most success.
00:10:02 ◼ ► I'm not far from it, but it is that when I lean into what I want, then the app appeals more to the core group of customers, which is people who also happen to want what I want.
00:10:16 ◼ ► And that's, I know it's kind of self-selecting, you know, it's obviously like that's, I see that, but that actually works really well for me because when I optimize for what I want, I write those features, you know, with heart.
00:10:32 ◼ ► I'm indulging myself in kind of edge case features or behaviors or designs that just give me joy or value.
00:10:40 ◼ ► And when that lines up with what other people want, those are like my most passionate customers.
00:10:46 ◼ ► And those are the ones that like, they're not going to like just switch to a different app at the drop of a hat because they can't because no other app is designed the way I do.
00:10:56 ◼ ► So I realized like I, I'm doing it for myself first and my customers second and, you know, everyone else, you know, like Apple, a distant third.
00:11:10 ◼ ► It's like, I think there is a phrase that is because come through my head a lot recently.
00:11:25 ◼ ► Like we've, and, and, and there's an element of like what over the course of the last 17 years, 18 years, whatever it is, like long time.
00:11:32 ◼ ► When have I been most satisfied with the work that I'm doing as well as made the things that I'm most proud of and what has allowed me to do those things?
00:11:45 ◼ ► Like what habits and strategies and things that I'm doing in my own work and professional life that allows me to do that best work.
00:11:55 ◼ ► It's like doing things that are interesting to you and motivate, there's a certain intrinsic motivation to that, that allows you to make things that are more interesting and things that are better.
00:12:06 ◼ ► And there's, it's, you know, things that you can do to help, you know, in this case, like unfreezing yourself.
00:12:12 ◼ ► There's a, there's one part of that is having the right motivation, having the right reason to do something and to be doing it for a reason that gets you over the hump.
00:12:21 ◼ ► Because so much of, so much of what we do, I feel like there's this, there's an exciting beginning when you work on something new.
00:12:29 ◼ ► And then it's like, you know, when you, when you, when you describe your, your watchOS update as being like whatever, three quarters done.
00:12:35 ◼ ► It's like, I am, I, I know that point very, very well for there's a reason it's three quarters finished.
00:12:42 ◼ ► Um, like there's a mad, there's a point that so often will come where you reach through, you're done with the exciting, the fun and the easy, and you are left with the difficult, challenging and unsure.
00:12:56 ◼ ► Um, and you have to be able to, something's going to have to pull you through that, that chasm in the middle of like, Oh, how do I, how do I get there?
00:13:06 ◼ ► And, you know, I think sometimes it is what you're saying, but you just have to have a good reason.
00:13:17 ◼ ► Like in, in some ways that maybe it's like, in some ways that's, that that works, but in my experience, it is challenging because your customers aren't a single person.
00:13:32 ◼ ► Um, they can become this like sort of phantom in the back of your mind of a particular thing.
00:13:37 ◼ ► And it can be very fickle and based on who's the loudest or, um, different motivations.
00:13:42 ◼ ► But if you, you know, you know who you are, or you know who the, the trusted testers or users of your app, who you care about, um, their opinions in a more specific and intangible way.
00:13:53 ◼ ► And so I think that does really help get through that, you know, they could get over the three quarters part, um, by having a good reason.
00:14:01 ◼ ► And I think the nice thing about that approach is that it is not dependent on the environment and the context and the drama and whatever's going on external to that.
00:14:13 ◼ ► Like I am just as much excited about making apps now than I was years ago because I enjoy making apps and I like making good apps and I like making apps in a way that teaches me something every year and allows me to learn new skills and to get better and to grow as a result.
00:14:34 ◼ ► That's not related to current situations within the, you know, the store, within policy, within the community, whatever thing is happening.
00:14:43 ◼ ► Like that aspect of it is somewhat immutable and that is very helpful to keep you going through.
00:14:49 ◼ ► And so like, you know, I'm, I'm in some ways when I saw that you had published this update, I was particularly happy because I know it was more of a journey to get to, um, than some, because you have a lot of other things going on in your life that are competing with this entry interest.
00:15:03 ◼ ► What you're doing is not an easy thing, you know, rewriting and changing Swift to high life cycles and all these things that are going on.
00:15:09 ◼ ► Like these are not small things and so it's kind of just, it's nice to see that you got up to the other side of that, you know, of, of that hill and you are now able to look back and be like, yeah, you did something, you accomplished something.
00:15:21 ◼ ► And that's, you know, that's, that has positive impacts for your customers for sure, but there's also an element of, it's like a positive impact for you.
00:15:29 ◼ ► Um, and that, you know, from my perspective, that's the exciting part because that's like the, the thing that, um, is more long lasting than just, oh, you know, some, some users might get some nice features, um, in this update.
00:15:41 ◼ ► I mean, you know, we've talked before also about like inertia, like, you know, when, when you're like, when you're going, you can, it's easier to keep going.
00:15:49 ◼ ► Like once you kind of, once you have unfrozen your brain after a while away, like it, once you're going then like, so like, you know, already right now, like I just shipped this release.
00:15:58 ◼ ► I didn't just stop now I'm rewriting the CarPlay interface, like, like, cause that's something that like, it irritates me every day when I'm using CarPlay.
00:16:08 ◼ ► And so like, there's like, I'm, I'm like on a roll now and I'm kind of rolling into June.
00:16:15 ◼ ► And, you know, once we get the, you know, those first developer betas for iOS 19, um, I'm sure I'm going to have work to do it, possibly a lot of work if, if the rumors of the redesign end up panning out.
00:16:37 ◼ ► Cause like I, right now, like I'm motivated to do things, but I'm motivated to do things that are not necessarily UI related.
00:16:42 ◼ ► Like I'm not like, I don't think CarPlay is going to have a big redesign in a few weeks.
00:16:56 ◼ ► I had to like expand a server and replace another server and do a couple of tweaks here and there.
00:17:12 ◼ ► Part of my server work was I had to stand up to new servers and I have a script that does this, that I've written over time.
00:17:17 ◼ ► And, you know, so I just, I, I type in, you know, what I want, the plan size I want and the role that it serves.
00:17:23 ◼ ► And I have all these different configurations for like, this is a database, this is a web server, this is a backup server, like stuff like that.
00:17:28 ◼ ► At the end of the script, I had a line that says, don't forget to run so-and-so on so-and-so server to update the private net.
00:17:41 ◼ ► But my past self, my past self who wrote all of this software and all of these scripts and everything, knew that my future self could use a little bit of help sometimes remembering things.
00:17:50 ◼ ► So this script that I wrote to stand up a server, first of all, despite not having started a new server in probably a year, maybe more, it still worked flawlessly.
00:18:05 ◼ ► And then my past self also reminded myself, oh, hey, by the way, do this to run this other script that you might not be remembering.
00:18:14 ◼ ► And it's easy to, like, when you've been away from it for a while, it's easy to kind of start feeling down, like, man, what have I really done?
00:18:21 ◼ ► Like, there's so much work to do, or maybe I'm not doing enough, maybe I haven't done enough.
00:18:31 ◼ ► And it seems daunting to get back into it now when most of it has fallen out of my L2 cache in my brain.
00:18:39 ◼ ► But I also, like, it's promising that, like, oh, I'm still building on what I have built before.
00:19:13 ◼ ► So if you've ever opened your phone to do something simple, like check the weather and then found yourself doom scrolling 10 minutes later, there's a single-purpose device that you might want to check out.
00:19:21 ◼ ► It's an e-ink display that connects with hundreds of popular apps to show you information you want to see without distracting you, like a cell phone or a tablet.
00:19:38 ◼ ► But they do also have a simple developer platform, if you want to, with an in-browser plug-in builder.
00:19:50 ◼ ► And I actually bought a second one, too, because I like having things like a weather display.
00:19:58 ◼ ► I had that running all winter long, so we kind of knew, like, how many days are left until this big thing happens.
00:20:11 ◼ ► Basically, you can build a plug-in by setting up a shortcut to just ping their webhook endpoint, and that will generate screens that will show up on your Terminal.
00:20:23 ◼ ► So earlier in 2025, they were also given a shout-out by several YouTubers, including Snazzy Labs.
00:20:29 ◼ ► So if you want to help stay focused without cutting yourself off from the world, check out Terminal.
00:20:40 ◼ ► So use Terminal.com slash go slash radar and use code radar for 15 bucks off your order for one week only.
00:21:01 ◼ ► So some other thing that came to mind is, like, I think I'm so delighted, yeah, that you're finding, like, reminding yourself coming back into it.
00:21:11 ◼ ► And, like, you can remind yourself of, like, that, you know, you build something awesome.
00:21:19 ◼ ► And I think something that came to mind to me is how something that I have it that I've gotten into over the years that is in some ways trying to establish, like, a baseline amount of inertia that is separate from the actual work that I'm doing.
00:21:36 ◼ ► And how helpful I think that has been for me for – it's a funny way to say it, but, like, having a supple mind or, like, being able to be responsive to new things.
00:21:46 ◼ ► Because one of the things I am most worried about in this – sort of in my career is that I will become too focused on any one thing and lose the ability to be able to learn new things quickly and well.
00:22:08 ◼ ► It's useful to – you know, sometimes I'm working on stuff that is not exciting and sometimes I'm working on stuff that is not exciting.
00:22:14 ◼ ► You know, recently I've been doing a lot of work on paywalls, which are useful and important for the business but are not exciting.
00:22:23 ◼ ► And so instead, like, while I've been doing this, in the background, I've also been working on a watch app, you know?
00:22:32 ◼ ► And, like, what I'm doing there, it's, like, I'm working – I'm going on this big, long hiking endurance challenge expedition next week.
00:22:38 ◼ ► And, like, I've been building a purpose-built – I think we mentioned this in the Battery Life episode.
00:22:43 ◼ ► But, like, I've been building a purpose-built watch app that is focused around navigation for long periods of time.
00:22:49 ◼ ► So, like, being able to use full-time navigation on an Apple Watch with Maps for, like, 20, 25 hours at a time.
00:22:57 ◼ ► And the reason I always try and have one of these things on the go – like, I have this side thing that I'm working on that I can invest – you know, it's not my main time.
00:23:07 ◼ ► And I try very hard to not let it, you know, overtake things where, you know, I don't look up and I've spent, like, two weeks working on the side project when I should have been working on the real project.
00:23:14 ◼ ► I try and very much more, like, I'll spend an hour or two every couple days working on this thing, as it makes sense.
00:23:21 ◼ ► But I think there is something good about keeping a – some amount of steady state, interesting, fun work that you're doing because you want to, because you're interested in it, because you are scratching an itch that you have or think you may have or, like, those kinds of things.
00:23:41 ◼ ► And I find that that is super helpful for keeping – I guess, like, trying to keep my brain thawed in the analogy you're having of, like, having to unfreeze your brain.
00:23:59 ◼ ► And I think – when I think, too, about how, like, in a couple weeks, I'm going to have to learn a whole bunch of new stuff because Apple will likely dump here this whole bunch of new docs, a whole bunch of new frameworks, a whole bunch of new stuff.
00:24:17 ◼ ► And I think – yeah, what I've found is that, yeah, that sense of inertia is so powerful that if you're always making something, you just – it's easier to make the next thing.
00:24:32 ◼ ► And that inertia either will sometimes come from circumstance, like in your case, working on the Watch app was the thing that got you sort of moving again.
00:24:41 ◼ ► And in my case, I needed to have some other project that I was working on in the background because while I was working, the work I was doing was not the kind of work that was going to keep me engaged and motivated.
00:24:52 ◼ ► It was a bit much more sort of straightforward kind of grunt work that if I sort of – I would always – if circumstances were such that I didn't need to do this, I would always put this kind of work off.
00:25:08 ◼ ► But it was a helpful thing for me to keep this background other process that's just running there, keeping me engaged, keeping my mind going, challenging me with interesting problems that I have to solve.
00:25:18 ◼ ► Like those are the things that keep me engaged and going and then kind of unfreeze my brain when the situations are such that I have to come back to real work and I have to open up my, you know, open up my like difficult problem solving or hard decision making problems.
00:25:34 ◼ ► And so like, yeah, it's a funny thing about the job we have though because we have to do those things and make those decisions ourselves.
00:25:40 ◼ ► Like they're not – it has to be – it ultimately come from us because our circumstances will only to some degree dictate what like what we actually work on.
00:25:50 ◼ ► And I found like one of the best ways to spend my time in terms of like bang for the buck for my own personal both mood and also for coding inertia is to tackle one small thing.
00:26:06 ◼ ► Like when you're first trying to get back, like when you're first trying to unfreeze your brain, we talked about this before, like tackle one small feature or fix one small annoyance.
00:26:15 ◼ ► Like tiny, tiny stuff like, oh, I've always – this tap zone has always bothered me on this button or like just pick something tiny and make that thing better or fix that one problem.
00:26:30 ◼ ► Like even if there's not a lot of commercial value for you to do that, like one of the reasons I'm rewriting CarPlay now is because there are some things about it that annoy me.
00:26:44 ◼ ► Like there's – if I look at like what's the best bang for the buck, this is not that.
00:26:59 ◼ ► And, you know, after such a long time of not getting releases out there and being – you know, being used on other projects, it feels really good to get something out there and to get my brain going.
00:27:10 ◼ ► And over time, that will have value in ways that I can actually like justify as like commercially relevant.
00:27:19 ◼ ► Like in time, the inertia that I'm unfreezing myself to get going again to start building things, some of which will be just for me and will just be kind of indulgences or fun side projects, some of which won't even be overcast.
00:27:32 ◼ ► Like maybe I'm – you know, I could – like when I briefly learned LaTeX to make a template for my Remarkable.
00:27:44 ◼ ► Or, you know, I could – I have like a shell script to automate certain things in my life that have nothing to do with overcast.
00:27:52 ◼ ► Like there's all sorts of things I can do to kind of get myself going again that are motivating.
00:27:57 ◼ ► And it might not have direct commercial value now or ever, but being motivated and being – getting myself going again, that does have direct commercial value.
00:28:13 ◼ ► It's that weird thing that, you know, so often the commercial value will come from doing interesting things well.
00:28:21 ◼ ► Like if you chase the commercial thing directly, you may – it may feel like you're chasing a rainbow, right?
00:28:32 ◼ ► Whereas if you just instead focus on something tangible that you can – it's like what is an interesting problem that I can solve well?
00:28:38 ◼ ► Like that is almost certainly a much better path to eventually, you know, having a successful or at least sustainable business, which I think is, you know, so much of what ultimately we want.
00:28:49 ◼ ► Like I just want to have a sustainable business where I can keep solving interesting problems well.
00:28:54 ◼ ► And so far history has shown that if you keep solving interesting problems well and you do have habits and behaviors that keep you moving forward and growing and learning, like the rest will sort of to some degree take care of itself.