385: Temporal Smear


00:00:00   So what is this thing, there's a app or game or something where you just have to hold your finger on the screen? What is the backstory to this this troll thing that you posted?

00:00:07   I know almost nothing about the app, but what I've gathered from context is like it's a contest, kind of like memory to like trivia, HQ trivia or whatever, where it's like a mobile game where everyone can participate. It's like that, but the game is how long can you hold your finger on the screen? And as you can imagine, people can do that for really long. And if it's like a worldwide group thing, like if you look at some of the timers and some of those videos that I showed you, I think some of them were at nine hours. So streamers do it right, like, oh, we're doing this thing, how long can you keep your finger on the screen of your phone? And it's surprisingly hard, because, you know,

00:00:37   you get lazy or you get bored after a couple of hours or anyway, that's what I assume was what's happening. I just liked it because of people trolling the hey dingus thing where the the strategy was because they're they're like streamers. The the culture of streaming is such that you have to communicate with the people in the chat, essentially, by reading their usernames and addressing them, right? Because you're there for nine hours, like the whole thing of streaming, like especially if someone subscribes, hey, thanks, whatever, for the two month subscription, like, there's things that you have to do culturally as a streamer.

00:01:07   So they're susceptible to what's the social hacking called?

00:01:11   Social engineering, social engineering. Yeah, there you go. They're very susceptible to that. So someone just changed their username to H E Y space capital Z space R E. It's very good. It's very good. So someone so they would say something or subscribe to the channel whenever in the stream, it would read out, Hey, Zee, Ree, thanks for the sub. And then there they would act on their phone. And that would cause their finger to be because it's full screen, right?

00:01:37   Siri would go full screen and they would basically take their finger off thing after nine hours holding their finger on their phone screen application to resign active. Yep. And the thing is, they didn't realize it was they like, Oh my God, I just activated the thing on my phone. And it's full screen. You can't see it's all black. And then when the black screen goes away, what's left underneath it is a screen that says you lose from the from the finger holding.

00:01:58   It's so good, but so, so bad doing it after nine hours is the best is it you don't do it in the first hour, right? You don't do it immediately. And just the look on these people's faces. The one person who just got up from his desk and left the room.

00:02:17   And the thing is they pronounced it that you're like, there's no way that activations going to work. Hey, Zee, Ree, like they read it out like that, but sure enough to do. Oh, God.

00:02:30   I had some fun this past week dealing with the, um, our continued efforts to try to add the bootleg feed to our membership in a way that does not require a ton of extra work. Challenge number one was I have to figure out how to make myself sound as bad as you guys do over Skype.

00:02:52   Well, well, slow down, slow down, slow down, slow down. There's, there's an or here that you're not considering. So to back up just ever so quickly and slightly, we basically have two choices for this forthcoming bootleg. And this week is not going to be the week unless Marco has news that even I haven't heard. But nope, I sure don't. We can either do the quick and dirty approach, which is basically take the recording of Marco locally and the two of us via Skype and just throw that up after trimming, you know, the teeniest little bit in the

00:03:22   front of the end that is just private for the three of us. And that is what we broadcast over the live stream is it's being broadcast from my computer. It is getting my local track and it's getting John and Casey via Skype, which is exactly what I'm hearing. It's been what we've always broadcast over the live stream. Right.

00:03:36   Then the alternative is, which, for the record, John and I have both independently volunteered to do is we wait for all three of our files to be in the same spot. And then we used for we use forecast and other tools to just line them up and barf out as quickly as possible a lined up local recording merged version of the three of us, which would sound way better, but be somewhere between annoyingly more work and considerably more work.

00:04:03   Right. And it would sound better. It would not have any of the editing fixes that I usually do things like undoing talk overs and cutting out really boring stories that I stumble over and try to get try to get out, stuff like that. But I've been resisting that plan because I know that while lining up the tracks and getting the combo mix of the three of us usually works well.

00:04:29   It sometimes doesn't. And it sometimes requires like 45 minutes of piecing together multiple files and lining stuff up and everything. Whereas the live stream I could publish in three minutes after we finish recording, like the live stream can be published very quickly, like just the straight up bootleg that has them via Skype and me via local.

00:04:50   Whereas the the, you know, put together our files thing could usually be published within maybe a half hour, maybe 45 minutes, but sometimes might take a couple hours. And that that work all has to be done before I go to bed for the, you know, after we record where, you know, all three of us are kind of reluctant to do a lot of work, you know, that late at night after retired.

00:05:11   And it is it is a variable amount of time that is usually moderate, but can sometimes be more than moderate. So my my thinking was, let's like, from what live stream bootleg fans tell us, it seems like times of the essence. It seems like the main reason they want it is to get it as quickly as possible.

00:05:33   But if we can make it sound a lot better with, you know, half hour of work, well, that's that's something. So, you know, we've been debating this anyway. All this is to say to my initial plan has just been put up the exactly what's broadcast from Skype and and even though it doesn't sound as good people who want the live stream bootleg don't seem to care and seem to do seem to want it quickly. So speed is important to them, it seems so

00:06:02   I first had to figure out how to make myself sound as bad as they do over Skype. So I have combined a this I have this very long chain and audio hijack to do all this.

00:06:15   And I combine like a dynamics processor to basically be a crude compressor to really squish my dynamics into the same range. They are so we're all the same volume. Then the critical discovery was I have to apply a low pass filter to my voice or I just lop off any frequency above about eight kilohertz and and I realized then well

00:06:35   MP3 is can then you can reduce the sampling rate down from forty four point one kilohertz, which is CD audio quality down to like twenty two kilohertz because everything, you know, eight kilohertz and below frequency wise can be represented perfectly with a twenty two kilohertz sampling rate.

00:06:53   And the very first time I tried importing one of these files into our CMS.

00:06:59   The duration detection broke.

00:07:04   And this will be down a rabbit hole, which led me to realize, oh, dropping the sample rate to twenty two kilohertz made it no longer technically an MP3. It became an MP2.

00:07:16   What?

00:07:19   This is this is old like stuff from the nineties that most people have forgotten about, but MP3, which is MPEG one layer three audio only supports thirty two forty four and forty eight kilohertz as the sample rate. If you actually set the sample rate lower than thirty two kilohertz and or if you set to a certain certain subset of bit rates that are only available in MP2 and two point five kind of weird extension formats and perfume encoder can still play it and will gladly encode it.

00:07:47   But what it's actually technically encoding is an MPEG two file.

00:07:52   It's still layer three and it's either MPEG two or this kind of like thing that's kind of unofficially called MPEG two point five.

00:07:59   And all of these are part of MP3 modern encoders and decoders, even though sometimes it's actually MPEG two layer three.

00:08:10   As you can all imagine, I wrote the duration detection code from scratch to read MP3 in PHP for CMS.

00:08:19   Of course I did.

00:08:20   Of course you did.

00:08:21   And I based this on my the same thing I do in Overcast, where in Overcast I have my own complete MP3 timing and seeking code because the Apple frameworks are not incredibly good always at dealing with dynamic ad insertion from the big publisher podcasts or from doing precise seeking when the ID three tag is large, like if there's a large artwork or a large lot of chapters in a file.

00:08:45   So what I do in Overcast is I manually read the MP3. I have to look at every chunk of what's called a frame, which is like a certain chunk of audio in the MPEG format.

00:08:54   I look at every chunk. I see what byte offset it's at and I store that in a seek table so that way I can precisely seek to exactly the right byte in a file and have the duration exactly right.

00:09:05   So you don't like run over and have it start counting up again at the end and stuff like that.

00:09:08   So I did the same thing in PHP for for our CMS.

00:09:13   What be so I would never have to enter duration manually.

00:09:15   I'd said, OK, I'm going to do the same thing.

00:09:16   I'm going to read MP3.

00:09:17   And it turns out that I did not support MP2.

00:09:22   And so I've been part of what I had to do this past week instead of working on iOS 14 or my new app widget or app clips or any of the new modern stuff I'm supposed to be doing right now.

00:09:33   Instead, I was writing in PHP and then later and we have to see to complete the overcast implementation, expanding my MP3 parsing library to also support MPEG 2 and 2.5 frames and all three layers.

00:09:49   And trying to look up technical information on the MP3 file format is quite an ordeal because the actual documentation that's publicly available for a lot of the stuff is like forum post from 2001 or like a Web page from like 1998.

00:10:09   That looks like it's from 1998 that like it's like, oh, here here's here's the MP3 frame header layout.

00:10:13   Here's like how many how do you know how many bytes the frame is?

00:10:18   Well, MP3 it's easy.

00:10:20   You can find little snippets.

00:10:21   MP2 there's not a lot of information on that.

00:10:24   So you have to do you have to like dig up like weird forum posts.

00:10:27   And if you're lucky and obscure Stack Overflow answer about like how how many samples are in a frame, how big is the frame?

00:10:36   Like it's so I had to do a lot of like really deep dive digging to look up very old technology that I'm re implementing for no good reason.

00:10:43   But for my own personal obsession reasons, all this during the week following WWDC 2020, I'm looking up how to decode MP2 files.

00:10:54   You can just find the spec online.

00:10:56   I was unable to find anything that definitively included a lot of that stuff.

00:11:00   Do you have to pay for it?

00:11:01   Maybe like I mean, I don't know if it's like an open spec or if it's you have to be a member of the consortium and pay money or something.

00:11:08   But I mean, surely there is a specification somewhere.

00:11:11   So Fraunhofer was the institute that did most of the initial inventing and did all had all the patents on it.

00:11:16   And I was going to say, maybe you can find the spec, but it's in German.

00:11:19   Well, no, I mean, they sold like they had their own encoder and reference decoder.

00:11:25   And it's actually a very good encoder.

00:11:26   And I wish I could use it.

00:11:28   And it's what Apple uses in logic and iTunes.

00:11:31   It's in almost any commercial product that encodes MP3 is usually it's using the Fraunhofer encoder, which they licensed back forever ago.

00:11:39   Problem is, when the MP3 and the last MP3 patents expired a couple of years back, Fraunhofer stopped licensing it because they could no longer make any money from it.

00:11:47   So they just shut down the whole program.

00:11:48   So now you can't get you like you cannot license a new version of their encoder for a new product at any cost.

00:11:54   Believe me, I tried. I asked because I wanted it for forecast because it's actually better than than the lambic or that I use.

00:11:59   It's actually better than that at low bit rates for speech.

00:12:01   And it's faster, but you can't get it like they just aren't licensing anymore.

00:12:06   So like it's it's such an old format and there's no more patents active on it.

00:12:11   So there's no more business in licensing it.

00:12:13   So basically no one has documented it.

00:12:16   And like the only the main documentation of it seems to be just like the source code to things that decode MP3s.

00:12:23   So they have to look at something that already had already decodes them and look at the source code and see, oh, here's here's how they do this.

00:12:30   OK, I guess that has to be 144 samples long this time.

00:12:34   Oh, look, in this weird switch statement, this is 160.

00:12:38   OK, I guess that's the value like that.

00:12:40   There is no seeming concrete place to find this information online.

00:12:44   Delightful. Yeah. So anyway, that's why Overcast is not yet ready for iOS 14.

00:12:49   It's all our fault. Now, to be clear, as in the chats that earlier this all started from you desiring to sound worse.

00:12:57   That's right. Yeah. Well, it's me taking advantage of the fact that, well, if I'm going to sound worse, I might as well save some space in the process.

00:13:04   That's fair. But oh, my goodness, this is this is a significant rabbit hole.

00:13:08   You got nerd sniped real good.

00:13:10   I mean, to be fair, I basically sniped myself.

00:13:13   But, you know, I am very good at that when it comes to audio, low level audio hacking.

00:13:18   Like I'm trying to figure out like what the heck to do with my UI code in this in the present day.

00:13:24   And and I have some ambitious plans that I might like rewrite a whole bunch of it and everything.

00:13:29   But writing UI code, dealing with UI code is like it just destroys my my motivation and my productivity.

00:13:35   I don't enjoy it at all.

00:13:36   And which actually might inform my decision.

00:13:39   And I want to spend as little time on those possible because it just it just sucks a time suck and it's paralyzing to to feature development.

00:13:45   But get me involved in a low level like audio hole and I will gladly dive into that and kill like a day on some weird hack.

00:13:55   Like I tried I tried writing code to detect dynamic ad insertion, which I actually partially succeeded at, but not enough to be to do anything useful.

00:14:05   But like I just I love low level audio digging for, you know, things that might prove useful or generally don't prove useful for for doing this weird MP3 hacking.

00:14:19   I just it's I get great, great joy out of it where I don't get that joy out of like I have to make another screen of UI.

00:14:26   Like I hate doing that.

00:14:27   But this kind of stuff, I love this kind of stuff.

00:14:30   But you'll love it once you start using Swift UI, right?

00:14:33   Then it'll be fun again.

00:14:34   Yeah, that was a joke.

00:14:36   I think he might actually find it less tedious.

00:14:39   I mean, yes, but that would require Marco to put on his big boy pants and actually learn Swift.

00:14:43   I mean, he should really wait another year because he'll find it less tedious until he hits his first roadblock and then he'll be like, I should just do this new.

00:14:49   I can.

00:14:50   Well, and well, yeah.

00:14:52   So first of all, you're both right.

00:14:54   But but I think, OK, so I guess we're talking about this now.

00:15:00   Part of my thinking, I guess this may be his follow ups.

00:15:05   It's about Overcast which exists.

00:15:07   Part of my thinking is that my skill set is rapidly, rapidly aging.

00:15:14   Like the longer I go without really using a lot of Swift, which has been the case, like I will occasionally write like one quick thing in it, but I'm still mostly not using it.

00:15:24   So the longer that goes, like I look at the content from WVDC and any modern documentation, pretty much any modern sample code online, blog posts explaining new technologies and everything.

00:15:37   And I only kind of understand it.

00:15:40   So far, I know Swift the way I know JavaScript.

00:15:43   I can read it.

00:15:45   I can write it, but I never really learned it and I'm not very good at it.

00:15:50   And so I tend to avoid it often at my own, often at significant expense to like what my stuff can do or what it should do or how it should be written.

00:15:58   So I can keep doing this and I can keep kind of like knowing enough Swift to get by, but still often finding myself like translating a Swift snippet I see online back to Objective-C because the file I'm writing is already Objective-C and I might as well leave it that way.

00:16:13   But my skill set is aging very quickly.

00:16:16   And it's been aging for, you know, what, six years, seven years now that Swift has been out.

00:16:21   But, you know, and the first couple of years, I think it made sense to hold off, let it get polished, you know, let all the stuff settle down.

00:16:27   But we're past that point now for Swift by a good couple of years at least.

00:16:31   So I need to be writing a lot more Swift than I am because if I keep going the way I'm going, where I basically never learn it, I'm never going to be good at it the same way I'm not good at JavaScript.

00:16:42   But I can get away with not being good at JavaScript because I don't mostly write web apps.

00:16:45   I do mostly write iOS apps and I can no longer get away with not knowing it as badly as I have not been knowing it and not been using it.

00:16:56   And Swift UI is very young still.

00:17:01   Swift UI is a couple of years behind Swift, you know, obviously in that pattern of like when is it a good idea to really jump in on it.

00:17:08   But Swift UI is clearly, if not the future, it is going to probably at least be a significant part of the future.

00:17:16   And everything is getting more cross platform, everything that Apple is doing is getting more like, hey, use this thing and then you can run it on iPad and iPhone and the Mac and maybe the Apple TV and who knows, right?

00:17:28   And if they continue to push forward into things like possibly AR goggles, glasses, whatever you want to call them, or, you know, including stuff like the watch, these kind of like specialized things, Swift UI becoming increasingly important.

00:17:43   Swift already is very, very important.

00:17:46   And I really don't know either of them.

00:17:48   And so if I'm going to continue to have the career that I have, I need to know them.

00:17:53   Like it's simple as that. I need to jump in.

00:17:55   I need to learn them extremely well because this is my career and I can keep not knowing them, but I'm just making my knowledge totally obsolete.

00:18:06   And if I went back right now and tried to get a career as a web developer, I really couldn't.

00:18:12   I'd be screwed.

00:18:13   Because I did let that part of my expertise get obsolete.

00:18:17   And I fell so far behind because I haven't been doing it and I frankly don't want to, but like I've been I've been so far behind web development that like I basically can't be a web developer anymore.

00:18:30   And it would take me years to try to catch up if I really wanted to.

00:18:33   I can't let myself get that way on the iOS side as well.

00:18:39   So one thing I'm thinking about doing is taking the next six to eight months, probably, and rewriting large parts of my UI in Swift and Swift UI.

00:18:51   Oh, Marco, no, no.

00:18:53   Really going in and adopting it heavily.

00:18:56   Because I don't like if I don't do that, I'm never going to like I'm never going to jump in.

00:19:01   I'm never going to really get myself in there.

00:19:04   This might be a little early for Swift UI, but it's not too early for Swift.

00:19:09   No, and my UI is simple enough.

00:19:11   And I and there's there's parts of this where I need to modernize like keep in mind, I wrote most overcast code, like most of the basic UI code stuff like you know, most of the basic lists that the table views like the list screens, which is most of the app.

00:19:26   I wrote most of that six years ago.

00:19:29   So it predates a lot of modern technologies.

00:19:33   It's still like, you know, I use auto layout pretty sparingly.

00:19:37   I still don't do a great job of adopting to dynamic text sizes, which is an accessibility issue, which I do want to solve.

00:19:47   And I currently do a pretty bad job of it.

00:19:49   And there's a whole bunch of other like, you know, stuff you get for free that I don't do, or that I don't support things like, you know, I have to manually do all the dark mode stuff to manually do all the font sizing stuff.

00:20:02   It's just it, I have a lot of cruft and and technical debt in my UI layer.

00:20:09   And I did I did all this great modernization of the audio layer this past year, and that felt great.

00:20:14   But the UI is really stale.

00:20:16   And there's things that I want to do.

00:20:17   There's features I want to do.

00:20:18   There's UI changes I want to make.

00:20:20   There's redesign I need to do because the app is also, by the way, looking, I think, very dated right now, especially the list screens and especially the root screen.

00:20:29   It's looking very, very dated and does not fit in the modern aesthetic at all.

00:20:32   And so I want to do all this.

00:20:34   I want to do all this redesigning.

00:20:35   I want to jump in.

00:20:35   I want to modernize my skills.

00:20:37   It is a little aggressive feeling to do that, like this fall or winter, which is when it would probably be released.

00:20:44   But I also at the same time, like I control the whole app, I can I can do whatever I want.

00:20:51   Like I have no boss saying you have to support back to iOS nine.

00:20:55   Like I don't have that.

00:20:56   I don't have the problem.

00:20:58   So I don't know.

00:20:59   Do you think it's too soon?

00:21:00   Like if I suppose I like jump into this this summer, like probably next week, I'll start, you know, really modernizing stuff and like in a nice, totally broken get branch.

00:21:09   So if I start doing that this summer, I can probably ship it somewhere around December, January.

00:21:17   It would require iOS 14.

00:21:20   Last year, it kind of bit me to require 13 on at like week two.

00:21:27   And so I ended up going back and reverting that and going back to requiring 12, like about a month later.

00:21:33   But 13 and 12 or 13 and 14 have the same compatibility matrix.

00:21:37   So I'm not losing any devices this year.

00:21:40   I don't know.

00:21:41   So I I think it is long since time for you to learn Swift.

00:21:48   I think you are a couple of years late on when it was reasonably acceptable to learn Swift.

00:21:54   I agree that the first couple of years was a bit aggressive to learn Swift.

00:21:58   And I think that now you're a couple of years behind when I think it was reasonable to do so.

00:22:02   Swift UI.

00:22:05   So I have not touched any of the new Swift UI stuff in iOS 14.

00:22:11   And the experience I had with it in 13, I would characterize as pretty negative.

00:22:17   But I need to throw out the caveat that I never really took the time to properly learn it.

00:22:24   I was doing much like what you and I do with JavaScript, where I just threw some junk against the wall and some of it stuck.

00:22:31   And OK, fine, that's good enough.

00:22:33   I don't think that I gave it a fair shake.

00:22:37   But that being said, I was not doing complicated things at all.

00:22:41   I basically only used it for static screens in Peek-a-view.

00:22:44   And I think like two thirds of them I ripped out, went back to UIKit because I just couldn't get like rotation to work properly or I couldn't get something else to work properly.

00:22:52   Things that I felt like I should have gotten for free.

00:22:55   Now, again, very well could have been user error.

00:22:58   Very, very well could have been user error.

00:23:00   But it seems to me like unless you're doing something that explicitly requires Swift UI, widgets, for example, the new complication stuff, I personally still think it's a bit early for Swift UI.

00:23:13   I think that I might be wrong in saying that.

00:23:16   I might be Marco a few years ago saying I don't want to touch Swift.

00:23:19   You know what I mean?

00:23:19   Like, I think maybe this is my own failings expressing themselves verbally.

00:23:23   But I strongly encourage you to embrace Swift.

00:23:27   I am pretty hesitant about you embracing Swift UI.

00:23:33   Coincidentally, I think, Jon, you've done more Swift UI than I have at this point because a lot of your Mac apps are Swift UI, aren't they?

00:23:40   Well, I mean, there's not a lot to do my apps.

00:23:42   But yeah, I intentionally use Swift UI for all of the UI that you actually see in Switch class, which is not much.

00:23:48   But it's Swift UI, which was a fun experiment.

00:23:51   And a lot of even for that limited amount that I did, like, oh, it's just one little window with a bunch of icons on it.

00:23:56   Well, it's a weird window, right?

00:23:58   Like it's not a normal window.

00:23:59   And so a lot of the hoops that I had to jump through to make my weird window out of Swift UI, which is decidedly not about that kind of weirdness.

00:24:07   You know what I mean?

00:24:07   Like all the Swift UI is like, oh, here you are on your phone and you want to list a bunch of vegetables.

00:24:11   Like it's always what it is, right?

00:24:13   It's like, what if I want to have a window with no Chrome and it's not a rectangle and it's partially transparent and it accepts all kinds of clicks, including right clicks and has to process them successfully.

00:24:23   But there's no first responder in Swift UI.

00:24:25   And like, you know, it is actually a fairly tricky use case.

00:24:28   And even in even in this tiny little thing, the stuff they introduced this year, I was like, oh, my God, I wish I had that last year.

00:24:35   That would have made stuff a lot easier, as you would expect.

00:24:38   It was year to literally year two of Swift UI, right?

00:24:41   So I think it is early.

00:24:43   But the jump from year one to year two is pretty significant in terms of like, I would have killed for that last year.

00:24:48   And unfortunately, it's not like, oh, I'll run out and use it now.

00:24:51   Well, no, I won't, because I would be cutting off, you know, Catalina people.

00:24:54   And I'm not quite ready to do that alone.

00:24:56   I don't know if you are going to stay in Catalina once Big Sur comes out.

00:24:59   But what I would suggest for you, considering it's year two and there has been a big leap here and knowing most of what Overcast screens look like.

00:25:08   I think it is plausible that you could do all of Overcast UI except for maybe one or two tricky bits in a fairly straightforward way with Swift UI.

00:25:18   But I would what I would suggest to you is make like a new dummy thing with just a bunch of fixture data that is the shape of your internal model logic, but is like not real.

00:25:29   Right. And then just make a quote unquote mock up UI entirely in Swift UI.

00:25:34   It's like a nonfunctional app, doesn't actually play any music, but you can go through all the screens and do all the things right.

00:25:40   And just see where that takes you.

00:25:42   Like you could end up like Casey and be like, I'm on screen number one and I can't get this friggin label to be where I want or it screws up when I rotate or dynamic text is weird or there's this weird drawing bug.

00:25:50   And then you could just say, then you just stop there.

00:25:52   OK, like, I'll visit this next year because there's no way in hell.

00:25:54   Because that's that's a lot of what was happening with me.

00:25:56   I would bang my head against something and be like, even me having written one Mac app at that point, I was like, I know how to do this in AppKit.

00:26:03   I could be done two minutes, but not in Swift UI.

00:26:06   I don't. So I'd spend an hour banging my head against how to do this thing I already know how to do in this different API.

00:26:11   And that's frustrating. But assuming you don't hit anything like that, make essentially the mock up version of Overcast with all the screens and all the text and just a bunch of fixture data.

00:26:20   And you just wander through it with your finger.

00:26:22   And, you know, the play button does nothing.

00:26:24   And you just navigate. And like, if you can build that and if you build that once, like in this empty app, if you do that and you realize after the first day, you've got like half the time.

00:26:33   The screen's on. You're like, wow, this is way faster than UIKit because that is possible.

00:26:36   That's the promise of Swift UI.

00:26:38   It's really easy to mock stuff up real quickly.

00:26:41   That looks essentially finished.

00:26:43   Threading the data through it is trickier.

00:26:45   And if you hit one of those weird bugs, it's tricky.

00:26:47   But I think that would be the least waste of your time is to sort of do that one off that you plan to throw away just to assess.

00:26:54   This is a thing worth pursuing because if you go into the guts of your real app and try to rip a thing out and put a real view in, it's always going to be weird.

00:26:59   And you're going to be trying to wedge it in with the data that you have and it's not going to fit the Swift model.

00:27:04   I would say just make a test app to assess, is this the time to do it or should I wait until next year?

00:27:10   Because I think you'll get the answer pretty quickly.

00:27:12   I think that's very reasonable.

00:27:13   Yeah, that's a good idea. Thanks.

00:27:15   Because like, actually, like I've done like little test harness projects before.

00:27:19   Like a couple years ago, I basically wrote my own replacement for UI split view controller, humorously enough to achieve all the stuff that it now supports natively.

00:27:30   But I wrote that whole thing.

00:27:33   I did the same thing then.

00:27:34   Like I created a test, a sample project that ran like my custom container controller here and just had like blank red and blue screens for each.

00:27:45   And I was like, okay, the red is the detail, the other one is the primary and it was just like solid color screens and just like large buttons just like, you know, push to the next screen, pop back to the previous one, stuff like that.

00:27:57   So I think it's probably a good idea to do this too.

00:28:00   You're right.

00:28:00   That's basically to see how far I get.

00:28:02   You could even go all the way if you wanted to go hog and do like, you now have the ability to do a top to bottom Swift UI app as in like there is no like main function, there's no app delegate, there's no like it's just Swift UI from top to bottom.

00:28:16   I don't think that's going to work for you.

00:28:18   But for your mockup purposes, that might be a fun way to learn that because that also gives you all like the it's an easy place.

00:28:23   You can have window groups and scenes and, you know, in addition to all the navigation controller push pop stuff.

00:28:28   So I'm not that familiar with what it looks like on the UI kit side of things, but there's so much more this year than there was last year that doing a quick mockup like that seems like you'd learn a lot in the process.

00:28:39   First of all, and I think as soon as you start to do one of your, your first actual real screen with fake data, then you, you know, you'd find out if you're going to hit these layout issues or not.

00:28:48   Because it's really easy to do simple things and it's medium okay to do like a little bit tricky things and it seems like it's still, you have to be a bit of a wizard to do very hard things.

00:28:59   I think that's a very reasonable assessment.

00:29:02   I mean, Swift UI, when it, when you're doing things that it wants you to do is the work of fricking magic.

00:29:07   It is incredible what it can do.

00:29:10   But when you go even slightly off the beaten path, just like you said, John, it gets real ugly real quick, or at least that's my experience.

00:29:17   Plus, very similar to like Combine or RX, it's a very, very, very different approach to UI development, which doesn't make it worse by any means, but it's very different.

00:29:28   If I were a betting man, I would guess that Marco, you will try Swift, Swift UI, you will find it wanting and then you will start digging into some of the last two years worth of Collection View updates because, oh boy, there's good stuff there.

00:29:43   Because you don't really even need TableView anymore. You can do everything with Collection View. You can do a lot of the same Swift UI style composable, is that the word I'm looking for? I think it is, composable layouts.

00:29:52   And you can do incredible, incredible stuff with Collection View now.

00:29:56   And I think for me, that's what I turn to.

00:30:01   I've been, and we might talk about this in the post show, but I've been thinking about some new stuff for the summer for myself.

00:30:06   And I was having the same debate earlier today, like, do I want to do Swift UI for this? Or do I want to do like some of it in Swift UI, some of it in UIKit?

00:30:14   And what I came down to was, especially in the summer where I would want this to ship, you know, right as iOS 14 lands, I don't want to be trying to bite off a big Swift UI project.

00:30:25   I want to do whatever I can UIKit and use Swift UI only where I have to.

00:30:29   Your mileage may vary, especially if you're not trying to hit any sort of urgent deadline.

00:30:34   But yeah, I think if I were betting man, you'll end up using some of the really awesome new stuff in UIKit.

00:30:41   And I say that with not a drip of sarcasm. There's some really great stuff there, particularly around Collection View.

00:30:46   But I don't see you going all in on Swift UI.

00:30:49   Yeah, I mean, well the good thing is you don't need to go all in on Swift UI.

00:30:52   Like, you know, they let you do it piecemeal.

00:30:54   And some kind of hybrid approach is probably what I will end up with and is probably what most people would still end up with these days.

00:30:59   But the good thing is, as time goes on, I'm caring less and less about the fine details of exactly how my app looks pixel perfectly.

00:31:09   Because what we're seeing is the way Apple is moving.

00:31:12   Like, for a while, if you would open up an old Mac app, like a great example of this was the old version of Net News Wire.

00:31:20   As Mac OS changed over time, as the theme of Mac OS, the graphical theme, got tweaked over time, not to the extent that we just got with Big Sur,

00:31:31   but like the small tweaks as it kind of lost its brushed metal and it kind of got a little bit more flat and a little bit grayer,

00:31:40   and then occasional translucency, and then lack of translucency, and then translucency again.

00:31:44   We swear it's not Vista this time, translucency.

00:31:46   Throughout all those changes, if you were using the basic Mac app kit controls, the appearance of your app, like Net News Wire,

00:31:56   the appearance would change with the system.

00:31:58   Every time the system changed appearance, your app would just basically get it for free if you were using the stock stuff and not totally hacking the crap out of it or customizing stuff from scratch.

00:32:08   So the closer you adhered to the system look, the more you would get for free whenever the system had a redesign.

00:32:14   And you would occasionally get even new functionality from the built-in widgets in your app without having to rewrite everything,

00:32:22   and often without even issuing new builds. Sometimes just the old build would just inherit the stuff almost always.

00:32:27   On iOS, it never quite worked that way. On iOS, we started out from this era of everything designed pixel perfect down to the pixel, the whole screen was designed perfectly.

00:32:37   And so as the iOS hardware and as the iOS theme evolved over time, apps wouldn't get it for free.

00:32:45   They would give you this compatibility shim that your app would run in so that your app would still continue to look old or be the size of the old phones on new hardware or on new OSes,

00:32:55   because apps weren't scalable. The way apps were designed, the way the system frameworks were designed, if you tried to scale stuff without the developer opting into it, you'd break a lot of apps.

00:33:05   It seems like where we're going is closer towards where the Mac has been in that regard, where what Apple is clearly showing us that it wants us to do,

00:33:17   and what it's doing with its apps to a large degree, is push everything towards more and more stock components, less customization, less custom controls,

00:33:31   more just using the stock stuff without modifying it too much, and then letting the platform it's running on interpret that in different ways.

00:33:40   So that way you could have one code base and with relatively few tweaks, be able to have iPhone, iPad, Mac via Catalyst now, and then maybe in the future, direct Swift UI compilation for Mac, depending on how much your app needs it and stuff like that.

00:33:56   You could have components of your app running on the watch, you could have components of your app running on the TV, God knows what else Apple's going to do in the future.

00:34:02   They're obviously pushing more and more towards this thing of just stock use of the components as much as possible.

00:34:11   Right now, my app is buried under a mountain of technical debt and custom crap in the UI department, because I wrote most of it five or six years ago,

00:34:21   when you had to do a lot of that stuff to get good results and to have your app look competitive, to have it look like a nicely made app.

00:34:30   But I think we're heading away from that now. We're clearly heading more towards that old Mac style of doing things, and these days, breadth of having your app run on everything,

00:34:41   having it look right on everything, or at least look decent on everything, and having it fit in on every platform, is becoming more important for a lot of different audiences.

00:34:49   So I think what I want to do is drop a lot of the custom stuff I'm doing, or significantly reduce a lot of the custom stuff I'm doing, and just use a bunch of stock stuff.

00:35:01   This might even extend to dropping my custom font, I've even thought about that, because that's more complicated than you might think of a decision.

00:35:07   But anyway, I think we're heading this direction now, and there's always going to be, like the apps that have 600 iOS developers, and you're like,

00:35:16   "What the heck are they all doing all day?" Those apps, they can make custom UIs on every platform, although they don't usually, they usually use electronic crap somehow.

00:35:24   But anyway, apps that have massive teams, let them do all the pixel-perfect design, but when you have an indie app like mine, that's really, I think, losing a lot of the need to do that kind of stuff.

00:35:38   And it's certainly losing the value of, like, is it really worth doing all that stuff? Meanwhile, what customers want is to take advantage of all the new iOS stuff every year.

00:35:47   I think I mostly agree with you. I would say that I think a well-designed app stands out, just period. Not to say that you're implying otherwise, or saying otherwise, but I think there is still an appreciation for a really well-designed app.

00:36:12   I think that it's a little bit more important across platforms over pixel-perfectness on each platform. And it's not that pixel-perfect isn't important, it's just that it's less important than it used to be, and breath is more important than it used to be.

00:36:23   Which I think is mostly what you were saying, but I don't know. I really think that it is for the best, for me anyway, as a really crummy designer and an even worse UI implementer, if I can rely on stock controls and get away with it.

00:36:44   I think one of the nice things about SwiftUI is that it makes it pretty easy to tweak a stock control without having to completely throw the baby out with the bathwater.

00:36:56   To add a corner radius, if I recall correctly, is pretty easy. Things, which actually isn't terrible in UIKit, but I remember early on it was real bad.

00:37:03   I don't know, I feel like SwiftUI does have some benefits there, but I still stand by, I don't know if it's really quite ready in my personal opinion.

00:37:13   And the other issue is, if I do jump in and require iOS 14 this winter, so after it's been out for maybe three months is when I might require it, then, and by the way, that's optimistic.

00:37:28   Maybe this UI redesign takes me a very long time, maybe it's actually not until next spring or summer, who knows.

00:37:34   But suppose it's like December, January kind of range, and assuming iOS 14 comes out roughly when iOS has usually come out, which is usually mid-September or so.

00:37:45   Maybe it's going to be later this year because everything's delayed because of the virus, who knows.

00:37:50   But assuming it comes out roughly mid-September like it usually does, I'm going to have a few months of install base.

00:37:57   So if I release this stuff that requires it, how long is it going to be before I can stop supporting iOS 12 and 13?

00:38:07   I got to do it sometime, but I don't know.

00:38:11   - I don't envy you.

00:38:12   I actually have my own problems, like I said, that I want to talk to you guys about at some point.

00:38:15   We may or may not get to it today, but yeah, it's a tough spot to be in.

00:38:20   (upbeat music)

00:38:21   - We are sponsored this week by Linode Cloud Hosting, my favorite place to run servers.

00:38:26   Whether you're working on a personal project or managing your enterprise's infrastructure, Linode Cloud Hosting has the pricing, support, and scale you need to take your project to the next level.

00:38:36   With 11 data centers worldwide, and they're always adding more, featuring enterprise-grade hardware and the next generation Linode network, Linode Cloud Hosting delivers server performance you need and you expect at prices that you will definitely appreciate and that you might not expect.

00:38:51   Our listeners can also get a $20 credit with promo code ATP2020.

00:38:56   So, Linode is just an amazing host.

00:38:58   I have hosted all of my servers there for things like my blog server, the ATP server, Overcast, anything that needs, all of Overcast, it's like 25, 30 servers.

00:39:09   Anything that needs actual server hosting where you have root access, you can install the software you want.

00:39:15   Whether this is something like an app server that you wrote, a backend for maybe your app or your business, or things like a LAMP stack, game servers, WordPress, whatever it might be that you need a server for, Linode is the place to do it.

00:39:28   The pricing is incredible, the value is great.

00:39:31   Whenever over time technology gets better and it allows them to offer you more for your money, they do.

00:39:37   They give you like a one-click upgrade and you can upgrade your server at the same price and get more resources.

00:39:41   Their plans are just $5 a month for the Nanode plan and they scale up to whatever your needs might be.

00:39:46   Things like dedicated CPU plans, GPU compute plans for machine learning or AI, video processing, high memory plans, and so much more.

00:39:55   So, go to Linode.com/ATP and you will get a $20 credit when you use promo code ATP2020.

00:40:03   Also, if you want a job, they're usually hiring, so go to Linode.com/career to learn more about that.

00:40:09   Otherwise, once again, Linode.com/ATP, promo code ATP2020 for that $20 credit.

00:40:16   Thank you so much to Linode for running all my servers and sponsoring our show.

00:40:20   [Music]

00:40:24   So, speaking of not getting to things today, I spent a long time before the show organizing the show notes and I put like cut points,

00:40:30   like because we have so much stuff that we can't get through, it also was like, "Alright, well, I'll just divide this up and say,

00:40:35   'Here's how much I think we can get through today,' and then the next section, 'Here's how much I think we can get through today,'

00:40:39   and now I've got to move all those cut points up."

00:40:41   [Laughter]

00:40:42   Plus, we're going to do a very long show.

00:40:44   That was not my intention, but we'll see what goes.

00:40:46   Alright, so let's start blowing through the rest of follow-up and we'll see how lightning round we can make this lightning round.

00:40:51   Famous last words.

00:40:52   Yeah, I think I can go pretty quick.

00:40:54   Oh, even more famous last words.

00:40:55   Oh, yeah.

00:40:56   Oh, I did it last time. Hey, I said I could do it last time. I did it. Anyway, go ahead.

00:40:59   My first way to go fast would be to cut this first item.

00:41:02   Okay, moving on. The DTK update.

00:41:05   [Laughter]

00:41:06   I'll give you one guess who wrote this first item, ladies and gentlemen.

00:41:09   Alright, DTK update. I did not apply for one. I believe—did we talk about on the show whether or not you guys had registered? I don't recall.

00:41:15   I think we did. Yeah, I don't have it yet.

00:41:17   But you did register. John, you also registered, and did you get one?

00:41:21   It's supposed to be coming tomorrow.

00:41:23   Excellent.

00:41:24   Yeah, and the other thing is when you sign up for these things, if you actually read the little agreement, there's an NDA that says basically if you get this hardware, you're not allowed to talk about the hardware.

00:41:32   So since none of us have it, we can talk about it. But once we have it, we can't really say anything about the hardware.

00:41:36   We'll still talk about on the show, I think, the process of porting your software, but we can't really talk about the hardware itself.

00:41:42   But that's fine because other people don't follow the rules, and so instead we can just link you to the show notes to this MacRumors article that has benchmarks of the DTK, which just looks like a little Mac Mini.

00:41:53   I don't think anyone has really cracked it open yet. I did see one shot of the inside that showed these little button batteries that run the real-time clock and everything.

00:42:00   It's a weird piece of hardware. But anyway, the upshot is that the benchmarks show in the word of this Steve Drayton Smith tweet, "The DTK with a two-year-old iPad chip runs x86-64 code in emulation faster than the Surface Pro X runs it natively."

00:42:15   Which is kind of sad for Microsoft. People say, "Oh, it's like the current iPad chip." Yeah, but it's a two-year-old thing. It's an A12.

00:42:26   Granted, the Z, it's got better GPU, so on and so forth. But it's not even the A13, let alone the A14 variant that's going to power the actual Mac.

00:42:32   So this two-year-old Apple chip, when running x86 code in emulation, is already faster than some other contemporary shipping arm stuff running their own native code.

00:42:44   Anyway, you can read the thing to look at more info about the benchmark. Again, benchmarks don't really matter. No Mac is ever going to ship with the chip. It's just for the DTK. It's weird in a bunch of different ways.

00:42:54   And speaking of weird stuff, I thought this was fun to see a picture of what the Pentium 4 DTK looked like for the Intel transition and how strange and lonely this weird PC motherboard looks inside the giant cheesebrear case.

00:43:05   So check that out if you're interested in what those things are like. So yeah, we will be getting them. I will be porting my apps, and we'll talk about the process of porting, but we can't actually talk about the guts of the hardware or anything like that.

00:43:17   Trying to figure out how fast is the ARM version of Mac OS running on this iPad chip. If you measure it with benchmarks, right now this had to run in emulation because Geekbench is not yet compiled for ARM on the Mac, but assuming that sometime soon somebody will probably run this on one of these things that will be running a native version somehow if that comes to exist, it's probably going to be performed just like the iPad.

00:43:45   It's probably not going to be that noteworthy in how it runs ARM code. You know what, the modern iPads are super fast, and so I bet this is going to run ARM code that's similarly designed to be a benchmark on Mac OS.

00:44:01   Probably going to benchmark just like the iPad Pro does. I think the real thing is that this actually shows off how good Rosetta seems to be so far, and this is a beta running on pre-release hardware.

00:44:15   It's a hardware that's slower than it's ever going to ship on.

00:44:37   This is running as if you had an old Mac at home. Fast forward a year when the real Macs come out, they'll be faster than this. When you run your software and the software hasn't been ported, it'll be like, "Ah, this feels like software running on my current Mac probably if you don't get a new Mac every year."

00:44:55   It's all good news in the performance front. No one has anything bad to say about the DDK hardware. It's all upside from here. Speaking of porting stuff, I've already ported my two apps.

00:45:08   Ported in quotes because of course I don't have any ARM hardware to test it on, but even with the current Xcode you can build for ARM. I can't run that binary, but I trust Xcode when it tells me that it successfully built it.

00:45:19   It just came to the point where you build if you're using any stuff that needs to change or any libraries, and bottom line is I wasn't. I had to do more changes for Big Sur than I did for anything having to do with ARM.

00:45:30   I'm mostly doing just standard stuff. A bunch of stuff is deprecated in Big Sur and I had to mess with that. I made some tweaks to a few of my things to conditionally apply some new APIs when I'm running on Big Sur.

00:45:44   The most consequential amount of work I had to do for ARM was figuring out the build settings to figure out how to make it actually build for ARM. It had nothing to do with the code, it had nothing to do with fighting Xcode.

00:45:56   My apps are very, very simple. This is not representative of what it's going to take to port Photoshop or something, but no news is good news as far as I'm concerned.

00:46:06   That is excellent. We also have some news about running Windows on ARM-based Macs, and it appears like that's not going to happen, or at least not legally anyway.

00:46:15   That's not how I read this. There's no technical reason why Microsoft and Apple can't get together and make sure that ARM Macs can boot Windows.

00:46:28   We also know that Apple didn't demo it and you can't currently do it for a variety of reasons, some of which have to do with the specifics of the hardware and the DTK, which is the only ARM Mac thing that exists.

00:46:38   I think the page size is wrong, but more importantly, Microsoft, unlike Windows for x86, where Microsoft works hard to make sure Windows can run on any weird piece of PC hardware, they don't do that with Windows for ARM.

00:46:52   It's not like Windows, which grew up in the sort of open PC world, where its job was to like, "I don't care. Whatever weird vendor PC they slap together, Windows will figure out how to boot and run on it."

00:47:03   Windows for ARM is specifically tailored to the exact ARM hardware that Windows says it supports, and not including that hardware is anything that Apple makes.

00:47:13   So the statement from Microsoft spokesperson in this Verge article says, "Microsoft only licenses Windows 10 on ARM to OEMs."

00:47:22   They asked if they were going to change this policy to allow Windows to run ARM-based Macs. Microsoft said, "We have nothing further to share at this time."

00:47:30   Which is not the answer you give if you're categorically ruling it out. In fact, it's the answer you give if you're currently fighting with Apple about it.

00:47:38   Practically speaking, no, you can't. But I still maintain hope that these two companies can figure out a way to make it happen.

00:47:45   Because I think Apple wants it to happen, and I think Microsoft knows Apple wants it to happen, and has a tiny, teeny bit of leverage, and are using that leverage to presumably get something they want.

00:47:55   Probably having to do with Office 365 subscriptions or something, through the App Store.

00:47:59   Well, I think the page size thing, like the way memory is mapped, everything is done via these pages of memory, and on most X86 systems it's been 4 kilobytes, and on these ARM Macs it's been documented to be 16.

00:48:15   And somewhere, either Apple or somebody actually said, "Windows can't run because of this." Like, it can't run on the Apple...

00:48:26   On the DTK specifically is what they said. And they also said, I think they said that these issues will not...

00:48:32   There won't be the same issue with the real Mac hardware. Whether that means the page size will change on the real Mac hardware, or whether they think they will have sorted out the issue with Microsoft, I don't know, but I recall hearing something like that.

00:48:43   Oh, that's interesting. Because I interpreted the documentation on the transition guide for WDC and everything, it sounded like they were saying that all ARM Macs will have 16 kilobyte pages, and you know, period.

00:48:57   And that's why this basically can't work until Microsoft adds support for that.

00:49:03   But Apple being Apple, they're not going to tell us what ARM Mac hardware is going to be like. They just vaguely allude to things that are weird about the DTK that will prevent Windows from running it.

00:49:12   And again, this statement from Microsoft doesn't say, "Oh, well, there's some technical incompatibility and we just make it happen."

00:49:16   They said, "We have nothing further to share at this time." Which is the total corporate speak for, "This is a thing that may or may not happen, but it's in..."

00:49:25   "We have nothing to announce at this time." It means they're still talking to Apple about it. If they had stopped talking to Apple about it, they would have made a more definitive statement. So my fingers are still crossed.

00:49:34   What would people do with Windows on ARM on the Mac? Isn't the whole point of running Windows to run the vast library of new and very much old x86 software for Windows on your Mac?

00:49:50   Is there that much demand for the other aspects of Windows that you'd want to run Windows for ARM on the Mac?

00:49:58   I bet a lot of people run just the Microsoft apps, Outlook, and Excel, and Microsoft, all the Office applications in their Windows form, interacting with SharePoint and Teams.

00:50:10   Why do you bring up that word?

00:50:12   That's what Microsoft wants everyone to do. The other thing is, I've talked about this a million times, it's still not clear that this is going to happen, but it is still a possibility that once Apple gets off x86, eventually Windows starts going in that direction too.

00:50:28   Basically, everybody moves to ARM, eventually, in many years in the future. So it's not ridiculous that that could eventually happen. It's not happening now for sure. So you're right, Marco, you get this Windows-based ARM, like, "Yeah, I can boot into Windows. What can you do with it?"

00:50:42   I can run these Microsoft applications, but I think a lot of people, that's all they do all day, is they run the Office suite of applications, and then they download Chrome, and then that's it. So I don't know. I want it to happen. It's not going to suddenly make my x86 games run. It's not going to make a gaming PC.

00:51:00   But I'm kind of holding out hope that the whole PC world moves in slow motion to ARM over the next many years, just because we've had enough of x86.

00:51:12   Moving on, Rosetta, tell me about when code is translated and what's going on there.

00:51:18   Yeah, this is a bit of a follow-up on the exact nature of Rosetta. We talked about it going through great pains to be able to do all the things, so that you can even load Intel plugins and everything like that. There are limitations to what they've decided to implement, and limitations that they didn't implement for the PowerPC transition, I think, which caused them a lot of pain, I think, to learn from.

00:51:40   But before we get to that, the first thing is that the code translation thing, where it'll translate statically your application on install or on first launch or whatever, and then it keeps that code around so it doesn't have to do it again.

00:51:52   That translated code also participates in the code signing process, too, which is nice. So the signature will encompass the translated code, so you're not more susceptible to hacking just because you have it translated in theory if they did their job right.

00:52:04   So that's going the extra mile in security. But unlike, I think, maybe some person who has a better memory than me can correct me, unlike, I think, 68K and PowerPC, there's no mixed mode.

00:52:14   If you are an Intel process running on ARM in translation, you can't load ARM plugins and vice versa. Like, in a single process, you can't have the two types of code mixing together with each other.

00:52:27   But you can load plugins across architectures as long as you use XPC, Apple's cross-process communication thing, where you spawn another process.

00:52:35   So say you're a native ARM Mac, but you want to load a plugin that's Intel only, like it's a binary Intel-only plugin. You can do that if you do it in a separate process and communicate through XPC. You just can't do it in the same process.

00:52:46   My vague recollection is that Apple did support mixed mode, which is an amazing feat if you think about it. Like, your app is running one instruction set and your plugin is running the other, and they're both in the same memory space, but one of them is being translated, right?

00:52:57   But that is tricky and adds all sorts of complications that they just as soon avoid. So I think they didn't do it for Intel, and they're not doing it again for this one.

00:53:06   We are sponsored this week by Mac Weldon. Better than whatever you are wearing right now. Mac Weldon will be the most comfortable underwear, socks, shirts, undershirts, hoodies, sweatpants, and more that you will ever wear.

00:53:23   They believe in smart design, premium fabrics, and very simple shopping. Their site is a pleasure to use. There's no weird gimmicks. Sign up here for our newsletter. None of that stuff. It's just really easy to get in, get out, find what you're looking for, and it is really good stuff.

00:53:40   This is what I wear most of the summer, and in fact all year long I'm at least wearing their underwear. They're actually kind of famous for their underwear. It's actually really nice underwear. And this stuff, it looks good, and it performs well too.

00:53:54   It's good for everything from going out to everyday life to workouts to wherever it takes you. They have a line of silver underwear and shirts that are naturally antimicrobial.

00:54:05   This means they eliminate odor naturally. I wear these all summer long. I am always wearing a Mac Weldon silver t-shirt all summer long. The whole rest of the year I'm wearing their underwear every day.

00:54:16   I wear a lot of their socks, I wear a lot of their t-shirts, a lot of their hoodies, their undershirts. I work out in their sweatpants and the shorts. They're just a wonderful brand.

00:54:25   See for yourself at macweldon.com/atp. You'll also see they now have a totally free customer loyalty program called Weldon Blue. Level one, you get free shipping for life.

00:54:37   Once you reach level two by spending $200, you're still getting 20% off every order for the next year. So see for yourself, it is quite wonderful.

00:54:46   macweldon.com/atp for 20% off your first order using promo code ATP. So once again, macweldon.com/atp, code ATP for 20% off your first order.

00:55:00   I love Mac Weldon's clothes and I think you will too. Thank you so much to Mac Weldon for sponsoring our show.

00:55:06   Big Sur on existing systems. I have put Big Sur on an external drive for my iMac Pro. I attempted to do it on the internal and we'll talk about that in a second, but I couldn't resize my existing container.

00:55:24   I get my terminology wrong, but apparently even though it's a 4 gig drive and I'm only using like half of that right now, I couldn't get disk utility to resize it.

00:55:32   Maybe I could have done some command line jockeying to do it, but I just gave up and put it on an external. And then on my shiny new MacBook Pro, it is on the external.

00:55:40   And I did, I was very thankful to see Daniel Jowkut's tweet that warned us not to put it on a, well, jump in and save me here, John. What is the normal way you used to do it?

00:55:51   Yeah, like so one of the advantages of APFS is within a given APFS container, you can just make volumes all day long. You can just keep adding volumes. Each one of them can be the full size of the container. You can add a hundred of them. It doesn't matter. I don't know. There's probably some of them.

00:56:03   But making volumes inside an APFS container is cheap because they share all the space with each other. So you might think, and I think we did this with PathOS, is if you have APFS, oh, I'll just make a new container and then I'll install the new operating system on that new, or make a new volume within this container.

00:56:16   And I'll install the new operating system on the new volume. And you don't have to worry about partitioning it or anything like that. It's just like, oh, yeah, you all get all the space. And then they'll just fight over who actually gets the space. Right. But then when you're done with that OS, you can just delete that volume, freeing up all that space and returning it to the other thing. No resizing partitions, none of that stuff. It's all dynamic. Right.

00:56:34   Big Sur, I'm sorry, the show is getting too late if you're listening and thinking of installing Big Sur. Do not do this with Big Sur. Do not take an existing APFS container and quickly make a new volume in it and say, great, I'm going to install Big Sur there.

00:56:47   Because if you do that, the limitation is that any other versions of Mac OS in that same container, according to Apple, can no longer get system updates. So that's bad.

00:56:59   Like, I don't even know why they allow you to do this. Like, basically, if you have Catalina and you make a volume and you install Big Sur, you're not getting any more Catalina updates on that particular Catalina. I don't even know if you can reverse it by deleting the Big Sur volume.

00:57:13   And honestly, I don't even know why it's possible. Also, Apple says that APFS containers with non-default allocation block sizes aren't currently supported. But if you know what that is, presumably you know what you're doing.

00:57:23   So what Casey was trying to do is, OK, I'm not going to do that. I'm not going to do the easy thing and make a Big Sur container in my existing container. Big Sur volume. I keep saying container instead of volume. The nomenclature isn't on.

00:57:37   I'm not going to make a new Big Sur volume in my existing container. I'm going to make a new partition, like old school, old fashioned, separate section of the disk.

00:57:46   And to do that, especially with disk utility, it's cranky about like, oh, if you have data and I can't all squish it into one place. And I don't know what the limitations are, but it's limited.

00:57:54   Depending on how much free space you have and where things are arranged, sometimes it says, nope, I can't partition your disk. Because in theory, if you could partition your disk in that second partition, you can make a brand new APFS container and put a single volume in it and do Big Sur into that.

00:58:08   Never mind that Big Sur makes umpteen volumes on its own. There's a reason for this, and maybe we'll get to it later depending on how much time we have, because Big Sur makes a bunch of changes to APFS.

00:58:18   It makes a bunch of changes that are not compatible with Catalina. So if you're thinking of trying out Big Sur, give it its own partition for sure, but to be safe, give it its own empty disk with nothing else on it that you won't care if it screws it up in some way.

00:58:34   Or just don't run the beta. That's also a way to do it.

00:58:36   It's so pretty though. It's so pretty.

00:58:39   Wait, what?

00:58:40   Casey really likes it. We'll get to that later.

00:58:43   Oh no.

00:58:45   Don't hate on me, old man. It looks good.

00:58:47   Oh no.

00:58:48   Hey, it's just Marco saying, "Oh no." Not me. I have different things to say.

00:58:51   You should center them so they're easier to listen to.

00:58:53   Oh, yeah, the dialogues are terrible. The dialogues are terrible in notifications.

00:58:57   We're not talking about it now. We'll get there.

00:58:59   All right, we'll get there.

00:59:00   We don't have to do this thing because we already talked about the bootleg stuff.

00:59:04   Excellent. Well, I will say thank you though to all the people who have signed up for ATP membership.

00:59:09   We really appreciate it. There's no timetable on the bootleg, obviously, but it is forthcoming.

00:59:13   Coming soon. After I rewrote my entire app in SwiftUI.

00:59:16   Oh, it's never coming. I take it all back.

00:59:18   Definitely before that. Someone put in here a point that is worth making.

00:59:24   If and when the bootleg does appear, it will have curses in it because we're not going to edit it.

00:59:28   Like, that's the whole point. It's not edited. So if you really are dying to hear Casey curse with that bleep,

00:59:32   which honestly I think is less funny than with the bleeps, then you'll get that as part of the bootleg.

00:59:38   ATP.fm/join.

00:59:40   The bleeps are funnier than actual curse words.

00:59:44   That's what I think too, but unedited is unedited, so you get what you get.

00:59:49   All right, let's move right along and let's continue talking about WWDC.

00:59:57   And I assume we left off where the top of this document left off.

01:00:01   I shovel things around. I tried to. I did my best.

01:00:05   All right, well I appreciate it. You shouldn't have done homework, but I appreciate the fact that you have.

01:00:09   Messages in Big Sur specifically. Screen sharing is still there, John?

01:00:14   Yeah, someone tweeted at me early on, like, "Oh, screen sharing is gone."

01:00:17   No, it's just hidden where it's always been hidden. It's always weird to find it, to click on the icon of the person you're talking to.

01:00:23   But it's there. You can do screen sharing in Messages. I mean, I didn't actually try it, but the feature still exists.

01:00:27   They ported it to the CataList app, so I was very excited about that.

01:00:31   Although, unfortunately, because it is a CataList app now, the AppleScript dictionary is gone, which some people are upset about, because AppleScript is on its way out and there's no good replacement, except for shortcuts, which is not really a replacement.

01:00:41   But anyway, that's one thing to note. Also, Anders Nuremberg said that you can use Command+K in the Finder, you know, the thing that brings up Connect to Server dialog.

01:00:50   And if you enter an Apple ID, it will send an invite, which is not true, because I'm like, "That can't possibly be true."

01:00:55   I tried it. I'm like, "It's not true." But if you do VNC colon slash slash someone's Apple ID, it will launch the screen sharing app and screen share to that Apple ID, which is almost as good.

01:01:07   So you can't just enter an Apple ID. By the way, Apple IDs these days, unless you're still hanging on to an old one, they all look like email addresses, so it's weird.

01:01:15   It's not like a -- it's not -- clearly not treating it as a URL, because VNC colon slash slash, you know, JDoW at example.com does not say look up the JDoW example.com Apple ID.

01:01:28   That's not -- it tries -- you know, anyway, it works, so if you want to try that, you can do it.

01:01:32   But we'll put in the show notes the full path to the screen sharing app, because you say, "Screen sharing app? My Mac doesn't have a screen sharing app."

01:01:38   It does. There's lots of stuff hidden in system library core services applications, and the screen sharing app is one of them, and apparently it understands how to find people based on their Apple ID, so try it next time you're trying to help somebody out with something.

01:01:49   They have to be on a Mac, obviously, although the VNC nature of the URL means you can probably connect to them if they have a VNC server, but that gets complicated.

01:01:57   Yep, I use Command K constantly to do this sort of thing, you know, VNC into my other Macs and so on and so forth, to do SMB colon slash slash to get to Samba shares on my Synology.

01:02:10   Yep, this is a useful tip. I had no idea that you could do it with an Apple ID. That's very cool.

01:02:14   It's easier in Messages, because you'll be messaging, because you can probably use this for tech support, so if that other person is on a Mac and they're on a reasonably modern Mac, message with them, and then while you're in Messages you can find the screen sharing thing by clicking on the icon of the person, and it says "Ask to share their screen" and you'll be off to the races. Behind the scenes it's just going to launch a screen sharing app anyway.

01:02:31   One delightful thing that came from me putting Big Sur on both my machines, other than looking at how beautiful it is, right Marco, is that when you do that, it seems to, from what I can tell, change for the system in its entirety, that it brings back the boot noise. And I guess this is optional in Big Sur or optional in Catalina?

01:02:53   In Catalina you can do it with that NVRAM hack thing that I did on my laptop that a lot of people did, but in Big Sur it is now an actual checkbox in System Preferences that you can turn on.

01:03:06   There you go. Very cool.

01:03:07   Yeah, and I did mess with it, with the NVRAM thing. I forget when it went away. Did you have the exact date?

01:03:12   I thought it was Catalina that it went away.

01:03:14   It wasn't an OS thing, it was hardware based. It went away with all of the 2016 wonderful redesigns of the MacBook Pro, and then all the desktops that followed after that.

01:03:24   So the iMac Pro didn't have it. I think anything with the T2 and even the T1 didn't have it.

01:03:33   This is why it's confusing for people, because a lot of people are like, "Oh, thank God, I've always wanted to turn that off." And I was like, "But it's been off for years." But it's only on hardware. If you buy a new Mac frequently, the way you would experience it going away is you would buy a new Mac. That's the only way you would experience it. It didn't go away on existing Macs.

01:03:51   So if you have an old Mac, it never went away for you. And now you see this checkbox and you're like, "Finally, a way to get rid of it." But if you've been buying a new Mac every year or something, it went away for you a while ago and now it's back.

01:04:02   Who would do that?

01:04:03   I did the Envyer M thing to turn it back on just because I like the bong, right? But when I installed Big Sur, the only bong I ever liked. When I installed Big Sur, I checked the checkbox. I forget if it was checked by default. I had already messed with the Envyer M thing manually, but I made sure it was on again in Big Sur.

01:04:29   And then when I rebooted Big Sur, it made the bong sound, but it was at maximum volume, so loud that it was distorting the tiny, terrible little speaker on my Mac Pro. And even if it wasn't distorting it, it was too loud. Not that that speaker is that loud, but you don't want to be startled at literally maximum volume. How the hell did that change? Is there a volume control?

01:04:51   I did a bunch of Googling. A bunch of old Macs did have a system volume thing and Envyer M, my Mac, doesn't, but it doesn't matter. The system volume is correct. I couldn't figure out how to make it quiet again, so I uncheck the checkbox. I had to go back to SilentBong. I think it's probably just a Big Sur beta bug. I think if I was Justin Catalina, I wouldn't have to worry about that, but most of the time I'm rebooting. I'm rebooting into Big Sur, so that's when I hear the bong. I've got some startup sound issues. But anyway, I'm glad there's a checkbox for it.

01:05:16   But Paul, of all the weird things to give a checkbox to, it's like, make up your mind. Are they going to have a startup chime or are they not? You got rid of the Happy Mac and you didn't have an option to bring it back. It just went away. The startup chime went away several years ago on new hardware, but now it's back? I mean, I suppose it serves some diagnostic purpose, but in general, people love to be able to silence that because many librarians say that they are glad that it is silent on new Macs because people are restarting their computers in the middle of the library and constantly going bong.

01:05:45   Well, that took a turn I was not expecting. Are you part of their crack marketing team, Jon? We just didn't know it.

01:05:52   Think about this. Of all the things to take the option for, we're going to change the GUI of the general preferences or something and we're going to put a checkbox for the startup chime? So weird. I wonder if that will last until release.

01:06:04   That's all right. All right, so what version is Big Sur? Is it 10.16 or 11.0? What's the story here?

01:06:10   I told you in the last show. It's like, "Oh, don't tell us because by the time you tell us, we'll have already known because we recorded on the day of the keynote and we didn't know anything yet, but I figured by the next day, we'll have this all sorted out."

01:06:22   It turns out the situation is way more complicated than I thought it would be for reasons that are not quite explicable. So uname doesn't give you any good info other than it's Darwin 20.0 instead of 19.5, which is what Catalina was.

01:06:36   If you do sw_vers to give software version and you're running Big Sur, you get product version 10.16. And if you look at the about screen as we saw in the keynote, sure enough, you get 11.0.

01:06:50   All right? Well, that's like, "Okay, well, fine. Maybe the real version is 10.16, but they just put 11.0 in the about box. It's just the marketing version, right?"

01:06:57   Then you go into Xcode and you look at your macOS deployment target, and you can choose macOS 10.16 or you can choose macOS 11.

01:07:06   What?

01:07:08   That's where I started to get real confused and like, "Okay, what's going on here?"

01:07:12   So a lot of people have been experimenting with this. I forget who this was. Maybe this was Guy Rambeau. He said, "Build an app with a deployment target set to 11.0. Build a Mac app with a deployment target set to 11.0, and you run it on Big Sur running on an Intel Mac."

01:07:28   Like this is not the DTK or anything. You build it on an Intel Mac and you run it on an Intel Mac on Big Sur, and you get an alert that says, "You can't use this version of this application with this version of macOS. You have macOS 10.16.

01:07:41   This application requires macOS 11.0 or later." You just built it on that machine. It's an Intel app. Basically, you were able to pick a deployment target. I guess that makes some sense.

01:07:51   Have you ever been able to do this in Xcode before? Pick a deployment target that is newer than the one you're building on?

01:07:57   I don't think. I've only ever done it for iOS, so it didn't really apply.

01:08:01   Usually, you'd go the other way. Like, "My deployment target at front and center is 10.12 because there's no reason I can't reach back that far." But you pick the deployment target that's newer than the machine you built it on.

01:08:13   So the homebrew folks have been looking into this because they've got to deal with this stuff as well. There's a GitHub thread that we'll link in the show notes. Someone said, "I'm told that for Intel, sw-vers reports 10.16, but if you're on Apple Silicon, it reports 11.0."

01:08:28   None of us have our DDK, so we can't confirm that. At the time this was written, nobody had any DDK. Fraser Hess said he confirmed this with someone in a lab.

01:08:36   "In a later beta, 11.0 will get reported to apps, but apps built on 10.15 and earlier SDKs will get the 10.16 reported to them."

01:08:45   So that's saying if you build it on the 10.15 SDK, like if you use that bundle of libraries and everything to build your thing, then your app will get 10.16 reported.

01:08:56   But apparently in a later beta, you'll get 11.0. So I don't know where we stand here.

01:09:02   Clearly, the big Sur beta that we're all running reports 10.16. Clearly, it really is 10.16, but clearly Xcode says you can target 11.0, whatever the hell that is.

01:09:12   And since we don't have our DDKs, and even after we get them, we probably can't say, they may report 11.0 from sw-vers.

01:09:18   So it is all very confusing. I'm sure it will get sorted out in some reasonable way. Apple seems very committed to the 11.0 thing, so I feel like that's where we're going, regardless of any weird 10.16 things that might be there for backward compatibility with apps built against 10.15 SDK.

01:09:35   And the one minor point related to this, which has come up in the discussion last week, is what happens next year? Do we get 11.1 or 12.0?

01:09:43   11.1.

01:09:44   Hmm. I had just assumed 11.1 until I heard lots and lots of people talking about it. I'm like, well, most of the people in this world are used to iOS, which doesn't do that.

01:09:52   iOS does 13.0, 13.0.1. And then next year, they go to 14. That's what iOS has always been doing.

01:10:01   So I'm like, well, just because Mac OS did 10.0, 10.1, 10.2 doesn't mean that it has to keep doing that.

01:10:08   Maybe they do 11 this year, and maybe they do 12 this year. So I have no idea what they're going to do, regardless of this whole 10.16 business. I feel like that will get resolved.

01:10:17   It would make some sense to make Mac OS do the 12, 13, 14. I think that would be potentially a mistake, because like I said, iOS 14 is already, the numbers are getting big.

01:10:30   I feel like we were only going to be running iOS 36. It's kind of weird. Whereas if you do 11.something, you get a long run away before you run out of 11s. I don't know.

01:10:40   We are sponsored this week by Squarespace. Start building your website today at squarespace.com/ATP.

01:10:47   Enter offer code ATP at checkout to get 10% off. Make your next move with a beautiful website from Squarespace.

01:10:54   Squarespace makes it incredibly easy and fast to make a beautiful, incredibly highly functional site.

01:11:01   And make it look yours, and make it look great. Fill it with your content, configure it how you want, and then it stays running without your involvement at all if you don't want.

01:11:13   So you don't have to worry about things like software upgrades or patches or having to change to the latest version of plugins. You don't have to worry about setting up caching if somebody big links to you or you got a big spike in traffic.

01:11:26   You don't want to start dropping customers if you got a nice link from somebody. You want your site to stay up and running.

01:11:32   And Squarespace just takes all that off your plate. So you can focus on your business or your portfolio or your hobby or whatever your site is. Squarespace takes so many little problems off your plate so you don't have to worry about them.

01:11:45   And you can focus on making your content and Squarespace makes it look awesome. You can have of course all sorts of dynamic functionality too. Built in calendars, events, galleries, all sorts of other stuff.

01:11:56   Even complicated things normally to host elsewhere like shopping. You can host entire storefronts on Squarespace. You can host podcasts on Squarespace. All of it is very well supported.

01:12:06   None of it requires any coding or any kind of manual text entry of JavaScript or CSS. Nothing like that. So even if you're not a web developer at all, that doesn't matter.

01:12:16   Squarespace is all visual. It's all what you see is what you get. You can preview stuff. You can drag stuff around. See for yourself at squarespace.com/ATP and you can start a free trial site with no credit card required.

01:12:29   When you decide to sign up for Squarespace, make sure to head back there to squarespace.com/ATP and use offer code ATP to get 10% off your first purchase.

01:12:37   That's squarespace.com/ATP. Offer code ATP for 10% off your first purchase.

01:12:42   Thank you so much to Squarespace. Start building your website today and make a beautiful website with Squarespace.

01:12:48   [Music]

01:12:52   All right, tell me about APFS time machine and booting changes.

01:12:55   So here's all the stuff. I was so sad they didn't have a file system session with WWDC where they talk about this stuff, but they didn't.

01:13:00   But guess what? File system stuff changed in Big Sur a lot in ways that have an impact on your life to the point where, as I think everyone who has run Big Sur has found out,

01:13:09   when you reboot back into Catalina, Catalina does not know what the hell to make of the stuff you just put Big Sur on.

01:13:15   It will complain in the Finder that some file system is incompatible. Casey, if you've done this, have you seen a little volume? Do you have volumes on your desktop? You probably don't, do you?

01:13:24   No, I don't actually. Only removable ones. But yeah, every time I boot back into Catalina on my laptop, which is the one that I did the partition dance on, and so it can still see one or more of the 34 volumes or containers that's created during the Big Sur installation process,

01:13:45   every single time it complains and moans that there's an incompatibility or something. I forget exactly what the dialogue is. I think I tweeted about it.

01:13:52   It's an incompatible file system. It's basically saying, "One of these volumes, I don't understand the format. It's newer than I can handle." Which is absolutely true. This is working as designed. That's why file systems have version numbers, so that the operating system can know when it's looking at a file system that it doesn't know how to handle it, therefore not touch it and complain to you about it.

01:14:11   Incompatible disk. This disk uses features that are not supported on this version of Mac OS.

01:14:23   I believe so. Hold on, I do have it booted, so just give me one second. We'll put in some Jeopardy music or something. What do I have here? Oh, no, wait, I'm sorry, I'm in Big Sur. That doesn't help us. Never mind. I would have to reboot.

01:14:46   Did I leave a disk image mounted? Why is there a volume called update? It's all very confusing, and it would have really helped if there was a session explaining all this, because some of the features are pretty cool.

01:14:55   The first thing to know about Big Sur and Apple on Mac OS on ARM and all that stuff is that for predictable reasons, basically the process of booting and updating the Mac on ARM is very much like it is on the iPad and the iPhone, because why wouldn't it be?

01:15:11   That's the hardware, that's the system they have. There is actually a WWDC session vaguely related to this, which is Explore the New System Architecture of Apple Silicon Macs. We'll put the link in the show notes for that one. Lots of interesting stuff there.

01:15:24   There are many more technical details that they didn't go into related to the file system, one of which is that we know in Catalina the OS volume was read-only, and there was a separate data volume with your stuff on it, and then it would merge them together for you to protect the system volume.

01:15:39   Well, in iOS and iPadOS, it's even more strict than that, and so it is too on Big Sur on all hardware, not just ARM hardware. The boot volume is not just read-only. It is now what they call sealed.

01:15:55   It is a cryptographically signed system volume where every single byte of data has associated checksums. We've talked in the past about data integrity and data rod or whatever. Well, one volume that is not going to experience data rod without being detected is a Big Sur operating system volume, because it's read-only, first of all.

01:16:18   And if any of the bits get flipped, it will know, because every piece of data and metadata is checksummed all the way up to the very top checksum, and it's cryptographically signed. Basically, the running system will know, "Has any part of this operating system been modified in any way, either through corruption or a malicious thing or whatever?"

01:16:37   So that's great. That's great for security, and it's great for Apple's first foray into actual data integrity. The bad thing is, the only volume that you can do that to right now is the system volume, and that doesn't have any of your data on it. It's just for the operating system that doesn't change. So that's kind of a shame.

01:16:54   They basically boot off of a read-only snapshot of that, because APFS supports snapshots. The updating process is just like it is on your phone. I'm assuming your phone and your iPad already do this, but practically speaking and technically speaking, the best and cleanest way to do an update with APFS is let the system run off a snapshot that's read-only, and then do your update in essentially another.

01:17:19   So the update system can mount the volume again from someplace other than that snapshot in read-write mode and put the update there, like write all the update files, write essentially a new cryptographically sealed volume.

01:17:33   The old volume your system is running off of is not changing. Every single byte of it is exactly the same, so it's running off a snapshot. But then the update process in the background while it's doing the update is building and signing a new sealed volume.

01:17:45   And then when you reboot, it just does the switcheroo and say, "Now we're going to boot from that sealed volume," and you can verify the signatures and integrity of that volume, so you either get all the update or none of the update.

01:17:55   And you can be sure that the update didn't screw up, that there wasn't a bad sector. Well, whatever they call them in SSDs. There wasn't some bit-flipped or cosmic ray or something. So the update process is much more reliable. It can happen in the background without disturbing your current system. And that's great.

01:18:13   And speaking of things using snapshots, Time Machine, I believe, since Catalina—I forget when they did this—does a backup from a snapshot. So it doesn't have the painting the Golden Gate Bridge problem where you start painting the Golden Gate Bridge and by the time you get to the other side you have to start over again because the salt has rotted away the painting. I guess it takes you so long.

01:18:33   Time Machine and HFS+ essentially say, "I'm about to back up your 4 terabyte volume, so I'm going to start reading files." It would read files, and it's reading files, and it's writing to the backup disk, and it's reading files. It would take hours to do that.

01:18:45   And by the time it's done, anything that happened in the hours that it's been running hasn't been backed up, depending on where it happened in the disk. Because it's walking, it's like painting the Golden Gate Bridge. It's walking, it's going painting, painting, painting, and then someone puts a dirty footprint where you already painted. Oh, now you've got to repaint that.

01:19:01   But if someone puts a dirty footprint ahead of where you've painted so far, you'll eventually get to that. So you have no idea what happened. Your Time Machine backup is just like this temporal smear of things that happened on your disk.

01:19:14   And Time Machine would be like, "Hey, let me just go back to the beginning again and catch up." "Okay, but let me go back to the beginning again and catch up." You can keep doing that, but you'll always be behind by some window because you're trying to back up essentially a live file system that's being modified.

01:19:26   When you take a snapshot in APFS, one of the great features is like, "Look, this is a point in time snapshot of what the disk looks like. Nothing is changing in this snapshot. I'm going to back up this snapshot." This is exactly how the entire disk was at point X in time.

01:19:40   And no matter how long that backup takes, it's going to be internally consistent, right? So it's been doing that for a while. Last year, they announced that there was a way to do efficient deltas between snapshots.

01:19:52   So you could take one snapshot and then an hour later take a second snapshot and you could efficiently say, "What's the difference between these two snapshots?" without walking over every single file.

01:20:02   And that's a big problem with Time Machine. It's always got to say, "What's changed since the last time I backed up?" because I need to know what to put in this new backup, right?

01:20:09   APFS last year got a feature that made it efficient for you to get that answer. This year, I think, possibly, the Time Machine is finally using that. So the first thing is that for the first time, Time Machine can back up to an APFS disk.

01:20:26   This has not been possible before Catalina and Prior can only do a Time Machine backup to an HFS+ disk.

01:20:32   So HFS+ has all these features for hard links to directories and all sorts of mumbo-jumbo that makes Time Machine work. APFS didn't have those features.

01:20:39   APFS still doesn't have those features. How exactly it's working under the covers, I don't know. I've just been experimenting with it a little bit.

01:20:47   First of all, when you back up to an APFS disk, you can't just format a disk as APFS or take an existing APFS disk and say, "Oh, back up to that one."

01:20:55   When you want to choose an APFS disk to be a Time Machine target, Time Machine says, "Oh, great. Can I erase that for you?"

01:21:02   You'd be like, "Why do you need to erase it? For me, it was an empty disk. I had a new empty disk. Why can't you just back up to it?"

01:21:09   The other thing is, the first thing I tried, my old Mac OS X reviewer trick is, you just make a second volume on the same disk and you make Time Machine back up to that, which is terrible. It's not a real backup, right?

01:21:19   Time Machine used to yell at you and say, "You know you're backing up the disk to itself, right?" I'd be like, "Yeah, I know. I'm not actually making a backup. I just want to turn on Time Machine so I can take screenshots for review."

01:21:31   You can't do that now. I made a new APFS volume on my big serve volume and I went to say, "Okay, I'm going to select that as my backup disk in Time Machine."

01:21:39   Time Machine wouldn't even list it as a selection. I don't even see that. That's not even an option.

01:21:44   I thought they finally got smart and said, "Don't let people back up to the same disk because that's stupid." But that's not why. Time Machine can only back up to an APFS volume with the role backup.

01:21:54   APFS has this concept of volume roles. An example of a volume role is read-only system volume, recovery volume. There's a volume used for broadband updates. You can see where a lot of these volume roles came from, not from the Mac.

01:22:07   I forgot about that. There's a bunch of other ones for firmware updates, system software updates, pre-boot. There's this whole system where I can boot a miniature version of Mac OS. You can have more stuff running on the login screen before you decrypt the disk.

01:22:23   Anyway, one of the volume roles is backup. So basically you need to make a new APFS volume whose role is backup. When you just go to Disk Utility and make an APS volume, it's not a backup volume. What's different about a backup volume? I don't know. Something's different. They're weird.

01:22:39   When I made one, I tried to go over it to the command line, and it was like "Operation not permitted." Anytime I tried to do anything, you try to run ls in a directory, it's like, "Nope. What if I do it as root?" It's like, "Nope." Sometimes you can poke around in it. I think it's still using hard link. Some work as link count is high, but it only shows one volume. I think it might be using snapshots, and each snapshot is mounted as its own separate volume.

01:23:02   Anyway, there's a bunch of weird technical stuff going on here. We will link in the show notes Apple's new APFS file system reference, which gives you some clue about the capabilities. You can look at all the different volume roles. It's really a programmer's reference to say what are the values for all the constants and what bits are flipped in the bit fields for each volume role thing.

01:23:19   I have one paragraph of text about how sealed volumes work and what the checksum data structures are and how many different SHA variants it uses for the checksums. It's very complicated, but there was no sort of session explaining all this. I didn't want to go too far into this, but I'm trying to figure out basically are you using snapshot diffing deltas, the feature from last year, to make backups fast?

01:23:41   So I made a backup in Big Sur to a time machine volume, and then I duplicated one megabyte image. So now I've made a change to the disk, and now I want to run a time machine backup again. In theory, obviously stuff's gone on in the background, so who knows, but in theory it has at least one file that needs to back up.

01:23:59   I did a second backup. I did one backup and it was clean. I did the second backup and it completed in one minute and 20 seconds, which may not sound fast to you, but I would encourage you on the Mac of your choice right now that's not running Big Sur, do a time machine backup and just let it finish.

01:24:16   And the second it finishes, do a second time machine backup, which you would think is basically a no-op backup, especially if it's working off snapshots and you haven't been doing anything. Obviously some files have changed, but you think that's as fast as a backup's ever going to be.

01:24:29   In fact, do it five times. Do a time machine backup, wait for it to finish, do another, do another, do another. See how fast you can make a time machine backup in Catalina.

01:24:38   I tried to run this experiment before the show and it was taking a very long time to do a backup. Like I just did, the fastest one I could get was five minutes.

01:24:47   Does that mean that Big Sur is using the APFS diffing? No, it doesn't. I could have, you know, it's a new disk, it doesn't have any data on it, the FS event log isn't very long, like it could be doing everything the old fashioned way.

01:24:59   So the jury's still out on that. Anyone at Apple, I asked on Twitter and got no response. If there's someone at Apple who can tell me definitively if time machine is using the inter-snapshot efficient diffing mechanism to make time machine faster, let me know.

01:25:15   I'm not obviously brave enough to try it on my real system with my real data, but so far it seems like there's a possibility that time machine might be faster. And even if it's not, I do like the idea of backing up the APFS in one of these special volumes that's read only and has all these snapshotting features and everything.

01:25:32   Not going to help me backing up to my Synology, unfortunately, because that is over SMB and is decidedly not APFS on the other end of it. But anyway, I was excited to learn through various other people's tweets and articles that there are a bunch of changes related to this.

01:25:48   We'll link in the show, it's the Eclectic Light Company. Howard Oakley is the person who runs it. He had two articles about this, about the backups and the sealed system volume. So check those out if you're interested.

01:26:03   Do you feel better having some APFS news? I know you were yearning for it.

01:26:07   I do. I mean, it's been the slowest thing ever after they introduced it. It's like, when are they going to make time machine? I think I talked about it on the show before W3C and the answer seems to be that, yeah, they did a bunch of APFS related work to time machine.

01:26:19   So I'm excited to change all my local backup volumes to APFS, even though they're spinning disks and it's going to be gross because APFS is bad on spinning disks. But if the inter snapshot diffing is fast, I'll take it because it's certainly not fast now backing up to HFS plus, I can tell you that.

01:26:36   We haven't done Ask ATP in forever and a day. I'm inclined to say let's do some, especially since if you indulge me in the after show, that's going to take a while. But disagree. Notice in the show notes what it says.

01:26:48   Say where? Oh, go to Apple platform. Go to, you know, go to go to fail. You put a go to statement in the show. I've done this multiple times in case he continues not to follow him. He's a bad basic interpreter.

01:27:03   Why wouldn't you just copy and paste? Because I have these long sections and I had to put dividers like we went through like a quarter of follow up and then I have the stop here and then I would go through like a couple of topics. Then I say stop here and there's more WWDC if you keep scrolling.

01:27:18   There always will be. Right. But I want to skip down to a this topic, which is touches on a bunch of stuff that Marco talked about earlier. And I think it's, you know, a lot of people have been asking about it. I want to talk about it before, you know, if time goes too long. First exclamation exclamation one one one. Yes.

01:27:36   All right, John, tell me about Apple platform unification. So it seems clear to anyone that's paying any bit of attention that everything seems to be muddied. Everything's getting squished into everything else. What's the trash compactor from Star Wars? I don't even remember what it's called. It's happening, right?

01:27:53   Garbage masher. I assumed it had some ridiculous name or some world that it was a part of. It doesn't matter. Anyway, the point being that everything seems to be getting squished together. So what's going on here?

01:28:07   Well, this gets to what Marco was talking about earlier about, like, what's what's the deal? I mean, all the stuff he was talking about. What should I write my new UI in? What what's happening in the world of applications in terms of do they do custom controls or do they do use all the standard stuff? And what is the nature of the standard stuff? Does it support all sorts of dynamic type and sizing? Is it not pixel perfect? Are you trying to use standard controls so you can follow along with Apple's changes in fashion?

01:28:33   And on the more technical level, I think there still is this question, mostly unanswered by anything Apple has said, which is, you've got a lot of APIs, Apple, for a lot of different platforms. What's your guidance on what people should do? And Apple's answers, they're I mean, they've been fine, but they say what they always say, which is like, okay, well, if you're, you know, if you're making a thing for the phone, and you have existing code based and UI kit, you can keep using that if you got an existing app kit app, you keep using that.

01:29:02   If you want to try Swift UI, you can, but of course, it's kind of new. And then catalyst is, you know, like, we know all the answers. Like, there are straightforward answers. If you ask any from Apple, there's an answer they can give you and you say, sure, that makes sense, right? But people, people want to know, at this point is, okay, but what's the plan? And Apple's not big about telling you the plan for good reasons. Like, it's a fairly good strategy not to tell people the plan. But I think, you know, here's the thing with plans, you can have a plan, but the plan might change. And if you don't have a plan, you can have a plan.

01:29:31   And if you didn't tell anybody about the plan, they don't have to know that you have to change the plan. That's Apple's general strategy with this.

01:29:38   Hello, AirPower.

01:29:39   Yeah, well, yeah, don't announce the product. But even for stuff like this, so two angles. One last show, I talked about like, oh, it was cool when we, you know, had a Mac Pro that was Intel, and I got a machine that could run like, you know, see stuff because Mac OS X was Unix, and I could run all the Mac native stuff. And also, I could run all the Windows and Windows games, right?

01:29:59   It was one piece of hardware that I could buy that did everything. It was a, you know, first class, pure, boot right into Windows, play all the Windows games, 100% extremely expensive, fancy Windows PC.

01:30:11   Also, it was an awesome Mac. Also, it had a bunch of Unix stuff, right? The machine that could do anything.

01:30:17   And on the keynote episode, we talked about how, okay, you're not gonna be able to do all that Intel Windows stuff anymore, and ARM Windows is currently not a thing. But what you have instead is a single platform that can run all the things as long as all those things are Apple.

01:30:36   And there's a lot of, not all, but there's a lot of Apple things. That announcement that your Mac will be able to run iPad and iPhone apps, in addition to Mac apps, and in addition to Catalyst apps, it seems like the Mac has become, in a slightly different way, the platform that runs everything.

01:30:51   Which brings us to this Apple platform unification question again. So where are they going with that? The API question is tied into that.

01:30:59   If you had asked someone at Apple many years ago, I see you've got this new operating system, and you have an API called Carbon, and this cocoa thing with this weird language with angle brackets, I'm starting a new Mac app, what should I use?

01:31:15   That answer has changed. If you'd asked about Carbon earlier, you'd be like, oh, if you have an existing Mac app, of course use Carbon, that's what it's there for. So you can bring your existing Mac apps to our new platform. You'll have to change some stuff, but you can reuse a lot of your code, use Carbon.

01:31:30   If you're starting a new app, try out this cocoa thing. Don't be scared of the square brackets. They won't hurt you. It'll be cool, right?

01:31:37   Eventually, and there was a diversion into Java, let's just set that aside, eventually, lots of people started making new Objective-C apps. They're like, wow, a single person can make a really full-featured app with cocoa.

01:31:50   But some control is only available in Carbons. But you can mix Carbon and cocoa. Here's a new WWDC session about this cool new layout or control thing. But it's only in cocoa. But this one's only in Carbon.

01:32:01   Hey, Apple, why do Carbon and cocoa not have the same feature set? Because if I've got an existing Carbon app, I want this new control, but it's only cocoa, and some cocoa app wants this new thing, but it's only in Carbon.

01:32:12   And why do I always have to use Carbon? I use QuickTime and do video things. What's the deal? What is your API strategy?

01:32:18   And Apple would never tell you, up until the very last moment, they would never say, just write a thing in cocoa, because we're getting rid of Carbon. In case you haven't figured that out, just write it in cocoa.

01:32:29   They would never say that, because you wouldn't want to say that to Adobe, whose Photoshop was brought over as a Carbon application, right? Right up to the point where they did an AirPower, speaking of what Casey said.

01:32:40   They announced Carbon for 64-bit. And at the last minute, they said, you know what? Going to 64-bit is a great time to finally cut the cord on Carbon. And they said, even though we announced Carbon for 64-bit, and actually I think they shipped some version of it in some dev build or something, we're not actually going to do that.

01:32:57   So if you want your app to come over to 64-bit, which you probably do eventually, because we're going to eventually stop selling 32-bit Macs, you can see they're writing on the wall, cocoa is the future.

01:33:08   But at no point prior to that would they have told you, oh, you should do everything in cocoa, Carbon is dead.

01:33:14   But Carbon was a dead API walking for a long time. And you could have arguments about it, and you could say, well, the finder is in Carbon, and Apple supports Carbon, and it's a peer, and they've been getting better about putting both features in both things all the time.

01:33:28   But a good rule of thumb is, if you picture all the API used to write for a platform on like a timeline from left to right, the passes on the left to future is on the right, and each API has a starting point and an ending point,

01:33:41   the APIs whose starting point is farther to the left, they're usually going to stop sooner.

01:33:47   Now it's difficult for things like Carbon, because like how far back do I do that? Well, Carbon is brand new with Mac OS X, it starts in year one in 2001.

01:33:56   Well, not really, because Carbon has its roots in Mac toolbox stuff, which goes back to like 1984.

01:34:02   Yeah, and cocoa, that started in Mac OS X, right? Well, not really, it's from Next, and that's actually from the late 80s. But if you line those things up, and you push them back to the farthest point, the Mac stuff is older than the Next stuff.

01:34:15   So even setting aside the acquisition and the modernness or whatever, if you had to bet just based on this heuristic of basically the older API is going to die first, you would say Carbon is going to die first, because Carbon was the past.

01:34:28   Carbon started before the Next stuff, and it ended before the Next stuff.

01:34:33   AppKit, you know, still trucks along, it is the native Mac API for doing Mac only stuff, but AppKit doesn't run on the phone or on your TV or on your watch or anything like that.

01:34:48   UIKit started with the iPhone, so it's 2007 or so, right? So you can extend that line out.

01:34:56   If you had to bet UIKit versus AppKit, you'd say, well, UIKit is way younger, so you think AppKit is going to die first, but if AppKit dies, what the hell are people going to write Mac apps in, right?

01:35:05   Then there's Catalyst. Very new, it's a way for you to get UIKit stuff onto your Mac.

01:35:11   So you might think, well, the Catalyst is really new, that's probably going to stick around, but it's really just an extension of the UIKit line, isn't it?

01:35:19   And then there's SwiftUI, which is super new, it's only been around for two years, but SwiftUI's intention from the beginning is you can run SwiftUI on all of Apple's platforms.

01:35:28   You can run it on the watch, you can run it on the Mac. You're like, really? The same API for that? Well, it doesn't quite work that great yet, but we're working on it, right?

01:35:37   Another way to look at these, and we'll put this image in the show notes, because it's unlike the one I just described, it's not just something in my head.

01:35:44   Who is it? Darja Rubik made this image on Twitter, which instead of showing the APIs along a timeline, shows them as bars that extend underneath Apple's platforms.

01:35:55   And so you can see AppKit works on Mac OS for Intel and ARM, and UIKit works on iPad, iPad OS, and Mac OS.

01:36:04   And UIKit and Catalyst works on just the two Mac platforms, and UIKit works on tvOS, and then SwiftUI, at the bottom of this diagram, is a bar that goes across every one of the platforms, because in theory it works on all of them.

01:36:18   So, Apple's not going to tell you that AppKit is dead. Apple's not going to tell you that UIKit is dead. Apple's not going to tell you that Catalyst is dead, and Apple's certainly not going to tell you that SwiftUI is dead.

01:36:29   But one of these things is going to die, they're going to die in an order. They're not all going to go at once, and they're not all going to go on perpetually.

01:36:36   So, if you're looking at Apple's platforms and saying, "What does the future look like out past where Apple's ever going to give me a straight answer?" Out past where Apple even knows.

01:36:44   Because here's the thing. I bet if you had asked certain people on year one of Mac OS X, they would have said, "Oh, Cocos is the future, no question."

01:36:52   But they hadn't proved that at that point. They can say that all they want, but who's going to learn Objective-C? Who's going to use this weird API?

01:37:00   All Mac apps are carbon. You just have these weird ported Next apps that are Cocos. No one's ever going to do that, but people would say, "I believe Cocos is going to be the future. I believe a new crop of developers will learn Objective-C, and they'll learn it to write on the thing that doesn't exist yet, which is the iPhone, and that'll be the future."

01:37:17   But at that point, that wasn't clear. I bet today, if you asked some people inside Apple, they would say, "Here's my vision. SwiftUI. Everywhere. It's the way you write for all of Apple's platforms. It's a single language. It's a single API. You can tailor it to the strengths of each system. That is going to be the future."

01:37:35   But like Cocoa back in 2001, you could say, "Okay, that's a great idea, but realistically speaking, that's not the reality today. You have not proven that SwiftUI can even do that. That's not a thing."

01:37:48   It's a plan. It's an idea, but it's not a thing. At some point, not today, maybe not next year, but at some point, like with Carbon and Cocoa, you hit an inflection point where it's like, "It seems like Cocoa really can do all the things they said, and it seems like Carbon is fading."

01:38:05   And then for the next three years, Apple will tell you, if you ever ask them, Carbon and Cocoa, their peers, they're both great, use the one that makes the most sense to you, right up until the point where they say, "Carbon, totally dead. Sorry."

01:38:15   Maybe not the best transition they ever had, but that's the reality. So I've been looking at these diagrams and thinking about, at the low level and at the high level, what does the future of Apple's platforms look like?

01:38:27   And I think going from the top and maybe eventually getting into Casey's love of the way Big Sur looks, the last episode we talked a lot about how we don't like certain aspects of the way things look, in particular the similarities between iOS and macOS.

01:38:40   I listened back to the show, and I'm not sure this was entirely clear from what I said, although I do think I mentioned it at one point. But you could be forgiven for hearing that and saying, "Oh, they don't like it because it looks too much like iOS."

01:38:51   And they said there's no reason for it to look like iOS, but actually there is a reason. Mostly we don't like it because they look bad.

01:38:58   It's not that we dislike it because it looks like iOS, because consistency is good and has a purpose, I think, but we want it to be readable. It's a downgrade in terms of usability.

01:39:12   So if you want consistency, which I think you do want, make it consistent but also good across platforms.

01:39:16   And the consistency argument is compelling, I think, because if you envision the Mac, for example, as the mother platform that can run everything, because on the Mac you can run iPhone apps, you can run iPad apps, maybe eventually you'll be able to run watchOS apps outside of the simulator, maybe eventually you'll be able to run tvOS apps, right?

01:39:35   Because Apple's platforms will all be on Apple Silicon, they'll all be on APIs that Apple controls, the language that it invented, right? This is the platform unification, this world where you can run all the things, and the Mac is the thing that can build for all of them and run all of them.

01:39:49   And if you can run all of them and you can build all of them, you'd want the experience to be unified. You don't want the iPhone apps to look weird running on the Mac. You don't want the iPad apps to look weird running on the Mac. You want it all to look like a piece.

01:40:01   So the icons change in Big Sur to look closer to what the icons look like on iOS and iPadOS, right?

01:40:09   Everything moves around in the UI to be better for touch targets, right?

01:40:13   I said in the last show, touch Macs are coming. How are you going to use iPad and iPhone apps on the Mac without multi-touch? Well, probably the ARM Macs will be touch-based, right?

01:40:24   You start to get a picture of a single sort of Apple platform where devices can run all of the apps that make sense for that device.

01:40:33   And the biggest and baddest platform can run all of them and has to have all the features, including a touch screen.

01:40:39   On the phone, you can't run iPad apps because it's too small, right? What can you run on the phone? Just the iPhone apps.

01:40:45   On the iPad, you can run the phone apps and the iPad apps. On the watch, you can just do watch apps.

01:40:50   I don't think watch apps make sense on the phone, but technically it would definitely be possible, right?

01:40:54   You start to get this picture of a unified Apple world where apps look similar enough to each other to be comfortable hanging around with each other.

01:41:03   And every Apple device gives you all the input methods and interaction models that make sense for that device.

01:41:10   So the Macs have to have touch because sometimes it makes sense to use touch.

01:41:15   So you need to make it plausible for touch to be useful in the same way that the iPad makes it plausible for keyboards to be useful, plausible for trackpads to be useful.

01:41:25   That took effort on the iPad to make the trackpad useful. By the way, there's a great session about cursor on the iPad to show how they did that.

01:41:32   It doesn't mean suddenly you never touch the screen on the iPad in the same way that it's not going to mean that you never touch the mouse or keyboard on the Mac.

01:41:39   It just needs to be a plausible input method. And if you buy into that model, which I totally do, that plan, that vision, which Apple, by the way, has not articulated,

01:41:48   but it's sitting there like staring you in the face if you just look at what they're releasing.

01:41:52   They're not going to articulate that grand vision quite yet, but it's there. Then you go back to the API question.

01:41:57   How do we get from where we are now to that grand vision? And the answer is obviously SwiftUI.

01:42:02   But it's not there yet. So Apple wisely is not going to tell everybody, "That's a great app kit, app you've got there, and UIKit is awesome and Catalyst is great.

01:42:13   Let's port your stuff." But the future eventually is SwiftUI everywhere.

01:42:20   And they can't say that because it's not true now. They have to prove it. They have three or four or five years to prove that SwiftUI can even freaking do that job.

01:42:28   They have to select everybody like Adobe and Microsoft to get on board that train.

01:42:33   If you had told someone back in 2001, "Apple will eventually convince Adobe and Microsoft and all these other big companies to essentially 'port their apps to Cocoa.'"

01:42:45   What about old school Mac developers? Like BBEdit has been around for a million years. They're not going to rewrite BBEdit and Cocoa.

01:42:51   It's going to be carbon forever or the app's going to die. Guess what? BBEdit runs in 64-bit.

01:42:58   It was a Mac toolbox application, then it was a carbon application, and now it is essentially a Cocoa application? Nature finds a way.

01:43:07   It is possible, but you have to do it slowly. It's like trying to introduce the pet to a new home.

01:43:13   You can't just all at once say, "AppKit is dead and UIKit is going away," because people will flip out, and it's not true.

01:43:21   It's not actually true that that's going to happen, but that's going to happen eventually if all goes to plan.

01:43:27   If it doesn't go to plan, then it comes with other plans. But even if that doesn't go to plan, in the battle between AppKit and UIKit, which one of those things is carbon in this scenario?

01:43:35   UIKit spans a bunch of platforms. AppKit does not. AppKit only gets to be a longer bar in this diagram because they decided that ARM Mac and Intel Mac are two platforms.

01:43:43   You just do Mac as one, AppKit looks like a tiny, tiny little thing.

01:43:47   So as much as I love AppKit and as much as people love UIKit and as much as Catalyst is going to help bring that stuff over,

01:43:55   I feel like Apple's grand vision—Apple's unarticulated but existing, I contend, grand vision for their platform relies on the eventual success of SwiftUI.

01:44:09   And if SwiftUI has to coexist with an imperative API, I don't know if AppKit is going to—I don't know.

01:44:18   I suppose if it takes a long time for SwiftUI to come to primacy, AppKit and UIKit can just continue to exist as the way you bail out of SwiftUI when you can't get something to work.

01:44:27   But I'm having a hard time not looking at AppKit especially as today's carbon.

01:44:34   And I'm having a hard time looking at UIKit as having a super bright future in the face of SwiftUI, which is just absolutely gunning for every single thing that UIKit does from top to bottom.

01:44:45   And this is year two already you can make a SwiftUI app from top to bottom and in theory not touch UIKit, which is not true by the way.

01:44:53   SwiftUI uses AppKit controls on the Mac. It uses UIKit controls on the—that's the reality of today.

01:44:58   That's what I'm saying. SwiftUI is never going to replace it. It uses them just like Cocoa used to use carbon controls, just like Cocoa used to have to use carbon to play video.

01:45:07   That's where we are today, but this is where I think we're going. Do I sound insane or is this making sense to you too?

01:45:14   You absolutely do not sound insane.

01:45:17   Yeah, I think you're right. I mean, what's interesting is that Apple has said, like I believe Craig Federighi said exactly in the Gruber interview this year, that you can keep writing your app and all the UIKit, AppKit, they're not going anywhere, you keep running it and everything.

01:45:36   But I think you're right that that's not going to be the case forever and that these technologies are not all going to die at the same time.

01:45:45   That they will definitely have like, you know, I think AppKit dies first out of these three.

01:45:52   UIKit probably less, significantly longer, but when the time comes it's going to be the next one to go.

01:45:59   At this point, if you want to write an app that runs on all of Apple's major platforms, AppKit doesn't do that at all.

01:46:08   You know, as you mentioned that awesome tweet graphic where it shows what all the languages span them all.

01:46:14   You basically have two choices. You can either, unless you want to write like three different code bases, but if you're going to have like just pretty much one main code base and have most of the UI represented in that code base,

01:46:27   you only have two choices really, UIKit or SwiftUI. And so AppKit, you know, it's got to get the boot.

01:46:36   Like, well, if you're going to only focus on one code base, it's not going to be AppKit. At least it shouldn't be AppKit.

01:46:43   And I say this like, I like parts of AppKit. I don't like it or not to write my apps in it very much, but I do, you know, I like what it does.

01:46:51   I like what other apps are able to do with it. There are a lot of things about the catalyst app that I don't like.

01:46:56   Still, even in Big Sur. But as a programmer of an app that has a bunch of UI code and where people on all platforms are demanding ports of it,

01:47:07   it is really hard to argue with I should be using probably UIKit everywhere, which I'm already on, you know, the whole app so far in iOS, but like I should be taking UIKit to the Mac via catalyst.

01:47:20   And also I should definitely be writing most new stuff that can be written reasonably in SwiftUI in SwiftUI. And that is clearly the future.

01:47:31   I mean, eventually, maybe not today, because like it's like Cocoa in the beginning. You can think that all you want.

01:47:37   But if you tried to make like an app that did all the things that a good app needed to do in the early days with Cocoa, you couldn't.

01:47:43   It was weird. It didn't behave right. The features weren't there. Right. And that's where SwiftUI is now.

01:47:48   But like, here's the thing. SwiftUI, pretend SwiftUI didn't exist. This would be a lot simpler.

01:47:54   The fact that they made SwiftUI at all means they don't think it's UIKit forever.

01:48:00   Because why would you make a second API to do essentially the same job as UIKit? Because UIKit is older.

01:48:07   It's not as old as AppKit, but it's older. And you look at the difference between AppKit and UIKit. They learn so much.

01:48:12   The AppKit people who learn all the lessons of AppKit and they use those lessons in UIKit. SwiftUI is very different from both of those.

01:48:20   In theory, incorporating lessons learned, but also kind of a new take on how you do UI.

01:48:25   And if you listen to Apple's pitches for SwiftUI and you listen closely, obviously from the true believers in SwiftUI or from the people who made it,

01:48:32   they tell you it's not just a different weird way to do things. Like maybe Casey with his combined stuff.

01:48:39   Actually, it's related. What they pitch to you is like, look, if you have to manually do stuff with an imperative UI, there's so much that can go wrong.

01:48:49   You have to worry about lots of things and deal with them manually. SwiftUI lets you not have to worry about a lot of that because of the programming model.

01:48:56   Not because it's a different API with different function names and different arguments. That's not what it is.

01:49:00   It's because there are certain things that categorically are not an issue. Like the same reason that Casey loves reactive programming.

01:49:06   Certain things categorically you don't have to deal with anymore because they don't happen. Like the state isn't there. It's represented in the call graph.

01:49:13   All the things that allow these declarative UIs to be simpler and allow you to write good code with fewer bugs.

01:49:23   Apple itself believes that, whether you believe it or not, and whether SwiftUI currently embodies that, which arguably it doesn't quite yet, but it's two years old.

01:49:31   They made this new API, and that's essentially a vote of no confidence in UIKit and AppKit.

01:49:38   Saying, we think there's a better way. We're going to make a better way because UIKit traces its lineage to AppKit, which traces its lineage to NextStep, which traces its lineage to the 80s.

01:49:48   And we've got a new language, and now we've got a new API that suits it. And that's their goal.

01:49:57   It could end up like AirPower, but right now it seems like that's where they're going.

01:50:02   And unlike the diagram like Carbon, with this bar diagram in my head that I should have made in real life but didn't, Carbon has a hard cutoff.

01:50:09   It was like, well, 64-bit, see ya Carbon. Just not gonna happen. But in reality, all the APIs don't die. They just fade away.

01:50:17   There's no real reason to do a hard cutoff. So UIKits fade out. The gradient on the right side of that bar is gonna be pretty long.

01:50:24   Same thing with AppKit. They work, they're fine. AppKit's gonna be around for as long as it takes Adobe and Microsoft to port their apps to SwiftUI, which could take a decade and a half.

01:50:35   Whatever, let's be real secure. But those lines don't go on forever. And the SwiftUI line has just started.

01:50:43   And so if it is successful in any possible way, it's gonna—and same thing with, I didn't mention this, but Objective-C and Swift.

01:50:50   When Swift was announced, Apple was all like, "Yeah, we got this cool language. It's really nice. We should check it out at 1.0. We're gonna change it."

01:50:58   And if you had said in that WWDC, "See ya, Objective-C. Not gonna be any Objective-C." It'd be like, "Eh, well, this is a new language. We'll see how it goes." And they'd be right. You have to see how it'll go.

01:51:09   Many years now, if someone said, "I think Objective-C will be the preferred way to write apps on Apple's platforms," it's already not. That time has already passed.

01:51:20   "Well, I think Objective-C will be around forever?" "Nope, don't think so. It'll be around for a really long time." But its line is fading out.

01:51:27   And no one argues that anymore. Like, everything is Swift, as Marco said earlier in the show. Everything is Swift.

01:51:33   From day one, all the code examples had at least Swift and Objective-C. And today, everything is Swift.

01:51:40   Swift, I think, has proven itself, to Apple at least, that this is the language of Apple's platform future.

01:51:46   Even though, yes, they will continue to support and improve, by the way. There's a bunch of cool Objective-C improvements this year, like performance improvements and stuff.

01:51:52   They'll continue to support it, but its line is fading. Swift UI's line is fading in at this point instead of fading out.

01:51:59   UI Kid is totally solid. App Kid, I would argue, is already kind of fading out. And Catalyst is just a way to scribble over App Kid's line even more by saying, "Haha, UI Kid, I'm in your base. What is that one? I can't even remember it. Killing your dudes?"

01:52:12   Yep.

01:52:15   Yeah, I don't know. I hate to say, but it does seem to me like it is extremely obvious that App Kid's time is limited. And I think it was very obvious before I heard your monologue, and I think it's extremely obvious to me now, that App Kid's time is limited.

01:52:31   And I don't see a world where UI Kid is going away as quickly as you seem to be implying, but I agree that if there is only one way forward, it is almost certainly Swift UI, which, as someone who really likes UI Kid, that slightly pains me, but logically, it's the answer that makes the most sense.

01:52:52   Like all the people who love Objective-C and Carbon, you'll eventually get over it. The change happens slow enough that it doesn't seem so bad. The change happens slow enough that even Microsoft and Adobe can handle it.

01:53:05   So certainly individual developers will not be bowled over. Again, Carbon is the exception where it was just this hard cutoff that was really tough on even indies.

01:53:11   But everything else that I've talked about, it's a slow, apocryphal, boiling the frog type of thing where Marco has been stewing in Swift for so long, and he's mostly been able to just chill and ignore it and continue to be productive.

01:53:25   Now he's feeling the water get a little bit warm, but no one's forcing him to use Swift. He can still get his job done with Objective-C. It's going to be supported for years, if not decades, but that's how these transitions take place.

01:53:37   The more interesting story from consumers' perspective, if you're not a developer listening to all this API mumbo jumbo, is what I said before about what does the experience look like of using Apple devices.

01:53:46   And that's the experience that I feel like Apple, I was surprised they didn't more forcefully pitch it. They, again, were timid about it.

01:53:53   The idea that five years in the future, there is one app store with apps that can run various platforms. Every app doesn't run on every platform, but you just go to the app store and get an app, and some of the apps will run on every platform, some will just run on the watch, some will run on the iPad, on the Mac, some will run on the phone, or whatever, and it's all just in one big stew.

01:54:12   And the Mac, the whole point that the Mac exists is, it's the place where you can run all the things. Again, maybe it doesn't make that much sense to run anything from watchOS on your Mac, but technically you could. TVOS I think makes more sense, actually, to run that on a Mac with a big screen or something, right?

01:54:26   But you can do all the things on the Mac. You can develop on the Mac. This is another reason, by the way, that you don't necessarily have to ever have Xcode on the Mac.

01:54:34   Instead, you have iPad apps on the Mac instead of the other way around. Or, it's like, when they eventually make the drafting table touch iPad that I've been begging for since Hyper Critical Days, does that have to be an iPad, or can that be a Mac?

01:54:49   Once Macs get touch and can run iPad apps, there's no reason that needs to be an iPad. So the Mac will continue to be the shield, as I think Gruber said in one of his articles, to allow the iPad and the iPhone to remain sort of lighter in terms of conceptual load and complexity.

01:55:03   By doing all the things, a touch-based drafting table iMac that runs Mac OS on ARM and can run all iPad apps with multi-touch? Problem solved, right? So easy to do. I don't know how many years we have to wait for that, but that's the future I see.

01:55:20   And by the way, yes, in that future, everything looks similar enough to each other that having it all together on the same screen is not jarring, and that the Mac controls aren't all teeny tiny, and the iPad and iPhone controls are all big.

01:55:35   They're getting close enough to each other that there's a family resemblance, and that all input methods that are plausible can be used.

01:55:44   Thanks to our sponsors this week, Squarespace, MacWeldon, and Linode. And thanks to our members. If you want to become a member, go to atp.fm/join. Otherwise, thank you very much. We will talk to you next week.

01:55:59   Now the show is over, they didn't even mean to begin, 'cause it was accidental, oh it was accidental.

01:56:12   John didn't do any research, Margo and Casey wouldn't let him, 'cause it was accidental, oh it was accidental.

01:56:22   And you can find the show notes at atp.fm, and if you're into Twitter, you can follow them.

01:56:32   @C-A-S-E-Y-L-I-S-S, so that's Casey Liss, M-A-R-C-O-A-R-M, Auntie Margo Arment, S-I-R-A-C, USA, Syracuse, it's accidental.

01:56:51   They didn't mean to, accidental, accidental, tech podcast so long.

01:57:02   Casey, I noticed that on Twitter you were talking about calorie counting as a thing you were starting. I'd like to hear more about that.

01:57:09   Well, how, that's fine. So I've been on a meandering fitness journey for the last, I don't know, year or two. I don't remember exactly when it started, but something like a year or two ago,

01:57:26   Erin started doing some exercise videos at home, and the particular ones she was doing were through Beachbody, which I think we may have talked about this on the show before, but if you're familiar with Beachbody and going, "Oh God, oh God, oh God!"

01:57:40   So Beachbody is, without doubt, 100% an MLM, like pyramid scheme, a million percent.

01:57:46   And you can easily get sucked into the become a coach thing of Beachbody where you're trying to recruit people and blah, blah, blah. Total MLM garbage, right? Not denying that at all.

01:57:57   However, the other side of Beachbody is they put out a whole crud load, they basically have Netflix of exercise videos, and I've done one of their programs a couple, two or three, maybe even four times through now, and I actually really like it.

01:58:11   And Erin's done several of their programs, and she really likes them. So putting aside the MLM portion of it, if you just focus on the Netflixy exercise portion of it, it's actually pretty good.

01:58:23   And so I've done a kind of weightlifting oriented program a few times through, and I also like to run on occasion.

01:58:32   My Achilles heel, I had it looked at about a year ago, and supposedly my right Achilles has a bone spur on it.

01:58:41   You mean literally. I was just beginning of the sentence, like, "My Achilles heel is right."

01:58:45   No, no, no, no, that's literal.

01:58:47   I spend too much time on projects dealing with my garage door. It's like, "Your actual Achilles heel."

01:58:52   Yeah, my biggest fault is that I can find no faults.

01:58:56   My literal tendon, or something in that region, it gets a little finicky, so if I run too much, it's not a good idea.

01:59:05   And plus running's really kind of terrible for you anyway. But I love it. I do enjoy running.

01:59:09   In no small part, thanks to Overcast for the Apple Watch. Moving right along.

01:59:16   But anyway, so we were at the beach last week, and this is deeply embarrassing, but I'll just come out and say it.

01:59:23   There was a couple with two small children, bigger than our small children, but still with two small children.

01:59:28   And the two of them were ridiculously toned and stick thin. And I just looked over, and I was like, "How do you do that?"

01:59:36   I don't view myself as a particularly large fellow, but these two were ridiculously picturesque adult man and woman.

01:59:46   And yet they had children, which is when usually your body falls apart, especially for women, but even for men.

01:59:51   And so I look over at them, and I'm like, "Man, there's got to be somewhere between where I am and there that I can try to reach for."

02:00:01   And so when I got home, about the same time, Aaron and I both independently thought, "You know what? We should start paying attention again."

02:00:11   Someone in the chat just said, "TMO Cal," in the chat said, "Casey Liz is not a large fellow, but is he a big sir?"

02:00:19   That's very good. That's very, very good. Sorry, I got totally derailed there.

02:00:23   Anyways, so we thought to ourselves independently and then said to each other, "We should probably start paying more attention to what we eat again."

02:00:30   And I used, on and off over the years, I've used an app called LoseIt to calorie count and track.

02:00:37   And again, I don't think I'm in desperate need of... I don't even really think I need to lose weight as much as I need to move it around.

02:00:45   I wish I could just push it from my "a little bit larger than I want" midsection area to my stick-thin legs and arms.

02:00:53   If I could just squeeze it to other parts of my body, that'd be great.

02:00:56   I'm thinking do it with hair. That'd be wonderful.

02:00:58   Right, same thing, right?

02:00:59   Take it all off my back and just move it straight up.

02:01:02   I don't think you want the back hair on your head.

02:01:04   At this point, I'll take whatever I can get.

02:01:06   Oh, this is going to be the best episode ever.

02:01:11   So anyway, I went casting out because I started using LoseIt again for literally a day.

02:01:16   And LoseIt is very full-featured.

02:01:19   You can scan barcodes and it has a very robust database of foods and calorie counts and nutrition information.

02:01:26   I haven't paid for it, to be honest.

02:01:28   But I didn't really feel like I needed any of the perks that came from paying for it.

02:01:34   And I'm just looking at this app and it's just visually... it's an assault on the eyes.

02:01:41   It's offensive how ugly it is. I just hate how it looks.

02:01:45   And using it is not all that much better.

02:01:49   And so I went casting about for an alternative to it.

02:01:53   And what I've been using for the last 48 hours, and I like a lot.

02:01:57   I don't know if it's quite perfect, but I like it a lot.

02:02:00   And I love the name. It's called FoodNoms. F-O-O-D-N-O-M-S.

02:02:05   And it's actually by the husband of a friend of mine, which is super cool.

02:02:09   And I didn't even know that his husband did this app, which is also super cool.

02:02:14   I wish I'd known it. But anyways, it's very well designed. Extremely well designed.

02:02:18   A couple of interactions I don't totally love, but I've already been exchanging tweets with the developer.

02:02:25   And he seems super responsive to making changes and improving the app in any way possible.

02:02:31   But that's many, many, many words to say.

02:02:34   I think it's probably unwise for me to continue to only lightly pay attention to what I eat.

02:02:40   And calorie counting is arguably more about weight loss than anything else.

02:02:45   I don't necessarily need to lose weight as much as I feel like I want to be more conscious of what I eat.

02:02:53   And get a little bit more toned and just try to be healthier.

02:02:57   Now, coincidentally, in the show notes in our after show section, you had made a one-off comment, Marco, at some point about running.

02:03:05   And I'd like to explore that, but I'm not trying to necessarily take the spotlight off me if you have any follow-up questions.

02:03:10   I'd love to keep it on you for a little while longer.

02:03:13   So, yeah, I mean, basically, I think you seem like you're on the right track here.

02:03:18   I used to use LoseIt, jeez, probably 10 years ago now. It's not a new app.

02:03:24   Yeah, yeah, yeah.

02:03:26   And it was basically the first time I'd ever tried to diet. And so I started there.

02:03:31   And I read the whole, like, you know, the hacker diet thing, where, oh, just calories in and calories out.

02:03:36   And, I mean, that's not entirely accurate, but it at least gets you in the ballpark.

02:03:41   So I actually found calorie counting extremely helpful.

02:03:46   It basically taught me, like, what is expensive and what is cheap to eat.

02:03:52   Yeah, yeah, yeah.

02:03:54   It's hard for me to keep that up as a weight loss tool, because I hit a point where I just am miserable all the time, if that's the only thing I'm doing.

02:04:02   For weight loss, I found it much more effective to reduce carbs than to strictly reduce calories,

02:04:08   because reducing carbs, I have found, makes it easier for me to keep the calories down, because the things I'm still eating keep me full for longer.

02:04:14   So that's a whole thing that you will probably discover if you haven't already.

02:04:18   But I think you are wise to separate out the concerns between fitness and weight loss.

02:04:26   Those are two very different things. And I think one of the great failings of American culture is that we seem to have convinced ourselves that they are the same thing.

02:04:35   That if you want to lose weight, the thing you should do is go to the gym sometimes.

02:04:41   And that is terrible advice. Those are totally separate things.

02:04:46   And you should have your weight in a healthy range, if possible.

02:04:51   And you should keep your body in a state of relative fitness, if at all possible.

02:04:57   But those are two totally separate things that you can do one or the other. Ideally, you do some of both.

02:05:04   But in order to lose weight, running a couple times a week, or going to the gym a couple times a week,

02:05:11   or hell, even if you go to the gym for like an hour a day, if you're still eating a whole bunch of garbage, you're not going to lose any weight.

02:05:19   It's very helpful to treat those things. Sorry for all the thunder sounds.

02:05:25   This is really getting quite loud over here, but I'm going to keep going. I swear it isn't this spooky of a topic.

02:05:31   You should lose weight. Boom!

02:05:34   Stop eating everything that tastes good. Crash!

02:05:38   But I feel like the more that you can do, and you are listeners as well, and I'm talking to myself as much as anybody,

02:05:46   the more you can do to separate out fitness from weight loss, the more effective you'll be at both.

02:05:51   Because they are two very different things. Fitness, there's lots of options for.

02:05:56   Weight loss, you can do it a bunch of different ways. There's a whole bunch of stuff that works a little bit.

02:06:03   A whole bunch of stuff that doesn't work at all. There's a few things that work a lot.

02:06:06   Generally, calorie restriction is the way to do it, for the most part.

02:06:11   Again, talk to your doctor, etc. However, there are healthier and less healthy ways to do calorie restriction.

02:06:18   And again, I think carb reduction is one of the easiest. Because you start seeing how much, for instance, if you drink calories.

02:06:29   And I'm not just talking about alcohol. Just stuff like drinking soda or having sugar and milk in your coffee.

02:06:34   That stuff adds up. If you can cut out drinking as many calories as possible, that's an easy win.

02:06:40   Because drinking calories don't do anything for you. They're not helping you at all. They're not keeping you full.

02:06:46   And then, in the way that calorie counting taught me to start looking at nutrition labels a little more carefully.

02:06:54   And to start learning, like, you know what, it turns out our obsession with things like olive oil and everything.

02:07:01   You don't need oil in most things. And it's horribly unhealthy for you.

02:07:06   Olive oil is good for you. Hold on, hold on a second. Italian coming in here. Olive oil is the good fat.

02:07:11   I'm Italian too. Guess what? Oils are terrible for you. You can have a tiny amount of...

02:07:17   Not olive oil.

02:07:18   No, really, that is also terrible for you. Just don't have much of it. And definitely don't heat it.

02:07:23   Just drink a cup of olive oil a day and you'll be great.

02:07:26   Yeah, right.

02:07:27   Oh my goodness.

02:07:28   God. But yeah, there are things that people think are healthy that aren't.

02:07:32   There are things that you assume that you have to have in your diet that you might not need to or that you might need a lot less of.

02:07:39   Carb reduction can get you very far down the road of calorie reduction.

02:07:43   Now, there are ways to do it stupidly and there are ways to do it smartly.

02:07:47   Like, my way of doing it for the last couple of years has been I'm not going to count the carbs in vegetables.

02:07:53   And I'm not considering a potato a vegetable because that's just cheating.

02:07:57   But I'm not going to count whatever's in leafy greens. I use as many leafy greens as I want to.

02:08:03   And it's so ungraceful. I will literally buy like the boxes of the pre-washed lettuce.

02:08:09   One of those like medium-sized boxes, it's about the size of like two books stacked up.

02:08:13   I'll just eat one of those like with a meal by hand.

02:08:17   Just grabbing the lettuce like eating it like chips.

02:08:20   Just as like part of the meal for lunch.

02:08:23   Like I'll have a box of lettuce and, you know, some chicken salad or something, you know.

02:08:27   Don't count calories in greens.

02:08:30   Oh, you know, God, that's a big thunder.

02:08:32   Oh, wow. You're about to lose power up there.

02:08:35   You're assuming Casey eats any greens. That's true.

02:08:37   Excuse me, sir. Do you know what I have for lunch every day? I have a salad.

02:08:42   Well, last time we asked you, you said you had a grilled cheese sandwich every day.

02:08:45   Yeah, and then my cholesterol spiked. You were a thunk it and so now I eat a salad every day.

02:08:49   Grilled cheese is a vegetable, right?

02:08:51   Yeah, that's how it works.

02:08:53   You know, in this thing that Margo set up between fitness and weight loss, my advice to you, Casey, is forget about the weight loss.

02:09:00   Just do the fitness because nobody cares what you look like.

02:09:04   You know what I mean. But you're not a model for your profession.

02:09:08   You're going to look like what you're going to look like.

02:09:11   Within reason, obviously, if you control your diet in some reasonable way.

02:09:15   But don't think that you're going to have the chiseled physique because you're not.

02:09:19   What it takes to get a chiseled physique at your age is way more time and effort than you're going to want to put into it.

02:09:24   That's not going to happen.

02:09:25   But fitness keeps you alive. Like all the things about like, "Oh, if you're slightly overweight, you're going to die earlier."

02:09:31   That's not necessarily the case. If you are fit, if your internal organs all work well, if you can get oxygen to your blood easily, if your heart is strong, that will keep you alive until Alzheimer's gets you.

02:09:43   But anyway, fitness is way more important than "weight loss."

02:09:50   Because if you're trying to lose weight for some vanity reason, that's the wrong way. You want fitness to live to see your grandkids, right?

02:09:58   Fitness is what you want to go for.

02:10:00   And by the way, if you go for fitness, you will, as a side effect, experience some amount of what you want.

02:10:06   Which may not manifest as weight loss, but will manifest as a body shape that is nicer.

02:10:11   Because it's impossible to doggedly pursue fitness and not essentially redistribute your weight at the very least, if not lose weight.

02:10:17   So I would say, forget about weight loss. Go for fitness. And everything else will follow.

02:10:24   Much of what John is saying is true, but I think having like, course corrections in both areas are usually better.

02:10:31   You can't pig out, but like look at Casey. He's not pigging out.

02:10:34   Casey does not have a massive weight problem that we need to address because he's having 12 dozen eggs every day for breakfast. This is not happening. His diet is reasonable-ish. He's probably eating garbage, but reasonable-ish in terms of calorie count.

02:10:47   You're like 6 foot something Casey, how much do you weigh?

02:10:50   I'm 6 foot. I was about 160 this morning.

02:10:55   So like what are you even worried about? Fitness is all you care about. And then finding the right way to get fitness. Like you're 6 foot 160. Our listeners are screaming at you right now.

02:11:04   All of our listeners who are not that are screaming at you and saying, "You are not that much heavier than me for being so much taller than me."

02:11:13   The thing of it is that I have not been as consistent with exercise as I'd like, but I'm in probably the best shape I've ever been in my life in terms of my physical abilities.

02:11:27   Just the other day, it was a week or two back, I ran a mile hard. I typically would run about a 5k if I'm going to go for a run.

02:11:36   Just a couple weeks back I ran a mile hard and I was within 20 seconds of the fastest mile I ever ran in high school.

02:11:43   Now to be clear, I always have been a deeply unathletic human being. This is why I'm a computer nerd.

02:11:49   Or maybe the computer nerd came first, who knew? But anyway, I ran a reasonably quick mile for my body.

02:11:57   And I think certainly that's something that I'm proud of. I have something that vaguely resembles a bicep and something that vaguely resembles a tricep, which is new for me.

02:12:08   I've never had those before, so that's kind of neat. Now if anyone else looked at it, they'd be like, "Huh? What?"

02:12:12   But I can tell, and that's kind of all that really matters. And I've been relatively consistent with the fitness over the last year or two.

02:12:22   But my choices with regard to diet have ranged from "don't care" to "well, I should probably be a little more considered than I am."

02:12:35   And then occasionally I'll go through bits and spurts of "Yeah, I'm actually doing a really good job."

02:12:39   I mean, generally speaking, my daily diet is I have a fruit smoothie for breakfast, and it's just half a banana, handful of strawberries, handful of blueberries, and some protein powder, and some soy milk.

02:12:51   And that's it. That's the whole thing. That's my whole breakfast.

02:12:54   Massive amount of sugar.

02:12:55   Yeah, huge amount of sugar.

02:12:56   It is a fair bit of sugar, no doubt. No doubt. But it's a lot better than having a couple Eggos, which I did 20, 15, 20 years ago. You know what I mean?

02:13:06   Probably less sugar in the Eggos, but go on.

02:13:08   Oh, God, gentlemen.

02:13:09   It's slightly better. Maybe.

02:13:11   At least you get some fiber with the fruit.

02:13:13   My point is that there are many, many worse choices that I could be making. Can we at least agree that?

02:13:19   Yeah, no, that's what I'm saying. I think your diet is probably, if you just did the thing where you take the amount of whatever you're currently eating, take less than the normal amount that you would make, that small adjustment would probably have you shedding small amounts of pounds, literally without changing anything.

02:13:34   And then if you actually go far enough and say, "Well, maybe I shouldn't have a sugar-filled fruit smoothie every single day for breakfast," but instead have something else, just fruit by itself, with an egg or something, one of those days.

02:13:48   Anyway, minor adjustments would have a big effect on you, but honestly, you're 6' and 160. What is your target weight? You don't need to lose weight. You just need to redistribute a little bit.

02:14:01   I don't think I do need to lose very much. I just look down at my gut, and it's not the friggin' six-pack that this guy, who must have been about the same age as me because his kids were quite a bit older.

02:14:11   You're not going to get a six-pack with that massive restriction on fat intake and huge amounts of working out, but you can move some of that gut around by just doing a couple more weightlifting exercises.

02:14:20   We agree. And what I haven't had a chance to say is—because I keep interrupting myself, much less the two of you—is that I—no, I mean that. I keep going on these tangents. I think one of the benefits that I have from entering the food I consume—and this is not unique to Casey, and this is a very common thing—but one of the biggest benefits I get is just being more considered about it, because I will idly go grab something that is truly terrible for me to eat if left to my own devices.

02:14:49   I'll throw down club crackers like they're going out of style.

02:14:56   Oh, those are so good and so bad for you.

02:14:59   They're so good. Exactly.

02:15:00   They're so delicious, but they're terrible. You just need to do your self-hacks, don't have them in the house, no food after 8 p.m. There's all sorts of very simple rules that you can use to trim the worst of your bad habits.

02:15:09   Yeah. Like, why are you buying club crackers?

02:15:11   Because they taste so good.

02:15:13   Because they taste friggin' amazing.

02:15:14   Yeah, they're like drugs for me, but that's why I haven't bought them in like 15 years, because I know that—

02:15:19   I luckily do not like a lot of these garbage foods, so I'm saved from being tempted by them.

02:15:24   But the thing of it is, just the fact of me entering, like if I were to go and grab a club cracker or two or something—

02:15:32   And then you have to shamefully enter that.

02:15:33   And then I have to shamefully enter it, then I'm going to choose differently.

02:15:36   And like almost every night after we put the kids to bed, there's a couple hours that Aaron and I will stay up, and nine times out of ten, I'll grab something to munch on.

02:15:45   And what I'm teaching myself over just the last couple of days when I've been entering stuff again is that I'm not hungry. I just want to eat.

02:15:55   Like, I don't need to eat anything. I'm not actively hungry most times. I just like the act of eating.

02:16:01   And again, I don't think this is unique to me, but just by virtue of having something, some amount of accountability, I think it's made me make better choices,

02:16:11   not only in terms of what I grab to eat—you know, the other day I grabbed an apple instead of 15 club crackers or whatever.

02:16:18   I mean, I'm overemphasizing how many crackers I eat, but you get my point.

02:16:21   No, you're not. No, because the plastic sleeves of club crackers have the similar problem as the Girl Scout Thin Mint cookies,

02:16:28   which is that there is no way to open the package that they come in without exposing five or six cracker edges to the air.

02:16:37   And then it's like, well, you have to eat them, otherwise they'll go stale.

02:16:40   Yeah, you have to. You have no choice.

02:16:41   In the process of getting those out of the bag, the crack spreads down the bag and exposes five more crackers.

02:16:48   And then it's like, well, you have to be able to roll up the bag nicely, so you can't stop here.

02:16:53   You have to just take these five first, then you can—

02:16:55   They will not be in your house long enough to go stale. That is not actually a concern.

02:16:59   You can just—just wait, Casey. You want a glimpse of your future, by the way.

02:17:05   Just wait until your kids enter their teen years and start eating a bazillion calories,

02:17:11   because they will be modeling a behavior that you cannot and should not follow.

02:17:15   Because you remember what it was like when you were a teenage boy and you didn't know the amount of calories you'd eat.

02:17:19   You see them do that in, A, they eat all your food, and B, if you're anywhere near them, you mirror their behavior.

02:17:26   Oh, we'll sit down at the table, have lunch together. Here's your lunch, here's my lunch.

02:17:29   And you're still in the mode where it's like, Daddy's lunch is bigger than the kid's lunch?

02:17:33   That's going to reverse. It better reverse, because you should not be eating the same lunch as your teenage son.

02:17:38   So just keep that in mind for your future.

02:17:40   Whatever you're doing now that maintains your current weight, you're going to have to be more strict as time goes on.

02:17:47   As we get older, if we don't change our habits, it gets harder to get in shape, it gets harder to stay in shape,

02:17:54   it gets harder to maintain weight and easier to gain weight.

02:17:57   So it's good to start this process now and to make minor course corrections if you have to,

02:18:04   even if it doesn't seem like anything's urgent right now.

02:18:07   Also, plan on gaining a pound a year for the rest of your life, just FYI.

02:18:12   Or say no. Say, you know what, I'm not going to.

02:18:15   It's hard. Yes, you have to fight against it.

02:18:19   For example, to control the snacking. That is largely a habitual thing.

02:18:23   There is certainly a habit that many of us get into, I have, of like, oh, when we're sitting on the watch TV, we grab a snack.

02:18:30   Once you're in that habit, it's hard to break.

02:18:32   But also, part of that is the food you're choosing to eat.

02:18:36   If you eat a really protein, fat, heavy dinner, then you're going to be too full to want to eat.

02:18:44   You're just not going to want to think about it.

02:18:46   One of the things that I learned going lower carb was the blood sugar up and down cycle that you get on.

02:18:53   When you're eating a lot of sugary stuff, a lot of carb stuff, you eat, and then your sugar rush eventually crashes.

02:19:00   And then a couple hours later, you want a snack.

02:19:04   And once you break that and you're not having a lot of sugar or carbs anymore,

02:19:10   that up and down pattern, that roller coaster levels out big time.

02:19:15   And it's a lot easier not to eat more. It's a lot easier not to snack more.

02:19:20   It's a lot easier to make better choices.

02:19:22   And fruit, I hate to tell you, fruits up there with oil is things that most people overestimate the health benefits of.

02:19:31   And things that are best enjoyed in extremely small amounts.

02:19:35   For instance, when you make a smoothie, I don't know what kind of ratio you use,

02:19:41   but when one makes a smoothie, when most people make a smoothie, there's quite a bit of fruit in there.

02:19:46   Not to mention the fact that the other ingredients of a smoothie might also be sugary.

02:19:51   So things like--

02:19:52   Soy milk, quote unquote, milk.

02:19:54   Right.

02:19:55   It's just sugar.

02:19:56   Every milk from cow milk to all the alternatives that tastes like anything is sweetened.

02:20:02   You know because you can buy unsweetened versions of some of them and they taste like nothing and they're horrible.

02:20:06   Nobody wants them.

02:20:07   Almost all of those milks, including actual cow milk that we just call milk, do have a non-trivial amount of sugar in them.

02:20:13   So that's-- you're getting sugar there. You're getting sugar in the fruits.

02:20:17   Also, the way your body processes sugar is different if it's already all ground up versus if you're eating a blueberry and just chewing it once before you swallow it.

02:20:27   So you also don't want to have a rapid spike in sugar, which you get if something's already been blended or processed.

02:20:35   Versus if you're eating-- if you're munching on an apple, that's going to have a slower processing, which is better for you.

02:20:42   Better for things like insulin resistance over time and stuff like that.

02:20:46   It's fairly complicated and we don't have a great understanding of all this and how this works yet.

02:20:50   And I'm certainly no pro to even be trying to communicate what our science is these days.

02:20:54   But all that stuff matters.

02:20:56   And so if you can get yourself off of that train of having pretty sweet cuisine, really, and having carb-heavy stuff,

02:21:05   which once you eat it, it basically is treated like sugar in your body after not that long of a time,

02:21:11   and especially the more refined stuff.

02:21:14   This stuff all matters and it all adds to body sugar spikes and, over time, problems like insulin resistance

02:21:22   and various things that that causes that are pretty common problems for people.

02:21:27   So generally reducing the carbs, and that includes both sugars and carbohydrate in other forms, really helps a lot.

02:21:35   And I know it sounds crazy, it sounds ridiculous, but trust me, it helps a lot.

02:21:42   And again, don't do the thing that I did that everyone does where you just have bacon and cheese for every meal,

02:21:48   because then you're going to have cholesterol problems again.

02:21:50   That's not great. But there are other things.

02:21:53   Like, for instance, lean meats, having a lot more vegetables that are not potatoes, and not just fruits.

02:21:59   Like having a small amount of fruit as a treat, but having carrots.

02:22:03   Carrots have some sweetness, but not too bad.

02:22:05   Have a lot of greens, other green vegetables, zucchini.

02:22:10   There's a whole bunch of stuff you can eat that is pretty much free health-wise, that is filling and nutritious and everything else.

02:22:18   You know, occasional dairy and stuff is fine.

02:22:20   I've found Greek yogurt is a really kind of magical food for health purposes,

02:22:25   because as long as you can tolerate that much dairy, which is non-trivial for some,

02:22:30   like I can't have a whole ton of it, but it's a really good snack to have.

02:22:34   Like if you're hungry and it's on a meal time and you want to bridge the gap to the next meal,

02:22:39   a couple of spoonfuls of unsweetened Greek yogurt with one blueberry on top of each spoonful

02:22:47   makes it a sweet snack that is tasty, but there's almost no sugar in that.

02:22:53   There's a ton of protein and it keeps you full for a long time.

02:22:56   This whole world of low-carb eating, there's a lot of value to it and a lot of reasons beyond strictly wanting to lose weight.

02:23:04   And I highly suggest that since you're already taking steps to lose weight as part of this process, try low-carb also.

02:23:13   The same way you're looking at calories now, look at carbs and try to keep it into the low-carb range,

02:23:18   depending on whatever diet you're looking at. That's generally something like 20 to 40 grams a day.

02:23:23   Look at the labels of everything and keep it under that and see how it feels.

02:23:26   And see, you don't have to do it for long, do it for two weeks and just see how your body feels.

02:23:30   Do you feel good? How is your energy level throughout the day? How is the snacking cravings and everything?

02:23:35   It makes a pretty big difference.

02:23:37   Say something about low-carb. Sounds like the thing you described before, Marco. I could do that kind of diet where I count calories, but then I'd be miserable.

02:23:45   That's what low-carb sounds like to me. Low-carb equals misery.

02:23:48   Well, because your entire diet is like massive amounts of pasta and stuff, which is great.

02:23:53   That's not my entire diet, but I do love it.

02:23:56   So do I, but I can't do it anymore.

02:24:00   I know. I know all the things, Sam.

02:24:03   Yeah, pasta's awesome. I'm really good at making and eating pasta, but I can't do it.

02:24:11   I very rarely can have it now because now I feel bad. If I eat a whole bowl of pasta, like if I eat a very carb-heavy meal, I get a stomachache. It actually feels bad.

02:24:23   That's one of the good things about doing any of this stuff, especially even minor calorie restriction or portion control, is that eventually you can't even eat the portions that you used to eat.

02:24:30   They make you feel bad. You want to get into the goal state, like Marco said, where if you're like, "Oh, as my treat now, I've been so good for a month, I'm going to have my normal portion of whatever,"

02:24:40   and you eat your normal portion of whatever, and you feel so full that you feel like you're going to die, success.

02:24:47   Occasionally I do that. I did that recently where we hadn't had Indian food in forever, and we got takeout.

02:24:53   Then I ate what I think is a normal portion of my treating myself, and I was like, "Nope, too much. You don't eat that much food anymore. Too much."

02:25:01   Then you're miserable, and the next time you learn, even as your treat, you cannot eat that much of that kind of food anymore.

02:25:09   You used to be able to when you were acclimated to it, but you become unacclimated, and you want to be unacclimated to it.

02:25:15   You want to not be able to pull that off without feeling bad. That's the great place you get into because that's sustaining.

02:25:21   You don't want to make yourself feel sick, so you take half the portion and success. You got your treat and you eat half of what you normally would.

02:25:28   I want to talk to you about your running, Marco, because like I said, you made that one off, but we're running real long.

02:25:34   There's not much to say yet. I started running not even too aggressively yet, but yeah, just started doing it.

02:25:43   I've been doing various exercise things for a few years now. This is just the newest thing that I'm trying.

02:25:48   Here we are. I was going to suggest this. You're probably not going to go for this, but anyway.

02:25:53   When I lived in Long Island, my parents always did the Summer Run series where you have races all over Long Island.

02:25:59   Some of them are, at least one of them, they usually do a one-mile run on the beach at Robert Moses, which sounds like a one-mile race.

02:26:09   That's so stupid. Try running a mile on the beach. It is a hell of a race.

02:26:13   Anyway, they do races all over the island and it is a great way to get out and about and see things.

02:26:18   Obviously, this is not applicable in COVID times, so pretend we eventually come out of this.

02:26:22   That's a great way to have a fun thing to do on evenings in the summer.

02:26:28   Go to see a different new park somewhere. It's usually very scenic. Some of them are on beaches, some of them aren't.

02:26:33   And then participate in an actual competitive race where you're in age groups, so you have a chance of finishing,

02:26:39   meddling if you are reasonable for your age group, and as you get older, it gets easier as your competitors die.

02:26:46   It's great. My dad never got onto the podium until he was the only 70-plus year old one running, and he's like,

02:26:56   "Guess what? I'm going to win my age group now." Anyway, I recommend that because running, unlike other things,

02:27:03   most people don't usually do competitive weight listing, but running, there is a potential for it to be competitive.

02:27:08   Everyone's like, "Oh, I'm not going to be competitive. I don't care about racing." But it's fun to participate in a race.

02:27:13   You're not going to win. You're not going to win your age group. You're not even going to run fast.

02:27:17   But just participating in a race with people is fun. Especially if you've never done it before, you never ran in school or anything like that,

02:27:25   it's a surprisingly fun social activity of everyone, we're all in this together, we're all going to go out and we're going to compete,

02:27:31   and everyone supports each other, and you get to travel all over Long Island and see nice places and get a bunch of junk food at the end.

02:27:37   Some have beer at the end, too. And after you run 5K in the blazing sun, you're allowed to have a beer.

02:27:45   Well, 5K is a lot more than one mile.

02:27:50   When I came home from school one year, I'd come home from school and be like, "Oh, we're going to the Summer Run Series.

02:27:55   You want to come with us?" I was like, "Yeah." I forget what year it was in college. It was maybe sophomore or junior.

02:27:59   "I'll come do the run with you." So I come home from school. It's like a holiday. Or maybe it was the end of the school year.

02:28:04   I just come home from school, I'm back home, go do the run with them, I'm like, "I guess I'll do it."

02:28:08   It was a 10K. It's the longest I've ever run in my entire life. They didn't even tell me.

02:28:12   I'm running the race, I'm like, "When does this end?" We ran by the start/finish line a couple of times, I'm like, "Are we just going to run forever?"

02:28:18   And I finish the race, I'm like, "Oh my god, how long was that?" I was like, "10K." "Tell me ahead of time."

02:28:23   To this day, the longest race I've ever ran and the most miserable I've ever been ever running.

02:28:28   They're fun. Now I just take pictures. It's a lot easier.

02:28:32   [beeping]

02:28:34   [ Silence ]