Under the Radar

296: Summer Plans


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:10   So we are back from Cupertino. Hopefully you caught last week. We had a special episode with Serenity and Kristen.

00:00:18   And if you didn't, I would highly recommend you go and listen to that, where we were able to talk through some of the aspects of great VisionOS apps.

00:00:25   But this episode is the one where we'll actually sort of unpack what we learned about, I guess, like the next year of our developer life from W2C 2024.

00:00:35   And so we were both there. It was very exciting. It was lovely to meet many listeners of the show, which is always a fun treat.

00:00:42   But I mean, I think for the purposes of today, it's really it's like what was announced and kind of what our plans and what are the things that we're going to focus on this year?

00:00:50   Because it is an interesting aspect of our year. Like I always think that Monday morning of W2C, I'm going in and it's like, is this going to be a quiet year?

00:00:57   Is it going to be a loud year, I guess, a year where everything gets turned upside down, where there's going to be lots of problems, bugs, issues.

00:01:04   And I just don't know. And there's something exciting about that. There's something scary about that.

00:01:09   And overall, I would say like my vibes from this year were it's like it was a good year.

00:01:13   Like it was there's there's things for me to tackle. There's lots of interesting sort of aspects in the platform growth.

00:01:19   I think overall, the actual event itself was fabulous. I think it went really well.

00:01:22   It's nice that three years into the Apple Park version of W2C, it seems to have kind of found itself in a way that the first couple of years maybe it hadn't.

00:01:33   It was nice that it was a bigger event where more people were there who necessarily weren't associated with the Monday special event itself.

00:01:42   Like there just seemed like more people in town, more events, more kind of like a little bit like the old days, but with a slightly its own character where it's a shorter event.

00:01:50   It doesn't sort of drag on into the whole week. But overall, it was nice.

00:01:55   It was exhausting in the best possible way to just have so many things and so many opportunities to be able to go and do.

00:02:02   And so in that sense, it was really cool. But yeah, it's like we also there's I think maybe me slightly more than you, but certainly a busy summer ahead of us.

00:02:11   You know, it's interesting. Every summer, you can look at the new features and you start making plans.

00:02:16   All right, I'm going to look into this, then I'm going to look into this, then I'm going to look into this.

00:02:19   And usually the first couple of weeks of the summer as you're playing with the betas and new SDKs, usually you find out some things that you thought you could do that you can't do.

00:02:29   So you start crossing some things off. Okay, well, this won't work for me. This thing isn't what I thought it was, etc.

00:02:34   And then you end up with like the core list. All right, this, this and this are what I have to do.

00:02:38   And for me, like how I decide that usually is a combination of like what do I think I'm going to have time for?

00:02:46   How does it disrupt my existing plans? And maybe I'll make some changes there.

00:02:52   And then also, what will my users expect to be there on day one? That is the biggest thing for me.

00:02:59   Like, and that's always what gets me the most stressed, but you know, that's the job.

00:03:03   You know, in different releases, usually whatever your users will expect from you on day one are like new system integrations for common tasks.

00:03:13   So for instance, when they launch widgets, like that's going to be a thing that everyone's going to want that on day one.

00:03:18   And as you know, they did. And that went pretty well pretty quickly.

00:03:24   Things like, you know, a new hardware platform that will be mass market.

00:03:28   So when the Apple Watch launched, when the iPad launched, I knew like I should probably have my app there on day one.

00:03:34   New system, major new system designs. So obviously when the iOS 7 redesign came, that was a massive one.

00:03:40   A few years later when dark mode came to the system, that was a massive one.

00:03:44   You know, now every app has to support dark mode and the system theme and things like that.

00:03:50   So every year there's usually a small number of those like gotta have it features that all of your users will expect, otherwise your app will seem abandoned or broken.

00:03:59   And then there's a bunch of nice to haves. That would be things like, you know, Siri shortcut support or you know, Intents, like that whole system.

00:04:08   Or certain like types of more obscure widgets like the lock screen widgets.

00:04:13   Things like that that are like lesser used parts of the system, you know, certain types of document import and export, multi window support on iPad.

00:04:23   There's stuff like that where like it's nice to have, but most of your users won't use it and it makes it harder to justify spending a lot of time on those features.

00:04:32   So looking at what we got this year, I think we have a couple of like obvious quick hits.

00:04:38   You should have your icon look good in the new system dark mode and the tinted color modes.

00:04:43   Like that's the home screen tint options, those are going to be widely used.

00:04:47   So ideally you should optimize your icon for those different color schemes and make that available on day one.

00:04:53   If it makes sense for your app to be in control center, it probably makes sense for you to add one of those control center widgets as well.

00:05:01   Beyond that, what else is like, what do you think else besides that, if anything, is like one of those must have user features that everyone will expect your app to support on day one?

00:05:12   Yeah, I mean I think those are certainly the two major ones that we're going to run into.

00:05:17   And I think because they're the just the visible and most different part of this.

00:05:23   I think the larger question on that side is whether the App Intent, Apple Intelligence side of the new stuff this year, how broadly that is going to be expected initially.

00:05:35   And I think part of that is also heavily colored by the uncertainty we have around the actual rollout of a lot of that.

00:05:42   In terms of, they've said a lot of these things are coming later. Is it later October? Is it later next March? Any of these things are possible.

00:05:53   Next May, next June.

00:05:55   Yeah, but between now and the second week of June next year is anytime some of these features could come out.

00:06:03   And so it's really hard I think to understand where we are between those.

00:06:08   And so I think I'm not expecting to massively prioritize those things beyond kind of like having a basic version of support of some of the things there where it makes sense.

00:06:19   I mean it's similar to what you were saying about the Control Center stuff, which I think is probably the most user visible change that's coming this year.

00:06:27   I think many users use Control Center and I think it would be strange if they opened it and their favorite app didn't have something in there unless it just completely doesn't make sense for your app.

00:06:39   I think for most apps though there's going to be some reason why you should have one of those even if it is just a launcher.

00:06:45   It reminds me a little bit of complications on the Apple Watch where even if you don't necessarily have a complication system where it makes sense to,

00:06:54   there's information for you to put on the watch face, potentially just having a thing that launches your app makes sense, especially because the user could replace the two lock screen control shortcuts on the bottom left and right of their lock screen with one of those controls.

00:07:12   And so if they wanted to launch your app for that.

00:07:16   And I think too it's also something that when I first thought about that I was like, "Oh, who's going to put one of my apps in there?" That's such a major priority space on their phone.

00:07:25   But at the same thing, I believe they are unique per lock screen configuration, which can be configured by focus modes.

00:07:32   And so there's other modes or contexts where it may make sense. In my case it's like pedometer++. Someone may put pedometer++ in their workout focus mode in a way that maybe they wouldn't put it there necessarily all the time.

00:07:48   Having a camera and having a flashlight are pretty common and prominent. But I think those are the kinds of things that I'm thinking about.

00:07:55   I think everyone should very strongly make sure that they explore having a control center thing. And obviously for Widgetsmith it's going to be a whole can of worms for me to unpack exactly how deep into that I go.

00:08:08   Anytime you add a new widget type, obviously I'm all over that. But I think at the very least that is an area where if you're not there, you're going to feel, users may think that your app is missing out.

00:08:19   I think the icon, it seems so far, it doesn't seem like it's too difficult. And I think Apple is doing a lot of clever defaults so that if you didn't do it somehow, you wouldn't necessarily stand out massively.

00:08:32   It isn't that if you don't, if you haven't opted into the new tinted format that your app is the only one that stands out not tinted, Apple will just do it for you.

00:08:39   Which is complicated in some ways if you wanted to have a lot of control over that, but I think it's easy enough to opt into for most apps to provide the layers that you need to so that you can show up correctly there.

00:08:51   But yeah, otherwise, certainly on iOS, it is a quieter year than certainly some that we've had, which I'm certainly not complaining about.

00:08:58   No, I mean for me, this is honestly perfect for me because as everyone knows, I'm in the middle of this giant rewrite, I'm actually very close to the end of this giant rewrite, I'm going to ship it this summer.

00:09:09   And so having the kind of new iOS workload be small this summer is a godsend for me. I'm so happy about that.

00:09:20   Because ultimately, I'm trying very hard to just make sure that I ship existing functionality on time, so to try to add more of a burden would be poor timing, at least for me this summer.

00:09:32   But also, I think this is just kind of the sign of a fairly mature platform. This is iOS 18, this has been the 18th year of this platform.

00:09:42   And it has most of what most people need to do most things. It is a very mature platform. There are certain areas where things could be improved, but it's more in the API niceties side than the new features and abilities side.

00:09:59   So things like, obviously I want to keep seeing more improvements to the tooling, more possibilities with SwiftUI, and we did get a decent number of those this summer, like a decent number of little tweaks, little helpers, a few new capabilities that we didn't have before that could be pretty useful.

00:10:14   And of course, things like bringing async and the new data race safety features into more of the system APIs and frameworks, there's a lot of work to do there on just the technical sophistication and technical maturation and migration to new technologies on all those fronts.

00:10:33   But that's mostly work for Apple to do, and for us to, when it's available, take advantage of it. So it's nice that we don't have a lot of massive, I would say not necessarily burdens, but huge obligations or responsibilities that our users will place on us, or that we will place on ourselves for new features every single year.

00:10:53   We did for a while. We had a pretty good span there where almost every summer we would have a decent amount of work to do just to keep up with the new stuff on the platform.

00:11:03   For that to slow down, I see a lot of people in the community being disappointed by that. I don't feel that way at all.

00:11:11   To me, I feel like we're getting most of what we need, and it is already so mature that my wish list is both not that long and is increasingly wishy as opposed to necessary.

00:11:25   I think what you were saying earlier about the intelligence features, that remains the big question mark, because what we were expecting was that Apple would announce some kind of AI platform features and that we would have to adopt our apps to use them or we'd be able to make new kinds of apps that we couldn't make before.

00:11:45   That is kind of the case, but what they announced mostly is not ready yet, especially in terms of what developers can do. There are a few features that Apple can use that will presumably be launching in September on day one, most of which aren't even in the betas yet.

00:12:03   Those aren't even in beta one. Even in September, even on day one of the OS launching to the public, there's not a ton that our apps can do to use the new intelligence-based features yet.

00:12:17   There's some here and there, but what I was hoping for, of a bunch of built-in models that we can use for free, seems mostly not to have happened, or it happened in much more subtle or low-level ways that we don't have nearly as much to do as I expected to.

00:12:36   Again, that's a little disappointing in terms of that was my wish, that I wanted more of that, but it also is nice that I don't feel obligated to do that for day one release in September.

00:12:48   For me and my own personal needs, I'm happy this is a light summer for developer features, but again, even for the platform, I don't consider it a bad thing that the rate of change seems to be slowing down and going towards more and more specialty areas.

00:13:05   That's the maturation of this platform. That's just where we are.

00:13:11   Yeah, and I think on that, there's also the advantage this year of there's a number of non-user-facing improvements and changes that you were just referencing to. Swift 6 is, I think, the largest of these. I feel like I'm glad I have a bit more space in the budget to work myself towards those. Those don't have as much of the hard deadline of iOS 18 or WatchOS 11 or VisionOS 2 or whatever.

00:13:38   Those days are going to come, and if you're ready or you're not. Whereas being ready for the new Swift stuff is less something that we have to be as controlled.

00:13:48   If we're not ready for that until December, that's fine. Whenever we're ready is good, so I enjoy that.

00:13:57   On the technical side, it is nice that a lot of the effort that clearly seems to be happening on Apple's side this year is making things ready for those transitions and making sure that we have all the tools we need and things are in place and lots of the system functions are ready for that.

00:14:14   There's a lot of work to be done in that sense. When we say it's a light summer in that way, I have a lot of things to work on on the user-facing side, but even once those are done, the technical-facing side also has a lot of work that I could be doing or opportunities that I've been waiting on.

00:14:32   Maybe I'll deal with that later, and later is starting to become now on many of them, which is certainly nice as well to feel ready to tackle some of those things. As I've adopted some of the new, especially the Swift concurrency stuff, a lot of my app has gotten more reliable and better.

00:14:49   It's a pretty massive, massive task to move away from the old model, and so there's lots of additional tools and things that are helping me get there faster so that more and more of the app will be moved to that. There will be more and more safety that I can rely on, more performance that my users can notice, and those kinds of things.

00:15:08   But it's nice that there's no deadline for that. As I can and will this summer, I have more opportunities to adopt those kinds of APIs.

00:15:16   Yeah, and I have found, like, having, you know, I've been writing the vast majority of my rewrite, I have written not only in Swift and SwiftUI, but also with Swift concurrency, with the async model and actors, and most of it is also already Swift 6 compatible with the data-race safety.

00:15:34   And I, you know, for anybody out there who is still on the fence about when to jump into these new technologies, this is a good opportunity, this is a good time. I can tell you that they are ready.

00:15:46   I did not, you know, earlier on in SwiftUI, it was harder to convert an entire app over to it or to use it for certain high-performance needs or certain edge cases or certain specialties. It was harder because it was less mature, it was less developed.

00:16:06   Now, SwiftUI is, what is it, like five or six years old now?

00:16:10   Something like that, yeah.

00:16:11   I can honestly say SwiftUI is ready. It is, like, you can jump into it now. It is ready. I can say the exact same thing about the Swift concurrency model and all the language constructs and a lot of the libraries around that.

00:16:22   Swift async stuff is solid. It is ready. You can jump into that now very easily.

00:16:28   And the data-race safety stuff, you don't really need a lot of maturity or age there to jump into that because that's mostly just, like, enforcing certain standards on your code. And you can jump into that now, too, and in fact, I think you should.

00:16:44   Because clearly this is the future of all Swift code. Like, clearly there's probably not going to be a future mode where you can adopt all the new language features that come out later and not do the concurrency management and the data-race safety management.

00:17:02   That's probably not going to happen. So you know at some point you're going to have to migrate your code over to the data-race safety model, so you might as well start doing that now.

00:17:12   And a summer where there's not that much to do with new APIs yet is a really good time for that. This is a great time to pay down technical debt and to lay better foundations for the future of your apps code.

00:17:25   And so, you know, for me, I personally just lucked out that, like, when I finally got around to doing my rewrite happened to be a really good time for all these different platform technologies and language features.

00:17:36   But if you haven't jumped in yet or if you're super early in your conversion to some of these things, take this summer as an opportunity to pay down some of that tech debt and to fix the foundation or write new foundations because this is just a perfect opportunity for it.

00:17:52   Yeah, and I think it's very much as I've been going through this, I think it's interesting to touch on the way that I tend to approach deciding what I'm going to work on in a summer. And usually at W2DC you tend to be focused on the high-level constructs.

00:18:05   So like, what are these big themes we're trying to pick out? Like, where does it seem? You know, Apple is usually not too subtle about what they're interested in. They want developers to be excited about each year.

00:18:15   Like, they make that part fairly clear. But exactly what that means for each app is very different. And so, you know, the week after W2DC is where I go from themes to specifics.

00:18:23   And for me, that tends to take the version of, you know, I watch, oh gosh, I probably watched a hundred session videos. Maybe there's not that many. I don't know.

00:18:30   I watched many, many session videos. I plowed through a lot of them. And it's just, when I'm doing that, I'm sort of keeping two lists.

00:18:36   I'm keeping the, you know, the user-facing, there's something that's new or expected or exciting, and I put that on the user-facing list. And then I have the technical list.

00:18:45   Like, ooh, that's a cool new API. Ooh, that's a fun way of seeing it. That's interesting. In their sample code, they're structuring it in that way.

00:18:51   I tend to sort of keep those notes concurrently. And then once I've finished watching all my videos, I'll go through that list again and be like, okay, now what does that mean for this summer?

00:19:03   So I have the big themes on the user-facing side that Apple is clearly putting Episys in that I'm going to have this kind of marketing, you know, weight behind.

00:19:11   What are my user-facing features? What are my opportunities? And then I think more importantly, I've learned over the years, too, is understanding which of these features are things that make sense for far into the future and which ones are soon.

00:19:23   And especially on the technical side, I think that is something that I often sometimes can get distracted by the new shiny thing, the new way of doing something.

00:19:31   There's some new API that I'm like, oh, that would make this so much better. But I always have to remind myself, in September, a very narrow group of my users is going to have iOS 18.

00:19:41   A very narrow group of my users are going to have something that can work there. And it's lovely when those things are backported to older versions, but that doesn't happen all the time.

00:19:49   And so it's important to just sort of have my someday maybe list where sometime maybe next winter, next spring, I may look into adopting that more. And I think that that has helped me rather than just sort of going down a path where, you know, for iOS 18, I have this one big code path, and then I have this, you know, my legacy code path somewhere else, which can sometimes be necessary.

00:20:12   But if it isn't absolutely necessary, I try and avoid it as much as I can. Because it can make the iOS 18 work easier, but I'm creating technical debt that I know I'm going to have to deal with and pay for later.

00:20:26   And I mean, it's sort of where I am now is I'm at that phase. And I think maybe the last thing is probably worth mentioning is that this is also the part of the year where, you know, while I have my user-facing list, I have my technical-facing list,

00:20:37   I also have my list of like feedbacks, radars, bugs, issues, things that I'm seeing where I watch your session video, and I'm like, that's awesome, except for this one thing.

00:20:47   And if I have a reason and a use case where I feel like something could be better, an API could be changed, you know, if there was one more option in, you know, the API that would make my use case work so much better or make something huge and awesome possible,

00:21:02   this is where I try and capture those. And, you know, I went through yesterday and I filed a bunch of bugs or a bunch of, you know, suggestions and requests because of that. Because I think, you know, if I don't do that now, this week, it's very unlikely, you know, if I come and, you know, file that feedback in a month, in a month and a half,

00:21:17   that it's out of any expectation that it is going to get into iOS 18 before it actually becomes the public version of something. And so this is the time to do that, certainly, too.

00:21:27   Obviously, there's going to be lots of bugs over the summer. And I think, you know, bugs, you can file whenever you find them, if you are so inclined, but I think the kind of enhancements and suggestions aspect of it is like putting your, your use case out into the technical team, because the reality is the technical teams that built these and the designers who designed them are designing them, you know, in the with their own sort of version of how these things will be used.

00:21:50   And if you have a new novel, awesome, interesting use case, this is the time to let them know because they may have not, you know, maybe they intentionally excluded the thing that you have in mind. But maybe they didn't. Maybe it's just that they didn't think about it. And because they're not as familiar with your use case and your domain, they just didn't go down that road.

00:22:07   And so this is the time to do that. But I tend to kind of do a round of those now. And then I'll just kind of move on and take that the API is probably going to be what the API is, to some degree, because, you know, I'll start if I need to do a workaround, I'll start thinking about how I would do a workaround.

00:22:22   You know, because obviously every year, every couple of weeks, we'll get a new beta. And that's exciting and interesting. And these things certainly evolve. But I don't know, you can't make plans or you know, expect to expect to have expectations that things will change. Unless Apple has been specific about that, you know, in the release notes said, you know, this feature is coming, or it doesn't work in this beta, but it should work in the future. And so they haven't said that at some point, at some point, you just need to just accept what it is. And then, you know, hopefully, maybe the, you know, 18.1 or 19, or whatever that the future release is going to be.

00:22:51   I think also, you know, because so many of the Apple intelligence features and things like that are coming like over the next year sometime, we might not have as, you know, as bold and clear of a dividing line between beta and release this year as we normally do.

00:23:09   You know, in some ways, like for our apps to take advantage of some of the intelligence features with the intents and stuff like that, like that, because it's going to be kind of rolling out throughout the year, and maybe some of it might not even be coming until next year, but we don't, we can't just do all of our new iOS 18 work in July and August and then have it shipped in September and we're done.

00:23:29   It's going to be more of a rolling thing throughout the year. So there is kind of a little bit different flow this year to our releases. One other thing to consider is, even though this is not super exciting to talk about, this is kind of, you know, where we actually get to use great stuff in practice in the world,

00:23:48   that because many companies and many indies tend to have a, like, we need to support iOS version, you know, N, N minus one, and N minus two, or version N minus one only, because of that, this fall, most people get to also move their release targets up, and, you know, you can start requiring iOS 16, or if you're lucky, you can start requiring iOS 17.

00:24:12   And that, even though that is not, like, a super news-breaking, awesome, you know, new, exciting thing, for a lot of people, that's where the everyday quality of life gains come from, or that's where, like, oh, we can finally use things like SwiftUI Observable, you know, which is iOS 17 only.

00:24:31   A lot of new widget interaction things were iOS 17 only. Like, there's all these iOS 17 features that many people have not been able to either use at all, or certainly couldn't require yet.

00:24:44   And now, like, iOS 17, for most apps, has high enough adoption now, you can require 17 now, and it's fine.

00:24:50   Depending on, you know, what your corporate requirements are, you may be still stuck on 16 forward, but if you're doing, if you can do 17 forward now, you can now convert a lot of your code to be simpler, and cleaner, and better, and get rid of a lot of those, as you were saying earlier, those, like, kind of branches of, all right, this is the iOS 18 version of this, this is the iOS 17 version, this is the iOS 16 version of this, like, you can get rid of a huge layer of all that stuff now, once you, because now you can safely require iOS 17 features in most cases.

00:25:16   Like, I converted Overcast to requiring iOS 17 about two weeks ago. I heard from zero people about it. I was well above the, I think I was like 93, 94% iOS 17 beforehand, and I literally have gotten no feedback about that change.

00:25:34   So, for many apps, that's great, and for me, like, that's one of the best things about every summer, is like, yeah, this, all this new stuff is great, I look forward to when I can require some of it in a year, but until then, I can now require iOS 17, and, you know, get a lot of gains there.

00:25:50   Yeah, and I think doing that, I mean, I'm, the other way, I think, I feel like I'm going to be requiring iOS 14 for Widgetsmith forever, because that was the first year widgets came out.

00:26:04   The, whatever, the 5% of users who are still running iOS 14 is a very meaningful group, but it is definitely, that's something that I can, I think about, and it is definitely the right time to think about that. I mean, I think there's certainly also, I don't think there's as many this year, but they're always interesting just to think about if there are like iOS 18 only features or ideas or things that you have, like in this case, if you had an idea for an app that is entirely control center based, like that's interesting, and obviously, in that case, you can adopt, you know, start with all of these, these great, you know,

00:26:33   language features and things sort of as part of that as well. But yes, it is certainly a good time of year to evaluate it, because I think, I think honestly, iOS 18, I've had to guess, is going to have a very fast adoption. It didn't drop any devices, which is always nice.

00:26:49   And then additionally, the genmoji thing, whenever that starts to actually make its way out into the world, you know, in the same way that people always talk about how, you know, emoji releases tend to drive faster adoption, because if you send someone an emoji that they can't display, then, you know, it messes with the conversation.

00:27:06   I think having an entirely new emoji concept that is people are going to start to expect, I think will be even faster in that way. And so I think it's going to be a quicker year in that regard. And I think we may be able to be adopting, you know, if you are in the aggressive side of iOS adoption, that iOS 18 will be a quicker one in that way.

00:27:26   So if there's something that will make your life so much easier about going iOS 18, either for a new app, or, you know, if you're just based on your user base, you think iOS 18, you know, only from the start could make sense, like it is certainly an interesting year to be a little bit more aggressive in that way, because I think there's going to be a couple of features that, you know, push it in that way.

00:27:44   Whereas even, you know, like on watchOS, there's a slightly trickier question potentially, because, you know, watchOS 11 dropped two watches, and so those are, you know, those watches are never going to be able to get watchOS 11, I'm not sure there's still, like, being too aggressive there is going to start to be a bit much more of a challenging question, I think, from a user's perspective.

00:28:03   And also, you know, what also might help here is there's some pretty substantial potential Apple hardware upgrade cycles this fall. Everyone, you know, because the Apple intelligence features on the phone currently only work on the 15 Pro and Pro Max, that's going to probably have more iPhone sales this fall than usual, and especially through this coming year.

00:28:27   As those features get out into the world and people start seeing them and wanting to use them, most people don't have 15 Pros yet, so most people are going to be upgrading their iPhone maybe a little more aggressively.

00:28:35   Also, the Apple Watch is rumored to have a major redesign for its 10th release this fall. That also might drive those watch sales a little bit, which will, and of course, every new device Apple sells comes with the latest OS.

00:28:48   So if Apple does have a strong sales season for iPhones and watches, we will see faster than usual adoption of iOS 18 and watchOS, what are we, 11?

00:28:57   11.

00:28:58   I've lost track, yeah, watchOS 11. I wish they would just align the numbers, just call everything 18. I don't care if you skip some, like, we'll get over it in a year, just call everything 18, please, but no, they'll never do that.

00:29:08   Anyway, best of luck with everyone, with your summers this year. Hopefully it's easy if you want it to be easy, and you have fun stuff to do if you want fun stuff to do. At least you can require one more version of the OS and get some gains that way.

00:29:22   Thank you everybody for listening, and we'll talk to you in two weeks.

00:29:25   Bye.

00:29:26   [ Silence ]