00:06:25 ◼ ► underlying engine things, features that aren't just keeping up with the platform but other features, server maintenance, all this stuff, it just really builds and builds and builds and it adds up,
00:06:35 ◼ ► and it makes it harder for one person to keep up, because these systems are all different. They're all separate, and they all need or customers demand specialization on all these different platforms.
00:06:57 ◼ ► Apple does not multitask well. They've slowly increased their ability to do that over the last few years, but it's still not an incredible core competency of the company, and I think just the way the company is structured makes that difficult.
00:07:10 ◼ ► And so when Apple itself is also trying to make their own apps keep up with everything going on, on all the different platforms, all the new hardware features they launch, then they have to update all their apps to take advantage of them,
00:07:22 ◼ ► all the new software expansion that they have, all the new design direction they have, you figure, like, if you're on the iWork team, or the Mail team, some kind of major app that runs on Apple's platforms,
00:07:37 ◼ ► how much time do you have to add features? Imagine what those teams have to do to just keep up with the platforms. The platforms are so big and constantly expanding, and there's always new marketing and design pushes to keep up with,
00:07:51 ◼ ► and new technical abilities to add, the new OSes add, and everything else. So even Apple has this problem where they have a really hard time keeping up with the expansion of their own platforms and their own capabilities with their apps.
00:08:04 ◼ ► And so what we're seeing now, the consolidation of the hardware into one platform, as you said, one CPU architecture, one hardware platform really, or at least much more commonality between the hardware platforms than there has been to date.
00:08:21 ◼ ► More importantly, on the software side, you have these unified frameworks. You have UI kits spreading through Catalyst onto the Mac, and then you have SwiftUI, which unifies everything into one big thing.
00:08:33 ◼ ► And when you're building an app, there's a whole lot of code that we've been able to share to date. A whole lot of underlying data model stuff, algorithms, anything written in C or Objective-C pretty much ran on all of Apple's platforms.
00:09:10 ◼ ► And it's super young, but you can already see, "Oh, this is what we should be doing. This is the future." Because all that shared code and everything, that's great that we can share all that. Like all the low-level libraries and data model stuff, all that stuff. That's wonderful that we can share that between all these platforms.
00:09:26 ◼ ► But for most apps, that's not the majority of the code. Most apps that I've ever seen, and certainly every app I've ever built, the vast majority of the code is the UI code. Because UI is just hard. There's a lot to do.
00:09:42 ◼ ► And there's a lot of customization that people expect. And there's a lot of responding to system changes or different sizes or different environments. Accessibility needs. There's all sorts of things that your UI has to do.
00:10:28 ◼ ► And it's just impossible to expect small developers like us, all the way up to huge developers like Apple on their own platforms, to have to write entirely separate massive UI layers in their apps in our increasingly cross-platform world.
00:10:47 ◼ ► That's why you have the rise of things like Electron. Cross-platform, web-based technologies so that you can at least share something between iOS and Android and maybe also Mac and Windows. But the reason those are so powerful, the reason why everyone makes their apps out of Electron now, is not because Electron apps are good. They're not.
00:11:05 ◼ ► It's not because everyone has terrible taste in app design or app functionality. No, people know the trade-offs. It's because those things allow you to have huge savings in this massive part of the app, which is the UI layer.
00:11:20 ◼ ► So Apple is now offering a different way to do that. Apple is now offering a different way to have huge savings. And yeah, you're not going to run SwiftUI on Android anytime soon, which is unfortunate for that side of the savings equation.
00:11:34 ◼ ► But if you build your apps in this new way, which is still young and there's still going to be a lot of variation between the platforms that you have to code manually. But if you build your apps in general with this new UI framework, and you do things with the new language on the new platform, on the new hardware needs and everything, things will be much easier for you to target all these different platforms with much less customizable performance.
00:12:03 ◼ ► Much less custom work per platform than we ever had to do before. And that's going to be a massive savings for everyone. For developers outside, for indies like us, all the way up to medium-sized and large shops, all the way up to Apple.
00:12:17 ◼ ► Everyone needs those savings. And this will eventually bring us there. And it's going to be really hard getting there. And it's going to not be a clean transition. It already hasn't been. And it's going to continue to not be a clean transition.
00:12:29 ◼ ► We are going to lose some of what we hold dear today, or what we've held dear to date. And I think that's going to be things like Pixel Perfect Design is out the window. Certainly some platform-specific specialty behaviors, like certain Macisms I think are not going to make the transition.
00:12:48 ◼ ► Which is unfortunate. But right now the massive cost, or theoretical cost of trying to support all these platforms is like we're bearing that cost and we're not doing a very good job of it.
00:13:01 ◼ ► Apple has neglected their apps on the Mac for a long time. The Watch apps are a mess. Apple TV apps don't exist basically. But the ones that do are a mess. And even the iPad often gets short shrift because it's a little bit harder to make an iPad and iPhone app than just to make an iPhone only app.
00:13:19 ◼ ► And some apps can't justify the additional work. So anything the platform can do to reduce those costs and to make it easier for developers like us and them to make really really great, or at least decent functional experiences on all the platforms, that benefits everybody.
00:13:38 ◼ ► Because right now, the status quo before all this was not working very well for the platforms that weren't the iPhone. And I think this will dramatically improve that. Even though the transition is going to be not fast and not smooth.
00:13:52 ◼ ► Yeah, and I think the important thing there is that it isn't that Apple has to, I don't think Apple has any interest or intention in having it be a rapid transition. I think what they're, like the way I read what they're doing is they're like creating this very clear path forward.
00:14:09 ◼ ► And they're saying, if you join us on this journey, and it may take years to get there, you will end up in a place where you will be in the sweet spot. Like this is the direction they're putting their engineering resources into. This is the place that they're wanting developers to go.
00:14:26 ◼ ► And in the meantime, you're going to be able to make UIKit apps, AppKit apps, you're going to be able to use Objective C, you're going to be able to do all of those things that you can do now, and they will likely support but not encourage all of those platforms, like probably honestly for decades into the future.
00:14:43 ◼ ► Like I would be very surprised if, you know, 10 years from now, you know, UIKit is deprecated, like maybe AppKit would be, I could sort of see it, I feel like that's even that's unlikely. Like it feels like these technologies are going to be with us for a long way.
00:14:56 ◼ ► But they're saying, look, if you go like, just like trust us on this, this is our focus. This is where we're putting energy and effort. Like it will work out better for you. And it will ultimately, you know, enrich their platform by making their apps better.
00:15:10 ◼ ► And I think it's interesting, like, I remember when last year when, you know, search UI launched, and it was this kind of this question of like, well, you know, is this, like, it almost felt like, you know, is this an experiment? Is this something that they like made for the watch, and then is now just, like, sort of spill over into something else, and will be this kind of like sideshow kind of thing.
00:15:40 ◼ ► And it was this weird question, though, of like, is that the way that people should be moving? Like, we should build our apps entirely in storyboards, and then, like, you know, to transition away from traditional sort of programmatic hierarchy.
00:15:54 ◼ ► And it's like, I don't know, and I don't think Apple really necessarily pushed or structure pushed it that, you know, sort of pushed the platform in that direction. But I think it is, at least from my perspective, it is clear that, like Swift UI is where they're going.
00:16:07 ◼ ► And I mean, even the most strongest example of this that I can think of is the way that, you know, one year after it launched, Swift UI is already the only way that you can build a marquee feature in iOS widgets.
00:16:19 ◼ ► Like, the only way that you can build those is using Swift UI. So clearly, it's, you know, sort of one of those kind of questions that keeps popping up, you know, it's like, Oh, is Swift UI like production ready?
00:16:40 ◼ ► And, you know, widgets are certainly a nice, constrained, straight, you know, simplified problem set. But it's still like, if you want to make a widget, you got to learn Swift UI, and you got to understand how it works and kind of move in that direction.
00:17:01 ◼ ► But that's the future. Like, and if we get on board with that and kind of move forward into that, I feel like we put ourselves in such a stronger position than if we tried to, you know, sort of the more we hold on to the older frameworks and technologies, like it's just going to end up weighing us down.
00:17:23 ◼ ► Yeah, totally. And so, like, but what makes me think is it's like, so as developers, it's like, now the question for me is, it's like, how, how much do I want to embrace this? How much, like, for me personally, like, do I want to dive into this?
00:17:47 ◼ ► It's like, because I don't strictly need to like, in many ways, you know, it makes me like, I've, it's definitely an overblown comparison. But it's like, makes me think of like, people who are like, Fortran developers, like, is that going to be Objective C developers in, you know, in five years where there's fewer and fewer of them, but they're still very important and needed because there's existing code bases.
00:18:07 ◼ ► And like, that's a skill set that if you have could end up being useful, it's like, or do I want to be someone who is right on the sort of towards that cutting edge doing the super sort of fresh, relevant work, kind of embracing this grand vision that Apple is presenting.
00:18:21 ◼ ► And it's like, that's, I think I know where I'm going to fall on it. But it is certainly not an easy question to decide. Because learning new things and going through the kind of the rough edges phase of any new platform is not pleasant.
00:18:34 ◼ ► It's a tricky balance. I mean, you know, I've said for years that I was like, I was waiting for Swift to settle down. And I waited, and I waited, and then Swift settled down. And I'm still waiting. And, and, and I, and you know, I'm still waiting for Swift UI to settle down. And, you know, that's, that's much newer. So that'll take a little while. That's probably going to be another, you know, three years maybe before it settles down really.
00:18:56 ◼ ► But the reality is, like, sometimes you have to do things with cutting edge stuff before it has settled down. Sometimes it's just more important that you jump on new technology bandwagons because that's where the motion is, or that's where the platforms require.
00:19:10 ◼ ► Like, making an iPhone app for iPhone OS 2.0 back when that was the first time you could make iPhone apps, that was not a settled down platform at all. Or framework at all. Like UIKit in iOS, in iPhone OS 2.0 was terrible.
00:19:25 ◼ ► It worked, but it was, like, very minimal. There was almost no customization of anything. The controls were very rudimentary. There were lots of limitations. Lots of hacks needed to do basic things. It was not a great system.
00:19:39 ◼ ► But we made apps for it anyway because there were compelling reasons to do so. And we, and it was just kind of a rough time for a little while with some of that stuff, but we made it work.
00:19:47 ◼ ► And I think that's how we have to be with this. And I did a whole segment on ATP last week about how I've kind of come to this conclusion that, like, my skill set by not embracing this stuff, my skill set is rapidly going out of date.
00:20:00 ◼ ► And I need to, I need my skills to stay modern and relevant. I can't just sit around and wait until Swift UI becomes a mature platform before I start using it at all. Because that's what I did with Swift, and it hasn't really done me any favors, honestly.
00:20:17 ◼ ► Now I find myself in a position where I can write Swift, but I still choose not to the vast majority of the time. I'm not very good at it. And that's not a great position to be in. So I've decided that I'm actually going to jump on this stuff now. Like, this summer, this fall, I'm jumping on this stuff for major updates to Overcast that are going to come over probably the next year.
00:20:37 ◼ ► And it is not going to be smooth. There are going to still be lots of Swift UI shortcomings, and there are still going to be many hacks that are needed. And I'm going to waste a massive amount of time that I probably should be spending adding features to my app that people are actually asking me for.
00:20:55 ◼ ► No one's asking me to convert my app to Swift. No one's asking me to rewrite the watch app in Swift UI. None of my customers are asking for this. But if I don't do this, it's a form of technical debt by continuing to not adopt these technologies and not know how to use them as just a programmer.
00:21:13 ◼ ► And so I have to do this, regardless of what's best for my customers, which is terrible. It's not good for the business side of things, but it's necessary for the technical side and for my career. It's very necessary that I do this.
00:21:35 ◼ ► Sure. And I think when I was listening to the segment on ATP, what I think came to mind to me was it slows down feature development, probably, but only in the iPhone app, insofar as it increases the concept of having an overcast Mac app is something that has been asked for or thought about for a long time, but I don't think has ever really made sense.
00:22:04 ◼ ► Because building it an app kit just felt kind of pointless. It's like you're starting knowing that it's not going anywhere. Whereas like what I think about for you, what I would in some ways encourage you to think about is, it seems like an interesting opportunity for you to learn these new skills in terms of both Swift and Swift UI.
00:22:26 ◼ ► But focus that energy into initially the platforms that you don't currently have a robust presence in. So rather than necessarily worrying about changing the iOS parts of parts of overcast.
00:22:42 ◼ ► What if you make a Mac version of overcast is a Swift UI Swift app, and it uses all the underpinnings are the old sort of your existing Objective C shared code base model layer type of stuff.
00:23:02 ◼ ► But you start there where you can both develop yourself and your skills while also creating this tremendously new feature. It's like, here's overcast on the Mac. Something that doesn't exist is actually sort of transformative from a customer perspective.
00:23:22 ◼ ► And similarly, if anything is, you do that, and at the end of that process you want to turn that into a tvOS app, you probably could. In terms of so much of the over, you might Swift UI for tvOS too.
00:23:36 ◼ ► And in the same way if you want to eventually turn that into the watch. It seems like there's an interesting way to structure that work so that you don't necessarily have to view it as like, you're having to put everything on hold in terms of moving the app forward.
00:23:51 ◼ ► But at the same time, I do think I do agree that I think it's it feels like a time where it's very important if we want to remain relevant as Apple developers, that we have to kind of get into this and I very much appreciate that this last sort of six months I spend a lot of time with my development of for Watch Smith, making I built all of the watch app in Swift UI.
00:24:12 ◼ ► And it was an interesting process because Swift UI I find even more so than Swift is this thing where the first like two months, you work with it. You're like pulling your hair out and it's crazy and you don't understand it, and then like something switches in your brain and suddenly you get it.
00:24:30 ◼ ► And this very kind of different way of thinking about your app and it's all declarative and like it requires time in a way that like I got much more used to like Swift felt like a different flavor and especially because it was using the same, you know, the actual frameworks that I was used to in Objective C, like it felt like it was it was a learning process but it wasn't nearly as kind of transit transformative in a way that like Swift Swift UI now when I go back and do UI kit work.
00:24:58 ◼ ► It's a bit funny because now I'm like, wait, what why am I doing it this way? It felt it's like my brain is switched over into wanting a declarative framework that took so much time and repetition to get there.
00:25:10 ◼ ► And it's like the only way you can do that I think is by doing it and trying and building an app in that and like, I'm going like create the full on into this because I feel like that's a it's just important for me as a platform and I think a B it's like now that my brain has done that switch.
00:25:37 ◼ ► Right, like, you know, in in terms of programming languages like you can you can kind of know like copy and paste programming or you can kind of know like, well, this is the way that I think it works and I don't really know what's going on under the covers, but you know, this kind of works and you kind of, you know, slap it together and you get it to a slightly functional state and you call it done.
00:26:04 ◼ ► I know I'm going to have to go through that. There's never a good time to go through that, but I have to go through it and I have to get past it. I have to get to that point of fluency and of deep understanding because I am like an individual programmer making a complicated app can't just be a copy paste program.
00:26:23 ◼ ► Like you can't you have to have a deeper level and you know at the for the problem set that I choose to tackle for being a one person shop and for the quality that I expect my app to be and that my customers expect my app to be.
00:26:35 ◼ ► I have to reach that fluency level and again, then there's no good time to do that. There's no there's never a time when you're like I'm going to make myself much worse at my core competency for six months while while I learn this new system.
00:26:53 ◼ ► Yeah, and I would encourage you in that I feel like SwiftUI is young, but it feels good. I don't know is the best way to say it that I like it encouraged that it's it's it feels better than the early days of Swift when I like a year into Swift.
00:27:20 ◼ ► I were all just like welcome improvements in how it worked and most of them were relatively I think they were all source compatible with our old things and just enhancements and new capabilities.
00:27:31 ◼ ► I mean in some of them were even just like comically better where they went from vertical V stacks to lazy V stacks and all you have to do is add the word lazy in front of your your V stack and like you get all this new capability and this is very kind of like delightfully.
00:27:48 ◼ ► It didn't feel like all this old work had to be just like okay, just like throw it away and start again. It's like no, it's like here's these little things we can do to improve what we've been doing before and like the philosophy like the philosophy behind SwiftUI feels very stable and feels very clear, which I think is also an encouraging thing for whether this is the right time, which I think it is.
00:28:11 ◼ ► It's not the kind of thing where you're going to go through six months of difficulty and then in a year from now you'll go through another six months of difficulty. It feels better than that or at least that's sort of the way that I read things right now.
00:28:24 ◼ ► That's good. I hope you're right because nobody wants to jump into a platform that's going to just be a constant struggle and sometimes we have to, like as I said earlier with just young platforms that are very compelling to be on, sometimes you have to do that but when you can jump into something that's not so much of a struggle, that's significantly nicer to use and generally becomes more productive more quickly.
00:28:48 ◼ ► And I feel like that's where we are. I wish, and it's exciting in its own way too, like I'm really enjoying this future and I feel like I like that as a sort of a solo developer, I'm going to be able to target and build things for so many more platforms and to be in some ways many much more ambitious in what I do
00:29:09 ◼ ► in a world where the same code and I make a component, I can reuse that component in so many different places. I can, all the way from it being used inside a complication on a teeny Apple watch to being used in a Mac app or a tvOS app, that work can be shared everywhere which feels like such a, it makes me feel comfortable being much more ambitious which is very exciting.