00:03:42
◼►
So that you can—you can then copy and paste that URL, send it around, save it, refer back to it later, and it just has this, like, preset configuration of whatever you set it to.
00:03:50
◼►
Exactly right. And so I knew that I had put my configuration—quote-unquote "my" configuration in the show notes.
00:03:56
◼►
And I wanted to refer back to it. And so I clicked on it in the—you know, I went to ATP.fm and I clicked on it.
00:04:02
◼►
And I saw a white BMW. And I thought, "Oh, I must have clicked on the wrong thing." And I clicked it again.
00:04:10
◼►
And I saw the same white BMW. But it looked at this—oh. Oh. Oh. Well, okay, fine.
00:04:20
◼►
Well done, you insufferable pain in my hindquarters. Well done indeed.
00:04:25
◼►
I—it took me a minute to realize the joke. And then I realized the joke and I realized that Marco had swapped my Tanzanite Blue 7 Series for a white one.
00:04:34
◼►
I was quite annoyed. And I was actually more annoyed at the quality of the joke than I was the fact that you had replaced my blue car with a white one.
00:04:43
◼►
In fact, I respected the joke enough to—I went to actually replace the link with the correct one because I had the correct one still.
00:04:50
◼►
And then I thought, "No, no. He earned this one. I'll let it sit." And so it stole the white one on ATP.fm.
00:04:57
◼►
But rest assured, listeners, I had built a blue one, dammit.
00:05:01
◼►
This one just so happened to be white.
00:05:03
◼►
It happened to be white, Marco. It can just happen.
00:05:07
◼►
Also, I'd like to complain about Mr. John Siracusa. You had mentioned offhandedly on Reconcileable Differences #121, entitled "Impotent Hydra," that you don't like Wegmans.
00:05:18
◼►
And I would like you to defend yourself, sir, because this is blasphemy.
00:05:21
◼►
We've talked about this on this very show, I think.
00:05:24
◼►
The one reason is that the Wegmans near me is in a very inconvenient location.
00:05:28
◼►
It's on an annoying, divided highway that's difficult to get to and always clogged.
00:05:33
◼►
And then once you're on the side you want to get on, it's hard to get back on the other side.
00:05:37
◼►
It's a mess. So that's a big reason why we don't ever go there.
00:05:41
◼►
Because even though it's not that far away as the crow flies, it is terrible to get to.
00:05:47
◼►
And the parking's not great and just everything about it.
00:05:50
◼►
The second thing is, even if it wasn't terrible to get to, there's another one that's also even worse to get to that's farther away that's in a mall.
00:05:58
◼►
It's kind of like Whole Foods, where we go all the time because we have Whole Foods close by us.
00:06:03
◼►
But Whole Foods, like Wegmans, is... I mean, you know what they're like.
00:06:08
◼►
They're not like regular grocery stores.
00:06:12
◼►
Whole Foods is worse than Wegmans in this respect.
00:06:16
◼►
Where a regular supermarket that you're accustomed to, you can picture in your head of here are what the different aisles are and here's what's in them and here are the kind of products they have.
00:06:27
◼►
Just a generic, straight up the middle American supermarket.
00:06:32
◼►
Wegmans and Whole Foods have fancier stuff, different stuff, different brands of things, lots of prepared foods, all sorts of stuff like that.
00:06:40
◼►
The environment is different. It's not just aisles of stuff with carts going back and forth. It's all these weird stations and areas and stuff like that.
00:06:49
◼►
And when I want to go grocery shopping, most of the time, unless there's something special that I want to get that I know I can't get at a plain grocery store, I just want the grocery store experience of going up and down the aisles and getting the stuff and everything being where I expected.
00:07:02
◼►
Being able to find all the brands that I'm accustomed with. But Wegmans doesn't fill that. So maybe if it was close, I would go there more than I go to Whole Foods.
00:07:12
◼►
But I always feel like I'd have to go to multiple places like Wegmans/Whole Foods for weird specialty items or things that we know are better there or something we want to get that's fancy.
00:07:23
◼►
And then a regular supermarket for regular supermarket stuff.
00:07:27
◼►
I actually am sort of playing a shtick here. I do enjoy Wegmans. They just, in the last couple of years, came to my area.
00:07:36
◼►
I do like Wegmans actually most as a place to work. They have a really nice patio outside, one of the local Wegmans near me.
00:07:45
◼►
And additionally, they have quite a large food court kind of sitting area inside as well. Large enough that if you just go and sit and do some work, that's not really unusual.
00:07:55
◼►
And it's not...nobody's looking at you like, "Why are you here? Get out."
00:08:01
◼►
For those of you who don't know, Wegmans is a supermarket chain here in the States. I would say it's, like John had said, more similar to Whole Foods than a traditional supermarket, but not quite all the way to bespoke, artisanal everything like Whole Foods is.
00:08:17
◼►
But anyways, Wegmans is very expensive. My favorite vice, well not my favorite, one of the things I enjoy to do for lunch occasionally is go to Wegmans hot bar where you get a styrofoam or whatever container.
00:08:31
◼►
It's probably not styrofoam, it's probably cardboard. But anyway, you get a cardboard to-go box and you fill it with all sorts of different things.
00:08:37
◼►
And of course, if you're like me, you want the really, really heavy things like mac and cheese. And then you go and you go to the checkout counter and they weigh your box.
00:08:47
◼►
And it's so much per half pound or pound or what have you. And it is preposterous how much a single human being can spend at the Wegmans hot bar.
00:08:57
◼►
I think I have spent like $15, $20 on my meal alone. And this is just like cafeteria food for all intents and purposes. It's very tasty, cafeteria food, but consider your source, I have low standards.
00:09:07
◼►
And so it is ridiculous how much you can spend at the Wegmans hot bar. And Whole Foods is just as bad if not worse.
00:09:13
◼►
But yeah, a lot of people are devout Wegmans fans. I definitely like it. It is very expensive even for groceries as far as I'm concerned.
00:09:21
◼►
But it's a very nice store and I enjoy it. And I just wanted to hear you defend yourself and I can't really argue with anything you've said, unfortunately.
00:09:28
◼►
I can't believe that you go to the hot bar in a grocery store and get macaroni and cheese. That's basically the worst thing you can get there because it is always priced by weight.
00:09:37
◼►
And what you should really do, I mean there's all sorts of hacks of like you get all sunflower seeds or whatever. It's cheaper than buying sunflower seeds per pound or whatever.
00:09:47
◼►
But within the realm of normal meals, I feel like a salad with a bunch of stuff added on top like sunflower seeds or other nuts, things like that, that's almost always a way better buy than anything that is inherently very dense and heavy like baked potatoes or pasta.
00:10:04
◼►
Oh no, I completely agree. There's a stretch of time when Wegmans was new that we were doing this once every month or two. The family would go for lunch or something like that. And over time I realized I'm being an idiot.
00:10:17
◼►
I need to get like salad with maybe a little kiss of macaroni and cheese on the side rather than an entire platter. Not an entire platter, but you know what I mean.
00:10:25
◼►
Like a large portion of mac and cheese and then some other heavy thing next to it. So yeah, I completely agree with you.
00:10:32
◼►
I don't partake of any of the parrot foods. I don't begrudge people them. Occasionally if you're in a crunch and you don't have time to do anything, you can get them, but they're so expensive and everybody has sneezed on them and you have no idea how old they are.
00:10:44
◼►
It's just everything is aligned against them. The main reason we go into our local Whole Foods aside from it being very close by is they do milk as a loss leader. So they actually have the cheapest milk in the area.
00:10:56
◼►
So every time we go to Milk we end up in Whole Foods and then if our kids are with us they make us buy like the $2 mochi which are good granted, but A) not that good and B) they're $2.
00:11:08
◼►
I have never found anything in the grocery store hot bar to be worth getting a second time. And I will forget this about maybe once every two years and I'll go get another big lunch or a couple lunches there. And every time I'm like, "Why did I do that?"
00:11:28
◼►
It's actually very similar to the WVDC box lunch side dishes where you get something and you're like, "Here's a side of macaroni salad or something." And you taste it and you're like, "This is not anything like what I expected."
00:11:45
◼►
And also somehow manages to taste like nothing and yet is also not good.
00:11:50
◼►
And it's $8.00. And it costs you $8.00 if you're lucky. In reality I'm usually closer to $12.00 because I think I'm underweight and then I get to the checkout and it's like, "Oh yeah, it's $12."
00:12:02
◼►
And afterwards I'm like, "I could have walked down the street to any casual fast food place like a Chipotle or something and gotten a way better meal for less money than what I just spent at the stupid hot bar at the grocery store."
00:12:15
◼►
I actually think that Wegmans and Whole Foods both are tasty and decent food, but I completely concur that it is not worth the money that one would spend on it.
00:12:24
◼►
We've gotten way off the rails already and it's my fault so let's just move right along. Why don't you tell us about what could have caused your iMac Pro's fan problems, Marco?
00:12:33
◼►
Actually I have a small update on that. Alright, so first let me do the feedback item here. So we got feedback from Chris Harper who says, "I started my career as a technician in the entertainment department at a large theme park. One of my jobs was repairing broken equipment.
00:12:50
◼►
Early in my training I was told to never use the air compressor for blowing out electronics because air compressor tanks and even the hoses often get condensation in them, possibly due to the heat of the motor. Essentially you'd be blowing moisture on your stuff.
00:13:03
◼►
So you had to use canned air instead or vacuum them out using special electronics vacuums."
00:13:07
◼►
I think I heard from a couple of people on Twitter who also said that apparently air compressors can spray tiny drops of oil from inside themselves into electronics, which is obviously very bad or little metal shards. I don't think any of that happened and my air compressor is a very small consumer unit that probably doesn't have either.
00:13:27
◼►
I can tell you I've never oiled it and probably doesn't get hot enough to ever make condensation inside. So I don't think that was an issue here. However, after a few days of operation my fan problem is back.
00:13:43
◼►
Now I also heard, I forget who, I'm sorry, I have to look up.
00:14:08
◼►
I heard from Tom Bridge who said, "A second possible explanation for Marco's iMac Pro's reduced fan RPMs post-vacuum would be a reset of the system management controller, the SMC reset, which was accomplished when I unplugged my iMac Pro for more than 15 seconds."
00:14:22
◼►
So this is a long-standing Mac spin around and fix the problem kind of thing that you try. You do a rain dance, you zap the PRAM and you reset the SMC. That's what this is. So the way you reset the SMC on any modern Mac is you cut off power for 15 seconds and you plug it back in and the SMC resets.
00:14:40
◼►
And that is the component that is responsible for things like thermal management, fan speed, stuff like that. So that is much, because I said last episode, I'm pretty sure that not a lot came out of it dust-wise.
00:14:55
◼►
And I wasn't sure why it fixed it because it seemed like enough stuff didn't come out of it for that to be the problem. So if that indeed wasn't the problem and if the SMC is just kind of getting buggy over time, which does happen with Mac sometimes, that's a much scarier outcome for me.
00:15:13
◼►
Because now the problem is back. I didn't have time to try this yet because I used my computer so I didn't have time to unplug it for a while and play around today. But I am a little concerned that this just might be my life now.
00:15:26
◼►
And if that's the case, I'm going to be very sad because, again, one of the biggest reasons I love the iMac Pro is no matter what I do to it, I never hear the fans. And now I'm hearing the fans spin up and down on a pretty regular basis as I do Xcode builds and stuff. And that's really not great.
00:15:42
◼►
Let it be known, listeners, that as we record, it is the evening of the 29th of January and the year 2020.
00:15:49
◼►
I have not yet ordered a Mac Pro. In fact, go to the next follow-up item and I'll tell you why that's relevant to me.
00:15:56
◼►
Uh-huh. Well, let me just tell you, listeners, that I am putting it on the record that before WWDC, Marco will have a Mac Pro in his house. You've heard it here first. All right, tell me about why you're supposedly not getting a Mac Pro, Marco.
00:16:10
◼►
This is my item. He'll chime in after I explain what's actually in here. And I don't think it's actually relevant to his decision-making process.
00:16:17
◼►
This is just a follow-up on the Pro Display XDR reference modes. We talked about them last time, like what they're used for and the P3 1600 nits versus 500 nits and all that stuff.
00:16:27
◼►
Anyway, there is an official Apple, whatever they're called now, Tech Notes support article that explains all the different reference modes. There's many more than the ones we mentioned.
00:16:35
◼►
So if you want to see them all and understand how they work and what they're supposed to be used for, you can check out the link in the show notes.
00:16:40
◼►
The one interesting thing that I pulled from it is there's a section towards the bottom that's like, if you see this scary icon showing like a, you know, a caution triangle exclamation point symbol next to a monitor that appears in the AirPlay menu, your Pro Display XDR might be in a low-power mode and using limited brightness.
00:16:57
◼►
This can occur if the ambient temperature of the room is 77 degrees Fahrenheit or higher and your display has been at 500 nits or higher for a long time. Unplug your display from your computer, wait 5 to 10 minutes, then connect your display and try again.
00:17:08
◼►
If the issue continues and the ambient temperature of the room is less than 77 degrees, contact Apple.
00:17:13
◼►
The reason I think this is irrelevant to Marco is because I really don't think he ever keeps his house higher than 77 degrees.
00:17:19
◼►
And he's also probably never going to have the monitor over 500 nits because he's not doing HDR video editing/mastering, so it's mostly irrelevant.
00:17:27
◼►
And I can tell, like I said when I first talked about this monitor, you cannot hear or I cannot hear the fans in the monitor.
00:17:34
◼►
I'm assuming they're spinning right now, but I have never heard them other than when I shoved my ear against the back of the monitor when I was setting it up and even then it was difficult.
00:17:42
◼►
People can hear the tower computer over there off in the distance a little bit, which is why I think still with your iMac Pro it may be noisier under load than this.
00:17:50
◼►
It is definitely noisier under load than this thing is because this thing never changes sound whatsoever, but its constant noise level is higher than the idle noise level of an iMac Pro, which I basically can't hear.
00:18:02
◼►
This I can always almost hear and it just literally never changes volume at all.
00:18:07
◼►
Unfortunately, my iMac Pro was like that for a long time and now isn't, so just wait John, wait until about year 2 or year 3 of your Mac Pro.
00:18:16
◼►
We have a little bit more thermal overhead than you do considering how vast my cooling system is and how little is actually in the box.
00:18:23
◼►
I'm not on the ragged edge of anything. I really need to get, I think the iStat Menyoo guy said they were updating their stuff to support the new temperature.
00:18:32
◼►
They were going to send me a beta and I don't think they sent me one.
00:18:35
◼►
Look at that, they're usually pretty fast.
00:18:37
◼►
I do want to see, do the fans ever go any faster no matter what I do?
00:18:41
◼►
Because like I said, I can't hear them change volume at all even when I do disk benchmarks, GPU benchmarks, CPU benchmarks.
00:18:52
◼►
Even playing games in Windows, which I assume doesn't really understand the fan control on this or whatever.
00:18:58
◼►
Like playing Destiny, I don't know what I have to do to this computer to make it make any more noise, it just doesn't.
00:19:05
◼►
Because I've got the wimpiest video card and a fairly wimpy CPU and three gigantic fans plus a blower fan and almost nothing in that box.
00:19:14
◼►
Well, wait two years and then you'll see.
00:19:16
◼►
The reason why this Pro Display XDR, I would call it an overheating issue maybe in a warm environment and running at full brightness, it sure sounds like that.
00:19:27
◼►
Apple would never use that term but that's kind of what this is.
00:19:30
◼►
You basically could have problems with the XDR retaining full brightness if you're running it in a room that's hotter than 77 degrees Fahrenheit.
00:23:48
◼►
In any case, I think here's your future.
00:23:51
◼►
Your future is in the next six months. You're going to be getting a Mac Pro.
00:23:54
◼►
And I think you'll get a Pro Display XDR for your home in New York.
00:23:59
◼►
For your home that you're sitting in right now.
00:24:01
◼►
And then I think you will go to the beach.
00:24:04
◼►
You will try to convince yourself that you can live with the LG.
00:24:08
◼►
And then before you depart the beach from the end of the summer, you will have ended up ordering a second Pro Display XDR and put it at the beach house.
00:24:17
◼►
Just wait until the newly redesigned iMacs with built-in 6K displays come in colors.
00:24:22
◼►
And then we'll get whatever color matches whatever room that it goes into in the house.
00:24:27
◼►
Now we'd be talking new, like, 6K iMacs? Now I'm very interested.
00:24:31
◼►
In colors. It's going to come in teal.
00:24:33
◼►
Yeah. But see, I'd be very interested not because I would want two of them, but because I would just replace my iMac Pro with the new 6K iMac Pro.
00:24:40
◼►
You're getting two of them. I don't understand why you're resisting this. You're not going to keep plugging that thing back and forth. You're going to get two.
00:24:45
◼►
I honestly don't think you would get two.
00:24:48
◼►
Keeps it from the table. That's going to happen.
00:24:50
◼►
I honestly think that Marco will end up with two Pro Display XDRs, but I think there will only be one machine.
00:24:57
◼►
He's rapidly getting too old to be lugging a computer on his shoulder back and forth. Just wait.
00:25:56
◼►
I watched like four seconds of it and I realized I don't give a s*** about this.
00:25:59
◼►
Four seconds. That's your YouTube attention span. All right. I'll handle this one so you don't have to. It's a quickie.
00:26:04
◼►
We've been talking about the rackmount Mac Pro, which is available for sale. Someone put up a YouTube video of unboxing it and comparing it to his old setup.
00:26:15
◼►
It was Neil Parfit. They're really good videos. If you want to know what the deal is with the rackmount Mac Pro, you'll see it from every angle and learn all the features and learn how one person's actually using it.
00:26:28
◼►
The interesting thing about it, I think, is when you see it, especially if you're familiar with the plain old tower Mac Pro, it is so clear that unlike the Xserve, this is not a purpose-built rackmount computer.
00:26:42
◼►
This is a tower computer turned sideways and put into a weird case that kind of goes in a rack, which is fine.
00:26:50
◼►
There's nothing terrible about that, but when you look at the Xserve, which was absolutely purpose-built, shared nothing with anything, like all new industrial design just for being in racks, it's so clear that Apple at one brief time in the semi-distant past was serious about making rackmount computers.
00:27:10
◼►
I think with the Mac Pro, they're just realizing some pros, the situation in which they want to use a Mac Pro, they have a rack available. They don't want it to be freestanding. So can we make this tower computer rackmountable?
00:27:22
◼►
Yes, and it'll look fine, but it's not particularly space efficient. It is just a Mac Pro turned on its side. That's why there's weird gaps and stuff inside the case. They did some interesting solutions for you to be able to get at the different stuff because the RAM is on one side and most of the other cards are on the other side, which makes sense when you have the tower Mac Pro where you pull off the whole case and you have access to it from all sides.
00:27:43
◼►
But the rackmount one is not like that. So it has a door on the top and then it has a second door on the bottom. It's like, why is that stuff on the bottom? Why didn't they just make everything accessible from the top? Because this is the tower Mac Pro turned on its side and that's the way the tower Mac Pro works.
00:27:55
◼►
The interesting comparison, so there was the unboxing and everything, there was the comparison of fan noise and again, he was very impressed that it was very quiet.
00:28:02
◼►
Neil was filling his thing with almost every card slot filled because he does audio stuff and he's got all these weird audio interfaces. So he stuffed it to the gills and had all these power cables going everywhere.
00:28:13
◼►
He was really happy with it because at the end of the second video he shows, this is what this is replacing. I have this big giant whatever it is 5U rackmount thing, which seems like it's really big, but it replaced and he does a little cut in the video showing.
00:28:26
◼►
Two trashcan Mac Pros and a billion peripherals and like Thunderbolt docks and cables and everything. Just this giant mess of hardware all now fits inside this one box.
00:28:37
◼►
So I think he was happy with it even though I think that as a rackmount computer it is a little ungainly and ugly, but it's clear that some people want exactly this. They do not want a tower computer. They want it to fit in a rack.
00:28:48
◼►
So I'm glad Apple's making it and I'm glad at least one person seems happy with it.
00:28:52
◼►
I feel better for having known this piece of information. Thank you, Jon.
00:28:56
◼►
You should watch the video. You can hear the cool little snick that the door makes when you take it off the side and click it back in. It's cool.
00:29:02
◼►
Just like Wolverine. Would you tell me about True Tone, please? Because I'm oh so excited to hear about it.
00:29:08
◼►
This is Chris Harper chiming in on, oh no, that's not, that's the compressed air. Now all three of us have done Fall Affairs.
00:29:15
◼►
Here's how the show notes work, Jon. You read from top to bottom.
00:29:18
◼►
The instruction pointer is friggin, no one knows where the instruction pointer is anymore. We're just, we're lost. We're lost in follow up.
00:29:28
◼►
Someone issued a jump statement and now we have no idea where we are.
00:29:32
◼►
You are such a nerd, I love you. Oh, God.
00:29:36
◼►
Christopher Bowers writes, regarding True Tone, as someone who works professionally in printing photos, the ideal situation is to have the room lighting and display white points be equal. That's why having True Tone on is the better, more accurate setting.
00:29:50
◼►
So there's another person with some professional experience chiming in saying, True Tone, yes, go for it, even if you're doing something that's important to color.
00:29:57
◼►
And he also gives a link to ISO 12646. I looked at that and I didn't, I think it's just, you know, well here's the text from the thing.
00:30:07
◼►
Specifies the requirements for two conformance levels for the characteristics of displays to be used for soft proofing of color images.
00:30:14
◼►
Included are requirements for color uniformity and variations in electro optical properties when viewing, with viewing direction for different driving signals. That's a lot of jargon.
00:30:23
◼►
I think the standard is just basically saying how you should set things up to be judging photography on a computer device. It's hard for me to tell. That's a lot of jargon. Plus they spell color with a U so it's all very confusing.
00:30:35
◼►
True Tone, endorsed by one person who claims to be a professional. It's good enough for me.
00:30:42
◼►
Go team. I was using it already anyway.
00:30:47
◼►
We are sponsored this week by Yes Please Coffee. This, I gotta say, this is not in the script. This is one of the only coffee things that I would ever recommend. I've used it myself for a long time and it's fantastic.
00:30:58
◼►
So there's a lot of productivity hacks, but there's one productivity tool that performs wonders for almost everyone. It's coffee.
00:31:06
◼►
Yes Please is a coffee subscription service. It's Yes PLZ. They want to bring the very best roasted beans into your kitchen.
00:31:15
◼►
So, you know, do you really need a coffee subscription? How often do you run into coffee at home?
00:31:19
◼►
True coffee fiends are pretty good about never running out, but you also know that scoring truly superb beans, especially reliably, can be hard.
00:31:27
◼►
So, Yes Please, this is at YesPLZ.Coffee, I love the domain, sources and roasts some of the finest stuff from all over the world.
00:31:35
◼►
They also change it up every week and then they deliver it to your door. So it says whole bean, very freshly roasted coffee, delivered weekly, fortnightly, monthly or just whenever you need it.
00:31:46
◼►
You can pause and cancel anytime, no hassle. And you also get this cool monthly print magazine that they make featuring culture, food, music and more.
00:31:54
◼►
It's kind of fun. It's like a nice analog moment for your mornings in an increasingly digitally distracted world.
00:31:59
◼►
So the founders of this, they have quite a strong background behind them. So it's from Tony Knesney and Sumi Ali.
00:32:05
◼►
They are veterans of coffee's third wave scene. You actually might know their previous coffee subscription business called Tonks.
00:32:11
◼►
That's the name of Tony Knesney from back in the day. And these guys believe great coffee should not require much fuss.
00:32:17
◼►
Making a perfect cup should be as easy as making a box of macaroni and cheese if you start with the best beans.
00:32:22
◼►
And I can personally say I have used this service. I used it all summer long when I couldn't be home. Usually I'm a home roaster.
00:32:29
◼►
But there's a lot of times when I'm too busy or I'm not home for a while. And whenever that's the case, I go to Yes Please.
00:32:34
◼►
This is actually the coffee service I use when I want to buy beans. Go to Yes Please. That's Y-E-S-P-L-Z dot coffee.
00:32:41
◼►
Use offer code Marko sent me, all one word, to get 25% off your first shipment.
00:32:45
◼►
Upgrade your morning coffee game and you'll upgrade your whole day.
00:32:48
◼►
Thanks a lot to Yes Please for making amazing coffee and sponsoring our show.
00:32:52
◼►
Why don't you tell me why you don't understand Xcode, please?
00:32:58
◼►
This is about the rant last episode about me trying to do GUI layout in Xcode using the various systems.
00:33:06
◼►
A lot of people offered advice. A lot of people offered commiserations, saying that a lot of things I said were familiar to them.
00:33:13
◼►
Even people with lots of experience that, you know, some of these problems are just sort of long-standing problems.
00:33:18
◼►
And yes, you do sort of get better at dealing with them and come up with techniques for them.
00:33:22
◼►
I want to call out Alex Kent in particular, who gave a video demonstration of him basically laying out my dialog box in Xcode.
00:33:32
◼►
And I think that was important because lots of people sent like, "Here, look, I made your dialog box with SwiftUI.
00:33:37
◼►
I made it with Xcode. I made it with this. I made it with that. See how nice it is? Look, it looks just like yours."
00:33:41
◼►
First of all, a lot of people who sent those in, I applaud the effort, but many of them didn't actually look like mine.
00:33:45
◼►
It was kind of the point of like, "Yeah, you can get 90% of the way there, but then if you want to get it pixel accurate, it's a little bit trickier than you might think."
00:33:51
◼►
But whatever. But Alex's video let me see how he uses the tool to build it.
00:33:59
◼►
First, it was refreshing to see him run into many of the things I complained about in real time when he was doing it and then deal with them.
00:34:08
◼►
And then I said, "Okay, well, this is going to happen when you try to use this tool. Here's how you deal with it."
00:34:12
◼►
So that was very helpful. Just kind of the mindset of what things you should bother doing and what things you should let the tool do for you.
00:34:21
◼►
It was helpful to see that. Anyway, we'll put a link to the video so you can check it out.
00:34:27
◼►
It's kind of long, but if you've never used Xcode to do layout before, there are a lot of different tools available to you, a lot of different systems, a lot of different ways to use the tools.
00:34:37
◼►
And he demonstrates one particular technique. You don't necessarily have to do what he does, but I think it was eye-opening to see someone else's workflow.
00:34:45
◼►
I think the most useful advice he gave me, and this is one thing that I didn't mention last show and I should have, and a lot of people writing with advice were also not taking account for.
00:34:53
◼►
I was, maybe foolishly, maybe not, aiming for a situation where I have no warnings, because Xcode does these little yellow warning symbols in the sidebar if it thinks you have any layout issues.
00:35:09
◼►
And always my goal was no warnings, because my whole project was built, no warnings, no warnings or errors. It's got to be clean, right?
00:35:16
◼►
Same thing with the layout. So if I got a layout, it was very easy for me to get a layout that I think was mostly correct and mostly looked correct, but it had a thousand warnings on it.
00:35:24
◼►
So that was part of what I was banging my head against. Even when I thought I went over the finish line, I'm like, "There, finally, everything's lined up. Let me run the app, let me look at it, let me measure with Xcode, boom, everything's lined up."
00:35:32
◼►
And then I would look in the sidebar and there's 800 warnings.
00:35:35
◼►
I'm like, "What do I have to do to make you happy, Xcode? What are you complaining about?"
00:35:39
◼►
And I had all these complaints, "This doesn't have an X position." I'm like, "It doesn't have an X position? Are you kidding me? It has an exact distance from the thing that it's next to, which has an exact distance to the edge of the superview."
00:35:51
◼►
That's, like, it can't be anyplace else, X-wise. But it was like, "No, I need an X position."
00:35:57
◼►
I was like, "What do you want from me?" And I have all these things like, "Add missing constraints."
00:36:01
◼►
And if you try to do that, it just throws constraints all over the place and it makes this big mess. So that was part of my frustrations. I'm trying to get to Xaro Boogs. I'm trying to get to zero warnings in Xcode.
00:36:13
◼►
And Alex had this one particular piece of advice, which I had not figured out on my own, which was very helpful.
00:36:19
◼►
For the localization warnings, it'll warn you, "Oh, you have a field that's like a fixed width. If you try to localize that text, the German word's going to be longer and it's not going to fit."
00:36:29
◼►
One way you can deal with that is you can just somehow, I don't know how to do this, but somehow I'm told that you can convince Xcode that you're not going to do localization and it'll shut up about that.
00:36:37
◼►
But I don't want to close the door to localization. Who knows? Maybe it will localize someday. But I do want Xcode to shut up. I don't want those warnings to go to the sidebar.
00:36:48
◼►
So Alex says, "For localization fixed with warnings, they can be fixed by making the width constraint priority lower than the content compression resistance horizontal priority." So the auto layout constraints have priorities, and the maximum is 1,000.
00:37:03
◼►
You can do it in one number increments. So a lot of the defaults are like, "This has a priority of 1,000. This has a priority of 750." If you make the width constraint have lower priority than that compression resistance, what that means is that, yeah, the width will try to keep it at this width.
00:37:18
◼►
But if the contents are too big and the compression resistance, like the resistance of the contents to be squished or be clipped, is a higher priority than the width one, it will win. And even though the width is supposed to be 10, because the content is too wide, it will bust itself out and make itself 11 or 12 or whatever.
00:37:37
◼►
And just by setting -- it doesn't actually change the layout, because again, I'm not localizing. But just by changing those priorities to be just one different from each other in either direction, you can get it to get rid of those warnings.
00:37:49
◼►
And that, I think, was the final thing that I really needed to get over the hump. So when I was -- I'm working on my other app that has a Swift UI thing. It also has a regular storyboard, like I said.
00:38:00
◼►
And after watching his video and learning about that trick, I went back to that dialogue and relayed out the whole thing with auto layout. And it was -- I'm not going to say it was painless, but I feel like now I have a system.
00:38:12
◼►
Now I feel like I can look at a setup and figure out, okay, I can defeat auto layout and make a layout that looks the way I want, uses auto layout everywhere, and has no warnings, now that I know these various tricks.
00:38:24
◼►
So thank you, Alex, and I recommend everybody check out the video just to see how one person gets it done.
00:38:30
◼►
That is just -- it's so ridiculous that you have to jump through so many weird hoops like that. And the tools are not making that easy or intuitive.
00:38:42
◼►
There are some features in the tool that I was avoiding. Like Xcode will offer to fix a lot of stuff for you. It's super helpful. It's like, do you want me to fix this? Do you want me to fix that? And it does -- I can imagine the people doing these UIs. What more do we want to do for you, the people who offer this in Xcode?
00:38:56
◼►
We give you -- not only do we tell you what's wrong, but we give you every conceivable reasonable option on how to fix it and explain what they each mean and let you pick from it in a popover.
00:39:05
◼►
And they do, but the problem with that is you look at that and you're like, well, which one of these do I want to do? I mean, these all sound like they might fix it, but then you pick one and it has this cascading series of other consequences for your layout that you don't quite understand.
00:39:22
◼►
And then you're like, did I pick the wrong one two steps ago? I'm not sure what to do.
00:39:25
◼►
So I think the key is knowing which one of those tools to partake in. So if you watch Alex, what he does with the video, which I think he's maybe doing intentionally just to show how the tools can help you, is he chucks a bunch of controls onto the canvas willy-nilly and then just makes a bunch of layout constraints using the right-click-drag shortcut thing instead of going the long way.
00:39:48
◼►
And then just makes all the constraints. And then the feature he uses a lot of is misplaced items. The sidebar will say a bunch of items are misplaced, which means that you put some things on the canvas and you put a constraint that said this should be 10 pixels from that. But it's not 10 pixels from that. It's not even close to 10 pixels from that. That's a misplacement.
00:40:05
◼►
And then you hit the fix button, right?
00:40:07
◼►
Yeah, it will fix the misplacement for you. And that one is one of the least destructive ways you can accept its health. Because otherwise, like, do you want me to add missing constraints? I don't think I ever do want you to add missing constraints.
00:40:21
◼►
The constraints you think are missing, they're not actually missing. You're just, you know, whatever. But the fixed-mix placement will essentially move things on the canvas for you based on your constraints. So if you put a big jumble of items and you just do a bunch of constraints and then you just fix misplacements, they all spring into where, more or less, where they're supposed to be and then you can fine-tune.
00:40:39
◼►
So that feature seems like a safe feature to use. And I found myself using it more. Like, once you're in Auto Layout mode, you don't have to do that single-pixel alignment stuff. My problem was always that, like, when I did Auto Layout, I could never get the layout to look right when it actually ran the window.
00:40:53
◼►
And I could never get all the little warning stuffs to go away until I started, you know, I was chasing my own tail. I was like, well, if I do this and fix that and this warning goes away, but this other one comes, I finally get all the warnings away. And I had this ridiculous series of constraints that made no sense and didn't put things where I wanted them.
00:41:09
◼►
So are you a fan of Auto Layout at this juncture? Are you anti-Auto Layout? Where do you come down on that?
00:41:16
◼►
See, I've been watching years, literally years, of Auto Layout videos at WWDC at presentations, like in-person and on video. So I'm not unfamiliar with Auto Layout. I've more or less sold on the idea that Auto Layout is a cool thing.
00:41:29
◼►
And I heard all the complaints when Auto Layout first came out and people's frustrations with it or whatever, but I hadn't actually used it myself. So going to use it myself, I was already bought in of the idea of, like, I understand springs and struts, I understand the system.
00:41:41
◼►
People complain about the system, but I know there were bugs about the constraint solver or whatever, but it's better now and I mostly buy into it.
00:41:47
◼►
But I was so frustrated by my own desire to get rid of all those little warnings. A lot of the warnings I didn't agree with. I'm like, there must be a way to get down to zero warnings. And I was just chasing my tail.
00:42:01
◼►
Now that I, A, have that one fixed with localization thing in my back pocket to address those without screwing up my, without adding more constraints, and B, sort of know how to use the minimum number of constraints to get what I want done and how to address the complaints if it says, "Oh, I need this."
00:42:20
◼►
Sometimes it still complains that it doesn't have an exposition, and I'm like, "You do have an exposition." But I know how to give it now a redundant constraint to shut it up. I think I mostly prefer it to springs and struts, even for static layouts and especially for resizable layouts.
00:42:37
◼►
So I don't say I like it, but I think I've made friends with it. And I think if I have to make a new view, I'm going to try to use Auto Layout first. That's my first choice now.
00:42:49
◼►
We are sponsored this week by Linode, my favorite web host. Whether you're working on a personal project or managing an entire enterprise's infrastructure, Linode has the pricing, support, and scale you need to take your project to the next level.
00:43:03
◼►
They have 11 data centers worldwide now, including their newest one in Sydney, Australia. All of these feature enterprise-grade hardware. They now have an S3-compatible storage option and their next-generation network.
00:43:13
◼►
So Linode delivers the performance you expect, but at a price that you don't. Get started on Linode today with a $20 credit for our show, and you can get access to their native SSD storage, a 40-gigabit network, industry-leading processors, their revamped cloud management built with an open-source single-page app, and all their servers give you root access to your server along with their new API version 4 to automate things.
00:43:37
◼►
They have a Python CLI if you want. I actually used that myself to set up my servers really quickly. They now have these Nanode plans that start at just $5 a month that currently gets you 1 gig of RAM on that server.
00:43:49
◼►
And they have all sorts of plans above that no matter what your needs might be, they have something for you.
00:43:53
◼►
So they have specialties like dedicated CPU plans, GPU compute plans for machine learning, video processing, AI, block storage, object storage, one-click installs of the most popular apps including WordPress, the LAMP stack, and things like Minecraft servers.
00:44:09
◼►
So you can get all this at Linode. I have all of my servers hosted there. All of Overcast and Market.org are hosted at Linode.
00:44:15
◼►
I'm just so happy. I've been a customer for theirs for more than I think 8 or 9 years now and it's just been wonderful the entire time. I have used a lot of web hosts in my career and Linode is by far my favorite one.
00:44:27
◼►
See for yourself by going to linode.com/atp and using promo code ATP2020 to get a $20 credit towards your next project.
00:44:37
◼►
And also they're hiring. Linode.com/careers if you want to find out more about that. Otherwise, once again, linode.com/atp. Promo code ATP2020 for $20 in credit.
00:44:47
◼►
Thank you so much to Linode for hosting all my stuff and sponsoring our show.
00:45:22
◼►
I've been trying to write an audio app in iOS 13.
00:45:25
◼►
That's a mistake. Why would you do that?
00:45:29
◼►
I've had a lot of challenges with the latest version of Overcast and Beta.
00:45:35
◼►
I spent the last week or so basically issuing 1-2 new builds a day trying to chase down this crazy problem that I was having with my AV audio engine based playback engine.
00:45:50
◼►
Sometimes, for some people, audio would not play when the screen was off.
00:45:57
◼►
You could send the app to the background. All of that would be fine.
00:46:01
◼►
It would do background playback, but if you turned off the screen to your phone, it would pause.
00:46:07
◼►
And the second you turned the screen back on, it would unpause.
00:46:11
◼►
So it's not that the app was crashing, because it wouldn't unpause if that was the case.
00:46:16
◼►
And it's not that the app didn't have background audio capability.
00:46:19
◼►
If that was the case, it would not play in the background at all. It even went to screen on.
00:46:24
◼►
So that wasn't the issue. The issue was if the screen was off, this would be the problem.
00:46:29
◼►
Now, I tried a whole bunch of different stuff.
00:46:31
◼►
First of all, I suspected maybe my AV audio session is not getting correctly the fact that I have an active session.
00:46:40
◼►
Or that it's a long form session or whatever.
00:46:42
◼►
So I did all sorts of tricks with the AV audio session, trying not deactivating it ever.
00:46:48
◼►
Trying to activate it every time I hit play and then checking it, polling it to see if it was getting deactivated or whatever.
00:46:54
◼►
I tried so many things with the audio session manager and I wasn't getting anywhere with that.
00:46:58
◼►
Then I realized, or I remembered rather, when I wrote Overcast's original audio engine,
00:47:04
◼►
which is still what you're hearing this theory if you're playing it in Overcast if my new update hasn't been approved yet,
00:47:10
◼►
there was this issue that if you run an AU graph, which is Apple's old, old audio framework for audio units,
00:47:16
◼►
if you run an AU graph and you want it to be backgroundable, there's a certain property that you have to set on all the audio units in it
00:47:24
◼►
that is documented only by this one tech note. It's like one Q&A 1606, something like that.
00:47:31
◼►
And there's this maximum frames per slice setting.
00:47:35
◼►
Because the idea is that when you're pumping audio through an audio graph,
00:47:40
◼►
there's this real-time audio thread that requests a certain number of samples every time it calls back your function.
00:47:46
◼►
Your function has to give it that number of samples.
00:47:48
◼►
And usually that number was either 256 or 512.
00:47:52
◼►
And so it was calling your function. Every 512 samples, and keep in mind there's 44,000 of these per second most of the time,
00:47:58
◼►
so it's calling this function a lot. When the screen turns off, the phone switches to a lower power version of this,
00:48:06
◼►
where instead of requesting smaller blocks more frequently, it starts to request much bigger blocks.
00:48:12
◼►
So it doesn't have to poll you as often, so the CPU can be in a lower power state more of the time.
00:48:18
◼►
And so it starts, instead of asking for 512 or 256, it starts asking for, I believe, 4,096.
00:48:25
◼►
And if you didn't set this property on all your audio units that was barely documented, welcome to Core Audio,
00:48:31
◼►
if you didn't set this property to at least that 4,096 number to say, like, what's the maximum number of audio samples I can provide you at once,
00:48:41
◼►
this exact problem would happen. If you turn the screen off, your audio would just pause.
00:48:47
◼►
And then you turn it back on, it would unpause. The challenge of this to me is that once you have an AV audio engine type API,
00:48:55
◼►
you can't set that property anywhere. There's nowhere where you can do that.
00:48:59
◼►
What was extra weird is that if you do that wrong with an AU graph, the old way, it fails every time.
00:49:05
◼►
You can reproduce it 100% of the time in development, just turn your phone screen off and it pauses, you're like,
00:49:09
◼►
"Oh, I got a problem." You can fix it, and you can see if your fix works. But this is an intermittent problem I was having.
00:49:14
◼►
It never happened to me once. I could not get it to happen in development at all,
00:49:20
◼►
but every beta build I would send out, I would get a large number of people saying,
00:49:24
◼►
"Within a few hours of it going out, this is happening, this is still happening, this is still happening."
00:49:29
◼►
So the only way I had to test whether my fix was working was to issue a new build to all the beta testers,
00:49:35
◼►
send it out to, like, thousands of people, hope many of them install it, and then look at feedback 8 to 12 hours later
00:49:41
◼►
and see how many people were saying this and then instill this feedback.
00:49:44
◼►
And so I was just, like, blindly shooting in the dark here, and eventually I found,
00:49:50
◼►
so based on that hunch of maybe it was related to that old tech note, I eventually found there's a property on AB Audio session
00:49:59
◼►
where you can tell it what latency duration to use, basically, like you can set your preferred IO buffer,
00:50:06
◼►
and if you set it to something, it effectively disables the automatic switching between more blocks, less blocks.
00:50:14
◼►
So I just set it to exactly 81.92 samples, which is twice the old 49 to 6.
00:50:22
◼►
I set it to exactly that number, and the problem vanished.
00:50:26
◼►
So I think I have solved this problem. I have not gotten any reports of it, or at least many.
00:50:34
◼►
It's gone from, like, a ton to, like, two or three, so it seems like I think I have fixed it.
00:50:40
◼►
And, oh my goodness, it's been quite a ride.
00:50:44
◼►
So anyway, that's a long, long, long story to say. There's this crazy audio bug in iOS 13 that happens sometimes to some people.
00:50:51
◼►
I think I have fixed it in this version of Evercast that might be out by the time you listen to this.
00:50:56
◼►
And, oh god, this is the kind of thing that just crushes my morale, because it's so frustrating.
00:51:04
◼►
I'm sure all developers go through this. When you have a bug, not only can you not reproduce it,
00:51:09
◼►
it doesn't even make sense that it could happen, and then you go through all these crazy difficult tricks and tests and logs,
00:51:17
◼►
trying to figure out how the heck can this possibly be happening, and then eventually you try some really obscure thing.
00:51:23
◼►
And I think this worked, but I'm like, first of all, it's frustrating that I can't be sure that it worked.
00:51:30
◼►
And it's extra frustrating that, like, there's this weird undocumented thing that, or barely documented thing.
00:51:37
◼►
What hope does anyone else have of ever figuring this stuff out?
00:51:41
◼►
Like, I happen to know, from having written this old audio engine five years ago,
00:51:46
◼►
I happen to know that there was this little weird thing in the API that you had to do to make it background properly.
00:51:52
◼►
Had I not known that, I never would have figured this out.
02:06:47
◼►
But it's not worse. It's not ugly. It's just different.
02:06:50
◼►
And I don't see how you add the complexity that power users want, or that all users want, honestly.
02:06:58
◼►
I don't know how you add that complexity and power to iOS without sacrificing some of that visual purity.
02:07:06
◼►
Because again, having a title bar with windows on the screen, even if you can't freeform shape those windows,
02:07:15
◼►
even if you don't drag the corner to resize it, there's different choices you can make there.
02:07:21
◼►
But if there was just a basic amount of window chrome, think of the functionality you get out of window chrome on the Mac.
02:07:27
◼►
Not only do you have sizing controls, you also have hiding and showing that window,
02:07:33
◼►
and you have closing that window for good, like getting rid of it, minimizing it, big, small.
02:07:38
◼►
Then you also have the title bar, which tells you what app you're in or what thing you are viewing.
02:07:44
◼►
Then you have the proxy icon, which is a shortcut to tons of power.
02:07:49
◼►
And then of course, if it's visually combined, you have the whole toolbar, which itself is a massive amount of potential power.
02:07:55
◼►
Buttons, and you have navigation back forward, you might have a search box.
02:08:00
◼►
There's so much that is in standard window chrome.
02:08:03
◼►
And that's not even including if you want to drag the corners to resize it, because that may or may not be a good idea in iPad OS, who knows.
02:08:10
◼►
But if you just had a small amount of window chrome on every window for apps that supported this,
02:08:15
◼►
that would expose a ton of basic multitasking functionality in a really easy way that wouldn't require all these weird gestures that are too easy to do accidentally and too hard to do intentionally.
02:08:28
◼►
There's a reason why people do this. It's like when I made the magazine and I tried to make no setting screen,
02:08:33
◼►
and I had such incredible complexity because I didn't want a setting screen, and that the result ended up being worse and harder to use,
02:08:41
◼►
and then I had to eventually just put a damn setting screen in it because that was actually better.
02:08:44
◼►
I feel like, think about all the hoops Apple has jumped through and made its users jump through to avoid having basic window controls on iPad OS.
02:08:56
◼►
They're trying to preserve the simplicity. That seems to be their job one, which you can kind of understand because the simplicity is the big selling point,
02:09:01
◼►
but they haven't found, the solutions we're always going to, I think many, many shows ago when we discussed this,
02:09:06
◼►
we were just talking about having menu bars on iPad apps. Do you remember that discussion?
02:09:10
◼►
We keep going to solutions that we know work in the Mac world because it's like at a certain point,
02:09:16
◼►
and we've had this discussion over many years, at a certain point it's like, look, you didn't come up with something better.
02:09:20
◼►
We're not saying you've got to do everything the same way the Mac did it. Come up with a new way, show us.
02:09:25
◼►
You tried a bunch of ways and they all suck. So we get back to this point where it's like, well, how about just window chrome?
02:09:31
◼►
Because you haven't come up with something better. I'm not saying window chrome is a solution.
02:09:35
◼►
And in fact, when you're discussing window chrome, it made me think about some of the regressions they've had on the Mac.
02:09:40
◼►
As you know, if you're staring at a Mac right now, there isn't window chrome to speak of.
02:09:45
◼►
And I have seen many people have difficulty resizing Mac windows because to do it,
02:09:52
◼►
there is a very small region of pixels near the edge of a window where you will get the appropriate arrow cursor.
02:09:58
◼►
And there's different arrow cursors because Mac windows are resizable from all sides, which power users love.
02:10:03
◼►
But regular users might not understand that if you reach for the corner and you end up grabbing a side and you get the little arrow,
02:10:09
◼►
you can only resize in one direction now. And that's frustrating.
02:10:12
◼►
And in general, just getting to the point where you get the appropriate resize cursor because there's no visual affordance for it.
02:10:18
◼►
And because the windows are basically borderless, which looks very clean, there is a very small region where you have to do that.
02:10:24
◼►
Compared to Mac OS, you know, the old Mac OS with the platinum interface that had a big textured square with little grippy things,
02:10:31
◼►
which wasn't a huge target, but it was absolutely visual and it was big enough where you could get it.
02:10:37
◼►
And, you know, when windows weren't resizable from the edges, you didn't have that problem.
02:10:40
◼►
So even in systems that are tried and true, it's possible to, through visual refinement, end up making interfaces harder to use.
02:10:49
◼►
Even if people aren't confused about how to resize windows, I think resizing Mac windows is now harder than it used to be for that reason.
02:10:56
◼►
And the purity argument of like, oh, the interface isn't as pure, I think the, I keep calling it WIMP, I hate that acronym, but anyway, it's my root, you know.
02:11:05
◼►
The Mac user interface, I know it's not just the Mac, but anyway, has incredible purity.
02:11:10
◼►
Menu bar at the top of the screen, windows with scroll bars that are resizable with closed widgets and, you know, with window widgets.
02:11:18
◼►
And even the dock, like, there is incredible purity to that paradigm and incredible flexibility.
02:11:24
◼►
It has stood the test of time, you were able to do amazing things with it.
02:11:28
◼►
It is more pure than the iPad OS interface, which has many different paradigms all fighting with each other and various things tacked onto the end, and none of them are sort of composable and flexible enough to get the job done on their own.
02:11:42
◼►
All so they can preserve the simple interface, which, you know, I'm all for preserving the simplicity, it's just that you need to find a way to enable more sophisticated actions without killing that simplicity, but also by making a consistent system, and they haven't done it yet.
02:11:59
◼►
And so we say, well, have you tried, you know, have you tried just sticking a menu bar?
02:12:03
◼►
Think of how much flexibility putting just a plain old menu bar at the top of the screen on an iPad would do.
02:12:08
◼►
You'd have to make it like a finger capable menu bar or whatever, but we, you know, and we said, oh, that's old thinking, you just want it to be the way the Mac is.
02:12:15
◼►
I don't actually, I want something better, but if you can't think of something better, I'll take the compromise of, we couldn't come up with any better ideas, so here is a finger accessible menu bar, right?
02:12:24
◼►
We couldn't come up with any ideas, so here is some kind of window chrome in iPad OS, which necessarily has to be larger and, you know, and hurts the complexity, hurts the simplicity or whatever.
02:12:35
◼►
But you do, that's the challenge, that's the challenge Apple faces, come up with something that preserves the best of both, but provides the power and is consistent, and they have not risen to that challenge.
02:12:45
◼►
And honestly, I don't think we have risen to that challenge either, because everything we're suggesting, I think, would be mostly an abomination and terrible.
02:12:51
◼►
But on the high end, it would make the complicated things that we're describing easier and better to do.
02:12:59
◼►
It's just that on the low end, they would make people, you know, confused and frustrated, and I think in general, the public would think an iPad that works that way is worse than an iPad that works the way it does now, because one of the, you know, I was saying how we never see people using multitasking on the iPad.
02:13:13
◼►
Also, for all the iPad users that are intimately familiar in my life who aren't tech nerds, they're mostly satisfied with their iPad experience of not using those expert features.
02:13:23
◼►
They don't care that the iPad has a very inconsistent, inflexible, difficult to use interface for doing more complex things.
02:13:31
◼►
And if you try to show them, they mostly bail, but their satisfaction with the product remains.
02:13:38
◼►
So I'm not saying that the current compromise is successful, because clearly it's not, but it does have the beneficial characteristic of most of our users would still be satisfied, even as we screw up our ability to do this high end.
02:13:52
◼►
So it's kind of like the super high end experts are satisfied because it's a video game they can master.
02:13:56
◼►
Most people are fine because they never have to do that, but then there is like, you're leaving money on the table and that like these devices, we know these devices could enable people to do more complicated things.
02:14:06
◼►
And it's just that they're not good at bridging that gap.
02:14:10
◼►
Like it's one of the things that the Mac was always good at.
02:14:13
◼►
Hey, you're not a computer expert, but if you sit down in front of this computer and learn some basics, you can be successful at doing things you never thought you could do.
02:14:21
◼►
And the iPad does that for the low end.
02:14:24
◼►
Hey, you can browse the web, you can send people email, you can chat with people, you will be successful.
02:14:29
◼►
If you buy this product, it's not too complicated, you'll figure it out.
02:14:32
◼►
But that stops. And it's like, you want to do anything more than that?
02:14:35
◼►
You're going to have serious problems.
02:14:37
◼►
And unless you want to be a super duper expert, just retreat to the simple things.
02:14:40
◼►
I would also, you know, just one final closing thought on like the purity angle here. The history of the iPad is filled with, you know, starting out doing very literal, having things very restricted.
02:14:52
◼►
And then somebody or some third party starts proposing like, hey, you know, what if we, you know, add a keyboard?
02:14:59
◼►
Although, by the way, Apple shipped a keyboard on day one, but nobody bought it.
02:15:02
◼►
But like, hey, what if we, what if we had a keyboard?
02:15:04
◼►
What about, what if we make these capacitive stylus things?
02:15:08
◼►
And, you know, yeah, Steve dropped me a ton of styluses a long time ago, but it turns out they're kind of nice.
02:15:13
◼►
And then eventually, you know, someone does, you know, Microsoft does it or third parties do it.
02:15:17
◼►
And then eventually, Apple adds their own option.
02:15:20
◼►
And before Apple does it, everyone's like, no, you should never have a stylus. That would ruin everything.
02:15:26
◼►
You should never have, you don't need a keyboard. That would make it a laptop. Just buy a laptop. Blah, blah, blah.
02:15:30
◼►
And then Apple does it. They release a new thing. They release their own stylus and it's good.
02:15:35
◼►
They release their own keyboard and it's good. They, you know, they had multitasking systems, didn't have multitasking before, and that, you know, is okay.
02:15:42
◼►
But like, eventually, the market keeps wanting this device to get more capable.
02:15:49
◼►
Well, again, although, Jon, you're right, not all of its market and possibly not even most of its market.
02:15:54
◼►
But a portion of this market, especially, you know, its high end for sure, wants these devices to get more capable.
02:16:00
◼►
And in most cases, the way that has happened is to make them more like laptops.
02:16:07
◼►
And everyone b******s and moans and complains beforehand.
02:16:12
◼►
And then somebody allows them, usually Apple, to make it more like a laptop and everyone's like, oh, oh yeah, that actually is nice.
02:16:19
◼►
Like, and that's, for me, that's what changed. Like, what changed the iPad for me from a cool toy I kept buying and never using to something I use every day is the keyboard.
02:16:29
◼►
Like, Apple made a really good keyboard for it and it turns out the difficulty of text input was holding me back quite a lot and discouraging me from using it very often.
02:16:38
◼►
And once I had better text input via a physical keyboard, I now use it way more.
02:16:44
◼►
You know, for a lot of people, the pencil did that, you know, where like drawing things on it or, you know, precise input in other styles was difficult or impossible or limited.
02:16:56
◼►
And the Apple pencil fixed that and opened up whole new worlds to that kind of use.
02:17:02
◼►
And, you know, then everyone's like, oh, it should never have a way to browse files.
02:17:07
◼►
Well, then Apple adds the files app, which mostly works.
02:17:09
◼►
Ah, I don't know about that, but I don't want to derail your point.
02:17:12
◼►
And then Apple adds the files app, which occasionally works and kind of does what people want.
02:17:15
◼►
And, you know, and the conceptual purists, when they saw that, were like, why do you need that? It's an iPad.
02:17:22
◼►
But no, they added it and it actually solved a lot of problems and opened up a lot of doors for people.
02:17:26
◼►
Not well, but, you know, it started knocking down some of those walls.
02:17:29
◼►
And so there's this whole history throughout the entire iPad of people wanting to defend its purity for, you know, ideological sake or for fear that it'll ruin it, somehow make it more complicated.
02:17:43
◼►
But then eventually Apple does make it more complicated because that's what certain use cases need.
02:17:48
◼►
And then it's fine. And people, you know, with the exception of a lot of this multitasking stuff that's hard to use because it's weirdly designed and the gestures are all weird.
02:17:56
◼►
Like, most of this stuff doesn't have a negative impact on people who want to keep it simple at all.
02:18:03
◼►
So if making it a little bit more like laptops here and there has made it so much better for power users and so much more capable of a platform,
02:18:13
◼►
we shouldn't be afraid of things that are in that direction that sound scary that we haven't tried yet that might have a big impact.
02:18:20
◼►
Things like, as I said, basic window chrome.
02:18:22
◼►
That sounds really weird right now because we don't have it and we haven't seen it.
02:18:27
◼►
But in three years, all iPad apps might have window chrome by default.
02:18:31
◼►
They might have a title bar with simple multitasking buttons on the left or whatever.
02:19:07
◼►
And I'm putting off for now a lot of discussion about the apps themselves and what they can do and what they can't do.
02:19:14
◼►
And various, like, you know, sandboxing issues and file dealing with issues and stuff like the app store issues.
02:19:19
◼►
There's a lot of other issues that we could talk about.
02:19:21
◼►
But just talking about, like, the basics of usability of the device, getting around apps, you know, getting in and out of apps, multitasking, physical interface.
02:19:29
◼►
Borrowing from the laptop world so far has succeeded very well on iPads in the few times they've done it.
02:19:38
◼►
And so doing it one or two more times for something as rudimentary as, like, the way the multitasking system works, which they've already heavily borrowed from.
02:19:47
◼►
They already have a dock and an alt tab switcher or command tab switcher.
02:19:51
◼►
They already have a lot of the same things.
02:19:54
◼►
You know, the search box, like, there's a lot of overlap already and it's worked mostly okay.
02:19:59
◼►
To borrow a couple more things to make the multitasking system way more easy for anybody who's not Federico to use, I think would go a long way.
02:20:07
◼►
And we shouldn't rule it out simply because, oh, why don't you just use a Mac?
02:20:10
◼►
No, it turns out there's good ideas and we've already borrowed a lot of them.
02:20:14
◼►
It wouldn't harm the world to borrow a couple more.
02:20:17
◼►
So what we're saying, as usual, is that Microsoft Surface got it right and their only problem is they started from a crappy desktop operating system and it's only a matter of time before Apple figures it out and ends up, like, I saw a good graphic recently.
02:20:29
◼►
It was, like, show the Microsoft Surface line and someone was like, this is what I expected the iPad line to look like by now.
02:20:34
◼►
It had the giant Surface Studio 27-inch touchscreen thing and it had the small ones with, they looked like laptops with removable screens.
02:20:41
◼►
And Microsoft has the unified OS strategy of they have Windows with Window Chrome on their tablet, sort of, kind of, like, you know, obviously, you know, starting with Windows was a serious detriment and I'm not saying Apple should have just put Mac OS on their tablets because that would have been the wrong thing too.
02:20:57
◼►
But what you're describing, Marco, is essentially where Microsoft is now, but with the details different, right?
02:21:04
◼►
So, you know, having something that works and looks and borrows a lot from a laptop but is also a touch device and works in that mode as well, just better, right?
02:21:17
◼►
Yeah, the details definitely do matter.
02:21:19
◼►
There's a reason we're not using Microsoft Surface, but, you know, the overall strategy, if you didn't look at the details and just described it in broad strokes, that's more or less what you're talking about.
02:21:26
◼►
And I still contend that, like, ideally you come up with a solution that is better, but if you try for a long time and can't think of anything, it's time to just consider the menu bar.
02:21:36
◼►
Like, I would consider the menu bar before Window Chrome, actually, because I just feel like it's a simpler element and you could put one of them up there and they already have a status bar.
02:21:42
◼►
It's almost like a menu bar anyway and so on and so forth.
02:21:44
◼►
But that's the type of stuff you can't just add piecemeal.
02:21:48
◼►
You have to have a good rethink, right?
02:21:50
◼►
Just, you know, step back and say, "Next-gen iPad OS. Describe the paradigm."
02:21:57
◼►
And then you can choose which things from the Mac world are we going to pull in.
02:22:01
◼►
And, you know, if someone says, "Oh, we don't want to pull that in," it's like, "Well, then what's your better idea?"
02:22:13
◼►
Does Window Chrome fit in in some fashion?
02:22:15
◼►
And, you know, so I hope that happens eventually.
02:22:18
◼►
If it doesn't, I don't think actually it's the end of the world because I still think that people are generally –
02:22:24
◼►
most people are satisfied with their iPads using them in simple mode, right?
02:22:28
◼►
But it also means that the iPad is never going to threaten the Mac for complicated tasks if they can't figure out how to make it, you know, easy to do –
02:22:41
◼►
you know, make it comfortable and fun and easy for even experts to do on the iPad.
02:22:50
◼►
And only if you really, really love the iPad will you go through that effort and everyone else will just run through the thing they're more comfortable with.
02:22:58
◼►
And we are continuing to make generations of people who are comfortable to some degree doing complicated tasks on desktop computers.
02:23:07
◼►
So it's not like those people are dying out either.
02:23:09
◼►
New generations of people know how to use Macs and PCs because they have to use them to do all the things that they generally can't do on an iPad.
02:23:18
◼►
So that divide will remain and iPad customers will be happy and Mac customers will be happy.
02:23:25
◼►
But the future where iPad eventually expands to absorb the problem space of the Mac will never happen if they don't figure this out.
02:26:34
◼►
Yeah, well if it's segfaults, that's, you know, that's not your fault.
02:26:37
◼►
Unless you're writing C code to interace with Perl what you can do.
02:26:40
◼►
But in general if you're writing Perl code.
02:26:42
◼►
So in Swift, I know that's not actually true, but I was having that attitude.
02:26:45
◼►
And up to this point, I'd never had a crashing bug, because I'm doing simple things and Swift is, you know, handles the allocation and everything for me.
02:26:53
◼►
I'm sure I was making memory leaks here, my apps are so dinky, it doesn't matter anyway.
02:26:56
◼►
But yeah, it was, I'm like, what, I'm just making, so I said alright, stop trying to be fancy.
02:27:03
◼►
And just every time they do the command, make the window and ask it to show it.
02:27:06
◼►
And for some reason that wasn't working either.
02:27:09
◼►
And I couldn't for the life of me figure out, like, why does it work the first time, but then the second time it doesn't.
02:27:16
◼►
And like, AppKit, the thing about AppKit is there's a long legacy of the way it used to work back in the next days, in the early Mac days and so on and so forth, and there's a million different attributes.
02:27:25
◼►
And so I, you know, I've been heavily leaning on one of the slacks I'm in that's filled with, you know, a vast wealth of experience of Mac development and next development going back ages.
02:27:36
◼►
And I'm like, you know, I come in there only with my tail between my legs after I've spent an hour doing this, and I'm like, look, I'm just trying to make a window appear and then close it and be able to do it a second time and my app is crashing.
02:27:46
◼►
What super obvious thing am I missing? And someone with experience said, oh, what you're missing is that unbeknownst to you, every window, every NS window has an attribute called is released after close or something.
02:28:01
◼►
And it's set to true by default, so if you show the window and then close it, the memory for that window is released behind your back in the system, and that is the correct default for this particular mode working with nibs back in the day, right?
02:28:15
◼►
But it lives on as an attribute in every single window, and why didn't you know about that? Because if you go to the NS window documentation, which is incredibly extensive, there's a million things there, and if you're not looking for an attribute called is released after close, you'd be like, why is my app crashing?
02:28:28
◼►
So it would show the window, I would close it, it would release that memory, and the place where it used to be is now just initialized garbage memory, and the next time you go and try to do something with that, it crashes.
02:28:38
◼►
Cool. Isn't this a failure of Arc? Like, shouldn't Arc be holding onto that?
02:28:43
◼►
Set is released after close. Well, the is released thing just ditches the memory for it, and that just calling, causing the bug.
02:28:53
◼►
Well, no, dalloc ditches the memory for it, release just loses a ref count.
02:28:57
◼►
I don't know what it actually does. I don't know what the attribute is called. I don't know if I got the name right. It's release after close or something similar, but for all we know, it is dalloc-ing. I don't know what it's doing behind the scenes. All I know is it's an attribute among the many million attributes.
02:29:09
◼►
I mean, the lesson is don't try to hide and show your own windows. Use NS window controller instead, because it will handle all these things for you, and if you use nibs, this also would be handled for you.
02:29:17
◼►
Like, this is all the machinery that's behind the scenes that you don't know about, but it is a brain dead simple thing that I'm assuming. I didn't even look up the docs, but I'm assuming totally is documented like everything else, but if you don't know where to look or you're not familiar with the weird history of how AppKit works and how it works with nibs and how you're supposed to use it, and you try to be like, "I know how to make my own window. I'll construct it and ask it to show itself, and it will work great."
02:29:39
◼►
It does the first time, but then your window is gone.