There’s Nothing You Can Fix in a Day
How do you feel?
That good?
A lot of coughing is happening.
Delightful.
I have known John for almost 10 years, and I have known Marco for, what, 20-ish?
Maybe a little more?
Something like that.
This is the first time I think the two of you have really and truly wronged me, because you allowed me
to install Catalina on my iMac Pro, and I have regretted it every moment of every day since.
You allowed me to install it on mine!
It's time for you to take responsibility for yourself, Casey.
I was just about to say, ultimately, it was my own fault.
But I'm going to blame the two of you because I'm so angry at myself for having installed this broke-ass OS on my computer.
I'm so, so angry at myself.
So remember when I bought a new computer because my old one was having this ridiculous issue with its peripherals where it had like that machine gun trackpad, which was like, you know, there would be a whole bunch of latency and then it would all catch up and all the haptics would fire all at once.
Guess what's happening within a day of putting on Catalina?
All of a sudden, the machine gun trackpad that had not once happened on Mojave, it's happening a lot on Catalina.
And I'm so angry.
On the plus side, I just ordered a Mac Pro.
crickets i'm kidding yeah there's no way there's no possibility of that are you sure it's not the trackpad did we cover this before how can it be the trackpad it didn't happen once in mojave not once right well so obviously there's something wonky with the os but like maybe there's something wonky with the trackpad that this os deals with less well than the previous one
I mean, I am using the iMac Pro trackpad that I bought off of Underscore two years ago, whatever it was.
So I do have the other trackpad, you know, the new trackpad in a box in the attic.
So I could hypothetically go get it.
But I knew that Catalina was just paper cuts everywhere.
I knew it.
But I wanted that sweet, sweet Swift UI action.
And I wanted that sweet, sweet automatic dark mode action.
And I'm going to continue to blame you two just because I'm really upset at myself and I can't handle it because I'm an immature child.
But you let me.
The two of you let me.
And Marco, I heard you say earlier as I was talking over you, I let you install Canalina.
We have all failed each other.
We have failed each other.
You're both fired and I quit.
yeah i mean in my defense i didn't know how like how many little paper cuts there were because like i i had only ever used it on my laptop so far and i don't use my laptop full time i use it only when traveling and so and there's you know just using a laptop in general as much as i love the 16 inch using a laptop in general is full of tiny paper cuts pretty often and so i was just kind of assuming oh this is just laptop life you know
But when you use it full-time on your desktop, you really get to know what's going on here.
I use way more apps on my desktop.
I do much more consistent and harder and more diverse work on my desktop.
My desktop just has more stuff on it.
It has more files.
It has more apps.
So...
And it's not a clean install.
Laptops always begin as clean installs for me, usually, or at least most of the time.
Whereas my desktop, I'm carrying the same install for usually multiple years at a time.
So there's more opportunity, I think, for the paper cuts to become tangible, I guess, on desktops.
Or when you upgrade your primary computer, whatever that is.
I did that last week, hours before the show, because the new Xcode betas required it, and so therefore my job basically required it.
I stand by that that was a pretty good reason to upgrade, and I'm able to do my work
But man, there sure are paper cuts here.
Little stuff is just broken or slower than it used to be or fails seemingly silently and weird stuff breaks.
I can't use sketch anymore to draw errors on images.
Yeah, you can.
You totally can.
I thought it broke.
No.
Oh, is it like the new crappy one?
I think I was holding on to an old one because they ruined it.
Oh, yeah.
It's definitely got Evernote just plastered all over the place.
It's bad.
Yeah, I was holding on to the old pre-Evernote one because Evernote bought it and ruined it.
Okay, gotcha, gotcha, gotcha.
And I have a carbon copy cloner script that is dying every time I reboot.
I have to figure out how do I update whatever the heck that is.
It's just like...
Upgrading has had a cost, and I still have yet to find any benefit other than it runs the new Xcode beta.
That's it so far, and so it just kind of makes me sad.
These are the kind of issues that you kind of expect for the .o release.
but we're currently on the .3 release, and it's mid-February, and we're still having these issues.
That feels like this is kind of a dud version.
I just hope that this is an anomaly, that maybe after this we'll have a few years of better quality software.
Between iOS 13 and Catalina, this is a bad year.
But I hope Apple can show us that they can have good years again, because I'm starting to have some doubts.
Yeah, I don't think I'm quite to that point, even as furious as I am.
I don't think I'm quite to that point, but I am really upset.
And ultimately, as much as I snark and as much as I joke, I didn't have to upgrade.
I didn't personally have any need for the Xcode beta quite yet, and so I could have just stayed on Mojave.
And I've been really tempted to downgrade and either do a fresh install again or
or use a SuperDuper backup that I have, which I've never actually restored a SuperDuper backup, so it's a little scary.
Not because of SuperDuper, just because I've never done it.
Yeah, neither have I. Yeah, exactly.
But anyway, it was ultimately my own doing, and I joke and I snark, but it was my own fault.
But it just bums me out, because...
You know, it used to be that the new OS – and there was a Twitter thread, I think, going around about this.
Actually, I think you had commented on it, Marco, that it used to be very different, that it used to be something you got excited for.
I vividly remember, for all its warts and issues, I remember just being overjoyed at doing the Windows 95 install for the very first time and my mind being blown by how different it was.
Now, this isn't – that's a terrible analogy because this is just –
Thank you so much.
The feedback number 7585056.
We will put a link in the show notes unless Marco cuts all this.
Again, feedback 7585056.
I have tailspin logs.
I have cyst diagnosis coming out my ears.
I don't want to hear about a project to reproduce it.
It's not that kind of bug.
Don't even joke.
But yeah, I am trying to.
I have even filed a radar.
That's how desperate I am to fix this.
That's pretty bad.
Please, radar gods and Apple gods and Apple people and Apple employees, smile down upon me and fix my problems.
Please, pretty please.
The interesting thing about these small problems is that since they are, since most of them aren't like deal breakers or showstoppers,
Until you hear somebody else describe the same one, it's very easy to think that it's just you.
And I had that experience when Marco was talking about the things that he was having in Catalina.
Most of them I didn't have, so I was like, well, I don't know, maybe Marco's computer is different than mine.
But one of them had overlap.
I was like, I never would have thought that that was a Catalina issue, but hearing Marco do it, and I never mentioned it to either one of you, makes me think it is.
And it was the one where you're in the Finder, and you do something that...
like examples I you know I have two folders that are on my internal SSD and I drag a file from one of those folders to another it takes so long that a progress bar comes up that says moving item the dialogue appears it says moving item there's a progress bar the progress bar fills and then it completes I'm like really
I moved the file from one folder to another in my SSD in the Finder, and I got a progress bar, and it wasn't a fast progress bar.
And then Marco mentioned the same thing, doing stuff in the Finder, being slow locally.
Weird.
Very weird.
And I have the same question Marco always has.
What could possibly have changed to make this happen?
i don't know i don't i don't and it's not just like oh i saw that once that was you know my computer was busy and i just saw it that one time very consistently you know again it doesn't break anything the file does move it happens in a second or two so it's not like i'm waiting a long time but that should not be the type of thing that shows a progress dialogue ever
Yeah, I mean, you're moving files locally on the internal SSD of the best computer Apple makes.
With huge amounts of resources, and it's not doing anything else.
Nothing else is running.
I'm not rendering or compiling.
Xcode isn't even running.
I'm just in the finder, basically idle.
It's easy for us to look at something like the Finder and say, what could they possibly have changed?
It still pretty much works the same.
Why would they need to have messed with anything?
And I'm sure it's one of those things where it's more complicated than we think, and there's more going on.
And it's not just the app.
It's the whole OS.
Maybe it's not the Finder's fault at all.
right and so i'm sure there's all sorts of apis under the hood that maybe they had to change for 32-bit maybe they had to change because they integrated all the itunes stuff into the finder now for like device management who knows like they had i'm sure they had reasons why they were messing around in there but the result is like this is not how computers should be from the world's best computer company
who shines in particular, at least historically, in their attention to detail and their amazing OSs and how their OS respects the user for attention and speed and everything.
And we're just seeing that break down so often these days.
And it's...
There's lots of stuff that's made me mad about this.
I got real mad about the news enabling itself for notifications and starting to alert me while I'm doing my pro work in my pro app.
Alert me about some BS in the news I don't care about at all because I don't care about the news at all.
This is my computer.
What are you doing?
You're interrupting my work to give me a breaking news headline from CNN?
I don't care.
What?
I never agreed to that.
That's not what this thing is for.
This is a tool for my work.
When a carpenter is using a circular saw, does it stop in the middle of what it's doing because some politicians said something stupid?
Don't ask questions you don't want answers to.
For all you know, there are smart circular saws out there that are doing exactly that.
Breaking news!
Every five boards you saw, you have to listen to an ad.
Have you heard about WorkChat?
There's so many paper cuts.
So many.
The number of paper cuts should be going down with time for a mature platform.
That's what the Mac is.
It's a mature platform.
Honestly, so is iOS these days.
When platforms are new and they're young and they're moving fast and they break more stuff because they're changing a lot more under the hood and they're moving really fast and they're still young and they still have to get their stability under them, macOS is not that.
Neither is iOS, frankly.
And we shouldn't be having such fluctuations in quality so far into these product lines' lifespans.
And that's why I'm concerned that there are significant problems that... Who knows?
Again, we're talking about a giant company doing things with giant software like...
We don't know the full complexity of what goes on and they don't talk about it really.
But there must be some kind of process issue or some kind of incentive issue or something that is like systemically causing the quality of a lot of the software to be declining.
and i don't know how to fix that i don't know how to run a giant software company i don't even know how to work with other people so i'm the wrong person to tell you how to fix this but it sure seems like there is some kind of like systemic issue or structural issue that a big company is suffering that like big company people need to know how to fix and i can't tell you what that is but surely it's their job to figure that out
All right, let's try to turn all these frowns upside down, especially my own.
And let's do some follow up.
And we start with Jeff Hobbs.
We had said, one of us had said, probably John, there's no Swift Playgrounds for JavaScript.
And apparently there kind of sort of is.
And it's called Grasshopper.
And that's about all I know about it.
Yeah, there are a lot of these, you know, learn-to-program type things that I've seen.
Most of them aren't that great, because Grasshopper 1 looks pretty darn good.
There's a web version and an Android version and an iOS version, and they're all, you know, we're programmers, so we kind of know the job that they have to teach people.
Like, they're going to teach people about loops and conditionals and variables and functions, and, you know, and then just go from there.
Like, just the basics of programming, but you want to do it in a way that doesn't, you know, turn people off, doesn't feel like academic, like, oh, you know, math...
variables algorithms so boring you want to see something like that's the great thing about swift playgrounds oh there's a you know it's a 3d rendered thing with a friendly little cartoon robot and you get to make the move and they hop and you know that's not part of the programming but it's your kind of reward and in my day we had a thing called a turtle and it was on your screen and you use logo to make it move around and it was not as graphically rich but it was still way cooler than
you know input a dollar sign whatever like 10 print you know well 10 print uh go to 20 was pretty still pretty good but anyway having some kind of visual reward uh when you're doing things so all these have some sort of you know the web-based ones are great because you get to use the web technologies to throw something up on the screen immediately whether it's drawing boxes or lines or changing things to be different colors or responding to clicks all which is not the point of what they're teaching you they're just trying to teach you the basics of programming but having sort of
Cool stuff hooked up to it is key to keeping it interesting and keeping the person engaged because then they feel like, you know, that's always the barrier.
It's like, okay, so I understand variables, conditionals, and loops.
What can I do with that?
And the answer is, oh, learn this incredibly complicated API and all the nuances of this language that you don't even know yet.
And then you can get a button on the screen.
That's no fun.
But if it's like in the course of learning the very, very basics, you're already making things happen on a screen.
That's great.
That's why people love to learn HTML and JavaScript, because even at the most basic level.
Things go on the screen.
You know, you put text on a screen, you make it bold.
It's really easy to make a button.
It's really easy to make paragraphs of text, right?
And then making that button do something when you click it is not that hard and you're off to the races.
So grasshopper.app, check it out.
And there are lots of other similar things out there.
You don't need an expensive iPad or a Mac and Swift Playgrounds to learn programming.
All right.
Moving on.
Machae Zalarchik.
I hope I got that somewhat close to right.
I looked it up beforehand and I did my best.
So we'll go with that.
When it comes to butterfly keyboard, the combination of extremely low travel and minuscule spacing between keys means that I am either activating two keys at once, like A and S or G and H and so on.
or i bottom out on each key press putting strain on my thenar thenar t-h-e-n-a-r i have no idea how to pronounce that i should look that one up too anyway it is like repetitively pressing on a hard glass surface my hands start to hurt after an hour or two of usage then there's a sharp edge on the touch bar macbooks which can cut off blood flow to my hands if i'm not careful this sounds like a really enjoyable setup for you my goodness that's not fun this is in response to me saying that uh the
The bad keyboards on Apple laptops are not responsible for RSI because, you know, a key that you have to press less hard is better for RSI, not worse.
But this bit of feedback is important because regardless of what keyboard is put in front of you, things that you do...
can drastically change how your body reacts to it so starting from the back end of this thing the sharp edges of the of the uh what's the sharp edge of the tuck bar touch bar which can cut off blood flow to my hands i don't think he means the touch bar i don't know trackpad maybe yeah yeah yeah i suppose anyway uh that the first point is it's very bad for your hands to rest your wrists on anything while you type
Like you don't want any pressure on that area that all of your muscles and tendons are sliding through.
If you squish that stuff together, even just by the weight of itself, that's bad.
If you put it on something sharp, that's even worse.
So in general, ergonomically speaking, when you're typing, your wrists should not be resting anything.
Yes, I know they sell wrist rests with these foamy things.
Yes, people do rest their wrists on things.
What people do and what is ideal for avoiding RSI are two very different things.
So that's one thing.
The second thing is how hard you type.
I, you know, had the Apple Extended Keyboard 2 for years and years and years.
And because it's a big mechanical keyboard, it does require more force to press each key.
There's more travel and you actually have to press harder.
But one of the things I found in my, you know, experience with RSI is...
At times when you're under stress, under a deadline programming, or even just under stress playing games, a competitive game or something, you will find yourself, your whole body tensing up and pressing harder on the keyboard.
And in general, the harder you press on the keyboard, the worse it is for your RSI.
So getting a keyboard that requires less effort...
is generally a good idea because in theory, oh, I don't have to press as hard anymore.
The problem is if you still press just as hard, you're not helping yourself.
Like the only way you get the benefit of a keyboard that requires less pressure to press is if you use less pressure.
If you use the same amount of pressure, you're not getting any benefit.
um and it may feel even worse because you're using the same amount of pressure and you don't have any sort of travel to cushion the blow of your mighty fingers as you as you press really really hard um so yeah i mean we've talked about rsi before but in general be aware of your body be aware of what you're doing and uh if you can move your your habits in a couple of different directions um
One is try to rest your wrists less on things.
Try to do it less.
Try to, you know, not rest them at all, ideally.
But if you're going to rest them, do it less.
And the second is press less hard when you type.
Obviously, you have to press hard enough to make the key activate.
So if you have to get a keyboard that has a lighter effort, then do that.
But in general, be aware of how hard you're pressing.
Be aware that when you're under deadline that you end up pressing harder.
That's bad for you.
Don't do that.
Chill out.
All right.
We do have some good news coming from bad news.
Your Finder toolbar bug has been defeated, question mark?
Maybe.
This makes me feel bad about this bug because I suffered under it for such a long time.
And other people reported it too.
So I'm like, oh, it's not just me.
Other people have this, you know, most people don't care about the Finder toolbar.
But I heard from enough people.
I'm like, oh, it's not just me.
Other people have this deal as well.
Then somebody suggested, I should have saved the name.
I saw it in passing.
I'm like, oh, well, whatever.
Someone suggested a solution that I should have tried ages ago, but didn't just because it seemed so unlikely to help with such a weird bug, which is the usual thing.
Nuke your preferences.
Just delete your preferences.
Like...
I hadn't changed my preferences.
There's nothing in preferences related to this.
My preferences were not borked or corrupt.
Every other setting that I expected to be there was there.
So preferences seemed fine.
But I'm like, well, I'll try anything once.
I nuked my preferences.
Haven't seen the bug since.
hmm now the thing is all of my preferences are gone and i had to set them back and also it seemed to reset the state of my windows which makes no sense because there's nothing in anyway i'm glad that it worked i deleted my preferences and by the way if you do this and it doesn't change anything for you keep in mind that preferences are not as simple as they i don't know if they ever were maybe they were at one point early in mac os 10's history where there is a property list file and if you delete it your settings are gone
There's more to the system of settings than that property list file.
There's a daemon process running that helps corral changes to that file.
So if you just delete it,
and don't relaunch the finder or even if you delete it and do relaunch the finder it may just write back your old preferences just the way they were so it's a little bit tricky you gotta you know kill the cf preferences demon or cf preferences or whatever the hell it's called you know delete the file kill the demon restart the finder you'll know when you've done it because all your settings will be gone and everything in the finder will be not the way you like it that's that shows that you've succeeded uh but
I think it has pretty much cured my magical reappearing toolbars.
I'm still wandering through my windows, resetting all the toolbars, but I'm pretty sure every time I do it once for a window, they don't come back.
So let me switch to finder here for a moment.
Yeah, I'm looking at my finder windows and none of them have toolbars.
That's the way it should be.
so i'm sorry what was the mechanism for nuking your preferences what what did you actually do i was just saying that you can't just delete the file so first you have to know where the preferences are they're like library preferences you know and then com.apple.finder or whatever you got to know where that stuff is second is if you just delete that file it will just get rewritten by the preferences demon which i think it's called cfprefsd c-f-p-r-e-f-s-d something like that so i always just delete the file and immediately kill
that daemon process and then i also relaunch the finder for good measure and i usually do it all in a single command line with statements separated by semicolons or whatever like there's no convenient easy way to do that you can also do like defaults delete com.apple.finder there's lots of different ways to do it i'm just warning people that if you just think deleting the file is enough to do it and it doesn't help you that's insufficient you have to do more um
It's not the type of process that I recommend people do because you can really hose yourself by accidentally deleting stuff.
And, you know, I made a backup copy of my preferences first and yada, yada.
I can generally don't recommend this.
If you don't have this problem with your toolbars, don't mess with your preferences.
You can really screw things up.
But I'm just wanting to pass on that this actually did, as far as I can tell, work for me.
And I'm very happy.
And speaking of Catalina with the paper cuts, I have the paper cuts, too.
You know, we just talked about them.
But I continue to be mostly okay in terms of, you know, so it's like it's all just paper cuts.
There's nothing.
I don't have the machine gun track pad.
It's not crashing.
It's not hanging.
You know, so I'm, I mean, I'm doing okay with it.
I prefer something that performed better and didn't have all those paper cuts, but it's not catastrophic from my perspective.
So I think I'm just lucking out.
Well, it's all coming up Milhouse this time, I guess.
Maybe I need a $15,000 computer and my OS will work properly.
Yeah, maybe you didn't spend enough money on your computer.
You ever think of that?
Yeah, maybe that's what Apple would say.
Apple would say, hmm, Casey, I see your problem.
You're using a used trackpad from somebody else's computer.
That's got to be it.
Is Mac malware getting worse or no?
What's going on there?
I didn't follow too much.
There was some company that had put out a big thing about how Mac malware is getting worse and it's twice as bad as PCs and whatever.
It was a very sort of sensational headline about how terrible Mac malware was.
Jason Snell had a good response to it.
We'll link to it in the show notes.
So you can read it.
This was related to our previous discussion.
I think it was an Ask ATP.
Someone said, you know, all my Windows friends use antivirus stuff, but my Mac using friends don't.
What's the deal with that?
And I came down on the side of saying, you know, Macs are not invulnerable.
They can get viruses and malware and adware and all sorts of bad things.
But in general, my experience with antivirus software for the Mac has led me to continue to recommend that regular users not install it.
we've got some feedback from people like oh people who don't use antivirus recommending against it i've had mandatory antivirus software on my computer at work for over a decade like i have vast experience with antivirus software eight hours a day many different brands many different operating systems many different pieces of hardware all macs right so i do not lack experience in this area it is a trade-off though like
There, you know, people are vulnerable to getting crap on their Macs, but I feel like still net net the crap that is most antivirus software is worse and not because they're bad quality.
Some of them are bad quality.
Some of them are shady, but even the best ones with the best intentions.
The thing they're trying to do to insert themselves between what's happening on your computer, like before each thing that happens that could potentially be dangerous, insert themselves and mediate that and see whether it's safe, inherently is potentially buggy and potentially slow.
And then the other things where routinely they'll, you know, wander over your entire computer and do something for everything on your computer, that is also inherently slow and burns battery and makes everything slow or whatever.
So I still recommend...
that mac users shouldn't install any shouldn't buy and install any antivirus software like reflexively like oh you got a mac you got to get antivirus software you want to install a keyboard clipboard history thing reflexively fine you want to install a launcher like launch bar reflexively fine but i still think it is not the right move to say oh you got a mac you've got to have insert antivirus program you don't i think you don't
That said, though, Marco mentioned, like, Catalina, and we've talked about this before.
Lots of paper cuts, lots of annoying things, but what's the benefit?
Other than, like, okay, now I can run the latest Xcode or whatever.
What benefit am I getting?
And one thing we heard from a lot of the feedback from people who are sort of in the field and coming down the side that, you know, Mac malware is worse than you think, not in terms of viruses, but just in terms of crap that...
tricks people into installing it on their computer and then just throws ads in their faces or does other annoying things or changes their home page or is very difficult to install that has definitely gotten worse over the years on the mac and it's you know antivirus can kind of help but in general these are programs that users are technically quote-unquote choosing to install you know what i mean so
There's only so much an anti-virus, anti-malware thing can do if it doesn't recognize this particular variant of this thing.
Or some of them are semi-legitimate.
Well, it's like, well, it's not malware.
It's just a program of dubious utility that shows a lot of ads and is hard to uninstall and get into this wishy-washy area.
But anyway.
Like Zoom?
Yeah.
But Catalina, according to a lot of people who wrote into us, has really helped in this regard.
All of that crap that annoys us about constantly asking permission for things and refusing to run unless given 25 OKs and all that stuff.
actually makes it much more difficult for people to basically willingly, you know, like, oh, well, you installed this piece of adware, right?
You have to click through more things to make that happen.
Now, there are fewer things that programs can do without asking for permission.
And that adds friction to the experience.
And the upshot is the people who are on the front lines of supporting people with Mac say the people who have Catalina have far fewer cases of they come in and their computer is just festooned with adware and other sort of junk software.
Just because it's harder for that junk software to get a foothold in Catalina because it requires so much more tedious interaction from users.
If you're a developer, it's annoying.
I know lots of Mac developers are annoyed.
Like, oh, my perfectly legitimate program now has to walk people through this...
you know process of open system preferences go to security and privacy go to this tab press the little plus button navigate to find my app select the app go click you know because before you do that my app can't do anything and previously you didn't have to do any of that that's annoying and that's difficult but that's exactly the stuff that makes it more difficult for these
borderline malware adware junk stuff to get a toehold um so i think to be fair for all of the pain and inconvenience that it's causing all of us there is actually an upside to that mostly that doesn't benefit us because we're not installing malware uh well except i did install those logic drivers but you know that's that's unfair so far they've been fine but i do occasionally install things against my better judgment um
But for other people who are not as into computers as a hobby, it is a safer environment for them just because it is harder for them to do something that screws up their system.
We are brought to you this week by Squarespace.
Start building your website today at squarespace.com slash ATP.
Enter offer code ATP at checkout to get 10% off.
Make your next move with a beautiful website from Squarespace.
I know a lot of you are programmers.
I'm a programmer.
I can write my own CMS.
I have.
Many of you probably have too.
But the reality is that it's not really worth writing your own CMS for most websites anymore.
It isn't even worth installing one of the pre-made ones on your own server anymore.
Really, Squarespace is such an incredibly pragmatic option, even if you know how to make websites.
Because with Squarespace, you can make amazing looking websites with incredible rich functionality with almost no effort at all.
And they will look amazing.
They'll look better than anything that I know I could have ever made.
I don't know what your skills are, but they look way better than anything I could ever make.
and they have functionality I would never want to write myself, like storefronts or analytics, stuff like that.
They have all that built in, galleries, splash pages, all this amazing stuff that I didn't have to build myself.
And then once your site's up and running, they keep it up for you.
So you don't have to support it.
You don't have to run software updates on your servers.
You don't have to worry about your servers going down and have monitoring services and stuff.
You don't need any of that with Squarespace because they take care of all that for you.
So the reality is no matter what your skill level is, whether you're a total novice or whether you are a programmer who can make your own CMS from scratch if you really want to, Squarespace is the best option most of the time for most sites.
So check it out today no matter what your skill level is.
No coding is required.
No updates.
None of that.
Super great support.
Easy to use.
See for yourself at squarespace.com slash ATP where you can start a free trial site.
You can build the whole site there before you pay anything.
When you decide to sign up for Squarespace, make sure to head back there, squarespace.com slash ATP.
Use offer code ATP to get 10% off your first purchase.
That's squarespace.com slash ATP, code ATP.
Make your next move with a beautiful website from Squarespace.
I wanted to ask you guys a question that I saw fly by on Twitter a while ago, and it was not directed at us in any way, shape, or form, but I thought it was interesting.
This is Contra on Twitter who has a Twitter handle, Counter Notions, and they write, which is in the most dire need of a competitive product by Apple?
A, an internet Wi-Fi slash router with non-tracking VPN.
B, a digital media player slash microconsole.
C, a home automation orchestration center.
Or D, server-side Swift and cloud computing platform.
Are you getting it yet, Casey?
These are not four separate products.
This is one product and we're calling it iThink.
I thing.
I need a thing.
I need an I thing in my life.
I don't know.
I saw this and I just thought it was interesting.
And in classic Casey fashion, I'm hard pressed to pick one that I think is absolutely the winner.
I think if I had to pick sitting here right now and you'll ask me again in 10 minutes, I'll change my mind.
But I think I would really love to see Apple really and truly embrace server-side Swift and have some sort of cloud computing thing.
I don't know if that would end well.
And this is where all the people start firing off emails to me about how Apple does support server-side Swift.
No, I mean like really support server-side Swift.
um i think that would be the most fascinating to me and most interesting but marco what do you think between internet wi-fi router non-tracking vpn digital media player or micro console a home automation or orchestration center or server-side swift which you know i know how much you just really are looking for a different server-side language to use i know you're just so sick of using php so i would assume you agree with me here
uh yeah of course no of course not he's not going to pick one from this list because he's in true top four fashion yeah just a letter e so go ahead marco i've predicted first of all digital media player slash micro console but what does that even mean
As far as I can tell, that's like the iPhone, right?
It's like a console, but smaller.
Like the iPhone?
That's also a digital media player, right?
Almost everything Apple makes is a digital media player slash microconsole these days.
So I don't think that's a particular need.
I think they already serve that need.
I think microconsole is describing Apple TV.
like a small thing that connects to your television they mean game console i don't know just let's just cross out b no no one knows what it is yeah what's a digital media player is it a phone because it used to be like an ipod or something but like we don't have those anymore like those i would assume this is either like a console video game player you know something more switch-esque or uh alternatively something more like a fire stick you know if our tv stick where it's that's not a console so it's the apple tv
So they already make it.
Apple TV is basically a micro console.
Imagine Apple TV, but it came with a controller.
I don't know.
Yeah.
Imagine Apple TV, but like the games thing actually worked out basically.
So yeah, I don't, I mean, fine, I guess that's not really a thing or at least it isn't a thing that Apple seems capable or willing to make.
Home automation orchestration center.
Isn't that a HomeKit hub, which Apple TVs and HomePods already are?
I think that when I look at that, I think they mean something like the home devices that have screens, like that Amazon thing.
It's basically like a HomePod with a screen on it.
Okay, so I guess orchestration center, I guess if it's interactive by the owner instead of just like... Yeah, it's always on.
It's got a screen.
You can control all your HomeKit stuff from it.
It's also a speaker.
Google's got one.
Amazon's got one.
Right.
But see, that would require Apple to have a useful... First of all, it would require...
HomeKit to be way more solid than I think it is.
And it would require them to have much better care and skill towards designing the home interface, which they don't seem to care about.
So I don't see that really being a thing.
The Wi-Fi router slash non-tracking VPN...
That is interesting.
They already did in the past make Wi-Fi routers that were very good for a long time.
As Wi-Fi routers got more complicated and started integrating more like service-y stock components, Apple built out of the market.
I think they could do a really good job with that if they really wanted to.
That seems like a big if, though.
It seems like they have no interest.
But that wasn't the question, so admittedly.
But that, I think, would be interesting because there are very, very few companies now making routers that...
aren't either owned by the ISPs and just put whatever the ISPs want on it, which is probably what most people use, or all the aftermarket ones are from a decreasingly small number of networking equipment companies and more consumer-facing brands like Eero and stuff like that.
They keep integrating more and more service stuff, and some of them get bought by bigger companies, and so it's a little bit...
I feel a little uncomfortable about that market, to be honest.
I'm perfectly happy with my regular home nerd setup by Ubiquity, but what if somebody big buys Ubiquity?
Then I've got to figure something else out.
Or what if Ubiquity turns bad?
What if they start wanting more analytics because they're not making any money off of existing installations?
Who knows?
That kind of stuff can happen to any company.
So...
Maybe that would be my pick here because the other option, server-side Swift and cloud computing platform, I think I'm going to be one of those people that Casey just said, please don't email him.
As much as I would love for Apple to really put a successful amount of effort into making server-side Swift really awesome and really a thing –
And also, to have a cloud computing platform, I don't know what that means.
Is that like Amazon Web Services kind of thing, or App Engine, or that kind of thing?
Yeah, it means like Google Cloud and AWS.
Azure, yeah.
If it's one of those kind of things, frankly, I don't love those things.
That's why I keep using Linode for all my servers, because I like having more direct control over my servers.
I don't like more abstracted hosting concepts, because typically, the more abstracted ones have...
harder to determine performance characteristics under certain loads until you just try it.
And typically, the cost control is very difficult.
The more abstract or high-level computing platforms tend to be more expensive by a significant margin for the amount of computing power I tend to need with my server stuff than the more basic do-it-yourself, either dedicated or VPS hosts like what I tend to use.
So...
I personally don't have any need for that.
I think it could be interesting.
But server-side Swift as a separate thing, I would love that.
Because as I mentioned, you said, you joked that I do love PHP, and that's true.
But if I have to learn Swift anyway, and if my career is going to require mastering Swift in this other area of iOS development,
it would be nice if I could use the same language and master the same language and build all those same skills once instead of continuing to have two completely different languages that I use for the two different halves of my app's functionality, basically, like the web half and the app half.
So that would be great.
But I don't know how realistic that is.
But again, that wasn't the question.
So I guess I'm talking myself into the server-side Swift or the internet router.
Because that's the router problem.
The problem with the router is like...
how much impact can you really have there?
Because again, most people in the U S at least, I don't know how it is in other places, but the market in the U S is like almost everyone just uses the router that their internet provider provides or forces them to rent every month.
And so there's, there's that, you know, like what the Steve jobs, like there's no go to market strategy here.
Like,
There's a reason why there's a lot of consolidation in the router business.
It's a hard business because most customers in the US of broadband internet, which is most people, just have one for free or for quote free.
They don't buy an aftermarket one at all.
And then Apple...
surely would not be competing on price with any of the other aftermarket ones they'd be a premium entry and you can look and you can see okay there are there are other premium entries in the wi-fi business like eero is you know past sponsor of the show possibly future sponsor i don't know they're a great example they are not cheap they're good you know they're like they they went for the high end and they succeeded i think but
Apple would have to then compete with other people who are doing, who are in the same business.
Like when Apple was making $300 Wi-Fi routers and everyone else was paying 80 bucks for theirs, not everyone else was, like there was nobody else competing for the high end.
Apple was almost the only high end option that wasn't like an enterprise solution.
here they would have more competition in that high-end market.
And they would have to move faster.
They would have to do things like mesh networking.
And they would have to do things like add-on services, like ad blocking, VPNs, stuff like that, that a lot of other companies are offering now.
And so...
Do I really think Apple has that in them?
I don't think so.
I think even at the peak of their router business, when they were making solid products that were well regarded and were pretty competitive on everything but price, which is what we expect from Apple,
Even then, they weren't moving quickly.
They weren't putting a lot of effort into their Wi-Fi router.
They were fine.
They were good for a while, and then they went away.
So I can't imagine.
I think part of the reason why they bailed out of the market is that the market was starting to require them to move quickly and to put more effort into that, and they just didn't care enough.
And so I think if they were to reenter that market, that same fate would probably occur again.
So therefore, I'm going to reluctantly, with a heavy heart, vote for D, server-side Swift, and cloud computing platform, with the caveat that I like this option a lot better if those are two separate things, if the server-side Swift is able to be run on any server platform, and they happen to also offer a cloud computing platform that nobody except them will ever use.
I did not see that ending coming.
But look, the other options are all terrible.
All right, John.
What do you got?
We talked about the cloud computing platform, I think, a while back, and I think where I came down on that is that it's basically unavoidable.
Apple either needs to do what Amazon and Google and Microsoft have done or resign itself to forever paying one or all three of those companies huge amounts of money.
That is a core part of their business, own and control the key technologies, blah, blah, blah.
increasingly that is a core part of their business has been for a long time and it's not going it's not going the other direction it's just increasing so by not doing that apple is is not it's not fulfilling its vision to own and control these the most important technologies and you know therefore it is dependent on its competitors to a
And less of a concern now, but maybe more of a concern in the future.
It is potentially losing a lot of money for that.
And that's the thing about cloud computing, as Marco pointed out, is it's very convenient and it makes lots of sense when you're looking at having to pay people to run all your stuff.
Right.
If that's the alternative, like we have to hire a bunch of employees and run around data centers or whatever, that's no good.
So let's pay someone else to do it.
But once you're signed up to that thing, it's a big moneymaker.
I think there's a story to fly by that Azure is set to become the largest source of income for Microsoft if trends continue.
Maybe it already is, but like.
anyone who's ever used adus knows your adus bills can get big like there's profit margin on all that stuff it's easy to accidentally use a lot of money um and you have to very carefully uh control your your resource usage to try to keep costs uh where you expect them to be a lot simpler with something like linode but somehow linode is not a solution for something at apple scales right so
Apple, you know, pays the other those other companies to run its stuff.
And that is money that it's giving away.
That said, I don't think Apple would be particularly good at that.
But it's the type of thing where it's like, well, a certain point, you know, you may have waited too long or, you know, it's no time.
You know, the best time to plant a tree is 30 years ago.
The second best time is right now.
That whole thing.
So I don't know.
I'm not going to pick that item, but I still have that same itch about cloud computing.
It's not a need that's going away.
And if Apple doesn't do it itself at all, it's going to be a disadvantage in the long run.
Service has Swift.
I think Apple is not the type of company that...
I don't know.
It's not a good fit.
To make something take off on the server side, to make it actually be a viable thing, because Apple doesn't really make servers and doesn't have a server OS and is not invested in the server ecosystem beyond running its own stuff, it's very difficult to get over the hurdle to the point that...
popular server-side languages have php java even javascript there are communities built up around that of developers all over the world whose job is to write server-side software and they rally around ide's frameworks libraries
all the whole Java ecosystem of web applications, all the different frameworks for doing that, all the Node.js stuff and that whole infrastructure.
If you look at any of those successful efforts, or PHP for that matter, or Perl CGI, any of the things that have been big in the server-side world in the past or currently, and you look at the shape of that community,
It tends to be either a community not focused around a single company or a community focused around the product of a single company, and that single company is all about server-side stuff or becomes all about server-side stuff.
Java with Sun, although that getting bigger than them at various points, but everything else is kind of like it is a bigger-than-one-company thing.
It has to be for the community to take off and thrive.
You don't see scenarios where there is a...
language made by a single company mostly for a single purpose on their platforms with aspirations to get bigger because apple is never going to do what it takes and nor should they i think to become all things to all people server side across the world and if you're not going to do that if you're not going to say if you're not going to become the next java or the next php or the next node it
then I'm not going to say what's the point because it is a useful thing to do, but I just don't feel like they can fulfill the destiny of this item on server-side languages.
I wouldn't want them to.
I don't want Apple to become a company that is known for defining server-side development for the next two decades.
That's just not what Apple's about.
And if they did that, it would take their eye off of what they should be doing, which is...
making you know hardware software integrated experiences blah blah blah like the things we know and love from apple so all this is a long way of saying i'm crossing that one off the list despite the fact that i think cloud computing should be an inevitability and i hope apple is making moves in that direction maybe possibly more important than trying to figure out how to make a car just saying
um the one i'm gonna pick is easy um i'm crossing off the middle ones because i don't know what they are i don't care about them and the whole automation blah uh wi-fi router that's my easy pick and i'll tell you why it's the same reason i liked their stuff before it's the same reason i wanted a monitor from them apple's never going to make a monitor that people are going to buy they're probably not even going to make that much money on these monitors but i wanted apple to make a monitor because i wanted a fancy monitor that matches my computer and
Apple, for a long time, made fancy Wi-Fi systems that matched their computers that were really expensive and most people didn't buy them.
It's not a great business, but I think that market is in need of competition.
You know, the question is in dire need of a competitive product from Apple because Apple, of all the companies that we've named, is the only company that still has its incentives aligned around privacy and security.
Like despite Apple's big service push, in general, Apple is not using your information to figure out how to serve you more relevant ads, right?
Or sell you, you know, sell you generic products or whatever.
So Eero being brought my Amazon, I haven't seen any ill effects of that, but it's always out there of people wondering, well, what's going to happen?
Is my Eero going to start inserting Amazon ads into all of my whatever, you know, like people are afraid of that.
Again, people can be afraid of things that never actually come to pass.
And so far, everything's been good.
And I really like Eero and I'm using it right now.
Like that's my favorite product.
But I would love for Eero to have a competitor and a competitor that focuses solely on the idea of like, A, we look nice and work well with Apple products.
And B, we have a privacy focus.
The whole thing with VPNs and people not knowing which VPNs to get and which to trust and have them being difficult to set up and so on and so forth.
that's a place where Apple could differentiate itself.
It's never going to be a particularly good business for them, just like monitors are never going to be, never have been probably, and never will be a good business for Apple.
And yet I think Apple should still make monitors and I think they should still make Wi-Fi routers.
In the end, what I want is if someone has like an Apple setup, like, oh, you should get a Mac and get an iPhone and get an Apple Watch,
And if you're having Wi-Fi reception problems in your home, get the Apple Wi-Fi thing.
That's what I used to tell people until their product sucked.
And now I tell people to get Eero, right?
I would love for Apple to compete in that market because I think it's a place where...
I would like there to be an option like that.
It's like we talked about before with why should Apple make USB hubs or all sorts of things you can argue for.
You just want to have an easy choice to say.
There's a good one of these.
It's a little bit expensive, but that's true of everything that Apple makes.
Just get the Apple one.
You won't have to worry about it.
It's a little bit more expensive, but it'll all work together.
And that conversation and that sort of like sentence structure has become less and less in common over time as Apple has eliminated all the businesses that are not good businesses.
And so now when it comes time to get a USB hub, you're like, I don't know.
It's a couple of good ones.
Sometimes they're flaky.
Like there is no go to recommendation for things from Apple.
Apple is really ramped up in the dongle department, but that's a whole different thing.
Yeah.
And even some of those they outsource to Belkin, so they can't even make all those themselves.
Yeah, that's kind of sad, actually.
But anyway, that's my answer.
Wi-Fi routers.
Basically, all I'm asking for is a competitor to Eero.
Not because I'm disappointed in Eero, but just because that's the business that I think could most benefit from competition from Apple, specifically because of how different Apple's incentives are from all the other companies that currently sell decent routers.
We are sponsored this week by Indeed.
When you start your hiring process, you may have questions like, will you find good applicants to choose from?
What about education and experience?
And how will you know you've made the right hire?
Indeed is here to help.
Millions of great candidates use Indeed every day to find their next opportunity.
You can post a job in minutes.
You can use screener questions to help create your shortlist of applicants really quickly.
And you can add skill tests to your job posts so you can be confident in your applicants' abilities.
Indeed's library of more than 50 skills tests ranges from industry-specific skills like accounting to general attitude tests like critical thinking.
Indeed gives you the smart tools to make hiring decisions quickly and to be confident that you're making the right hire for your team.
Post your job today at indeed.com slash podcast and get a free sponsored job upgrade on your first posting.
That's indeed.com slash podcast.
Terms, conditions, and exclusions apply.
Offer valid through March 31st, 2020.
Thank you so much to Indeed for sponsoring our show.
I haven't really played with iOS 13.4, so I don't have much to say about it, but perhaps Marco has?
I mean, I have it on my phone.
Okay.
How is it?
It's been fine so far.
I mean, I think I still caught the mail bug once where it doesn't show me all my new messages for a while until I go back out of the all inboxes view and back to the root view and then back into all inboxes.
This has been a bug for every single version of iOS 13 since the summertime.
I don't think I fixed it.
I think I caught it happening the other day.
Other than that, it seems fine.
There are these small changes to mail.
They changed the toolbar and stuff like that, but I haven't really used it enough in that time to really have felt those differences.
Fair enough.
I'm excited.
That's the thing I put in the show notes is the mail toolbar thing.
That's what fascinated me.
This is from weeks ago, but it's still the case.
And now the beta is out.
The mail toolbar is sort of the perfect storm of things that can infuriate like angry Apple users that probably have a much more benign explanation of
But then on the other, other hand, okay, it's explicable.
And I understand why it happened, but it's still annoying.
And what we're talking about here is if you use mail on your phone, uh, there's like a, what are they, is that a toolbar they call it at the bottom of the screen?
I don't know what the hell the terminology is these days.
I always get confused.
Anyway, there's a bar at the bottom of the screen that previously had a bunch of little icons for stuff you could do with mail messages.
So you're looking at a mail message, and it used to have little icons for archiving it or flagging it or replying to it or deleting it and stuff like that.
I don't remember what the buttons used to be, right?
But there used to be a bunch of buttons down there, right?
Then iOS 13 comes out, and I don't remember the exact timeline of what they showed in the betas or whatever, but what they shipped in 13.0.
you're in mail on your phone and you look at the bottom of the screen and instead of a bunch of icons to do things with your message there are two icons one of them is the little reply arrow and one of them is the trash can trash can makes sense so you delete a message some people didn't like the fact that it was close to reply but you know well the spacing is pretty good on them right then there's the reply arrow you're like okay well i assume if i hit that that's how i reply you're like how do i how do i file this message away
How do I flag it or say it's junk mail?
But most importantly, and this is the thing that infuriates people, why are there only two buttons?
What were you saving all the room for over there where there are no buttons?
There used to be things there, and now they're not.
And it wasn't crowded.
Four buttons across the bottom of your phone, they're pretty widely spaced, but now there's just two.
And you look at that and you think...
Oh, you Johnny Ive, just before you left Apple, you said, you know what?
Delete more useful buttons from things.
Like, get rid of the ports on all the computers.
And there's too much utility in that toolbar.
People can just tap that button and immediately flag a message.
Preposterous.
I don't like that.
We can't have that.
If we can make the side of the toolbar cleaner by removing buttons, let's do that.
Can we remove all the buttons?
Like, no, Johnny, no, we can't remove all the buttons.
All right, fine.
We'll leave one button.
No, we can't just have one button that's not enough.
All right, fine.
Two buttons.
But that's it.
No more buttons.
This is the fantasy thing in your head of like, they just want to get everything off the screen.
They want it to be a thing where there are no buttons and it's completely useless.
I don't think that's true.
But it doesn't change the fact that iOS 13 shipped and it had two buttons at the bottom instead of four.
And by the way, if you're looking for the other functionality, it's buried under one of the buttons.
If you hit the button, like a menu, let me, I have to do this on my phone because I don't use Apple Mail.
Yeah, I think like the reply button included things like moving the message.
That's right.
yeah so it's like they there the functionality was still there but it was one tap farther away which seems weird because it's like well if you weren't you know like people wouldn't think to do that because if you hit the reply button from the reply button you can reply reply to all forward trash flag markers on red move message archive message move to junk mute notify me and print
That's all under the little reply arrow.
So bananas.
When you tap it, it doesn't reply.
When you tap it, it brings up a gigantic sheet with all those other options.
And again, the whole rest of the toolbar is just blank.
And delete, I think, just deletes.
And maybe there's a force press option or something, right?
So the explanation that makes sense is...
You know, iOS 13 had some, you know, birthing difficulties, let's say.
And it came out the door and it was missing a lot of features they talked about, like the iCloud Drive stuff and everything that's now appearing in the iOS 13.4 beta.
And the idea is that Mail, which also had some problems coming out the door, had a bunch of planned functionality and a cool new toolbar down there.
And it wasn't ready in time.
It's like, oh, last minute scramble.
All the cool stuff that we were going to have in that toolbar, you know, it's not going to make it to 13.0.
So they just had to get something out the door for 13.0 that worked.
And so whatever those other buttons were going to be are just erased from the UI.
And they buried the other existing functionality under that reply or it was always there.
And it's like, oh, that's a shame.
Sometimes you, you know, you plan for a bunch of features to come out, you advertise them and 13.0 comes out and you can't make them.
So it's better to pull them and to ship them and have them be like buggy and destructive and delete everyone's mail or whatever.
So that makes sense.
But again, coming back as a consumer is saying, well, I can understand how it could have happened, but it still doesn't change the fact that I upgraded to iOS 13 and the mail app became less useful and more annoying for me to use, which is not the direction that
things should go they should become less annoying and more useful or one of those two um so ios 13 restores the toolbar buttons so there's more buttons then things are more widely spread out i don't know if it restores a bunch of functionality that wasn't there before i really don't know what the story is but i find it an interesting sort of uh
litmus tests for or like to gauge raw shark test is better like look at this inkblot what does it look like to you does it look like apple taking away parts of your macbook that's probably because you're an angry person who uses lots of dongles does it look like to you
Slimming down of useless functionality, I think you'd just be wrong there because lots of people do more than just reply to and trash things.
And on top of that, like I said, if you're just used to hitting reply, if someone hits the reply button and is presented with all these options, it can be very confusing and there's another chance for you to make an error or whatever.
This is, as Cable Sasser said, you know, agreeing with the theory that stuff was removed.
It says, but surely after changing that before WDC, they could have put the icons back during the five month beta cycle or in the many months since then where the OS has been out.
It seems like it took a long time to get those buttons back.
Again, you know, minor issues, not that big of a deal.
Just one minor annoyance.
It's better than the bugs that Marco's talking about.
Like not seeing a new mail arrive is worse than this.
But if slimming down the toolbar avoided like bugs that would have deleted all of our mail, that's good.
But this type of, this is what Marco was saying before, like, this outcome is not what Apple should be shooting for.
Having a big company with lots of people, lots of features, and a complex code base, and complex products, and lots of, you know, it's a very difficult job.
And we've talked many times about the trade-offs of, like...
At a certain point, you have to make a call whether this is going to be in or this is going to be out.
It's going to be saved until next year or whatever, and it's difficult to make those calls, and you're not sure how far you should go or really push the team to get it done or make a decision early on and say, we're not going to make it and regroup.
Sometimes you end up shipping something that's not everything you hoped it would be, but at least you made an error on the side of stability.
But the bottom line is...
In the end, you give a product to a customer and what you're shooting for is at least neutral and hopefully slightly better than what they had before.
When you miss that, all the explanations in the world don't really help that customer.
and the customer comes away thinking when ios 14 comes out having that experience of like when i updated ios 13 i don't remember much stuff that got better but i do know some things that got worse and they annoyed me for months until they got fixed and that's not a good outcome so whatever balance of timing and deciding when to ship and knowing when to pull things they did for ios 13 it's not the right balance they need to revisit
Yeah, it seems like they have trouble fixing mistakes quickly.
The hardware has this problem, obviously, with the keyboards and everything.
I'm sure there are good reasons for a lot of it.
Hardware takes time to engineer.
Software takes time for design and QA and probably things like carrier certification and God knows what else.
I'm sure these things take time.
But...
it seems like Apple takes a lot more time than other people do to fix mistakes.
Some part of Apple's process or culture or structure or something makes it take them a long time to fix things that seem from the outside like clear mistakes, like things that they probably aren't still arguing whether it's a mistake or not.
It probably doesn't take them a long time to figure that out.
What is it that takes it so long to fix?
Well, let's not lose sight of the fact that Apple is a big, big, big ship that turns slowly.
Now, it turns quicker than most ships of its size, but it's still a big, big ship.
I mean, fair, fair.
I don't know.
I had my angry moments earlier.
I mean, it depends.
Like there you can have examples of other companies moving more quickly and other companies moving more slowly.
When I see something like this, I mean, it seems pretty clear that like I would say it's evidence of like a company that is somewhat overwhelmed, because if you're going to prioritize things that you have to react to, this is a low priority.
It's not a crasher.
It's not data loss.
It is one of the most minor of minor annoyances.
you know, you're missing some toolbar buttons, right?
So when you're ranking the list of things that you really need to get on and fix right away, this is always going to be low.
And in big companies, what tends to happen is sort of like, you know, low priority starvation, where something near the bottom of the list, every time anything comes up, you force rank it again.
And you're like, is this more or less important than the buttons in the mail toolbar?
And everything always ends up being more important.
So you end up six months down the line and say, we never did get around to fixing those mail toolbar buttons.
Then somebody goes and fixes it.
This is, by the way, why Overcast doesn't have an Alexa app.
Yeah, those are the right, that's the right priority structure.
But there is, you know, I forget what the term is for like OS scheduling, but like, you know, resource starvation or low priority starvation, where at some point you do need to boost the priority of those low priority things.
Otherwise, they will just literally never get done.
And when you're in that situation,
it makes me think that there's too much on your plate like in a in a better scenario you do release lots of high priority stuff you work work work and then eventually you get to the point after a month or two and you're like and now we can finally put to bed those low priority ones and if that's taking many many more months than that like six months into it eight months until you had a release that was so bad that it was just it took you a long time to get to those less important bugs right
And never mind like the beginning thing of like, well, why did you end up in the situation in the first place?
Again, assuming the idea is they didn't intend to ship a toolbar with two buttons.
It's just what they could end up shipping safely in time.
That's on the other side of that process.
How do we not get in that situation?
The question we were saying is, okay, well, if you find yourself in that situation, why does it take you so long to fix them?
And I feel like it's not about fixing this one bug takes a long time.
It's about all the other stuff that they correctly prioritized above this and
And the fact that that list is so darn long and it manifests in little stuff like this not getting fixed.
We are sponsored this week by Handy.
This time of year, the two scariest words on everyone's mind, aside from tax season, are spring cleaning.
If you don't already have a million things on your to-do list, now you have to sacrifice an entire weekend deep cleaning your home.
Thanks to Handy, there's a better way to knock out spring cleaning.
Handy is the easy and convenient way to book home cleanings on a schedule that works for you.
You can book it in just 60 seconds.
Handy will match you with a top-rated pro in your area, or you can choose who you want to work with.
You can compare profiles.
You can read customer reviews.
You can choose a weekly, biweekly, or monthly cleaning plan.
Handy will schedule your recurring bookings to make things absolutely easy for you.
And all this is with very upfront pricing.
What you see is what you pay.
You pay securely right in their app.
You don't need to worry about cash or checks.
You can even tip your cleaning pro directly in the app.
And no need to worry because 100% of the tips go directly to the pros.
And it's super convenient to get your home cleaned anytime from 7 a.m.
to 11 p.m., seven days a week, subject to availability.
And the pros on Handy are vetted, background checked, and rated by customers to ensure quality.
You'll learn more about their background checks at Handy.com slash trustandsafety.
And if you're not satisfied with the quality of the service, Handy will book another pro to make it right at no extra charge with their happiness guarantee.
Handy now has a special limited time offer.
You can get your first three-hour cleaning for only $29 when you sign up for a cleaning plan.
Go to Handy.com slash ATP and enter promo code ATP.
Once again, that's a three-hour home cleaning for just $29 for the cleaning plan.
At Handy, H-A-N-D-Y dot com slash ATP, promo code ATP.
Terms and conditions apply.
Visit Handy's website for more information.
Handy, the most reliable name in house cleaning.
Louis Mantia was not asking us, but posted a question that I thought was interesting.
And I don't remember if I put this in the show notes or not, but maybe somebody else of the three of us thought it was interesting.
Okay, that should have known.
That should have known.
John, one day I'll learn.
Today is not that day.
Louis asked, if you worked at Apple for just one day as a designer and engineer and you could squash one trivial bug, what would it be?
And Louis continues, in this fictional scenario, you have no managerial or directorial power.
You cannot direct others to help you and it may not exceed one day's worth of your time.
I replied to this and I believe what I had said, and if not, then I'm going to say it now.
What I had said was, I don't know if I could do it in a day, but here's my bug and it drives me nuts.
I am a devout and enthusiastic user of spaces.
That is to say, multiple virtual screens.
There are multiple virtual desktops, if you will, on one or more physical screens.
So you can see this most easily if you have a magic trackpad or equivalent.
You can do a three-finger swipe laterally to swipe between them.
On a magic mouse, it's a two-finger swipe, if I'm not mistaken, laterally.
And it's a nice way to arrange and organize different workspaces, if you will.
A lot of times when I use this feature, if I like command tab, I almost said alt tab.
If I command tab into a different app, or if I use the dock to go into a different app that's on another space, it will switch spaces automatically, as it should, and go to the correct space.
Let's say I have four spaces and I'm on the fourth of the four spaces.
And I'm trying to go to Finder, which is on space one.
I click on the dock on Finder.
I zoom over to space one.
And then it immediately zooms back to space four, even though there's no Finder window anywhere to be found.
And it is infuriating because I'll do it again and again and again.
And it keeps happening and happening and happening.
And there's no real rhyme or reason why it's happening.
As far as I can tell, it just happens.
And that's the bug I would fix.
Marco, what would you do?
I had a really hard time deciding this because my answer will vary by the day, like whatever's annoying me that day.
Oh, true.
I think, you know, there's all sorts of like, you know, stuff that I encounter over time that like, man, if they would only fix this one bug in iOS or watchOS, I could do something cool with Overcast, you know, and that would be my pick a lot of the time.
Currently, I don't think I'm facing any of those right now that I could specifically nail down.
So I'm going now from a user perspective for my choice this particular moment.
I've been using the iOS Music app a lot more recently.
Just listening to more music.
And the Music app is, oh, so many paper cuts.
Especially for somebody who listens to full albums.
and cares about the current album or current song that was playing when maybe the app gets terminated in the background at some point and then relaunches.
Because music, like iTunes before it, the music app on iOS, every time you launch it, it pretends like it's the first time it's ever been launched.
It's like, you weren't playing anything, what do you mean?
Or it remembers the song you were playing, possibly even one song ago, but it doesn't remember where in the song you were.
which if you listen to a band that has long songs, that's kind of like starting a podcast from scratch every time you open your podcast app.
That's not really what you want.
It also loses your place in the navigation hierarchy.
So if you were in a playlist or if you're in a certain album...
If it remembers the song you were at, it might bring that up as the now playing song.
But the place you were in the navigation to get to that song, like the album list, is just gone.
And I know under the junk drawer menu, there's now a show album button, which is buried.
It took me months to find.
Anyway, there are so many paper cuts about the music app.
But the one thing in particular that gets me, that makes me think, does anybody use this who works on it?
I honestly want to know this question.
When you are playing music that is not downloaded to your phone, when you are streaming music over cellular,
every single time that the track changes to a new song or if you resume from pause if it's been paused for a little while it rebuffers the audio it seems to be doing a true stream so it's not like you know when i say streaming and overcast what i'm actually doing is a progressive download i'm not doing like a like only buffer from the network what you're playing and don't buffer very far ahead like i'm not doing that i'm just starting a progressive download and as soon as i have enough to play i start playing
What Apple's doing with music is definitely not that.
What they're doing is taking up no disk space, which for the mass market for music, that might be the right idea or at least close to the right idea.
So when you stream from Apple Music, it actually doesn't download the whole track.
It downloads some distance ahead and that's it.
And when you go to the next track, it throws away whatever it had about the last one and loads the next one again from scratch.
If you pause it for a while, it discards all that data.
Again, reloads it from scratch.
My bug that I would spend one day working on, and I think I could probably do this, is that every single time it starts a stream over cellular, it plays the first maybe half to one second of audio at a low bitrate, and then it steps up to a high bitrate.
This is extremely audible.
It sounds like the first half second of every song you play is at like 20 kilohertz, like some super low sampler.
So it cuts off all the high frequencies and then it pops into the high frequency like a half second of the song every single time.
Twitter does the same thing and it drives me nuts.
It drives me nuts, too.
I understand that it's nice to have progressive bitrate things, but you're a music player.
The quality of your music matters a lot, and music isn't that big.
These days, on these networks, you know what?
I would rather...
The dumb one-hour solution to this would be just wait one second.
Buffer it for one second, then start playing.
I could have a one-second gap before the song starts.
Fine.
If it would start at full quality, which it would, that's all it takes.
Fine.
Or the smarter thing to do...
You know what is going to play next.
Just buffer a few seconds of the next song as you approach the end of the previous one.
This problem shouldn't exist in this day and age.
This is the kind of thing you'd expect from the very first cell phones or the very first streaming music apps.
We are so far past that.
The first half second of every single song I play should be in freaking full quality.
on the music app on the premier device from the premier mobile company that makes this premier apple music service like for god's sakes like that's way more than a half a second on twitter like i remember when uh when you first did overcast clip sharing and everyone was like why overcast clip sharing sounds so bad people would tweet them and you'd play them and it's just voice right but on twitter
The audio quality was so bad for, like, the first, like, seven words out of the person's mouth.
Of course, the video quality would be all grainy.
And then the audio quality would be, like, worse than plain old telephone system.
Like, worst, like, eight kilohertz, just incredible robot voice.
And you're like, how did Marco make such a terrible clip?
It's not the clip.
The clip is fine.
It's Twitter.
Like, the Twitter clients and the Twitter web browser.
Like, Twitter processes whatever it is that you give them to attach to a tweet.
And when you try to play it, like...
And sometimes it would be half the clip, it seemed like, and then it would snap into good quality.
And I have the same feelings.
I have a gigabit connection, Twitter.
Just wait until you've got the whole thing ready to go.
I'm not so desperate for it to start immediately that I want to listen to someone talking and have them sound like they're inside a tin can.
So this is...
I think we did better back in the bad old days when everyone had terrible connections because all of those were adaptive, where it would be like, if it seems like you can't accept whatever it is that we're trying to show you at full data rate, you will get a crappy quality version, right?
But these new systems are like unconditional.
I don't care if you're in gigabit fiber.
You're going to listen to seven seconds of crappy audio before it snaps into good quality.
It's like, why?
There's no reason for that.
Be adaptive.
Measure how much you're actually able to send and how much to receive and adjust the quality based on that.
And, you know, obviously with Marco's case, this is not a dynamic scenario.
It does know what it's going to play.
It does know as it approaches the end of a track what the next track is going to be.
Hopefully it knows in almost all scenarios unless you're like some...
live streaming radio station or something but either way like buffering exists like real player did better than this you know just like oh brutal wait a second and buffered like yeah that's that's a tough one oh so my answer to this uh unfortunately i have worked for big ish companies for too long to believe that there is literally anything you can fix no matter how trivial in a company the size of apple in a single day that is true it is absolutely impossible right
You can begin the process of fixing it.
In fact, if you are a young and optimistic soul, you can think that you have spent one day's worth of work and have fixed the problem, but you don't understand the days and weeks and months of work that's going to be required to get that supposed perfect, already done, completed work out the door.
Say you're fixing a typo.
that typo oh does it need to be localized does it did it change the metrics on this thing because you added a character where another one and now another word wrapped does it have to go through all the qa like is it is it a special character that you wanted to add oh do you change a straight quote to a curly quote but now there was some part of the process that expected that all to be asking it's puking and that's going to come up six months from now when they do integration builds there's nothing you can fix in a day which is part of the problem with big companies but if i'm going to pretend that something can be fixed in a day
Guys, it's tough because I don't like the things that bother me are not of a nature that can be even like, quote unquote, fixed of just like, well, I did the work part of it.
Right.
I mean, the closest thing I can come to thinking for me personally is.
whatever it is that's causing the finder to occasionally decide that it doesn't care what state a window was in before you know the applications folder is a good example applications folder does not move and its contents more or less stay the same there's not more than one of them it is in a well-known location it is more mostly more or less owned by the system although it's a complicated amalgam of system applications and and slash applications these days but anyway putting that aside
The applications folder.
In theory, I should be able to open up the applications folder in the Finder, change the view settings and the window size position to the way I want it, and do that once and have it stay the same.
Now, I know I wrote many hundreds and thousands of words about the reason why this isn't actually possible, right?
And fixing the Finder to make it properly spatial or whatever is not one day's work.
But I feel like it's possible in one day's work to find the code path that makes it so when I open the, you know, when I do command shift A to open applications or I command option click the applications folder in my dock, find the code that decides at a certain point and say, you know what?
application window i'm going to open a window that looks nothing like you had it before it's going to be in a different position it's going to have a toolbar it's going to be in a different size it's going to be in a different view it's going to bear no relation whatsoever uh to however you arrange the applications window before and you're never going to see the other window again whatever code path that is
I would reproduce it, which I feel confident I can do in a day.
I would find that code path, and I would sever it.
Whatever set of conditionals leads you in this direction to decide you're going to open a new window with new... Just don't.
There is only one path, which is to make the window appear just like it used to.
Maybe I would only do it for well-known folders.
Hell, maybe I would just do it for the applications folder.
That is a one-day work narrowing of scope.
All it would be is like...
dedicated storage for the view settings for the application folder and feel like i can make that one code path work in a day you're gonna open the applications folder let me look up the settings let me make you a window according to those settings that's the logic it's fairly straightforward there you go spot fix just one folder
Remember my settings always.
And then, of course, it would take months to get through and it would get rejected because there'd be some regression because some part of some GUI automation that tests some part of the finder would rely on the functionality of it not remembering your settings and it would break those tests and I have to revert.
That was a better conversation than I expected.
All right.
James Irwin wants to know, what's the best way to, or why shouldn't you, partition your onboard boot SSD when doing a clean and complete overwrite slash install of Catalina?
I typically create at least two partitions on my main iMac machine and make the non-booting partition the location where I write various apps, swap and temp files, such as those created by Photoshop, Premiere, as well as keeping frequently updated and accessed project files or databases.
I'm wondering if this is an archaic practice under the latest versions of APFS.
I suspect that John is going to tell us it's actually better on APFS because of the whole like sharing space thing.
But for me, I used to religiously partition my Windows computers and have like one drive that was the OS.
I think I even had like a second one that was apps, like a third one that was games or something like that.
It was bananas.
There was no need for it.
It never ever did any of the things I claimed it would do, but I did it.
I have never partitioned a Mac knowingly.
I believe it has a system partition or something like that now.
And I know it's gotten the muddier with APFS and locking down the OS itself.
John will jump in and fix all these terrible half-truths that I'm telling.
But anyways, I've never done it.
Marco, have you ever really partitioned anything outside of your photos dance that you're so fond of?
And I understand why.
And that isn't even a partition.
That's just a sparse image.
that's what I'm thinking of okay yeah like I don't although now like if I was setting that up again from scratch I would do a APFS space sharing partition excuse me but now yeah like that's I mean there are special needs where having separate partitions is useful but
I don't have any of those special needs.
And so I haven't done this on a Mac.
I, like you, in the Windows days, I would do it back then because that's like, you know, you would, like, reinstall Windows from scratch every 6 to 12 months for fun and to keep your computer in a good state.
And, you know, once you moved to the Mac, I didn't do that anymore.
Thank God.
And so, yeah, I don't partition.
But I think if you are a partitioner, if you already were before...
This probably doesn't change.
Yes, Catalina has its new two-partition default layout, but if you had good reason to keep separate partitions before, you probably still have them now.
John, what's the right answer?
And please fix all my completely awful half-truths from before.
So the partitioning dance, the benefits that you historically got and can continue to get are about sort of logical and physical separation, just logically in your mind where you're like, I know all of my X stuff is over here and I know all my Y stuff is over there.
And you could say, well, you can get the same isolation with folders, can't you?
It's just a little one level higher.
Like you can't, you know, you can unmount a drive, right?
And you can...
reason about a drive and erase a drive and clone a drive in a way that is with a different set of tools than you can do for a folder, right?
So you're having some sort of... And the mental partitioning is... The physical partitioning is less real because, physically speaking, things are so muddled that you're not really getting whatever protection you think you're getting.
For the most part, it's all just one big soup of stuff.
But mentally, I can see how it can be something that people find reassuring.
But I'm going to say that there is...
pretty much except for in very weird scenarios no good reason to incur this uh cost because the flip side of the sort of separation benefits is and again this is less true with apfs we'll get to in a minute but thank you boy some delay you really must be sick um you knew it was coming too um you know what the next track's gonna be marco just buffer the bell
Oh, man.
Brutal.
Oh, goodness.
There's something else for people who are into Linux early on.
Remember, you're faced with that decision.
Here I am trying to decide how I'm going to divvy up a finite resource.
How much do I put in slash user and how much do I put in slash just plain old slash?
If I make a bad choice here, it's going to be really annoying later.
Trying to think about those decisions, and the same thing with like back in the bad old days of Windows and on the Mac when you partition things.
You'd have to think really hard about how you're going to divvy stuff up.
You'd have to make predictions about your future self and the growth rate of things.
And...
You know, in the bad, really bad old days, partitions weren't changeable.
Then there were partitions that you could grow and shrink, but only under certain circumstances, especially on the Mac, depending on fragmentation, how much you could grow or shrink partitions and all that other stuff.
It was always just this fraught decision.
Anytime you're trying to sort of plan out your life and plan out the allocation of finite resources at a single point in time with limited flexibility to make adjustments later, that's a bad decision point to make.
And I have to say, like, weigh that against whatever sort of logical separation is
you think you're gaining the benefit of those.
In particular, things I talk about of like swap files, temp files, scratch, there is no benefit to putting those things there.
The SSD doesn't know or care where those things are in relation to other things.
There's no speed benefit for them being on outer sectors.
Like we're not using spinning hard drives, I hope, anymore for this type of stuff, right?
Temp files like the OS is handled.
Like you can, if you want tools to manage those resources, you're,
partitions is not the cool the tool to do it now all that said apfs makes this so much better because you can essentially not make those decisions you can say i want to have five buckets for things that all five of those buckets are the size of my entire drive and you never have to make decisions if you don't want to about how much space is allocated you
you can constrain them but don't because unless you're in a scenario like marco where you like the whole point is you want to constrain them you can make a bucket that is of a limited size and fine do that if that's what you're trying to do is prevent apple's photos from thinking it has the run of your whole you know because that's that's basically working around a problem in apple software that you can't tell photos please don't use more than x amount of my disc right
But other than scenarios like that with APFS, you can make as many containers as you want and they all share all the space and then they just grow at their natural rates.
Now, there's no more disk space available than there ever was.
And whoever grows fastest ends up winning and using more space than other people.
But that's the way it should be.
So and it's very easy to create them and destroy them.
So if you really, really insist on using, quote unquote, partitions as the way to organize your stuff mentally and, quote unquote, physically, use APFS containers to do it.
Now, I don't want to call these partitions.
I forget what the pronounce is there.
It's like it's not containers.
There's one APFS container with volumes in it.
I forget what the terminology is, right?
There still is the ability to partition things.
So you can partition things and then one of them have an APFS container and one of the partitions.
And as Casey was alluding to, Catalina has multiple, I mean, the Mac has had multiple partitions, actually, we have partitions.
For a long time, there was the recovery partition, then the regular system partition.
I think there might have been one other one in the mix at various points.
Now, there are APS containers doing that same stuff, but there's still recovery, and there's the read-only system volume, which has the operating system on it, and that's melded with the read-write volume that is hidden from you.
Unless you're looking at certain tools, it just looks like you have one hard drive, but everybody has the read-only one and the read-write one combined together.
That's what I was getting at before.
The applications folder, slash applications on your Mac,
Some of the things that you see in the applications folder are not in slash applications.
They're in slash system slash applications.
The finder is creating this illusion for you.
Again, maybe another excuse for not to retain my stupid window settings.
You know, it's more confusing than you think it is.
So there are these multiple volumes behind the scenes being merged together.
But all that shouldn't concern you because if they make that illusion convincingly, and they mostly do, you can continue to add volumes to your APFS container as much as you want.
They're very lightweight.
It's very easy to add one.
And you don't have to make a commitment of size up front.
So in general, I say, don't do this.
Just use one big volume.
You'll be happier.
But if you insist on doing it, APFS has got your back and makes it way easier.
Finally, Brian Hamilton wants to know, if your favorite author asked you to narrate their next audiobook, would you do it?
I don't think so, because I think I'd be terrible at it.
I'd want to, but I don't think I would do it, because I can't do voices.
I am very envious of people.
A friend of mine, Steve, is very good at doing different voices and things like that, and I wish I could do that for when I read my own kids' stories.
Not in my wheelhouse, so no, I don't think I would do it.
But what about you, Marco?
What do you think?
Like you, I know I'd be bad at it.
But in addition, I also don't want to do it.
I think probably going to be like some kind of massive time commitment.
And I also can't do voices very well, even when I'm reading books to my kid.
I try.
It's really sad.
I'm glad those are private moments.
But ultimately, I'm not a good speaker.
I don't have good enunciation.
I mispronounce certain word sounds.
I stutter.
The amazing thing, when I was a kid, I used to want to be a radio DJ.
As I got older, I realized and was told, first of all, that's kind of a terrible career, actually.
It's actually really hard to have a normal life, and it doesn't pay very well, and it's just not a good career.
And then also, I realized as I got older, I didn't have the voice for it, and I was never going to do it.
And you're really just into the headphones.
That's all you really want.
right and the amazing thing about podcasting is that people like me who aren't very good speakers who have like flaws in the way we talk or you know average voices or whatever we can actually still make a living doing basically that same thing but
on you know with more interesting content with free form of whatever you know however long we want to talk about whatever we want to talk about and as long as someone cares that can be a thing that you do that succeeds and in podcasting there isn't an expectation that everybody is a perfect speaker there isn't and thank god for that there isn't an expectation uh that that you know that you are like a cool person who talks in the same way and all the radio djs and use a lot of bass in your voice talk really up close to the microphone and
All that is thrown out the window and this is just people talking normally who sound like regular people.
Listeners are more willing to overlook the flaws in our voices and our speaking styles and our enunciations and pronunciations and everything.
So I'm able to succeed here.
But in an audiobook reading context, it's much more formal.
It's much more controlled.
The expectations are much higher, possibly understandably so.
And so I think I would be really terrible at that for lots of reasons.
And the resulting audiobook would be not as good as it would be if a professional voice person did it.
So that's yet another reason why I'm very happy staying where I am, and I would not want to do something like that.
John?
The part that Marco didn't answer that is the key question here is, does Marco have a favorite author?
Nope.
That would take me a long time to figure out.
We've got time.
We'll wait.
Well, his favorite author is you, John.
Thanks to our sponsors this week.
Wait, but John hasn't given an answer, has he?
All right, John.
John, what's your answer?
I'm waiting for Marco's favorite author.
You have to pick one.
Obviously, it's not going to be a super-duper favorite because you're not a big reader.
We're not expecting this, but you have to pick one.
So just come...
Name an author.
It's like that name a state thing.
Was it name a state or name a country?
There was a good one recently, some internet sort of like, let's find people on the street and laugh at how ignorant they all are.
What was it?
Name a country?
Might have been name a country.
Anyway, name an author.
Who's your favorite author, Mark?
John Syracuse.
I mean, you haven't probably read more than I've read in over the past.
That's what I was thinking, actually.
Anyway, I will answer the question and name my favorite author, and then Marco can get back to his coughing fit.
My favorite author is Stephen King.
That's easy.
I've read more of his books than anybody else's books.
I really like his books.
They're not for everybody.
They are for me.
Asked I narrate an audiobook.
Would I do it?
No, because narrating an audiobook is the type of thing where, like, say you're super into it.
Like, I love my favorite author, and my favorite author is going to ask me to narrate her book, and she's great, and I love everything she writes, and I can't wait to do this.
17 hours into reading that book into a microphone, you are not going to feel that way anymore.
Like doing an audio book means speaking into a microphone without mistakes for hours and hours and hours.
It is way harder than I think most people would think it would be.
The first 30 minutes to one hour, you're probably jazzed about it.
That's not what it's going to be like for the whole rest of that time.
It is a hard job.
Even if you're good at it, it's hard work.
So I don't want to sign up to do that.
Even if I was inclined to do that type of work, which I'm not, I would never want to do that.
That's hard work.
It's like, would you like to build a house for your favorite author?
No, it's hard to build a house.
It's a lot of hard work.
I like the author and it's cool, but their house is cool.
But, you know, it's hard work.
So, no, don't agree to narrate anybody's audiobook.
That is really hard work.
Thanks to our sponsors this week.
Squarespace, Handy, and Indeed.
And we will see you next week.
Now the show is over.
They didn't even mean to begin.
Cause it was accidental.
Oh, it was accidental.
John didn't do any research.
Marco and Casey wouldn't let him.
Cause it was accidental.
Oh, it was accidental.
And you can find the show notes at atp.fm.
And if you're into Twitter, you can follow them at C-A-S-E-Y-L-I-S-S.
So that's Casey Liss, M-A-R-C-O-A-R-M-N-T-M-A-R-C-O-R-M-N-S-I-R-A-C-U-S-A-C-U-S-A-C-U-S-A-C-U-S-A-C-U-S-A-C-U-S-A-C-U-S-A-C-U-S-A-C-U-S-A-C-U-S-A-C-U-S-A-C-U-S-A-C-U-S-A-C-U-S-A-C-U-S-A-C-U-S-A-C-U-S-A-C-U-S-A
Oh, we have some war stories, don't we?
I have an infinite supply of war stories.
All right.
Let's do some switch glass war stories.
I'm excited.
I have to pick a favorite here.
I think I'm going to pick the one that I'm currently mired in, the war that I'm currently involved in.
Yeah, and we'll leave the rest of them for the eternal.
This is like secret weird things people do.
This topic will go on forever for this stupid app.
In my application switch class, which puts a little thing on your screen that lets you switch among applications,
there's a preferences window and the preferences window lets you pick where on the screen you want the little palette to be and it's not you can't put it everywhere but you can just put it in the corners and on the top and the bottom the left and the right and you know that's it there's like 12 different positions you can put it in and to give a ui where you you know
choose where that palette appears, I show a little rectangle roughly screen-shaped with a bunch of radio buttons in there, and you click on the radio button in the upper right corner, and the thing goes to the upper right corner, and so on and so forth.
Like, it's a visual way to know, kind of like Mercedes, presumably patented, seat controls.
Like, instead of having a bunch of buttons or a pop-up menu or having to read words, you just see a bunch of dots that are arrayed all around the edges of a rectangle, and you go, oh, that rectangle is my screen.
And if I want it to appear there on my screen, I'll click here in the preferences window.
and as a frill towards the end of development i said you know what to make it clear that that thing is supposed to represent your screen i should really put the person's desktop background image in that little square so it looks like a miniature version of their screen and this is especially true because switch glass is configurable per display which is a whole other war story we'll get to some other time so you actually get a preferences window on every attached display and you can put it in different positions on different displays so if you have two different desktop pictures on two different displays i have to show two different images there
So that was my idea for this feature.
I had the feature all working without that, and I said, let me try to do this as just a fun little surprise and delight thing.
And so it was fairly straightforward.
It was an API that you can call, and it gives you the file path to the current desktop picture.
And then I would just read that picture and make a shrunken version of it and shove it in the window.
Like, done and done.
Really easy, right?
And I more or less shipped that except even in the first version, the first version of this was like, all right, that seems to work.
But, and I had a fallback path of like, Hey, if you can't load the thing, um, you know, fallback that is showing the old UI, which just shows a box or whatever that,
two things i ran across in the initial release were first of all you haven't on a modern mac if you haven't looked at like what the default desktop pictures are like for example on mojave that has this picture of the sand dunes i think it was the first dynamic desktop pattern where it's like you can pick the sand dunes picture and as the day progresses it shows different like the morning and the in the noontime sun where it's bright and then the evening then at night right
I don't remember how I did it, but maybe there was like an open source package.
I think there was something that will generate a JSON file that you need.
But what I did was long ago for my laptop when it went on Catalina, shortly after Catalina came out.
I took a picture that I had taken at Cape Charles on our beach vacation that year.
And I'd taken a couple different exposures, one of which was exposed properly and one of which was way too dark.
But it ended up working out great so that I made myself a custom transitioning desktop.
And this is one of the things I actually really like about Catalina.
And it's a custom like transitioning wallpaper such that during the daytime hours, it's, you know, the two kids at Cape Charles during the day.
And then when it becomes dusk, it automatically switches to roughly the same shot, but it looks as though it's a twilight.
And it's just a really nice little, as you were saying earlier, like surprise and delight sort of thing.
I don't remember what package it was, whatever I did to generate this.
If I can dig it up, I'll put it in the show notes.
But if you're interested in that sort of thing, you should check it out or try it because it is really neat.
So anyway, I apologize for the interruption.
Carry on.
Yeah.
And for the first version of switch class, I'm like, well, this is just a little frill feature.
So I'm not going to spend too much time on it.
But even just to do the thing of like, oh, you know, there's an Apple API that gives you the path to the image.
And then, like I said, just open the image, read it, make an image, small, shove it in.
Like, yeah, not a big deal.
Right.
um but that like you know and i was using during my testing i was using i think the the sand dune image right or maybe i just had it on as default from a holdover from mojave i don't remember um it's very difficult to find as we've discussed in the past uh 6k uh background images look nice anyway
That image file is 274 megabytes.
Whoa.
Okay, so if you think, oh, as a frill, when someone opens up the preferences window, I'm going to read the desktop image, make a scaled version of it, and stick it in the preferences window.
You kind of have to read, well, maybe not all 274 megabytes, which we'll get that in a second, getting to what Casey was talking about, which is multiple images, but you do have to open a large file, and then you have to read some portion of that, and it is actually a pretty high-resolution image.
And so it's pretty fast, but it's not instant.
So now I was faced with this scenario.
I'm like, here's this frill that I wanted to add, but there's like a half-second delay when I open my preferences window.
And there's a half-second on my Mac Pro with 12 cores or 16.
I don't even know how many cores I have.
With a bunch of cores and a fast SSD, what if someone has a spinning disk?
I don't want to delay the opening of my preferences window just so I can show a little frill picture of a desktop image.
So that was one challenge.
I'm like, oh, maybe I shouldn't bother with this feature.
The second challenge is, thanks to the wonders of sandboxing, if your desktop image is just like a picture of your kids like Casey, I can't read that image because it's not part of the operating system.
I could prompt you and say, oh, by the way, I'm trying to read your desktop image.
They told me it's in, like, you know, users, Casey, pictures, you know, desktop background.
Can you please give me permission to read your documents folder?
I'm not going to ask for permission to read the documents folder from my application switcher.
I hate applications that are like that.
They're like, why do you need to read my documents folder?
Even if I explain, oh, I just want to show your desktop image, people are going to be like, that's stupid.
And I bet you're going to do more than that.
You're an evil program.
So there was no way I was going to prompt for, please give me permission to read your files.
So I basically have to have two modes.
If I can't read it, oh, well, I just show the box.
And if I can read it,
Now I still have that problem of like, do I want to delay the opening?
So what I did for version 1.0 was switch class doesn't have a dock icon.
It doesn't have menus.
It just has a menu bar icon.
And in the menu, the little thing that drops down from the menu bar icon is the preferences choice.
As soon as you click on the menu bar icon, I immediately start opening your desktop image and reading it and making the scaled thumbnail, hoping that you are slow in mousing from there down to the preferences thing.
I'm doing this on a background thread, right?
And then when you open the preferences window, I say, okay...
i know i started that job i'm gonna give that job like half a second from the time you select preferences just just wait one half a second and if it's done in that half second show the image if it's not done forget it don't show the image and i didn't want to put the image in after because then it's like you open a window and there's no image and all of a sudden the image appears and it's weird right uh and so i kind of tuned that for 1.0 to be like okay it's a big image
But if you have a fast Mac, if you actuate menus at a normal human speed, I will beat you.
And by the time the preferences window opens, assuming you have a Mac with an SSD, I will have the thumbnail there, right?
That's 1.0.
But, you know, you know me.
I'm not particularly satisfied with that.
It's just what I wanted to do for 1.0.
Most people probably saw the image.
I had to add an item to the fact, which nobody reads.
The fact says, hey, sometimes I see a desktop picture, but sometimes I don't.
What's the deal?
And I had to explain, well, it could be because I can't read your image.
I'm not going to ask for permission.
Or it could be because things are too slow.
Yada, yada, yada.
The world is complicated.
And, you know, I'm fixing bugs and doing other mining things.
And for some reason, this was just bothering me, the desktop picture thing, because as Casey alluded to before, these dynamic desktop pictures, which I don't know if it's an open thing, but people have reverse engineered it to make tools that let you make your own.
But it's basically a single image file with a bunch of images in it of different times a day.
And then some metadata that tells you, okay, this image is for this time of day, this image is for that time of day, so on and so forth.
And then if you pick that as your desktop picture, as time passes, the operating system picks a different thing, right?
Lots of people have that as their default because it's the default desktop, like whatever.
The Catalina one has an island, the picture of the island of Catalina.
The Mojave one had the desert.
Those are all dynamic and those are the defaults.
And they're good.
They're nice desktop backgrounds.
Like I use them a lot, right?
And they do look cool and it's the one sort of changing over time thing that I keep.
But what that means is that
For the majority of the day, when I show you a thumbnail, if you select a dynamic desktop, it's wrong.
Because the dynamic desktop, like my Mojave things in the background right now, it's nighttime.
But if I just do the naive thing and read like basically the first image in the big giant file, it's going to show whatever the first image is, which is usually like the midday or dusk one or whatever.
and that's no good like i cheated in the screenshots all my screenshots i show the the background matches the time of day because i just made my background be the default time of day you know what i mean like so it looks like they match but if you're actually running it and i actually win the race and pull that image uh when you open the preferences window you're like well i can see that's the the island of catalina but right now mine's in bright sun and this picture is like twilight so oh well maybe people won't notice but
I was like, I can do better than that, right?
I knew people had reverse engineered this format, so I'm like, okay, well, I can do the same thing.
I can open the file.
I can read that metadata and figure out which one of these images I'm going to pull.
Now, the first thing that surprised me was I thought there was like three images, like morning, noon, and night.
I think there's like eight or 16 or 12.
Like, it varies from file to file.
There's a lot more images than you thought, which is why they're 274 megs.
Like, oh, this isn't great.
The second thing that surprised me, and I don't know if Casey's tool...
accounts for this or maybe there are multiple supportive formats but i expected it to be like metadata would be like between the hours of you know 6 a.m and noon show this picture and then from noon to 3 show this picture and you know like that's what i expected
But that's not what it's like at all.
What's in the metadata for Apple's images is, first of all, it's like a P-list, which are great to deal with in Swift, let me tell you.
It's just like a big, giant dictionary of arbitrary data.
And with single-letter keys, and single-letter keys are like, one of the things is like,
i a and z the i is the index saying like this is the information about image number five right easy enough the a is the azimuth and no the z is the azimuth and the e it's e e for elevation anyway it's the position of the sun using uh what are they called radial coordinates horizontal coordinates it's the the it's azimuth and elevation it's basically like if you're sitting on the earth how far do you tilt your head back to look up and how far do you look from left to right and
and instead of time of day so and those are just two numbers like the the the azimuth and the elevation so i know what time it is but i don't know what the azimuth and elevation of the sun is right because you have to know where they are exactly so here we are back in catalina again it's like well if i want to figure out which image to pick from this file i need to know where the sun is if i need to know where the sun is i need to know where you are which means i need to ask for location oh no
That's not good.
When you open the preferences dialogue, I don't want to throw up a thing in your face that says your application switcher would like to know your current location, allow or deny.
That's not a good experience.
I can't be asking people where their location is.
I thought I would get rejected from app reviews.
I'm like, oh, this is such a pain.
So, I mean, I was kind of dedicated, you know, too far into it at this point to bail out.
I just wanted to see this through.
So I did go through the dance of figuring out what it takes to get permission that it's, you know, location is one of the fairly straightforward ones, but it's still so weird.
Like the APIs.
on on ios you get to ask like i'm sure marco's from familiar with these it's like apis to ask for permission you can ask her if you want for a location where you can say always or one only when using the application like there's a way there's a sort of you know imperative way to say i am now going to throw a dialogue in your face that asks you permission to do a thing on the mac at least when it comes to location it's different you don't ask you just try to do it when you try to do it
a couple things could happen if in a clean slate you just try to just call the api that asks for a location when you call that api a dialogue will pop up in their face and say application whatever wants to use your location allow or deny if they say allow good you're allowed and that's it and there's no like it's just you're just allowed and from that point on until they unless they go into system preferences and and you know uncheck your thing from the relevant thing you're allowed great
If they hit deny, obviously your call fails and you don't get any location.
But also from that point on, if you ever call that API again, it doesn't pop up a dialogue anymore.
It just fails.
Right.
So what you have to do is make a call, make a pre-flight call that says, have I asked before I'm been turned down?
If so, I got to make up my own dialogue that says, hey, I asked you about this before.
You might not remember, but you said no.
But you're trying to do a thing in my app that requires location.
So if you want to give me a location, I can't present you with a dialogue that lets you allow.
Instead, I have to, with words, describe to you, go to system preferences, go to security and privacy, go to the location tab, and then look for my thing because it'll already be in the list.
I know you didn't put it in the list, but it got there last time when you denied me.
Look for it in the list.
Oh, by the way, click the lock and enter your admin password to unlock it.
Now look for my thing in the list, find the checkmark next to it and check it, and then come back here, and now you'll be able to do this thing.
there's no way hell i was going to explain all that like there's lots of mac apps that have very clever uis that like they will launch you can launch system preferences to that exact tab and i figured out how to do that too with like the url scheme or whatever but then other apps will like draw their own ui around system preferences with arrows pointing have you seen these ones like super duper does something like this some of them have a proxy icon of their app in the windows that they're controlling and they'll say drag this little miniature picture of my app
into the list with like a green arrow above it and that proxy icon will represent the app like lots of very clever things all of this is ui that no developer should ever have to do like apple should make this easier like it is an ios where you can ask for permission you can throw up a dialogue and people can say yes or no the fact that on the mac once you ask once you can never make that dialogue appear again is terrible
Anyway, I did all this stuff and I said, OK, but it doesn't change the fact there's no way in hell I'm asking people for the location.
So I can't do that.
What I can do instead is pick a reasonable default location.
And it's going to be off by a little bit because you're you know, if you're in Canada and it's dark already and I pick a location that's closer to the equator, I'm going to show the wrong desktop.
But why don't you pick Catalina?
I picked Cupertino because a lot of the examples online have that.
I picked Apple Park, right?
That's not a great location, but at least there's some excuse for it.
And in general, in the middle of the night, it will be dark.
And in noon, it will be light.
And then sunrise and sunset might be a little off.
But that's a reasonable default, right?
So then I was like, OK, this is this is fine.
I can ship this.
People will complain a little bit that it doesn't match their background, but it'll match their background within a couple of hours here or there.
So and if you're in the Arctic Circle, well, like can't help everybody.
Right.
I actually have another suggestion if you want.
Well, I'm not done.
Far from done.
But what is your suggestion about location, if that's what it's about?
I was going to say you can look at their locale to get an approximation of what country they're in.
Then you can look at their time zone and see approximately what part of that country they're in.
And you can kind of sort of make an educated guess of like, all right, well, what are the most populated areas of this country or whatever?
Or just say like, you know, whatever country they're in, just like pick the middle longitude and then whatever latitude is the middle of the time zone they're in.
yeah you gotta hope they're in a small a place a small place like the locale i'm not sure how precise locale is going to get you either because locale is like it's a combination like you don't necessarily know what country they're in based on the locale right you might you might be able to get in the ballpark but you can probably at least tell what hemisphere they're in and then when you combine that with time zone you can get it you can get a pretty good estimate yeah
anyway um i wasn't too worried about the details and in the end like i did write all the ui for a secret hidden feature it's like look if you care about this you can you know option click on the little thingy and it will actually lead you through all the prompts to enabled location but you'll never do it on its own but if you if you really care enough about this that you want it to be accurate we can go through and we can get your location and it'll be fine right
maybe i'll throw in some locale stuff with better guessing but uh i i do wonder you know how how much better that will be than just picking something that's sort of like i don't know it's obviously a bias for a thing but like cupertino is probably a little bit too far north but i didn't want to pick something in the equator i didn't want to pick something on the pole so i'm trying to pick something like midway through the equator in the pole and it's going to be more wrong if you're in a
So I'm like, OK, well, that's that's fine.
I can ship that.
It will be more correct for most people.
And I can look at where my my meager sales are coming from.
It's mostly from the US anyway.
So it's you know, it's like it would be fine.
It's better than it was before.
Most of the time it would match.
But then I had the problem of if before making that one thumbnail image took a long time.
now i have to read the file parse to get the information like there's more opportunities for caching like well i should really just like not read the file and parse it more than once i should keep track of where everything is uh and then i had a thing where once i did that once if you pulled up the preferences window again i wouldn't redo the work i wouldn't redo that whole waiting i already have the image for you but now i have to expire that cache of that image at a certain point and
know when it's going to change over to something else right and it just like even just parsing the whole file and getting all that information was a little bit costly i was like i can probably make this a little it was getting slow like it was like it's not doing that much work but you know
half second delay becomes a second delay and now your app starts to feel sluggish and wise you can show a little thing so i'm like i only wanted to be sluggish maybe the first time when people won't notice so i wanted to pre-parse the file pull out all the images make all the thumbnails and stash them away so that when they pull it up again if they haven't changed their desktop background i can just show the next image from whatever the time has passed right then at least at least my changeover time would be
accurate and i wouldn't be i wouldn't be delaying them every single time they bring nothing up and again most people aren't going to bring up the preferences but whatever that's that's what i was doing so i wanted to have and i wanted to have the best of both worlds which is i wanted you to be able to quickly get the thing up before i've done all that parsing but then i wanted it to be replaced with the correct image if it did that fast enough so now i'm doing multiple things you click on that icon in the menu bar and i'm doing the default thumbnail real fast and getting that ready and i'm also in parallel doing all the other thumbnails and
you know using those cores right uh how can i get my app switcher to peg all the cores in your computer briefly i can do it when you click on the menu bar icon and i pre-process all of your images and then when it comes up if the correct one is ready you see that one if the incorrect one is ready you see that one and it shortly gets replaced by the correct one which is less jarring transition because it's just a little bit brighter or darker right
So I had that.
I'm like, OK, that's I've already put too much work into this.
I'm done.
I'm just going to ship this.
It's fine.
Who cares?
It's just a frill.
It's not an essential part of my application.
I've already tempted fate by making these having to check the location services thing and the sandboxing thing just so I could potentially bring up that dialogue with a weird modifier click that nobody knows about, hopefully.
Right.
Let's just do that.
Then I found out sometimes when you ask the operating system for what the desktop background is, it's not a picture.
I don't know if any of you do this, but there's at least one person that I know who does this because he gave me the bug report, which is like, hey, if you don't pick a picture for your desktop background, it's wrong.
I'm like, what do you mean if you don't if you don't pick a picture?
It's like, well, you can pick solid colors, too.
If you go to the system preferences, you can you can there's like solid colors and it's not like a folder full images.
It's just right.
Well, it turns out I did it.
I'm like, hey, it works fine for me.
I picked one of the solid colors and it's fine because the solid colors are like cyan dot tiff or whatever.
They actually are files on disk that are just colors.
And he was like, oh, I guess it's because I have a custom color.
What you can also do is pick a custom color and then it brings up a color picker and you just pick whatever color you want.
And that's not an image at all.
When you pick custom color and you call that API that says, hey, what what image are they using for the desktop background?
It gives you this like transparent dot tiff.
And then you have to do some other API to figure out what color it is.
And that took me a while to figure out because there's no API that gives you that information.
But there is an API that tells you stuff about the background, about the picture that says, oh, should it be scaled to fill or should it be this?
And there's also a background fill color for when your image doesn't exactly fit your screen.
Apparently, it uses that background fill color to be your custom color as well.
So I was...
Happy to find that.
So I'm like, okay, now I got some special case code.
If your background is this exact path to this transparent TIFF, call this other API, get to fill color, make an image of that color, put it in the thing.
This can't be worth it.
We've not yet begun to fight.
Oh, no.
All right.
So then I've covered that custom color case.
All right.
and i was almost i was doing other stuff and bug fixes too this is just always gone in the background i was like my as my quote-unquote fun project because i got to use multi-threading and it's kind of fun you know doing that type of stuff and watching watching you utilize your computer briefly and figuring out how to make it space efficient i was like compressing the uh the thumbnails to a smaller form in memory so my memory wouldn't be bloated i was
looking at instruments and watching the memory briefly spike up really high and then drop back down, which is a great thing that you usually don't see in server-side development with high-level languages because once it allocates memory, it never wants to give it back to the OS.
But this does.
I was like, this is great.
I was using the leaks tool.
I'm doing all this cool stuff, having fun.
I thought I was ready to ship it.
I'm like, actually, I did ship it.
I shipped this update.
It's the one in the store now, 1.1.1, more or less described.
It works exactly as I described.
But in more discussions with developers, I was talking about this in one of the show and tell channels on one of the slacks on with developers.
Someone mentioned, oh, you know, there's another way to do this.
They like this person had actually done it in his app.
It's like, apparently, if you walk the window list, you can find the desktop window.
And you can grab an image of it.
Oh, God.
And I was like, well, isn't that going to throw up the screen recording prompt?
I don't know if you've seen this.
Like, application X wants to record your screen.
Like, lots of applications do that, but they don't really want to record your screen.
But if you do anything that involves, like, reading...
data from any other window thing like it's kind of amazing on the mac and sandbox and you actually can get the window list it's just a bunch of metadata it's like this window is this size in this position right like the ability to do stuff with those windows is severely limited to sandboxing apps you can't like close those windows or move them around without accessibility like there's a bunch of other things you know permissions you need to ask for to do stuff but you can get the window list with no permissions right
And you can kind of find the desktop image.
And once you find that window, apparently, even on Catalina, because it's the desktop window, if you ask just to read that window, you don't have to ask for screen recording as far as I've been able to tell.
I did get it to come up because initially I asked for the window and I didn't pass the right option.
It was giving me like that window plus everything above it.
And that does prompt you for screen recording.
I just hit deny.
But I think if you just ask for the desktop, you get that.
And that's ideal because then I'm like, oh, look at this.
I've simplified all this code.
I don't have to read this weird ass file and parse it.
I don't have to figure out if it's a transparent thing and synthesize my own thing.
I'll just get whatever the picture is on your desktop.
In fact, someone else posted something, another approach to this, which was like this core animation plugin thing where not only can you get the contents of the desktop window, but what you can make is another little window on your screen that is essentially a miniature shrunken live version of some other window.
there was like a demo app cool there was like a demo app that was like i'm going to show you a shrunken version of your whole screen you know like in a postage stamp and it's like live updating like you could drag things around and see it moving around on the postage stamp as you can imagine that totally does not work in catalina like
that is not they're not letting you just look at other windows it doesn't it doesn't prompt you for screen recording it's just like yeah no it doesn't crash or error out but it is totally non-functional so i was excited about that for a second i coded it all up and then i realized this doesn't work at all and i use the demo app i should have done this in the beginning let me try running the demo app yeah the demo app just shows a gray window so that was kind of disappointing but i was excited about it but i'm like fine well whatever i still got the thing where i can find the desktop window and i will
Just grab that image and it's going to simplify all this crazy, stupid, multi-threaded code and preloading and caching or whatever.
This will make things simpler.
I can just grab the picture that's there.
It never does make things simpler, does it?
So I did that and it more or less worked.
But the problem I ran into, and this is a whole other war story for another day, was that when you go through the window list, how do you find the window that's the desktop?
Like, well, you can kind of tell, like, the owner is the dock, and there aren't many windows like that.
And it's going to be the same size as your screen.
That's a good clue.
And the layer is going to be, like, negative 2 billion or something like this.
There's some, you know, the bottom layer or the bottomist or a very bottom layer.
Like...
Like, oh, that's, you know, a human could find it.
And oh, by the way, the name is called desktop picture hyphen name of picture.
Like, look at this.
How could you not find the desktop image?
It's really easy to find.
And then you think, wait a second.
And especially if you've been doing this multi monitor stuff that I've been doing.
how do I distinguish one desktop picture from a different one?
If you have two identical monitors, they're the same manufacturer, the same model running in the same resolution, but have two different desktop pictures on them, how do I tell which desktop picture goes with which monitor?
Oh, no.
It's not particularly easy.
There are some heuristics you can do.
You're like, all right, for the file name thing, if you have your desktop backroom set to a file and it's set to a different image, they'll have different file names in the name.
So one will say desktop picture hyphen Mojave dot heek.
And the other one will say desktop picture hyphen Catalina dot heek.
Right.
And I can ask for the URL to the desktop picture and match it up.
Right.
And I can say, OK, well, let me take the file name portion of the desktop URL and make sure it matches.
Now, you can fake it out because if you make a file called Mojave that he can, you put it in a different folder and that's really a picture of your kids.
Congratulations, you fooled me.
But that's all the information I have to go on.
And obviously I'm matching on size.
Right.
i can't really match on screen origin because depending on the arrangement of the screens the origins it's not i haven't found a way to to sort that out but just the final part i'm like well again this is probably going to be right people aren't going to intentionally fake it out if they literally have the same image it doesn't matter if they name the picture of their kids mojave.heek oh well but how common is that i'm probably good here right let me just do this it's way easier than the other technique
And it was still a little bit of work because I was like, well, I do have the fallback where if I really can't figure out what monitor something belongs to, I can always just fall back to the other code that I didn't delete that does it the quote unquote hard way.
so i left that all in there and there's this weird cascade of like i'll make the best effort to find the desktop images if i find them i'm going to use them because that's the way easier way to do it but if i can't find them or it's too ambiguous i'll fall back to the other way and i already had all the code to do that and now like this is by far the most complicated part of my program you know like the most lines of code the most scariest code the most parallel stuff it's just you know the most cpu intensive the most memory intensive and by the way getting better like the uh
doing it this way of finding the window takes way less memory and is way faster than the other ways i was doing it so i vastly prefer this one but again the apis provided to me do not they do not make this easy it's like it's like a mystery adventure you're like you can get 99 of the way really easy and then you're like but how do i how do i tell how do i know right
I did that.
I was like, okay, this is what I'm going to ship along with this other set of bug fixes and stuff I'm doing.
It's better than it was before.
It uses less memory.
It is more accurate.
There are some scenarios where it's going to get confused, but oh well, things are moving in the right direction.
And yes, it's 100 times more complicated, but it seems to be working fine.
This whole time, no crashes or anything.
I'm really enjoying Swift.
I'm not writing correct programs, but they're not crashing.
They're just not working right, which is great.
I feel like I'm really getting the benefits of Arc and all that other good stuff.
and not leaking too and i found by the way i found the static analyzer i'm like i remember those sessions about the static analyzer where does that command the next code like is there a code to run the static analyzer so i googled it yeah and i found the analyzer yeah and i ran it and i realized that if it had ever said anything like there was a little tab on the sidebar where it would be yelling at me there was nothing in the thing i kept running it i'm like
Nothing?
Like, literally nothing?
Like, how is that possible?
So either I'm doing something wrong, or it is not as mean a linter as I thought it would be, or Swift is leading me down the correct path to just not write any code that the static analyzer yells about.
Nothing.
Anyway, so I was going to ship this, and then I found yet another edge case that made me not be able to ship this, and that was...
What else can you set your desktop background to?
Maybe Casey knows this.
Solid colors, pictures of your own choice, dynamic desktop backgrounds.
What else?
You can set it to like photo albums, can't you?
Oh, I found one more that I haven't even found.
Can you do it with photo albums?
I'm pretty sure you can say, you know, take a photos album.
Does that make sense?
Like an album from the photos app.
I know you can do it with screensavers.
Can you do it with... Oh, no, no, you're right.
Maybe I'm thinking of screensavers.
I think you might be right.
oh no i do see photos wow yeah that's another one so congratulations you've made more work for me but the one i found that's not yeah it was it was disclosed the one i found that is not photos which god what is it doing you pick photos i have to find out anyway the one that is not photos and like in the end like the photo stuff like in the end that wouldn't matter right because like i don't really care where the image comes from anymore with my new technique i just find the desktop window
and just read it i don't care how the bits got there i just i see it and copy it right so maybe that works fine with photos the one it doesn't work with and maybe it doesn't work we'll see the one doesn't work with is if you pick if you click the checkbox at the bottom that says change my picture every n minutes or whatever you know that one mm-hmm
If you do that, when you call the API that says, tell me what the URL to the desktop image is, it doesn't give you the URL to the image.
Instead, it gives you the URL to the folder where all the images are.
Oh, no.
Which is the worst.
It's like, you know what the image is.
You changed it.
Just give me the URL of whatever image you're currently showing.
It's like, nope, you're going to get the folder URL.
As you can imagine, the folder URL is not particularly useful when it comes time to find the image that belongs to.
So when you pick the rotating thing, I have to use the new way.
Because if I don't use the new way of grabbing the picture of the desktop...
i have no other information i don't know what image in that folder you're currently showing all i can do is pull from that thing so now i'm much more reliant on the new technique so now i'm really like sweating over in this scenario i can't bail on the not being able to figure out which desktop i just have to pick one i just have to say look i'm just going to guess you have two identical monitors i'm going to make a best guess and the way i can make a best guess i can help a little bit by saying okay
I can find out what the name of the image is because that's still in the window name.
And I could find out in this folder that the image URL is returning.
Is there an image named the same as this one in this desktop?
Because if there's no image of that name in that folder, I know it doesn't belong to this monitor.
if there is an image of that name in that folder i don't know for sure but it's a stronger hint so i just upped the my heuristics game a little bit and i did a little bit of work with the origins to try to figure out that the origins were off a little bit but i did a little bit of wonky stuff to try to make like a best guess of like well if the origin is within this range it's probably that monitor anyway more more special case code
And I got that more or less working.
I didn't know about the photos thing, so I have to look at that.
Obviously, I didn't ship this yet.
Sorry.
Yeah.
Like, when I pick a photo album, what the hell is that image URL thing in return?
I don't even know.
And we'll be able to do anything with it.
And then, like, I was, you know, someone mentioned on these various Slack channels where I'm talking about this.
They're like, oh, yeah, of course, when someone brings up the preface window, if they just leave that preface window open for a long time,
Like, it's going to get out of date, right?
Maybe the desktop background is changing every five minutes and it changes out from under them.
Or, like, the time of day changes.
I'm like, oh, yeah, I'm fine with that.
Like, who's going to leave the prefs window open for a long time, right?
But it started to bother me.
I'm like, I got all this machinery in there.
Oh, my God.
I don't know when the desktop background changes, but...
what if i just checked every 30 seconds or something that shouldn't be too hard right okay and so now i'm like i had no polling and no timers in my whole app i'm like i can add a 60 second timer to each preferences window to check whether the things change and that was a big mistake because it was horrendously complicated because guess what if they have it set to a folder full of things the url is never going to change like you're going to say is the url still desktop pictures folder and it's going to say yep
okay but but did the image change well i don't know it's desktop pictures oh maybe i should i could wander the the window list and look to see if the if the file changed there and that like all my other caching mechanisms were built on the idea that the url will change in the file if the image changes but that's not true oh and by the way the lowest setting in totally non-apple like fashion is that you can set your desktop picture to change every five seconds oh
Oh my goodness.
There's no way I'm going to pull that fast.
Like I don't even want to like read the image and make the thumbnail every five seconds.
That's way too fast.
So I spent a while on that.
I'm like, OK, what is a reasonable balance of being responsive to like if you leave the window open for an hour, it has a chance of being correct versus being able to keep up with the every five second thing.
And during the course of that, I found yet more bugs in this technique, which is I'm not going to get into the multimonitor stuff, but the way I'm doing multimonitor is with sidecar with my iPad.
Right.
Which has been a blessing because I don't want to keep lugging a second monitor over here.
And one of the many tests that I do for various scenarios is, what if your app is in some state, one of its many possible states, and you suddenly connect an external monitor?
How do you handle that, right?
I don't know if this is particularly a sidecar or just second monitors in general, but all the code that I have to do that is like, oh, second monitor appeared.
Make sure you got a palette on it.
Make sure you find the preferences for that monitor.
Make sure you put it there on, by the way, if the preferences window is up, the preference window should also be up on the new monitor that just appeared.
That all works great, except apparently when you just connect a monitor, my app reacts fast enough that when it goes to read the desktop window, the desktop window is not done drawing into the backing buffer for the window, and I get an image of the first third of the thing, like a half-downloaded image, instead of getting the full desktop image.
So I had to add a delay that says, when a new monitor appears...
Just wait a second.
Wait for the desktop image to fill in behind it, then grab it out of there.
And I hate adding crap like that, because it's like, how long is a long enough delay?
You don't want to wait too long, but you can't get the image that way if you don't do it that way.
And by the way, you don't have a fallback technique if they have it on the rotating image thing.
So here I am, connecting and disconnecting monitors, making my desktop picture change every five seconds, making sure that there's no scenario in which you don't see a reasonably up-to-date image and that the caching all works.
So that's where I am with this.
I did not ship this updated version, which is... It doesn't have many new changes, and in fact, there's a bunch of other fixes that I want to add in before I do it.
But the desktop picture stuff, this is a perfect example, and more of the war stories this will come up, of a scenario where...
ostensibly mac os offers apis to do a thing but they are so incomplete in frustrating sort of one percent edge case ways that to make an application that really does what people expect you to be able to do is incredibly complicated like
Like literally all I want is give me a small version of the desktop image that's on this screen.
If that was an API, give me the full size image of the desktop.
If that was the API, I would be done.
But there's no API to do that.
There's an API that ostensibly gives you a URL.
But as you've seen, it doesn't give you a real URL.
Sometimes it gives you a folder.
Sometimes it gives you a transparent TIFF and you have to know to look elsewhere for the things.
And God knows what it gives you with photos.
What about getting the picture?
Sometimes you can get it, sometimes you can't.
Will that URL change when the image changes?
Sometimes it will, sometimes it won't.
Can you go to the window list?
Yeah, but you can't tell which desktop belongs to each thing.
Can you parse the files?
Yeah, you can parse them, but then you have to know the location and the solar position.
like the task that needs to be accomplished if i was at apple this is more than one day's work you could make an api to do this the api would be called like it would be like an ns screen api or like get desktop image for screen like there would be an api named like the code that i'm writing and on the inside of it if you're in the os i can actually get that info but instead i'm like i'm peeking through these little wind peeking through the keyholes peeking through these little windows say
What's going on in there with the desktop image?
Hey, guys.
Hey, is there something on the desktop?
Can I get that image and know what screen it's associated with?
And the OS is like, don't bother us.
Here, call this API.
It returns something.
You can probably find some other info elsewhere.
Just figure it out.
You can really piece it together like a Columbo mystery.
This is just one more thing.
Can you just tell me what the name of the file is on that screen?
Just one more thing.
What is the origin?
And what coordinate system is that again?
Just one more thing.
So I have not yet shipped this update.
And I really need to stop doing anything having to do with desktop pictures.
Because let's remember, this is all just to put a tiny picture of your desktop in the preferences window that most people will never see.
They'll go to once, set it up, and never look at again.
You need another app.
I do have to actually fix some bugs and add some features to this.
Lots of people want things.
The thing that surprised me the most with all the feature requests is people want this thing that I explicitly don't want.
I mean, if people want it, then I'm probably going to add it.
But what people want is like, I guess they're just used to the way the doc behaves.
When you've got an application that has no windows open and you switch to it, people want it to open a window.
that i don't i hate that behavior i just want to switch to it but everybody's like if i have no windows open and i click the dock icon i or you know a thing in switch glass i want it to open a new window like really and like or if it has minimized windows they said if i click on the thing i and there's no windows open i want to pick a window window and unminimize it from the dock for me really that's what you want
that's like the last thing i want some of those i can't do i'm not sure i don't think i can unamend my stuff from the dock but apparently a couple of them i can do so i might have to add that but yeah this and people the window snapping people want that where you bring another window close to it and does that snapping thing right and you know as an application you have basically no control over that because it's the os doing it
but the os does it based on what layer your window is in and so if you're a floating window like mine is you don't interact with the regular windows so i might have to make like an invisible regular window that's hiding behind my real window for the purposes of snapping uh people want full screen not to go underneath my thing like
again i don't think i have a way to do that the dock and the menu bar can influence how much space is available but if you're just a window you can't be like the dock and be like oh this this space is not available for you like whatever it is like an ios usable edge insets or whatever i don't think there's a way for me to influence that from a sandbox mac app to say i'm just like the dock where i am no window should go that's not going to happen but yeah people got a lot of uh a lot of ideas on a lot of suggestions but i'm still plugging away on on the basics here
That was a journey.
$4.99 in the Mac App Store.
Peg all your cars briefly and the fallback method and the tertiary strategy for pulling up your desktop image and multi-monitors.
Oh, my God.
Too complicated.
I'm already excited for the follow-up with regard to a photo album as a desktop.
I'm not excited about that.
I would have found it eventually, or someone would have found it, probably after I shipped, so at least thank you, Casey, for reminding me that I should hit this disclosure triangle.
God, what does this return?
When I call image URL, what is it going to return?
It would be nice if it returned the URL to the image, but I don't think I'm going to be able to read it anyway, which is fine.
There's no way of getting around that scenario.
I don't know.
Maybe I won't be able to tell what screen it is at all.
Maybe it will, maybe it'll be like just empty.