Under the Radar

195: Apple's Grand Vision of the Future


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 never longer than 30 minutes, so let's get started.

00:00:10   So coming out of WWDC, like we talked about last episode, I feel like there was, like,

00:00:15   in the immediate period after WWDC, there's this period where you're just kind of, like, overwhelmed,

00:00:20   and there's just too much to think through, and it's, you know, you've just, like, been drinking from the firehose,

00:00:25   and it's just too much. And then things had to settle down, and I feel like now I'm in the place where

00:00:31   I'm able to look back on WWDC, look at the announcements, look at what was sort of the picture that Apple was painting for us,

00:00:38   and try and do something, an exercise that I always try and do around this point after WWDC,

00:00:43   which is to try and see what was Apple's, like, theme or vision, or what is their, over there,

00:00:50   the underlying message that they're trying to get across. Because I feel like in most WWDCs,

00:00:56   there's this, there's some undergirding message that Apple is trying to give us, and this is, you know,

00:01:03   they, all of the, you'll often see this in, there'll be lots of talks that make mention of a technology,

00:01:09   or reference something, like, there's something that they're often trying to get there. And while sometimes it's,

00:01:14   they say, they come out and say it specifically, there's also this kind of this underlying current.

00:01:18   And I was thinking about this last WWDC, and I think if I had to put it at, like, just define the theme for this year,

00:01:25   is it's unification. Because so many of the announcements of the sort of the emphasis that Apple,

00:01:33   Apple was putting on technology, everything sort of comes down to this concept of unification,

00:01:37   that they seem to now be kind of unraveling, or unveiling this grand vision, sort of, for their future,

00:01:43   for their, the Apple platforms. And in many ways, it's this vision that differentiates, rather than having this sort of concept

00:01:50   that I feel like we've been sort of living in for a long time, where I say Apple platforms, that there's, you know,

00:01:56   Apple has, like, five different platforms that they, you know, have developers for, and take platforms for,

00:02:02   and technologies for. And if anything, they're heading towards, like, this is the Apple platform.

00:02:07   And that platform is based on a single processor, you know, processor family.

00:02:14   This is every, essentially everything that Apple makes will be running Apple Silicon, you know,

00:02:19   so by the end of this year, there'll be some version of it, of all of their technical products that will include,

00:02:25   will run Apple Silicon. All of them can be addressed and dealt with with a single language, which is Swift.

00:02:33   And then they're eventually heading to a place where you'll be able to program and develop for all of those with one platform,

00:02:39   and that's SwiftUI. And it seems like that unification is something that they've been clearly working towards for years.

00:02:50   This isn't something that's like, they just, like, you know, it just coincidentally happened, or these are kind of unintentional things.

00:02:58   And I think it clarifies in my mind a little bit where Apple has been going, and like, Catalyst, for example,

00:03:06   felt really weird last year, that they introduced SwiftUI and they introduced Catalyst.

00:03:10   And it's like, well, why is Catalyst here? Why is, you have these two competing, like, platforms for making,

00:03:16   like Mac apps now? Like, why, well, it didn't make a lot of sense.

00:03:20   And then I think this year kind of helped me to clarify their vision, is that I kind of see it almost like

00:03:26   these multiple roads that are all coming together at once. And there's like the AppKit road and the UIKit road,

00:03:33   and even the old tvOS thing, and in some ways Objective-C, and they're all kind of coming together.

00:03:39   And in order to, like, actually make it into the future, Apple needed to build a bridge to SwiftUI.

00:03:46   And that bridge is Catalyst. That's why Catalyst exists, is that they can use UIKit and bring along all of the existing code base that exists with that.

00:03:55   And, you know, the Objective-C, and that is the underlying sort of transition technology that then will get us into this future that is SwiftUI.

00:04:03   And I think that is an interesting view, that like Apple is sort of explicitly saying in many ways, like,

00:04:09   "We are building this unified future. We recommend you get on board."

00:04:13   Oh, yeah, and I think for us, this is a very jarring transition. I think it's going to continue to be very jarring for a number of years as this happens,

00:04:23   but there's no question this is the direction they're going in. And I think that's largely for the best.

00:04:28   I mean, developers face a problem right now, and we have for the last few years, which is, you know, Apple's platforms keep expanding.

00:04:35   They're keeping newer platforms, more breadth of what you can do on each platform.

00:04:42   So you have things like, you know, the watch came out, and the iPad came out and everything.

00:04:46   And then on the watch, now you can have complications, and now you can have notification features on the phone.

00:04:53   You have notifications, you have widgets, you have different extensions, share extensions, all that stuff.

00:04:58   And on the Mac, you have extensions and, you know, subprocesses and stuff like that, and all sorts of other things you can do.

00:05:04   And so the platforms just keep adding more and more and more functionality that apps can do,

00:05:11   and that largely users will expect apps to offer. And then we also have more platforms being added.

00:05:17   We have things like the Apple TV running its own OS that can run apps.

00:05:21   Then, you know, we have all these expansion into things like the watch, and then, you know, in the future we might have things like AR goggles or something, or glasses, whatever.

00:05:29   So there's always going to be more and more and more platforms to target, and within the platforms there's always going to be more and more things we need our apps to do,

00:05:37   and that our customers expect our apps to do. And when these platforms were small, it was easy for one-person development shops like me and you.

00:05:47   It was easy for us to keep up with the customer demands of what a good app on these platforms should be.

00:05:55   You know, it's one person's work if you are efficient and you choose what you do well, and if you're pretty decent at a few different skills, you can make it one person's work.

00:06:04   But as the platforms expand and as the number of platforms increases and as the capabilities on each platform increase, it's getting harder and harder to keep up.

00:06:14   Like, I'm doing a terrible job of keeping up because there's just so much to do, and I have a number of other things I want to be working on, like technical debt issues,

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:48   And to date, it's been very hard for us to keep up. Apple is also historically very bad at keeping up with their own multiple 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:08:48   And you could share anything based on foundation, and there's a whole lot of common infrastructure classes down below the surface.

00:08:54   But the UI layer has been the big thing that's been super different between all these different platforms. And SwiftUI is the first thing that really unifies that in a big way.

00:09:04   Catalyst unified it in a small way. SwiftUI does it much more broadly and in a really big way.

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:09:57   And the UI has to also keep up with the data model and do editing to the data and keep up with sync changes or merging. It's so complicated writing UI code.

00:10:07   And until SwiftUI, and to some degree Catalyst, the UI layers were totally not shareable between any of Apple's major platforms. You could share between iPhone and iPad, and that's it.

00:10:19   You want to do something on the TV? Forget it. On the watch? Forget it. And the Mac? Forget it. Everything else was a totally different system from each other.

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:29   And like, in a weird way, it reminds me a little bit of the way storyboards became this kind of like alternative way to structure and write your app in, you know, in straight UIKit.

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:30   It's like, well, if you want a widget, you better hope it is, because that's all you got. There is no Objective-C, there is no UIKit, there is just Swift UI.

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:16:51   And so, Apple is very clear that like, Swift UI is the future. Catalyst and iOS and all these other things are kind of like the process of that will allow us to get there.

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:18   And then in like two or three years, I feel like we're just going to, anyone who did who does that is going to regret it.

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:37   You know, should I be rewriting all my apps in Swift UI? Should I be like going, like diving headfirst into this so that I can remain on this cutting edge into this future?

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:25   And so I've decided I'm going to tackle all this stuff this year, even though, again, it will definitely slow me down in feature development. But I think I have to do this now.

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:25   I feel super productive and capable in this new platform.

00:25:29   Yeah, and that's where I that's where I need to be, you know, it's like it's a different between like knowing like the basics of how to use a language versus being fluent in it.

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:25:54   That's the first step of learning a new system or learning a new language or learning a new paradigm is that kind of, you know, the copy paste and low understanding level of coding.

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:47   But but you have to do it sometimes and I've been putting it off for years and now's the time.

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.

00:29:34   So I look forward to this grand unified future we have ahead of us.

00:29:39   Thanks for listening everybody and we'll talk to you in two weeks.