Day-One Cowboy
That's hops.
We're getting there.
He, uh, he wore a cool diabetes sugar monitor for two weeks.
The good thing is like the insulin shots are easy because like dogs have all that loose skin on behind their neck and you just stick it in there.
Like you don't even stick it in the muscle.
He doesn't even notice.
Oh, that's what you tell yourself.
I told myself the same thing, but it's, it's still a needle going through your skin.
He notices.
I know, but you know, like it's thanks dad.
Dogs are very tolerant.
It was a branding exercise.
I marketed it as chicken shot because I would give him chicken before and after the shot to try to develop a positive association with it.
Or at least bribery.
I don't know.
So I marketed it as chicken shot.
You want to come get your chicken shot?
And that seems to work where he actually seems okay with it.
I wonder if Apple could take a lesson from that.
Rebrand app store rejections.
Beer rejection.
Hey, here's a beer.
We're sorry we can't accept your app like this because of these reasons.
Here's another beer.
I made it this far into winter.
Uh-oh.
This far before taken out of the Fisherman's Friend.
Oh, is that Fisherman's Friend?
Oh, no.
I'm sorry, Marco.
I'm sick now, too.
I just, last night's wrecked if I was talking to Merlin about that.
I made it.
several winters without really getting sick but it caught up with me this is it i i have a feeling this is actually something that we caught from merlin somehow through podcast because he was he was so sick for so long and we listened to all of his podcasts and you were even podcasting with him so you're totally screwed somehow if it's possible to transmit viruses over skype i guarantee you this is merlin's fault so thanks merlin thanks a lot
I don't have that much I can complain about really because usually like it's mid-February.
Usually I am sick from November until WWDC.
Just every year because like school happens and winter happens.
And so actually this is the furthest I've made it through a winter without getting sick in years ever since Adam started going to school.
and even like this winter like this has been such a ridiculously mild winter i really can't even complain about that really i do and i will but i like like i bought a new snowblower this past fall and of course then it hasn't snowed at all not once i bought it right before thanksgiving and it has snowed zero times since then and it's just sitting there in my garage brand new untouched never used never run
Although I got to say, I mean, again, I think I would buy a new snowblower every year if it made it not snow.
I've only ever bought two, and that happened both of the years now that that happened.
So I don't know.
There's some kind of correlation there.
Definitely.
Without question.
All right.
Last week, I think it was mostly me, I lamented the fact that it seemed to me to be a political problem that you couldn't do SwiftUI-style previews of UIKit controls.
SwiftUI is this new fancy declarative way of making user interfaces.
UIKit is the old and busted, except it actually isn't busted.
It actually works, but that's neither here nor there, way of doing things.
And I want to have that sweet, sweet live preview of UIKit stuff.
And a bunch of people wrote to point to a couple of different links, one of which is NSHipster, which I definitely have read in the past.
It's completely slipped my mind.
That will show you that, yes, it is possible to do this with a UIKit view, but
So I feel like this kind of implicitly corroborates my theory that it's all just political and little else.
But one way or another, we'll put a couple links in the show notes to indicate instructions on how to do this for yourself if you are so interested.
It's like I was saying last week that you can embed NS views in Swift UI things.
You can embed UI views.
That's kind of your escape hatch.
And so this is sort of the most simplified case where it's like, I just want to see.
I don't even want to use Swift UI.
I just want to see a Swift UI view.
So I will make a, or I want to see a UI view or an NSU.
So I will make a Swift UI wrapper.
And the only thing in it will be, okay, now show my NS view or UI view here, which is,
Not really using it for its intended purpose.
You still have to end up like passing your data down through the straw.
But I suppose you can hold on to a reference to the UI view and twiddle it elsewhere.
So I do wonder how it behaves in those situations.
But anyway, yeah, it's it's possible if you want to go that route, although.
To try to develop your app like this, you'd have all these weird sort of candy coatings of SwiftUI that don't do anything wrapping around all of your actual UI that does stuff that's written in a different API just so you can get the live previews.
Doesn't seem like a great strategy to me.
Well, maybe in the new version of Xcode.
You never know.
Moving on.
Folder aliases in the dock.
This is not a problem that I feel like I have in my world, so I pretty much ignored all of this.
But, John, I presume you have many, many, many thoughts about the many, many, many pieces of feedback we've gotten.
Last week, we were talking about the thing that happens when you click a folder in the dock.
Sometimes you get the big springy, bendy tower, and sometimes you get the big grid.
And I don't like either one of those things.
And Marco was saying how he uses them, can never find what he wants, and the big grid that comes up.
And then I shared the command option click shortcut, which just opens the folder.
And then I said, gee, wouldn't it be nice if you just clicked a regular click and it opened the folder, if that was one of the options, if you didn't like any of the two other options.
And I'd complained about that in the past.
I complained about it again on the show.
I said that should definitely be an option.
Lots of people wrote in with the suggestion that I should have brought up last week, which is if you make an alias to a folder and you put the folder alias in the doc, then when you click on the folder alias, the folder opens just like I want it.
But that's not exactly a solution because if you put a folder alias in the doc, it looks like a folder.
Aside from the little alias icon badge in the corner.
And when you click on it, it opens the finder window.
And when you drag something to that folder, it highlights like it's going to accept your drag.
And then when you let go, whatever you're dragging just springs right back.
And this is a longstanding complaint that I have.
So longstanding, in fact, that I went back and searched for it myself.
in my own past history that I apparently can't remember.
And in 2009, in my Mac OS X Snow Leopard review, I made this exact complaint for the exact same reasons, because I'm nothing if not predictable.
And in that complaint, in the review, I mentioned that I had filed a radar against this.
I didn't say when I filed the radar, but the radar was closed in March of 2008.
with the explanation not currently supported.
So not only have I wanted this for over a decade, but it's been more than a decade since my radar complaining about it was closed by Apple saying no, no.
And, you know, like I said in the last episode, I do command option click all the time just reflexively, but it still annoys me.
and the folder alias thing which i also talk about in this very same uh snow leopard review from 2009 that annoys me even more because the fact that you can make a an alias and stick it in the doc like that makes sense to me because it's just like any other thing that you can drag from the finder into that part you can put files there you can put folders there you should put aliases there right once you have a folder alias in the doc
Why can you not drag things into it?
Like what other sensible behavior is there for a docked folder alias?
If you have a docked folder alias and you drag something into it and it highlights, it's like, here I am dragging stuff into a folder.
What else should it do?
That is literally the only thing it should do.
And the fact that the bug was closed over a decade ago and in the time since no one has ever thought to either disallow aliases to be in the dock because maybe you're like, no, the dock isn't for aliases.
It's just for real things.
Fine, whatever.
But if you're going to allow them and you're going to allow aliases to folders, let us drag something into them.
Anyway, lots of people had other potential solutions to this.
One of them was to just write to the doc's P list directly.
You can just add an entry for a thing that actually is a folder.
But if you added it like so the doc thinks it's a file, it basically behaves like a folder alias.
And someone wrote an automator workflow.
that sits in your dock and looks kind of like a folder, but when you manipulate it, it's really running this automator workflow to do the things that it's supposed to do.
All this is just way too much work for something that Apple should just support, which is either A, just add a third option for folders in the dock that says, hey, when I click it, open it in a finder window, or B...
Let us do the thing with folder aliases, which works in all ways, except it doesn't work as a folder.
You can't drag stuff into it.
So, yeah, everything old is new again, and apparently this aspect of the doc has not been revisited in more than a decade.
Somebody, I didn't record who, but somebody refiled this as a new radar.
That's...
I'm going to read this number.
59289423.
That is the more recently filed radar on the fact that if you put a folder alias in the doc, it looks like a folder but doesn't behave like one.
We'll put a link in the show notes.
All right.
So you weren't here before the show and the listeners weren't here before the show, but I was lamenting to Marco that what kind of jerk releases an app 45 minutes before we record the show?
So I didn't even realize that you had released it when I sat down to scroll through the show notes right before we record it.
It's almost as bad as releasing an app live on the show.
I mean, who would ever do that?
So what's going on, John?
There's no surprise because you both knew about the app and I've been talking about it on the show or whatever.
I know, I know.
And it was a little bit of an app review excitement about this, but I'll briefly describe what the app is and then we can move on to other things because I don't want to spend too long on this and have this be like the show where we all release apps.
Next show, it's your turn, Marco, so get an app ready.
Aggressive timeline.
Right.
But but later, after we maybe in an after show or maybe we get through some topics, I would do want to talk about some war stories from the development of this app.
But anyway, for now, my new app is called Switch Glass.
No, it's not a great name.
It's switch and then the word glass and it's all stuck together.
It is another replacement for a drag thing functionality that I miss.
The window layering thing was front and center.
This is the application switcher palette that I like to have.
It's just literally a thing on your screen that shows an icon for every running application, and you click on the icon to switch to the app, which sounds to most people like the most ridiculous thing ever.
So...
Anyway, it's a very simple application.
Most people do not want or need this.
It has an even narrower potential customer base than front and center, which itself was very weird.
But I wanted this app because I used the application switcher that was built into DragThing for years and years and years, and DragThing is gone.
And I just wanted this back, so I wrote it.
It is not the simplest possible Mac app that was front and center because it literally had no UI that you interacted with.
This actually has a little bit of UI, but is like the second most simple app that you can ever imagine.
But I made it the way I like it.
I included way too many options just because that's something that amused me to do.
I do not recommend this when you're making an app.
Don't make a million options.
It's too many options.
No one needs that many.
but i enjoyed that part of it and so that's what i did uh we'll put a link in the show notes to my post about it or the product page and the giant fact where you can read uh answers to all of your questions like why would anyone want this application and what does it even do and why does it only run in catalina the answer to that is it's swift ui and swift ui is only on catalina and the answers to a bunch of other questions like uh
all the sad limitations of sandbox and they let me not implement all the features that i want that's life anyway it's five bucks i'm starting at the deterrent pricing level because look no one's gonna buy this thing anyway honestly i when you have to explain why would anyone want this you know you don't have a big seller on your i just wanted this to exist and if there's someone else out there who want who also wants something like this then here you go uh this is my little app switcher i like it i'm happy it's here
So I'm not trying to snark.
I'm trying to understand.
So you have a dock somewhere on your screen that is showing all of your running applications.
And then you have Switch Glass also on your screen, also showing running applications.
You should read the fact, Casey.
Well, I haven't had a chance.
I didn't even know this was a thing.
Yeah, I do.
I do.
Yes.
Part of this is kind of habit from the old days, but it's like it's a habit that went away with Mac OS X, but then came back as I started to use drag thing to replace it.
So.
classic mac os towards the end of its life had an application switcher palette that just showed little icons for every running application that you could just drag it was just like a draggable window and you could just drag it around on the screen and usually i had it as a vertical list in the upper right hand corner remember classic mac os did not have a dock
it had an application switcher menu like the upper right hand corner of the screen had a menu like a pull down menu from the menu bar that would show all your running apps but you'd have to pull that down and then they added like a little floating palette right and i used to use that and in the absence of a doc and if you're not doing command tab i don't even remember if command tab was implemented at the time that thing came out um you click on the app you switch to it it's convenient and you know it's just kind of get used to it mac os 10 obviously has a doc the doc does the same exact thing but as i complained about in my early mac os 10 reviews
the doc does tons of other stuff too right so the trash is there you can put folders there even though they behave weirdly you can put files there also applications that are not running are in the doc and they're mixed in with the applications that are running uh back in the day used to be able to pin the doc to to the corners right so you can make the doc be centered on the bottom or you can make it be pinned to the left side or pinned to the right side and same thing for you know
When you had the dock on the left edge of the screen to the right edge of the screen, you could pin it to the top or the bottom.
They took away that pinning feature, which was always a sort of undocumented P-list hack.
They took that away years and years ago, and that annoyed me.
And, you know, I just started running the drag thing application switchers.
One of the features of drag thing is you can make palettes and put them anywhere on your screen, but you could also make a palette that just always showed you're running applications.
So I did.
And I put it pinned to the upper right corner of my screen, and I've just been using it for years.
You say, why do you need two places to click on your screen to switch applications?
You know about me and mousing, right?
It's not like I don't use Command-Tab.
I do.
I use Command-Tab.
I also obviously click on Windows to switch them around.
That's the whole deal with front and center, right?
One of the things I also do is click with my mouse.
And very often, either my muscle memory or my cursor just finds itself there, the upper right corner is a convenient place for me to go to click on an app to switch to it.
I also click on apps to switch to them in the dock.
How do I decide when to do which?
I don't know.
I just, I don't think about it.
I just find myself doing it.
But when I didn't have that palette there in the upper right, I missed it and I found my cursor going to that side and looking for the thing that wasn't there anymore.
So, you know, it's just a thing that I enjoy.
You can also make it smaller than the dock.
Or, you know, I guess you can probably make it the same size.
You can make it very, very tiny.
You can adjust the spacing between the icons.
There's never anything else there.
You can keep your dock hidden, right?
So...
doc isn't visible at all and you just use this as a switcher i don't know like i'd honestly i don't have much of a pitch for this application other than to say i wanted it to be exist and i made it for myself and i tried to do a good job on the app to make it so that it's useful for other people too but if you don't if you don't want this thing you don't want this thing so it's kind of like a front and center at least front and center like even if you don't want it adds an ability that you didn't have before like you can you know shift click to bring
uh the whole app forward if you run in modern mode or whatever that was an ability you didn't have before this doesn't really give you any abilities you didn't have before it just gives you a different way to do things you could already do that's it
i mean this looks very pretty and very well done i i am i am confused how you have found yourself in a position that you feel like this is a part of your computing world but you know what john you do you and i'm excited that this is here yeah i mean it's just i'm just as surprised as you were when drag thing went away i'm like oh well i'll just you know those habits i won't need those but i i knew probably i knew i would need the window layering because i'd use many things to do it but i didn't think i would really need the application switcher but i've
Ran without it for a while, and I said, you know what?
I missed the stupid application switcher power.
And like I said, and I just posted on my website a short little thing about it.
I'm not the only one.
So the author of Keyboard Maestro, you know, the Mac automation utility...
like when i was working on front and center i noticed that keyboard maestro had added an application switcher palette like to keyboard maestro like it was a new feature of the application just like in one of the menus lurking in the keyboard maestro menu there's an option that said show application switcher or whatever like what and i showed it and it looks basically exactly like front like a switch glass looks like i i looked at that i was like wow someone had an application palette i don't have to i can use this to replace drag thing because i already own keyboard maestro and i run it right um
but then i had feature requests so i wrote the author i'm like oh could you change this about the application switcher could you change that uh and he was like not really this is not really what my application does like keyboard maestro does his own thing i just added this for the hell of it uh and so that's when i decided rather than pestering this poor person who just added this feature uh to his much bigger complicated uh sophisticated application i should just make it myself how hard could it be an excuse to use swift ui or whatever um
but yeah the whole i don't know uh why it was added to keyboard maestro but obviously someone wanted this thing besides me so there are at least two people two people in the world who uh wanted to have an application switcher enough to code it up
Well, good for you.
Yeah, I agree.
And it is annoying to me how good this looks.
Now, are you pulling and I think I already know the answer to this because I'm pretty sure I saw some discussion about it.
You are pulling the actual desktop background in the position preference.
Is that correct?
Yeah.
We're going to save that for the war stories section.
I don't want to go into depth.
I think we've more or less covered it.
Oh, and yeah, read the blog post for more information.
Read the fact for more information.
I think I covered most of the questions people are going to ask, but yeah, we'll get to war stories later.
There are plenty, but I don't want to bog down the whole beginning of the show with this.
Anyway, switch glasses, five bucks, go pay for it and never use it again.
That's ideal.
Yeah.
Yeah, definitely never sent any support email.
Exactly.
That's pretty cool.
I mean, it's funny to, you know, for somebody who is such a, you know, Mac person and a programmer, it is kind of funny that you have, you know, up until a few weeks ago, never released a Mac app and all of a sudden you've released two.
Yeah.
That's pretty cool.
I feel like the world needs more public John Syracuse of work that's not just CPAN modules.
Agreed.
I mean, no one needs my programming like this.
It's all silly.
But part of it is the Mac App Store, honestly.
Because I would not have gone through the hassle of...
making a website to even just distribute the software and update it and just deal with all that hassle if i couldn't make like a couple bucks here and there right so but the mac app store makes it easy enough that i can put in like i don't have to run a store or do credit card processing because i'm not going to make enough money like i even thought about that for this app because this would be so much easier if it wasn't sandboxed i could do more stuff i'm like this app is never going to make enough money to justify me making my own like
website and payment processing like it's not you know i do want to distribute it i want it to be out there for people to use say here's this thing but there's no way i would have ever done it if you know the mac apps didn't exist now is it worth the 30 cut apple's taking not for an application that would actually make any money but for my applications that are just making me hopefully making me enough money to buy that stupid 400 bracket for the inside of my mac pro uh
This all goes to the Pegasus J2i fund.
That's so sad.
For that amount of effort, I don't understand why it's $400.
An 8-terabyte hard drive is like $130 retail.
Because they're only going to make like 100 of these.
i know but it's a bent piece of aluminum painted black i just i don't understand it yes but it's a custom bent piece of aluminum painted black and apple's probably taking 50 of that price for their retail margin i think it's just pegasus i don't think there's any profit sharing with apple it's just a pegasus but is it sold in the apple retail store
yes then apple then pegas is making probably 200 bucks of that i don't know but i don't know what that deal is i think apple has this big disclaimer about how these aren't their products i don't know if there's any profit sharing anyway but there if apple's the retailer like they take a large like retailers take a large slice of the retail price of items usually it's at least a third and often half i mean apple is apple fulfilling it i think isn't it sold like in the apple store
yeah i don't know i don't know so like a third-party seller on amazon i don't know it's anyway no no it's it's i'm sure i guarantee you it's like a standard retail arrangement like i'm sure apple's taking probably almost half the cut and you know as as their retail markup and so they probably have it's probably a 200 bracket not a 400 bracket that has to include the price of the hard drive which is probably at wholesale i don't know maybe 80 or 100 bucks i don't know how much any terabyte drives cost these days
So you figure it's more like a $100 bracket for something that is machined to precise tolerances and is probably going to sell in pretty low volumes.
That isn't that ridiculous, honestly.
Well, anyway, I'm glad that the Mac App Store exists because it's part of what made me actually go through the formal.
I probably would have written these anyway just for myself, but I would not have spent nearly as much time polishing them to get them to the point where...
i'm not 100 embarrassed to put them out into the world and that takes all the time it's really easy to get this working enough for me to use it much harder to productize it and that was part of the fun like i said i talked about the front center i wanted to have that experience of like go through app review deal with xcode you know get a thing on the store like just all all those different things of course now that i've done it front and center you know it's getting kind of old but like yeah i've i've
I've had the experience.
I'm enjoying the programming experience, as we'll talk about in War Stories later.
But I'm just glad these apps exist because I'm running them both all the time.
Well, I am happy for you that you've put a new baby into the world.
Yeah, me too.
It's pretty cool.
Yeah, we're going to take a break for a while.
Yeah, like I said, next week it's Marco's turn.
So you and I, Casey, we're going to take a break.
I'm just going to kick back, pour myself a beverage, and watch Marco.
Marco already did this.
He made Quitter, which was exactly the same thing.
It's something that he wanted on the Mac, and he made it, although he didn't even bother with the Mac App Store.
Do you still use it?
Usually not.
I have kind of like trained myself to not use social media stuff too aggressively on my Mac enough that I usually don't run it and I forget about it.
But I do use Forecast a lot.
I use Forecast because of the MP3 encoder.
That's my Mac app that I use all the time.
But you haven't ever taken on that I'm going to do the final 90% to polish it to a commercial product.
You're still just writing it for yourself and using it and distributing it to friends, right?
Correct.
I mean, well, yeah, because like...
to actually make enough money on it because it's such i mean talk about you know talking about like super specialized products with very small audiences like yeah forecast is probably one of those although honestly it's a bigger market than switch glass i'll tell you that it does it i mean yeah there are more people who make podcasts than want a second thing on their screen showing running apps but how many people are encoding chapterized podcasts and would know about this it's it's not a big you know it's probably a hundred people or less
everyone you could sell to you already gave the app to that's your problem that's the thing it's like for you know when i have an app that's like forecast where it's like what would be a good price for forecast it's actually it actually has a lot of utility so i think five bucks would actually be too cheap you know i think if i was going to charge money for it it would probably be i don't know 20 30 something like that 99 it's a pro app yeah i was gonna say 100 bucks just make it just make the window black
Maybe, but if I'm going to charge that much money for it, I have to then also offer a level of support that would be commensurate with that level of money.
And then that would be so much hassle and so much time for me that it wouldn't be worth having those sales in the first place because there would be so few of them.
Yeah, because you're not going to use it.
You're not visualizing it as an income stream.
You'd be like, oh, I tried to use this chapterized thing on this MP3.
Can you look at this file for me?
And it's like, what am I doing?
Am I debugging your weird MP3 file for the 20 bucks you gave me three years ago on an app that no longer makes any money?
Yeah.
Exactly.
That's why if I make the decision that an app is probably never going to bring in enough money to notice, then I'd rather just have it be free than have it be cheap because I don't want to deal with the support entitlement that people sometimes rightfully feel about the amount of money they spend on your app.
Yeah, and if you make it five bucks, you could, you know, fund your next Mac Pro hard drive bracket or something.
But then after that, you know, put it to bed.
I mean, you should see some of the emails I get for people who have paid the Overcast $10 a year subscription.
Like, that's... Some people get really upset about things like that.
But even though... And what crushes me so much...
is when people say hey i downloaded your app and it doesn't have you know some feature like video it doesn't have video podcast playback so i bought the subscription to see if it had it then and it still doesn't have a refund it's like oh i never said that would add it and i can't issue refunds because app store oh like it's just so people do not like hearing that i can tell you they do not like hearing that you can't issue refunds because nobody believes you
All I do is I send people a link.
There's an iMore article.
If you just search Google for App Store refunds, like every other Google search, there's an iMore article in one of the first three results.
And it's like, how to get refunds from the App Store.
I just send people that link.
I'm like, I'm sorry, I can't do it here.
I send them the official Apple page.
I'm afraid if I send them to a third-party site, they're going to be like, this isn't true.
This isn't even Apple's site.
Just give me my refund.
I think it's more likely that the iMore page will remain there and remain current than some random Apple support document about App Store refunds.
Yeah.
I'd click through the Apple instructions to see that it looks like it works.
And I think it does.
People are getting refunds, so they can figure it out.
I said it in Slack before we started the show that, like...
applications that are hard to explain and easy to misunderstand is my new niche on the mac because like front and center you can't even explain what the hell it does then people get it and they think it does whatever they had in their head and it doesn't do that and then they're angry about it and then this thing it's like you look at the screenshot and you think you know what it does you think it's basically a drag thing where you can make a configurable set of palettes everywhere like that's not how this works and people don't read and they just buy it and then they're angry so
That is the thing I've carved out for myself, weird little apps that satisfy my own needs that other people do not understand.
And one thing I love about your apps, first of all, these kind of little utilities, they exist, but they usually are not nicely done.
And you are actually caring about things like the GUI spacing of the preferences dialogue.
It's like, how many people who launch one of your apps, even people who would use it every day, how many of those people are going to see that preferences screen A, at all, or B, more than once?
And yet you're putting in all this effort into like getting all the space.
It's like the only window in my app, you know, I know I get it.
But like, you know, like, you know, like if I tweak the interface for forecast, which I should probably do because I don't know what I'm doing.
But, you know, the UI of the app is the app.
Like it's you're constantly using the UI.
Like I feel like that's like a high risk, a high reward thing to do.
Whereas what you're doing is putting tons and tons of time into perfect into perfecting
a screen of the app that most of the users will never see or will see once.
And that's kind of cool.
And then the second thing I like about what you're doing is that you are making apps that adjust Mac behavior in a way that A, provides utility to people, but B, that in our new world of, quote, the future of computing called iOS, these wouldn't even be possible.
Neither would quitter.
Neither would things like clipboard managers, which I love so much.
Like this is the kind of utility that makes the Mac so great.
It's like you can actually customize it.
Like, first of all, you can have apps that interact with other apps in non-trivial ways and in ways that weren't like pre-programmed by the target apps.
You can have apps that add things to effectively the system shell.
You can have something that's always displayed or that's displayed permanently in the background or whatever.
You can do things that can interact with the desktop.
This is all stuff that you can't do on iOS at all.
Nobody can make utilities like this for iOS except Apple, and they won't.
Like, third parties can't do this.
And so that's... I think it's cool from the point of view of, like, A, kind of reinforcing the Mac as, like, hey, this platform's not dead or not, like, a relic of the past.
This is actually a current thing that people use and love.
And B...
kind of just taking advantage of the power that we have in this platform of like, look, you know, I know it's, I know a lot of people love iOS and that's great.
And there's some advantages certainly, but the Mac is really cool for lots of things and lots of reasons that iOS will probably never be able to offer.
And the ability for utilities like this to exist on the Mac and to be as good as they are will never happen on iOS.
And that's pretty cool.
Yeah, I mean, it's it's kind of weird because the Mac is getting harder to do stuff like this on and iOS is arguably getting slowly easier for things like third party keyboards or, you know, the share extensions and stuff.
Right.
So they're moving towards each other, but they're still very far away.
And this is I've always liked this type of little utility thing for the Mac, like things like you said, things that change how you use the Mac.
Lots of people ask me with front and center everything, aren't you afraid you're going to get Sherlock that Apple will implement this functionality?
I'm begging Apple to implement this functionality.
Sherlock all of my apps.
Make it so I do not have to continually keep these things running as you change the operating system and deprecate the APIs I'm using or whatever.
Please take front and center's functionality, build it into the OS.
Let me pin the dock to the ends.
Add a dedicated application switcher like it used to be in class.
I welcome that with open arms.
Anytime you do any kind of system extension, that's a possibility, right?
If you're trying to make your living off of it, you don't want Apple to Sherlock you.
But if, like me, the only reason you're making these things is because you have no choice, then I'm totally happy for them to be integrated.
And even if you're trying to make your living off of something like that, be aware.
If you make something that extends the system and it actually is popular, this is awesome.
I'm making tons of money.
I made this cool thing.
To give one example, which I don't think Apple will make, you mentioned clipboard history.
I think clipboard history has broad appeal if implemented well.
There are lots of third-party applications that implement it.
I can't live without it.
Apple could build that into the system.
I still think I wouldn't like their implementation as much as the third-party ones, but it would be cool to just know that every Mac out there has clipboard history in some fashion.
You know what I mean?
Oh, yeah.
And so if you're making a really good clipboard history manager, like I use PaySpot, I think it's really good.
you have to be aware it could be that despite you making this happen and maybe making lots of money off of it at any point apple could decide this year we're going to add that to the os and that's just the price of doing business when you're extending the system and it's true of applications too you know if you make uh i don't know a thing that lets you read articles later apple could add that feature to uh its applications and you know could and did what can you do uh you could keep going because nobody uses it yeah
yeah that's the other thing just because they added it to the operating system doesn't mean people still won't want your fancier much more configurable version but you never know well congrats john i hope you uh earn enough money for a wheel for your no i can't afford a wheel i just want i just want a bracket that holds hard drives not even one wheel you can't do one wheel
If they sold the wheels individually, that'd be nice.
You could go on like a payment plan.
I mean, you'd be a little lopsided for a while.
Every six months you get one wheel for a hundred bucks.
Oh my goodness.
We are sponsored this week by Bombas.
Working out is hard.
It's always been hard.
Even when it's easy, it's still pretty hard.
Bombas socks can't change that, but they could make it more comfortable.
If this year your theme or your resolution is to get fit, start by getting socks that can keep up every step of the way.
You do a lot of things to stay active.
Lots of different things.
So Bombas made lots of different performance socks designed from everything from running to hiking to cycling and more.
If you're very into sports, or if you're planning to get very into sports, Bombas can help there with performance socks and styles made specifically for basketball, tennis, running, golf, and more there too.
These are made with a lightweight polycotton blend, which means no matter how hard you're working, your feet will stay cool, dry, and comfortable, never sweaty.
And Bombas socks are just really good socks.
They provide support in places you didn't even know you needed, like your arches.
Each sock is built with a special arc support system that's supportive, but not too tight.
Kind of like a nice hug, but on your foot, like a foot hug.
And constantly pausing your treadmill to adjust twisted, bunched-up socks is enough to make anyone ready to quit.
That's why Bombas are designed with left-right contouring and a Y-stitched heel, so they stay perfectly in place.
And you ever notice that annoying toe seam most socks have along the toe, that little ridge on top?
Bombas got rid of it.
They designed it out.
It's gone.
Just smooth sailing all the way across the top of your foot.
I got to say, I use Bombas socks myself a lot of the time.
And I recently, you know, I got for Christmas, I got a couple of their Merino socks that
These are my favorite socks.
I like them so much.
I actually just earlier today ordered more because I keep going through them like first thing in every laundry cycle and then I run out.
I got to wait till the next laundry cycle to get more, get my Bombas back.
So I had to order more to get more Bombas because they're so good.
So also, did you know that socks are the number one most requested item in homeless shelters?
Bombas socks were created to change that.
For every pair you buy, Bombas donates a pair to someone in need.
So go to bombas.com slash ATP today and get 20% off your first purchase.
That's B-O-M-B-A-S dot com bombas.com slash ATP for 20% off bombas.com slash ATP.
Thank you so much to Bombas for hugging my feet and sponsoring our show.
Alright, so the Oscars were a couple of days ago, and I would just like to let you gentlemen know that Apple's laptop keyboards did not actually win an Oscar.
They kind of anti-won an Oscar.
So I actually, I saw that this was a thing, but I never got a chance to watch the video.
So would one of you like to explain to me what happened here?
Yeah, this is Taika Waititi.
What did he do?
He was directing Jojo Rabbit this year, which was nominated.
He's done a bunch of things and been in a bunch of things.
And he was in that thing where you stand in front of the weird background, like the big backdrop and the press asks you questions.
I believe it's called a step and repeat.
How do you know this?
That's the picture taking thing.
Like at a red carpet, there was like a big banner.
Oh, I didn't even know that.
Yeah, like the big banners and you stand in front of them, you get your picture taken, you keep walking.
Oh, yeah, I know what you're talking about.
I just didn't know that's what it was called.
Those are called step and repeats.
Anyway, he's standing in front of us and he's taking questions.
Someone asked him like – I don't remember the question.
It's like, with the writer's strike, writer's guild, something or other, how do you feel about what should writers do or what would you like to see happen?
It was some question that really wasn't leading in this direction at all.
It was a Hollywood question about the entertainment industry and being a writer or whatever.
And his answer was a whole big spiel about how Apple needs to fix its keyboards.
Like that would help writers because writers are out there in Hollywood and they're typing away on their Apple laptops because it's Hollywood and they all love Macs.
But those keyboards are terrible.
And here's the quote that keeps getting passed around, the money quote.
What are some of the needs that you believe that writers should be asking for in the next round of talks with producers?
Apple needs to fix those keyboards.
Though they are impossible to write on,
They've gotten worse.
It makes me want to go back to PCs.
Because PC keyboard, the bounce back for your fingers is way better.
Hands up who still uses a PC.
You know what I'm talking about.
There's a way better keyboard.
And those Apple keyboards are horrendous.
Especially as the laptops get newer and newer.
Here's the latest one, the latest new iMac.
The keyboards are worse.
And I've got some shoulder problems.
I've got like a sort of oose, I don't know if you call it over here, like this sort of thing here, which is that tendon that goes from like the forearm down into the thumb.
You know what I'm talking about, you guys who are writing.
And what happens is you open the laptop and you're like this.
So we've just got to fix those keyboards.
WGA needs to step in and actually do something.
This went all around the web because the Oscars are a mass market thing.
Apple's keyboards, despite all us complaining about them and all the stories in tech world, generally don't break out into the same world as Hollywood entertainment.
But here it is, the crossover event of the century.
A famous Hollywood person hates Apple keyboards.
Now, a couple of things are interesting to note about this.
One, when he's describing it,
He, you know, he's just, you know, speaking off the cuff and he mentions like on Apple's new iMacs.
And so you might start listening and say, is he actually complaining about the laptop keyboards or because he said iMac.
But really, as he goes on, it becomes clear as he explicitly mentions keyboards later or laptops later.
The massive brand footprint that the iMac name has still in people's mind from that teal plastic computer all those years ago is such that when a brain just reaches for, what was the name of that Apple product?
Sometimes the thing that pops out is iMac, especially when you're thinking of a Mac.
So I thought that was fascinating.
But no, he is actually talking about the laptop keyboards.
But the second thing is, because he's not a super-duper tech nerd, he's not specifying, oh, I don't like the butterfly keys.
He doesn't know what butterfly keys are.
We also don't know, does he hate the new 16-inch MacBook Pro with the good fixed keyboard?
I don't know.
He might hate that one, too.
Like, there wasn't enough information for tech nerds to latch onto.
But, you know, all this... The summary here is...
that these keyboards even if apple fixes them all to everyone's satisfaction tomorrow which they still haven't done because they're selling the butterfly keyboards on all their laptops except for the one that marco bought uh for years apple will continue to have this reputation of keyboards that people don't like and if it is actually the case that people still don't like the keyboard on the 16 inch macbook pro apple still has more work to do again i don't know this is just one person's complaint i suspect what they're actually complaining about is the butterfly keyboard whether they know it or not
and i suspect they don't know or care that there's a new laptop that has a different keyboard and i suspect further that if you showed them the new keyboard they might say they like it better but it'd still be grumpy about it because in their minds apple and keyboards like i said they've gotten worse you know it makes me want to go back to pcs
because the keyboard is not satisfying to him so much so that when you know at the oscars in front of a bunch of press ask questions that have nothing to do with tech they weren't asked like what kind of tools would help you you know or maybe it was like what would help the writers guild or whatever but it wasn't about a tech it wasn't a technology question and this is what he came up with so this is not good for apple uh and this just goes to show the the lasting legacy of the butterfly keyboard
Even though Apple thinks maybe that they have solved this problem with the combination – I mean the official party line, like what they have actually said from PR slash marketing, like what they've actually said is A, like the 16-inch has this wonderful new magic keyboard, blah, blah, blah, and that B, that the new materials revision of the butterfly keyboard is doing great.
And so it kind of sounds – the public statement seems to currently be this problem is behind us.
Now whether they believe that internally, we don't know.
A, they very much haven't solved it.
Like most people who are using their laptop for like non-super high-end stuff, like if he's talking about it in the context of using it as a writer –
You think he has a 15 inch?
Maybe.
I think it's very clear that Apple sells a heck of a lot more 13 inches in Airs.
So if this is a market that largely uses those, they might not even realize that there is a model with a better keyboard because they aren't shopping for a laptop that big.
They don't want one that big.
And so not only is this problem not solved in any of the smaller ones from the, like, you know, butterfly reliability perspective, but this shows that also he wasn't talking about reliability.
He just hates the low travel.
So it isn't enough that they simply might have fixed the reliability or at least improved the reliability with the new materials revision last year.
Like...
They have to get rid of this keyboard altogether because even if it works perfectly, a lot of people still hate it, which I'm one of those people, so I totally get that.
So that's one problem.
The other problem is what if they had actually replaced every single keyboard in the lineup, which I think this makes clear they have to do that.
They still are going to have years of reputation damage from people who either don't know that they have been fixed or are still using an old one that hasn't yet had the new keyboard put into it.
Or still remember being burned by having owned one of those.
That's going to take years before it's mostly behind them.
And it just goes to show how immense the damage has been done to their reputation and to their brand image and to their customers' image of, like, do I want to even buy Apple products anymore?
The immense amount of damage that they did.
I honestly think this has been the biggest screw-up in the last at least decade for the Mac and possibly for Apple, period.
It's such a huge deal.
And when we were all saying, you know, hey, this is kind of a problem.
We were saying that for years.
A lot of people were telling us, why don't you just forget about it?
Why don't you just move on?
Why don't you just stop harping on it?
It's not that big of a deal.
I like my butterfly keyboard.
No, this was a really big deal.
It still is a really big deal, and it's going to continue to be a really big deal for years after they completely removed it from their lineup, which they now definitely have to do and still haven't.
Yeah, this is a tough thing for Apple, too, because this is the type of press that Apple hates, which is basically...
not particularly informed and in some ways unfair criticism from someone very famous right so like he went he went into a thing of like talking about his r is it unfair i don't know i don't think he was talking he was talking about his rsi and everything and for all the faults you could have with low travel keyboards i have never seen anyone even you know
Yeah.
you're going to map all sorts of bad feelings onto that.
So you're going to say, yeah, my shoulder's been bothering me and I bet it's because of these new keyboards, which it's not.
It's not because of the new keyboards, but you still don't like the new keyboards.
And that's like the worst case scenario for like public relations where someone with a big microphone, like someone in front of a million cameras at the Oscars, right, is asked an unrelated question and of their own accord, pulls out, let me complain about an Apple product.
Like I can just imagine there's people going, oh no.
Yeah.
This is the worst.
It's not a good day for Apple.
And you have to just deal with that.
People are not going to try to be fair and even-minded with their criticism.
And if they just feel like saying, I think this thing caused my RSI, they're going to say that.
And that's going to become the story.
Famous person says Apple products have bad keyboards.
And even if it was 100% false, which it's not, some people don't like keyboards.
Even if there was nothing to this story, it would still have traction.
So I feel for Apple PR, this is, I think, the first time that the keyboard problem has had something like this happen, where...
It's a magnified example of extremely, you know, like worst case scenario, potentially unfair criticism.
Everything else has been like, we're a bunch of tech nerds and we love Apple, but we're disappointed by this thing and trying to be reasonably fair and measured about it.
But yeah.
a hollywood director doesn't care about being fair and measured about technology product opinions he's just gonna say i don't like these darn keyboards right and that's that's what happened so i kind of feel for apple but uh other people may be you know having the opposite feeling of just glee that that apple is getting slammed with us i don't have any glee about it um
i i mean i do find myself wondering uh you know taika give us a call uh do you you know do you like the new keyboard do you like is the 16 inch better right because if it's not then that's even a worse scenario where it's like i don't know i mean it's just one person like you know some people will just never like keyboards that aren't the ibm model m or whatever right everyone has their own personal opinions and it's a shame
when that person is very famous and says, I'm never going to use anything except for a buckling spring keyboard, and Apple doesn't offer those on its laptops, therefore I had Apple laptops.
That's another example of unfair bad PR from a single person, but that's the world we live in, right?
But I do wonder, like you were saying, Marco, you know, if...
If everything had the new keyboard, is the problem solved?
Marco likes the new keyboard.
And this wasn't even about reliability.
This was just about feel.
But how does the rest of the world feel about the new keyboard?
When it eventually replaces the old ones, will people buy a new Apple laptop and say...
It's better than the old keyboard, but they used to make them even better.
Even if that's not true, they might say that to themselves for the rest of their lives.
Again, unfair.
In reality, maybe this keyboard is better, but they have this rose-colored glasses memory of Marco's best laptop ever.
Whatever they're remembering about how the keyboards used to be.
Even if Apple makes a keyboard that's better than that in the future, they'll always be like, yeah, they used to be better.
That's just human nature, and you can't fight them.
That's the danger of having a misstep like this.
You're like, well, we corrected it, and we made a new keyboard, and it's better.
In blind tests, everyone likes it better than the old one.
It's reputation, and people are stubborn about reputation.
Just think of all the people you've heard in your life who have told you how much they hate insert company X.
you know weber grills delta airlines you know whatever some company that did some bad thing or had some bad product three decades ago and forever this person every time they come up just complains about it and says their new products are no good whether or not that that's true that's the danger of taking a misstep the reputational damage can live as long as the people it lives inside which is not fair to the company especially if they fix things or
you know, used to make crap products.
It was true of Japanese cars.
I don't know if either one of you have talked to your grandparents about the reputation products from Japan used to have, like after World War II, right?
Japan makes crap.
And they're like, I'm never buying a Japanese car.
They make garbage.
And some of these people for their whole lives just always thought Japanese cars were garbage.
Whereas if you, you know, if you were in a later generation, you think Japanese cars, reliability, they're well made, they're reliable.
And that's the reputation Japanese cars have.
And even if Japan's quality goes downhill, maybe we'll have that reputation in our mind.
It's very difficult to dislodge these things.
Sometimes the only way they ever go away is that generation of people dying and the new generation of people thinking, oh, Japanese cars, that's synonymous with reliability because they make good cars.
Yeah, I think the way that you minimize the risk of this happening to you as a company, you know, A, obviously, try not to ship flaws, right?
But nobody can do that every time.
Nobody's perfect every time.
So I think, you know, B, if you ship a flaw, try to recognize it and rectify it as quickly as you can so that the number of people who have negative experiences with your product is as small as it can be.
And here, Apple seemed to do the opposite of that.
They seemed to not only not recognize it, because this was a problem since the 12-inch MacBook in 2015.
They had plenty of time, and then they moved to the whole pipeline with this keyboard in late 2016, and it took them three more years before they released a single model that didn't have it.
And now we are, you know...
three and a half years into that timeline now, and they're still selling this keyboard brand new in their probably highest volume laptops.
They kind of did the worst possible thing here.
Like, you know, not only did they ship a mistake, okay, everyone ships mistakes sometimes.
But they have taken an eternity to fix it, and they have made the mistake affect the broadest possible swath of their customer base.
It isn't that they continue just shipping one model with this.
If it was only ever a 12-inch MacBook, it would maybe get a reputation for, okay, this keyboard kind of sucks in this tiny little laptop, but, oh, well, we'll buy a bigger laptop.
We can avoid that keyboard.
But they didn't do that.
They put it in all of them.
So everyone who buys Mac laptops, which is most people who buy Macs, was forced to have this keyboard for this entire time span.
So this was a significant problem.
And this affected a large portion of their customer base globally.
for a very long time.
The damage from that is way bigger than if the new Mac Pro had a problem.
Sorry, John.
If the new Mac Pro had a problem, then that would affect a very small customer base, and probably for not that long of a time.
Whereas if the laptops have a problem that affects lots of people, and this problem has lingered for years.
I'm happy to try to place blame on them for shipping this keyboard in the first place,
But just as critical of an error was letting it sit for so long without replacing it.
The interesting thing is you can actually be cranky and immature and bitter about it and still –
save yourself so i was thinking when you're talking about that i was thinking about other examples of where apple has screwed up um antenna gate uh they made a phone that had uh you know the story was you wrapped your hand around it the signal couldn't get out which was true and you could demonstrate it and apple was cranky about it particularly steve jobs saying but you could do that to blackberry phones too and and you know it's not fair and blah blah blah and
they had that press conference like fine you want a bumper we'll give everyone free bumpers like he was just so you know immature and and not not uh magnanimous about it at all and it was just mad that he even had to have this press conference and give people free bumpers or whatever uh but two things
were different about that thing or first of all they did it fairly quickly the antenna gate story came out and they didn't you know insist that there was nothing wrong for three years like they fairly quickly had an actual press conference about it and tried to fix it and the next thing they did was you can be damn sure the phones after that didn't have that exact same problem they changed the designs of their phone to be better in that regard
Whether or not they thought it was fair or thought that the previous phone actually was no worse than any other phone or whatever, it was kind of like bending it, too.
Same deal.
Learn from it quickly, and then the very next phone, make it less bendy.
And from that point on, have this be one of your criteria, right?
I mean, like, it wasn't addressed as like, well, they did such a good job, and they just had perfect PR.
Like, Steve Jobs was cranky about it, right?
He was the face of the company, and he seemed...
Like indignant that you could be complaining about this, which is not even really a problem.
But his attitude did not dictate that the company, you know what, this isn't a problem.
We're not going to do anything about it.
No, they still had a press conference.
They still gave people free bumpers, right?
And that's the bar.
You don't have to be perfect.
You don't have to be like, I'm a saint and if I ever do anything wrong, I will be immediately contrite and I will offer a sincere apology and I will right all the wrongs.
You don't have to be that good.
But time to action is key.
Take reasonably appropriate action, learn from your mistakes, and do it quickly.
And you can even be cranky.
And now how many people think iPhones have a reputation that if you hold them in your hand, they don't get a signal?
You never hear that.
Like even from people who remember AntennaGate, that is not a slam on iPhones.
You say, iPhones, aren't those the phones that don't get a good signal when you hold them in your hand?
Nobody says that.
But that was a big story at the time, and they didn't gracefully nip it in the bud, but they did act quickly and fairly decisively and did not continue to ship iPhones with the exact same performance characteristics for years and years.
And so, you know, I think...
obviously that was a different apple and at a different time and a different scope and the iphone wasn't as big at that time and there you know there's many things about the current situation that are different but i think apple itself has shown good examples of quickly learning from and recovering from its mistakes in an imperfect way such that you avoid this sort of long-term unfair put scare quotes around that if you want reputational damage
I just don't get it.
I don't understand why they would double and then triple and then quadruple down on it.
And as you both were saying, I don't understand why we don't have this across the line, across the entire laptop line.
And the answer is because it's a big ship that moves slowly, and I'm not appreciating how challenging it is to make these changes and have them move.
be global changes not not only in the figurative sense of global across their line their laptop line but global in the sense of literally these devices are shipped around the world but i mean they seem to be able to do it phones i mean not exactly the same thing but similar things like you were saying like we can make it work for phones we ship a hell of a lot more phones we do computers
Well, I think it's largely about attitude and about economics.
It probably took them a longer time than I bet we would have guessed to even decide, you know what, this was the wrong move.
Obviously, no one took the feedback in 2015 on the 12-inch.
No one cared.
Obviously, the high failure rate and low manufacturing yield of that initial 2015 keyboard, that information didn't really go anywhere either.
Obviously, there was an attitude that this is the way forward.
This is a great period.
By the way, that same attitude seems to apply to the touch bar still.
They still think the touch bar is a universal good.
Because if they didn't think the touch bar was a universal good, they would make it optional.
But they don't.
So clearly they think, why would anybody not like the touch bar?
And I think that's still the wrong move.
Regardless, something kept that attitude going of, this keyboard is great.
This is fine.
We have no problems with this.
Through all those revisions and revisions, because they didn't want to admit to themselves properly that they were wrong.
And then secondly...
there's a huge economic thing of like, you're going to have this manufacturing line running for X years.
It's going to cost you, you know, X dollars to retool and redesign and re-engineer a different keyboard into this, into this line.
And I have a feeling they just spreadsheet it.
And at some point somebody decided, Hey, you know what?
It would be too expensive to fix this faster.
And so we're going to fix it on our timeline.
And,
And in the meantime, oh well, we'll do a repair extension program and sweep it under the rug.
Problem is, that didn't work.
Transcription by CastingWords
They have 11 data centers worldwide now, and they're always adding more.
They recently added Sydney, Australia.
All of these data centers have enterprise-grade hardware.
They just launched an S3-compatible storage option recently, and it's all backed by their next-generation network.
Linode delivers the performance that you expect at a price that you honestly don't.
You can see for yourself today using code ATP2020 to get a $20 credit.
And that'll give you access to everything they have to offer.
You have native SSD storage in all their servers, this 40 gigabit network behind it all.
All these servers come with root access.
You can install whatever software you need.
You can configure everything with their API to automate things like expansion or contraction.
They have a CLI tool in Python.
I use it all the time.
And all this comes in starting at just $5 a month.
This is great for people who just want to get started, who you want to try things out.
And all their plans from, you know, I use mostly the bigger ones, but all their plans, in my opinion, are the best value in the business.
And I've been with them for almost a decade.
And the entire time, they've stayed the best value in the business.
Whenever new technology gets better or gets cheaper, they give you more for your money.
So it's super great to be a Linode customer.
I've been with them for all this time.
I run all of Overcast there.
I run marcos.org there.
I run the live streaming server for this podcast there.
Everything I run there, I'm very happy with.
See for yourself, linode.com slash ATP using promo code ATP2020 to get a $20 credit.
That could be four months free on a $5 a month plan.
So once again, linode.com slash ATP, promo code ATP2020.
Thank you so much to Linode for hosting all my stuff and sponsoring our show.
You posted some interesting things to Instagram today.
Oh, yeah.
Yeah, you're not going to get away with this.
We'll close out the crank chapter here.
This will be the last thing I'm cranky about tonight.
So I look at my Instagram stories at some point in the evening, and I see that you were lamenting the fact that you couldn't debug something in Xcode, if I'm not mistaken, in the beta specifically.
And then you were lamenting the fact that it required Catalina.
And the next thing I know, you're doing the thing that you swore that I was not allowed to do, dad.
And you're installing Catalina on a device.
I'm presuming it's your iMac Pro.
Did you buy your Mac Pro before or after this travesty happened?
I haven't had time yet.
Are you going to?
I don't know.
My fan noise is back.
I still got to figure that out.
Oh, no.
I'm so annoyed.
No, yeah, I...
I've been resisting Catalina on my main iMac Pro.
I've had it on my laptop because it came with it, and I've been dealing with it.
It's fine.
But as I said before, I didn't see any reason to upgrade to Catalina, and there only seem to be downsides and risks, no real upsides.
And well, now I finally had to do it because I upgraded my phone to the 13.4 beta, which presumably sometime in the next few weeks will become the 13.4 release of iOS.
And you can't develop for that phone with Xcode 11.3.
You can only develop for it, which means I can only do the build and run and install development builds on my phone easily from the new beta of Xcode 11.4, which requires Catalina.
They do this every year.
Every year, at some point halfway through the year or so, they make the newest version of Xcode require the newest macOS.
And that is what finally pushes developers who have been reluctant to install the new version of macOS to finally do it, because...
While it is possible to continue doing my job without being able to instantly run development builds on my phone, it becomes much more cumbersome.
And it's just the cost of that to me is too great.
So I bit the bullet and I upgraded on podcast day.
Mere hours before the podcast.
Very bold maneuver.
Yes.
And here I am running Catalina on my desktop finally.
So I'm finally fully upgraded, reluctantly.
I've been really eyeing, both side eyeing and excited eyeing Catalina on account of starting to do some SwiftUI work.
And it would be so much nicer, as we discussed last episode, to be able to do that on my iMac Pro.
But my two dads, that's a reference, John, have told me that I am not allowed to upgrade to Catalina, so I haven't.
And here it is.
Now, I am the only holdout on Mojave.
Is that correct?
Because, John, you have to run it on your Mac Pro, correct?
Yeah, my wife's iMac is still on Mojave.
And I thought about upgrading her, but I'm like, you know what?
Just don't.
Just don't.
Like, I don't I'm not honestly I don't have many Catalina problems like I had one weird freak out where I don't know if it was Xcode related.
I was always running Xcode.
So I don't know whether to blame it.
But at a certain point, like how did it manifest?
Oh, I would select I was fast user switching between people to take screenshots.
And I selected a different account from the fast user switching menu, and nothing happened.
Cool.
And just, I was trapped.
I could not switch to another user.
And I was like, okay, this means time to restart.
Like, no error message, nothing in the console, nothing.
Like, it just, you would pick something from fast user switching, and it would just blink, and then it would just, nothing would ever happen.
And that, I said, okay, this is a sign I need to restart.
And so I did, and everything was fine after that.
But other than that,
And of course, the bazillion permission dialogues and everything that Marco was putting in his story that we just know are inherent in Catalina.
I haven't actually had any Catalina problems.
You better knock on some wood real quick.
And Mojave, by the way, which my wife is still running every once in a while, like it decides to activate the screensaver in such a way that it won't deactivate it.
And I have to SSH in and kill the screensaver process.
right so the mojave is not without its set of weird bugs too so i figure i'll just stick with this with the set of bugs i know in mojave and uh and catalina on my mac pro has been fine um but yeah i i saw the the new xcode beta come out and i'm not down with especially i was about to release an app not down with the xcode betas but i i feel you marco with like at a certain point you do
You do have to upgrade, and I guess your time has come.
And I think you picked a reasonable time.
I don't think it'll be a disaster for you.
This is about as long as I make it every year.
This actually, I think, is longer than I usually tend to make it, because usually there's some new feature of the OS that I eventually just break down because I want it.
And Casey, your SwiftUI previewing thing that you want, that's a pretty good one of those features.
It would make sense...
The reason I did it was because, okay, now some pretty important part of my job has become impossible on Mojave.
That's motivation enough for me to make the jump.
For you, if you're doing a lot of SwiftUI stuff, that live preview part of SwiftUI is pretty nice.
And it would kind of make sense that, okay, you should probably update if that's a really important thing to you.
But for everyone, the threshold of where that is is going to be different.
Again, in past years, there have been such compelling features sometimes that you do it for that.
For everybody, the threshold is going to be different of like, when do you update to a new OS?
Yeah.
And if the OS has compelling features, that threshold could be, you know, pretty, pretty soon after release.
I mean, you could even be one of those day one cowboys that, you know, just, I don't recommend that, but you know, you could do it.
Uh, more level headed approaches.
Usually the, you know, maybe wait, wait until the point one comes out.
You know, that's, that's usually a pretty safe bet most years.
Uh, but you know, that threshold moves for various people, depending on their priorities, uh,
And depending on the particular release.
My threshold is like, well, I can stay on the old version as long as it doesn't impede anything I really need to do.
And that was true until today.
And it's no longer true, and so here I am.
I'm sorry, but does that mean I'm allowed to, Dad, finally?
Please?
I mean, if you really are, you're still doing SwiftUI stuff and you want to have the preview, I suppose you have an actual reason to do it.
Before, you didn't have any reason, though.
I mean, and you weren't telling us about the details of the app you were making, so.
Mm-hmm.
Okay, we should quickly mention things that would perhaps require Catalina since this is related.
Switch Playgrounds is out for the Mac, and it requires Catalina because it's not combined.
What's the other one?
Catalyst.
There we go.
It took me a minute.
So yeah, so that's really exciting.
I haven't tried it yet because I'm not on Catalina, but this is super cool.
And generally speaking, from what I've read, it sounds like it's a pretty decent Mac app, which is exciting as well.
It's not flawless, but it's pretty decent all in all.
So hey, that's a win as far as I'm concerned.
I've seen some people complaining that it is Swift Playgrounds on the Mac.
Like, literally, you know, Swift Playgrounds, the thing they demoed on the iPad.
Hey, look at this.
You can learn how to program.
This is a cool little robot.
You can make it hop around.
Like, all the stuff that you saw them demo on the iPad at WWC all those years ago, it's that on the Mac.
But I think when people saw it, they were thinking, oh, it'll be like...
swift playgrounds but all the apis will be mac apis and that's not the case this is a catalyst app and inside the app like someone someone put a screenshot of trying to like instantiate an ns color and it was like no i think you mean ui color like oh like yeah it's playgrounds like you saw on the ipad on your mac literally
through catalyst which is great and it's cool and it's you know i downloaded it and uh you know it's it's exactly what you would think it would be uh it's convenient if you don't have an ipad and you have a kid who wants to do this type of thing now but you do have a mac now they can have a way to do it um i was confused at first when i saw like the headlines flying around because i'm like wait playgrounds have been on the mac forever i use them all the time when i'm developing an xcode and i want to try out a quick little thing i bring up a playground i type some stuff in it and it works fine
But then I remembered, no, it's the thing with the robot.
Yeah.
Which, what is the name of the thing in Xcode?
That's called Playgrounds?
But not Swift Playgrounds?
What is that thing called?
It's just Playgrounds, I believe.
It's a new Playground.
I mean, yeah, you just do, you know, from the file menu, file, new, what?
And one of the things you can make is a new project, new file.
You can also make a new Playground.
And it makes a little thing where you can type in code and it runs it in real time and shows you the results on the right-hand side.
Everything they demoed in a different WWDC session all those years ago.
but it doesn't have a distinct name and it's not its own application.
It's just a playground file for Xcode.
Anyway, this is Swift Playgrounds for the Mac.
Some people have been poking around and finding all the non-Mac aspects of it, but it's just like any other Catalyst file.
The keyboard shortcuts don't work the way you expect.
The responder chain is weird.
The window layering is weird.
I think that's what I'm saying.
If you bring up a window and hit Command-W, it closes the window behind the active window, which is not right.
Right.
many things about ios applications that are running on the mac through catalyst that is not quite right but it's better to have this is an example of catalyst you know quote unquote shovelware but like you wouldn't have this app at all on the mac so maybe the one you got is not super duper mac like but it's better than not having it on the mac and the app itself once you're inside it functions just like you would see it on the ipad only you get to use the mouse on a keyboard so even though catalyst continues to
not be a shiny example of good mac applications it is still vastly preferable to have a so-so catalyst port of an app than to not have it at all especially for an app like this where it's like this is not a professional app where you're trying to say this is the new way all mac apps are going to work this is just allowing people who have a mac to use a cool application that was previously only on the ipad
I don't have any problem with that.
In fact, I'm with you.
I think it's overall, theoretically, it's a good thing.
Now, in practice, Catalyst has had a really slow start, and that's due to lots of reasons that the more Apple uses it, the more that they will see and feel these reasons, and the sooner they are likely to get fixed.
So that's actually a good thing.
If Apple's going to keep bringing over apps like this that are not critical apps to macOS, but have some utility if they are present, bring as many over as they want to and have them use Catalyst and they can see how incomplete it is.
They can feel like, oh, this actually is kind of crappy.
And there have been some recent changes.
I don't know if we're going to get to this today, but they have introduced a new date picker style that doesn't use the stupid iOS wheels.
Finally, in whatever the new Catalina beta is.
And they recently announced, and we didn't cover this yet either, they recently announced, I think last week, that you'll now be able to build Catalyst apps that use the same bundle ID, which is pretty important for lots of reasons, especially sharing a purchase as your iOS app.
When Catalyst was unveiled last summer, it forced you to have this big Mac Catalyst prefix on the bundle ID.
So your app that you ran on the Mac could not have the same ID for store and technical purposes as the app that you had on iOS.
So you couldn't do things like one purchase gets you all apps.
And I think the reason for that was simply because they hadn't set that all up yet, like on the store backend and everything else.
So they were forcing this thing.
And so like Catalyst as it was released was pretty incomplete.
They are very slowly chipping away at Catalyst's various shortcomings and problems.
And so the more Apple ships their own apps like SwiftUI for it, the more they're going to feel these issues and hopefully prioritize them.
So...
I don't personally have really any feelings on this particular app, but hey, it's a fun thing for people to use, and if you're learning and whatever else, it's easier than Xcode.
So, you know, good for them.
Yeah, it's a very polished... The application itself is a very polished example of a learning-to-program type thing, because I remember a lot of those learning-to-program things from my youth.
Obviously, this is ancient and things... But just in terms of the production values, adjusting for the times in the technology stack...
It's a very fancy, well-done, sort of high production value in Hollywood parlance, since we're talking about Hollywood this episode.
High production value example of learning to program.
Like, it's, you know, like, too... The production values are too high.
It's like, this is not what... Is it really this important to learning to program to have...
this adorable uh you know of an interface and these kinds of graphics no it's not it's just typical apple like over polish overkill and it's it's great it's all the more disappointing when i couldn't get any of my kids interested in it because they were just at the time i tried to show it to them they were like
not interested don't care about the robot don't care about typing things why would i ever do this why wouldn't i just use an analog stick to move the little robot around like video games you know anyway but anyway i think if kids are into programming and they get their hands on something like this at the right age it can be amazing and i wish i had something like this because i the things i had at my disposal had much lower production values and are much less friendly
I very much admire Apple for doing this.
And I think it is a really nice move to help people teach their kids, like you were saying, or teach themselves.
And, you know, the Playgrounds as a scratch pad for trying to write code, that does exist in Xcode.
And it's for somebody like the three of us is a better answer.
But
For somebody who is just trying to learn how to write code, it's so good.
And I would never turn to this.
I would just go to an Xcode playground.
But if I was trying to show Declan how to write code, I would definitely use this.
And I think that that's extremely cool.
And I think it should be commended that Apple still cares enough to do this sort of thing.
But the sad thing about me trying to teach my kids to program is that eventually my son did get into programming, more or less on his own, because, you know, another example of kids not wanting to hear from their parents, but if they just go to their own, they're into it.
Right.
And now he's taking courses in high school, programming courses in high school, and he's doing it in net beans.
We have to install NetBeans on the Macs because it's Java.
Oh, God.
And you have to install this NetBeans IDE, which is this ancient thing, and then Java doesn't come on the Mac anymore.
So he turned his nose up at Swift Playgrounds, which are like a glass of ice water in hell compared to NetBeans.
Are they?
I still think Swift is a terrible beginner's language, but that's just me, I guess.
It's better than Java, I can tell you that.
And anyway, he's doing Java now.
He's not doing Swift.
He's doing Java in NetBeans.
Because that's what's on the computer science AP test is still in Java because, you know, lags behind the rest of the world, I suppose.
So he's got to, you know, learn and use Java.
What should it be instead?
I don't know.
I mean, I would feel better about C for that or like a pseudo language.
Like, is it computer science?
It's not about, you know, computer science is as much as they say is as much about computers as astronomy is about telescopes.
Right, right.
So if you're learning actual computer science, the details of any particular language should be immaterial.
And I understand you have to have something to do the test with, but it could just be like an algorithms test.
I don't know.
AP Computer Science, as far as I'm aware, did not exist when I was in school.
So I have no idea what he's in for, but he's doing it, and I installed NetBeans.
So there you go.
Yeah, I wish it existed when I was in high school.
Agreed.
Can we just state publicly that you are aware that there are other better Java IDEs that exist, and that is not the point?
Oh, I'm not choosing to install NetBeans.
It's like anything in school.
Here's the calculator you have to buy.
Here's the IDE you have to install for this class.
Exactly.
He's not picking this.
And it's not just NetBeans.
It's like a specific old version of NetBeans that really is angry about both Mojave and Catalina.
It's not as bad as me trying to install Minecraft mods, but it's close.
I'm going to go out on a limb here and say that Java is no worse a learning language than Swift.
I don't think I agree.
I think Swift is way better than Java.
Way better.
Yeah, I agree.
A million miles better.
As a language I want to use today, I agree.
But a learning language has different needs.
I think as a learning language as well.
I think they're both mediocre learning languages, honestly.
I think I would want to go something simpler and more forgiving, like either JavaScript or maybe like Python, something like that.
JavaScript is too weird.
It's a reasonable second choice, but honestly, I think Swift is a great language to learn programming in, of all the real languages out there that we can pick.
Because I think both Python, which would be my other pick, and JavaScript...
are a little bit too weird in the basics and i wouldn't if i was teaching a course i wouldn't want to have to explain the weird basics whereas i think i could go a long time without explaining any weirdness for just doing the basics in swift yeah until until you do something wrong yeah anyway uh there's no uh javascript playgrounds app like this so there you go
We are sponsored this week by Bluevine.
Running a business is filled with unexpected events that require sudden cash flow.
Bluevine can help you secure cash fast.
Applying online is easy and takes just a few minutes.
Bluevine is an easy, fast way to help support your business growth with a line of credit of up to $250,000.
Whether you need money to offset some upfront costs, secure a new inventory, or maybe pay an unexpected expense, through Bluevine,
you can help yourself and your business stay secure for any reason.
There's no fee to set up your line of credit and blue vine never charges maintenance or prepayment fees.
Applying is easy.
Just go to get blue vine.com slash ATP.
Fill out a few simple details and you're done within minutes.
Seeing an offer will affect your credit score.
And once approved funds can be received in as quickly as 24 hours.
So you can have peace of mind knowing that funds can be drawn with a click of a button for any business expense.
Bluevine has helped more than 20,000 customers and has delivered over $2.5 billion in funds to businesses.
Bluevine also has advisors available by phone to answer any questions you might have and help meet your business needs.
With an A-plus rating from the Better Business Bureau and nearly five-star review on Trustpilot, see why thousands of satisfied business owners have chosen Bluevine as their go-to source for financing.
Bluevine is offering our listeners a special limited-time promotion of a $100 gift card when you take out a loan or open a line of credit with Bluevine.
So go to getbluevine.com slash ATP for more details.
All you have to do, once again, getbluevine.com slash ATP and apply.
That's quick, easy, and meaningful help to your business in as little as 24 hours.
This promotional offer is subject to terms and conditions that can be found at getbluevine.com slash ATP.
Thank you so much to Bluevine for sponsoring our show.
Shall we do some Ask ATP?
Let's do it.
So we start with Anthony Scartapani.
I should have tried that before reading it just now.
I hope I got that right.
Anthony writes, Today at work, we started debating the differences between Mac and Windows on the basis of security.
People were discussing having antivirus software like AVG or Kapersky or etc.
on their Windows machines, but there weren't any Mac owners that did the same.
Some of the Windows users mentioned that they only use Windows Defender as their defense to malware.
It made me realize that macOS doesn't really have any in-your-face software that is quote-unquote protecting you at all times.
Anthony writes, I understand macOS has built-in security like XProtect and Gatekeeper.
Is this software essentially doing the same thing as other antivirus software?
Also, do you think that macOS is really better at defending malware or viruses beyond the fact that there are less machines running macOS versus Windows?
If so, how?
There's a lot here, but there's no real antivirus that comes with macOS that I'm aware of, or am I crazy?
I mean, as this person mentioned, just XProtect, really.
But XProtect is really doing, I think, I think it is basically serving as antivirus.
It is a system thing that runs in the background all the time that silently downloads updates from Apple whenever there is one, and that can be used to
target and block the execution of binaries with certain signatures.
And that's what antivirus programs do, as far as I know.
John, what am I missing here?
Well, but they do more than that.
So X-Protecting Gatekeeper and the general design of macOS is made to, like...
There are multiple ways.
One is to protect it against known threats.
That's what X-Protect is doing.
If there's a thing that's bad and we know it's out there, we can describe it and quickly tell all the Macs about it so they will not run that thing.
Gatekeeper is like, don't just run stuff willy-nilly.
Make sure you prompt for permission and the quarantine attribute and downloading stuff or whatever.
So that's all kind of like...
sort of passive preventative stuff and then there is the other passive stuff which is like in the design of the the os like address space randomization and protecting against loading uh dynamic dynamically loading libraries from weird locations and sandboxing right so that's sort of baked into the thing but antivirus software of the type being described you know in this uh question and of the type that people think of when they think of windows does something above and beyond that right because windows at various times has had
equivalents of all the things i just described less so maybe in the windows xp days but much more so now because microsoft has gotten very serious about security after getting totally reamed on security back in the what was it late 90s early 2000s i don't know i don't know how you work talk about long-term reputation damage like microsoft had horrible security on windows but
basically for what 20 years at least or longer like like it was it was until when did they introduce windows defender which was like their built-in antivirus stuff that was not that long ago right but but like their security problems were there but didn't come and bite them until it all landed at once right so yeah maybe they had like lax security for a long time like everybody else in the industry but they because they were so prominent and dominant they
They bore the brunt of this big security catastrophe, and then they got serious about security after that.
So they acted as quickly as possible.
It's just that people kept running Windows XP for a long time.
But, yeah, for the antivirus stuff, like what the difference is –
They're thinking of programs that run on your computer and periodically and or continuously wander over every single file on your computer and say, let me look at this file.
Is there anything bad in here?
Nope.
Okay.
Let me go to this file.
Is there anything bad in here?
Nope.
Okay.
And then beyond that, say, every time you do any file I own anything or try to launch anything or whatever, this third-party program jumps in and says...
you're trying to write to this file who are you are you allowed to write this file you're trying to launch this program is it okay to launch this program let me look at this program right which is more invasive than x protect like that that's the general complaint of you know the mac users at a you know big corporation have to run antivirus software is that oh it's destroying my computer it's killing my battery life because it is literally looking at every single file on your computer right
Or when you're trying to do lots of file I.O., this third-party program is intervening and saying, before you do that file I.O., let me look at what you're doing and let me see who you are and what you're writing and what this file is and make sure it's okay.
And that slows everything down, right?
All the things we described, extra tech, gatekeeper, address space randomization, sandboxing, they don't do that.
They do not, like, there's not suddenly a process using 100% CPU grinding over your entire disk, right?
Well, except Dropbox.
Yeah, separate issue entirely.
For the purposes of antivirus, there's not something that is causing your file I.O.
to be slower, again, except for Dropbox, because it is intercepting or doing something in every single bit of file I.O., like Dropbox drinks from the FS Events fire hose, and it can actually slow down I.O.
significantly.
So if you're worried about that, quit Dropbox and then do whatever.
Anyway, those programs absolutely do exist for the Mac.
I personally hate all of them, even the quote-unquote good ones, because they screw with my Mac, because I feel like they're doing something that I don't need to be done.
Like, I have never voluntarily run that kind of antivirus software on my Mac, and I have also never had a problem with viruses, and I don't think I'm just lucky, right?
So...
Is that because Macs have better security?
I doubt it.
I think it's mostly, you know, right now Windows has pretty good security and I think so does the Mac because Mac OS X sort of grew up in an era when Windows was getting slammed with security threats.
So Apple took that took that lesson to heart, even though it wasn't happening to them.
Right.
So I think the security of it's probably fine.
But bottom line is that it is a less popular operating system that is less profitable to exploit because there are fewer Macs and many more Windows machines.
So I don't recommend that Mac users run any kind of antivirus software because I think the antivirus software itself is more of a problem than viruses will be.
But that doesn't mean you're not vulnerable.
It just means I think that's the correct balance for most people because these antivirus programs, they really make the experience of using a Mac worse.
They're complicated.
They're buggy.
I used to get kernel panics from one of them that I had to run at work.
They slow your computer down.
They kill your battery.
And in practice thus far, being a Mac user since 1984, I have never needed one.
Well, I hope you knock on some wood.
Chris Wright writes, Marco, you said that you apply voice boost here on recordings and post, which will typically be processed once again within overcast at playback time.
Have you done anything to mitigate recursive processing resulting in exaggerated or undesirable audio artifacts?
Yeah, so I, and actually, and I believe Chris wrote this before I released Voice Boost 2, and I went into this very slightly in the blog post, I think mostly in a footnote, but basically, Voice Boost 2 is a whole effect set.
It can apply lots of different effects in lots of different configurations.
What ships in Overcast is basically a preset.
That's like, here's one configuration of this engine.
It is applying the loudness, the compressor, and the EQ.
What I have been processing my files through all these months that I've been testing this is a command line utility that basically is like a test harness for the Voice Boost 2 engine.
And I can specify as arguments to that command line utility which of the filters to engage and with which settings.
So I'm not actually engaging all of Voice Boost 2.
I'm engaging parts of it.
Specifically, what I'm processing our files through is I'm processing each individual track, each of our three voice tracks, through the loudness normalizer to a certain loudness,
and applying a custom EQ to each of our tracks based on each of our voices and microphones to make us sound good.
And I do all that just with an automated shell script that runs this command utility every time I process the files.
And so out of that I get three tracks that have been all normalized to the same volume and have had our personal EQs applied.
What the Overcast app is doing is applying the loudness matching thing and then also a little bit of compression and a little bit of EQ.
And the EQ it's applying is a very gentle EQ that is kind of like an all-purpose, broad appeal EQ that's going to do a small tweak to make most voices sound a little bit better, but is not especially severe and not especially targeted to any particular voice.
so if that's basically if it's double applied by me having done loudness matching first and then applying EQ in my pre-process and then having the overcast app play back those files and possibly apply voice boost if the user has it enabled the loudness matching part of it is actually not going to be changed much at all because voice boost 2 reads loudness first and then decides how much to adjust it and so if it's already at the target loudness voice boost 2 doesn't really do any adjustment there
So there is not much of an effect in double-applying loudness normalization.
The only thing that's really being double-applied here is the EQ.
But because the EQ settings in voice boost in the overcast default configuration, because those are such subtle EQ tweaks...
The fact that they're being applied to a podcast like mine that I believe is already well EQ'd, they're by design configured to be pretty subtle and to not be a massively noticeable change on already well-produced podcasts.
Because the reality is most people listening to podcasts most of the time are listening to professionally made shows that probably don't need a lot of EQ and probably don't need a lot of volume leveling.
So part of the design of Voice Boost 2 was to be a gentler touch and especially to be dynamic with the volume leveling and to not apply more correction than is necessary from the input.
So double applying it doesn't really do that much with the sole exception of the EQ, which is pretty subtle.
Simuisto writes, how do you guys use show notes as a listener before or after listening to the episode?
Scared of a spoiler?
What makes for good show notes?
Personally, I almost never read them, but you seem to actually put quite a lot of effort into it.
So maybe I'm missing something here.
Well, thank you for noticing because the show notes are done by me with Marco tweaking and John occasionally adding some missing stuff from time to time.
So thank you.
How do I use them as a listener?
Generally speaking, I will at least glance at some point, but I usually only take a deep dive if I'm looking for a particular link of something that's mentioned on the show.
I also feel like, thanks to Forecast and some of the work that Marco has done, I miss out on a little bit because I don't often pay attention to show art, which can change during an episode, and
I think it's mostly like us and some of the Relay folks that do that.
I don't know, Marco, if you know some other good examples.
But, you know, Marco is very good about putting in relevant chapter art for each of our chapters.
And sometimes there's some really good gags there that I don't see because I am not typically looking at a screen when I'm in the midst of listening to a podcast.
If anything, or if I'm looking at a screen, I'm looking like code or something.
So I don't typically pour over them, but I almost always glance at them.
Marco, you were just talking a lot, so let's go to John.
John, how do you use show notes as a listener?
I'm mostly, I mean, so in the podcast I listen to, people will refer to them.
We do it all the time.
The link will be in the show notes, right?
If I'm interested in that thing, I will then go to the show notes and seek out that link.
In terms of spoilers, that's a possibility, especially if they chapterize it and I can see the chapter titles, but
I'm not listening to narrative podcasts that have spoilers of that kind of thing.
It's not really a spoiler to know that later they're going to talk about cars, like whatever.
I can live with that.
So I will seek out the links for that purpose.
The second time I do it is when something is being discussed on a show and it's visual.
And even if they don't mention it, if I know, if I listen to the show, oh, when they talk about this, that someone got a new car and they're talking about, you know, the new car and the new something in the new car.
If I know this is the kind of show where there's going to be pictures and show notes of that car, I will then pick up my phone and go to the show notes so I can look at the picture that they're talking about right now.
They're talking about the car.
I want to see this car.
I want to see the color of the seats or whatever, right?
Yeah.
And when I know that's going to be there, like shows basically train you like you look for it one time and it's not there and there's no show notes like, oh, I guess this isn't a show where they do that.
Right.
And by the way, I think more shows should do this.
It seems to me the higher the production values of the show, like multimillion dollar shows with celebrities that have millions and millions of listeners, no show notes.
nothing no they'll none they'll be talking for an hour about oh i you know my dog made this mess in the kitchen and they're all looking at a picture of it and they're sharing a picture and like oh look at this picture oh they're talking about they talk about the picture for a half an hour of the mess their dog made in the kitchen no way to see that picture no show notes no link no nothing it boggles my mind but
anyway that's what makes good show notes is when you want to know more or want to learn more or want to share in the experience in a way that you can't when it's just audio go to the show notes and there should be something there for you and that's what makes them good like i don't see people like looking at the show notes ahead of time or even you know like they're there for you when you want to learn more and i think that the two reasonable ways to do it are in real time while you're listening go to them so you can share an experience and
And then at the end, oh, what was that app they talked about that did the thing?
I don't remember.
And they go to the show notes and find it.
And occasionally we don't put it there.
And if we don't, someone sends us a tweet and says, hey, I was looking for the app you talked about.
And we'll add it to the show notes later.
That's another thing, by the way, that I'm assuming no multi-bazillion dollar podcast ever does, but that we do all the time.
If we forget a link in the show notes, oh, we talked about this app, but we didn't put a link in there.
And three people ask us.
Hell, if one person asks, oh, what was that app?
we'll add it to the show notes.
And good podcast players will notice that we change the show notes and load new versions of them.
And bad podcast players will never reload the show notes.
And people will say, I still don't see it in the show notes, and we'll have to send them to ATP.fm because the show notes on the web will actually update because web browsers know how caching works.
So yeah, I think good show notes add to the program.
I'm angry when they're not there, and I think any way you want to use them is fine.
They're there for you to use them.
Same thing with chapters.
But the way I use them is...
in real time to enjoy the show more, and then afterwards when I remember something they talked about and I want to actually see what it is and follow the link.
Marco?
Most people never look at show notes.
Most podcasts don't have show notes or don't have meaningful show notes.
For those that do, I think the role of show notes is mostly what John said, is to provide links and context.
Now, some producers go way into it and put entire...
topic outlines and summaries and timestamps that link directly to certain topics and everything kind of like a like a lightweight chapter marker kind of thing that's done occasionally but it's not common the the by far the more common use of them is either not having them at all or making them like a handful a very small handful usually of links that were mentioned and i think that's totally fine as a listener that's how i use them i use them as
they're talking about something, and I want to see it, I'll check the show notes to see if there's a link to it.
And about half the time there is, and about half the time there isn't because people are so bad at it.
And you're right, generally the more popular the podcast, the less likely it is to have even basic show notes.
These podcasts that have staffs of 30 people working on them,
they won't have show notes.
They won't do anything.
They'll have the weakest stuff.
You wouldn't believe how many proposals for new standards I hear and get pitched on from major podcast companies that can be solved already by either show notes or chapter markers with links.
which literally almost every month, some big podcaster tries to start a new standard.
And it's like, you know, you can do this already today in every single podcast app by using chapter markers to show a link and or an image at a certain time.
Imagine that.
And you would not believe how many standards people have tried to make to do this.
And then do any of them actually ever try that?
No.
Zero major podcasts from the big public radio style producers, zero of them ever use chapter markers.
I don't know why, but they just don't.
They pretend like that doesn't exist, and they do the exact same thing with show notes.
Pretty much zero of them have meaningful show notes.
And I guess they're a loss.
But the general inconsistency of use of show notes means that as podcast listeners, we can't ever really rely on them for much.
So it's just kind of like a nice little reference to look at and sometimes be helped by.
Do you think that the reason that the big producers aren't interested is because of dynamic ad insertion?
I mean, I would assume that there's no reason why they couldn't just reprocess the chapter markers based on new times based on the ads that are inserted.
But is that something to do with it?
Do you reckon?
I mean, I think Marco nailed it, nailed it before.
The reason people don't do it is because no one looks at the show notes.
Like it's a cost benefit.
Like they make that calculation in their head.
They say, okay, 0.01% of our listeners ever look at show notes.
Should we invest even a single person's two hours of a single person's time in making them answer?
No, that's my theory.
Yeah, but if they're coming to Marco and saying, here's a spec that we think you should implement, then obviously they want it.
They're just doing that because they want better tracking.
That's all about ad.
They want to know where you're located when you're listening and cookie you and do all sorts of stuff like that.
That's what I assume those proposals are about or not, Marco.
What do you think they're actually asking for when they make those proposals?
I mean, certainly they ask about that as well.
But a lot of times, I was approached by some kind of large podcast thing a couple years back about possibly wanting to invest in Overcast.
And what they mainly wanted to do was be able to pop up at certain time ranges like a listener survey or a link to something they're talking about.
And I was like, you know you can do that already.
Like literally, they wanted to spend large amounts of money to just do that.
And I told them, I'm like, you shouldn't be buying anything for this because you can literally do this today.
You can get like 90% of what you want.
Chapter markers can already, today, in every podcast app, display images or links within certain time ranges.
That is literally what they do.
And it's supported by every major player, including Apple Podcasts, which, if you go around trying to get individual podcast apps to add some kind of functionality, you'll never get that many of them, especially on Apple, to add any kind of new standard.
But, like, literally this standard already exists, and has existed for, like, 15 years.
That, like...
It's already supported everywhere.
Just use it.
Do you think they use it today?
No, they don't use it at all.
And this meeting was like two years ago.
No one knows about these.
No one uses them.
And I think part of it is like a cultural thing.
And I think a big part of it is also like a tooling and workflow thing.
Like many of these large podcast producers are using like their own custom built CMSs from forever ago.
And their CMS probably doesn't even support show notes.
Their workflow doesn't support any of this.
They don't have anybody even on staff who would think it would be their job to write show notes or to put in chapter markers.
And Casey, as for dynamic ad insertion, I mean, so far my experience has been the people who write dynamic ad insertion software are possibly not good programmers.
But it is totally, totally fine for...
for you know for you to just adjust the chapter markers by timestamp as you're writing the file out like the chapter markers it's just it's just a you know a binary blob of data at the beginning of the file like all the other id3 info and the same little blob that says this file is 19 minutes long it's very easy to say all right i'm inserting an ad at 10 minutes into the file that's one minute long so this chapter marker that's at 11 minutes i got to move it forward one minute
That's simple logic to do.
Forecast has a feature where you can export what they call air checks, which is basically copies of your sponsor reads.
So if you have chapters prefixed like we do with sponsor colon or whatever you set the prefix to in the settings,
you can automatically and quickly export little segments of the file that have been trimmed out that include that chapter.
And I do the math for that.
So that little segment that you trim out that has a certain amount of, I think it's like 15 seconds on either side of it or whatever it is, it includes the chapter markers that apply to that segment reset to zero or whatever the time is that you have there.
That took me like 10 minutes to write.
This is not a big deal.
This is not hard stuff.
It's very, very easy stuff.
And if you're writing code that chops and dices MP3 files already, like DAI stuff does, it is trivial to also do this.
I just think fundamentally nobody who makes podcasts that are big enough to use DAI has ever asked anybody about this because they don't even know it exists.
I think that's the real problem.
There is a difference in the audience, too.
If you're doing a tech podcast with a bunch of nerdy people, a lot of which you think are probably using the podcast player written by one of the hosts of the show, this is the ideal audience for people who would look for, understand how to use and appreciate chapters, good show notes, all that other stuff.
Whereas if you are a mass market true crime podcast, maybe you don't even have that many links.
You're certainly...
not going to be you know linking to a bunch of apps that you discussed and stuff like that like obviously everything exists on the web and maybe if you're talking about crime scene photos you might have a link to that crime scene photo or something but in general i think people it's like i was saying i don't think people go to the show notes so that can change like if suddenly a very popular mass market podcast uses show notes well and
and people appreciate it then they'll stop expecting it of other shows that's what our listeners say a lot they'll say oh i'm an atp listener and when i listen to popular podcast x i'm disappointed that they don't have good show notes because i'm used to that from atp which is great but there's not that many of those people right so uh as with many of these things lots of stuff starts in the techno world and only like the weird hardcore enthusiasts are into it and eventually spreads to the mass market but so far that has not happened with uh
you know good show notes and chapters and what do we call the images chapter art chapter images uh yeah just chapter images yeah yeah and like we use them like i i'm like hazy i feel like sometimes i miss out on gags because i know marco does a ton of them but i'm not always looking at my phone and a lot of the relay shows do them when i catch them i appreciate them but podcasts are inherently an audio medium so you can't
Like, don't spend too much time in clever chapter art because if you thought a lot of people don't see the show notes, even fewer are going to see the chapter art.
Thanks to our sponsors this week, Linode, Bluevine, and Bombas.
And we will see you next week.
Now the show is over.
They didn't even mean to begin.
Because it was accidental.
Accidental.
Oh, it was accidental.
Accidental.
John didn't do any research.
Marco and Casey wouldn't let him.
Cause it was accidental.
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 Marco Armin S-I-R-A-C-U-S-A Syracuse It's accidental They didn't mean to Accidental Tech Podcast So long
So, John, you wrote an app.
Did you have any adventures in programming?
I sure did.
So, front and center, such a simple application, no real UI to speak of just as a simple thing.
Fairly straightforward.
It was my first app, so there's complications there and all the overhead of making an app.
This app, like I said earlier, is a little bit more complicated, but not much.
It does have some form of UI.
But I learned some things from dealing with front and center and have a bunch of war stories from the development of this very simple application that, you know, they're not novel.
Like everyone who writes any app of any sophistication is going to run into tons more of these things and be even weirder or whatever.
But for someone who's not a programmer, it may surprise you that such a simple application can have all these complications.
So take this as like a microcosm of what programming is actually like.
And I'll preface this by saying both of the applications that I made,
inherently deal with a bunch of APIs on macOS that are buggy and have been buggy for years.
And it's painful for me to say that because it's like, you know, blaming the compiler or blaming the operating system.
But the Mac operating system does indeed have bugs.
And both of my applications sit square in the center of one particular set of bugs, which is, and I even put this in the FAQ, when, you know, the Mac operating system has APIs that you can call that are supposed to do a thing to an application.
They're supposed to say, bring all the windows from that application to the front.
Apple provides these APIs.
They're part of the operating system.
There's a couple different ways to do it.
Most of them are deprecated except for one or two, but that's what they're supposed to do.
Either activate this application and just bring it to the front,
or activate the application and bring all of its windows to the front.
And I have to call those APIs to make my programs work because I don't have any other way to do that.
I just have the APIs that macOS provides.
The bug is that sometimes you call those APIs and nothing happens.
And that's, and that's like, there's no failure code.
Like literally just, it doesn't work.
Nope.
It just doesn't happen.
Can you at least like, do you have any way to detect?
Like, can you like, can you call the API, like bring this app to front and then can you check is the app in front like a half second later or something?
Yeah.
You can do stuff like that, but here's the question.
What's your recourse then?
Are you going to call it again?
I guess.
I can tell you from experience that calling it again will not help you.
Are you going to call it 100 times?
At a certain point, if it works the 7,000th time, that's going to be surprising to the user who has moved on to other things and suddenly that app that you asked for.
In my experience, calling any of these APIs a second or third or fourth time
does not help when it stops working and by the way you can see this in action by not running any third-party applications whatsoever and occasionally what will happen is you'll for example click on the dock icon for safari in the in the dock you know it's already running and you're clicking on it because what you want to happen is what's supposed to happen when you click on an icon in the dock and it's supposed to bring all the safari windows forward and you'll click on the safari dock icon
And maybe one Safari window will come forward.
Another one is you'll be in an application and you'll select hide others to hide all the other applications.
That's a menu command in a lot of Mac applications.
Hide others.
Hide all the other windows that are on my screen.
I just want to see the Safari windows.
And you'll select hide others.
And a couple applications will hide, but a couple won't.
And you can pick it again.
Hide others.
Nope.
You can pick it again.
Hide others.
Nope.
There's Xcode still in the back there.
Why am I still seeing my giant Xcode window?
I said hide others and I'm in Safari.
It's not going to work.
Anything having to do with hiding, showing, hide all, show all, hide this application, show this other one.
There are bugs.
And I have yet to find any kind of workaround for them.
And unfortunately, these two applications I made lean heavily on the APIs for hiding and showing applications.
So when I call those APIs and they don't work and I don't have a workaround, I get bug reports.
so that's that's just like background noise for all of this there's nothing i can really do about that right now this but it's just it's just adding to the general malaise of these two applications i chose to make now i knew this going in because i do things like that all the time i do try to hide others i do try to click on an application and bring it all to the front and sometimes it doesn't work and it's been this way for years like nothing to do with third-party applications just in the mac os i don't remember when it started but it's just a years-long thing so
I knew going into this was going to be a struggle.
I thought there might be work around so far.
I haven't found any.
I haven't found any heroics that I can do to make it work when it when it stops working.
It doesn't stop for all applications.
Most of the time, usually it stops for one or two of them.
Finder and Safari are big culprits, but that may also just be because they're commonly used.
I don't have a rhyme or reason for this.
So anyway, that's not my adventure.
All that is to say that these two applications that I made that look super simple.
Inherently, what they do is already challenging because it's not always going to work.
I think the one war story I will bring out today is an interaction between them that is a complexity that I added that I didn't think of until about midway through development and then just had a very sad face when I did.
So...
Getting to another set of... I'm not going to talk about another set of APIs.
But anyway, front and center, you know what it does.
When you click on a window, it does stuff.
It brings all the windows forward.
Or if you shift click, it just brings one of them.
It does all that stuff or whatever.
How front and center works is...
it's able to listen through an API for an event, which is new activation.
A new app has been activated, right?
So anytime a new app has been activated, the operating system lets front and center know and says, hey, by the way, I know you've just been hanging out there front and center, but here's what happened.
A new application has been activated.
At that point, front and center gets to choose what to do.
You can say, oh, if I'm configured and it's supposed to bring that application to the front, I'll do that now.
I'll call that API that says bring all the windows to that application to the front, right?
that's that's basically what it does like it waits for activations it doesn't know how the app got activated it can tell which app is activated but it doesn't know why and so there's a bunch of weird heuristics the front and center has to do to figure out should i do anything about this or should i just just hang back and not do anything and it doesn't get active it get notified about every activation just certain ones because like for example if you use like expose or mission control to activate uh an application it gets a it looks different to front and center anyway
There's front and center doing that thing over there.
Here I am right in switch glass and I decide when I'm making it that it should have the same kind of options as front and center does where it's like, oh, you can put it in one mode when you click and it will bring all the windows to the front and then shift click to just bring one, right?
And I did that and I said, well...
Front and center has that opposite mode where you can do a modern mode and it does the opposite behavior where shift click works if I clicked it and vice versa.
So I should do that in switch glass too.
Because if you like using it in modern mode, if you want your default to be just a single window comes forward, wouldn't it be nice to have the default be a single window come forward in switch glass as well?
And that would make it different than the dock because you can't control that in the dock.
When you click on a dock icon, it always brings all the windows forward in theory if it's not bugging out at that particular moment, right?
so i did that so i added the options easy enough to go two different ways in switch glass and then it occurred to me that if you have front and center and switch glass installed and you have their preferences set the opposite way so if you have front and center setting classic mode but switch glass set so that when you click a single icon it's supposed to bring a single one window forward this will happen
You'll go to switch glass.
You'll click on an app icon.
It will say, ah, I'm in the mode where I'm supposed to bring a single window forward.
So it will go and say, I'm activating Chrome, and I'm bringing a single Chrome window to the front.
And then front and center will get notified, hey, front and center, a new application was just activated.
You think you should do something?
And front and center will say, ah, there was a mouse click, and an app was activated.
And I'm in the mode where if a click activates an application, I'm supposed to bring all those windows forward.
So it will.
So front and center will undo the action that was supposed to happen in Switchglass.
Switchglass said bring one window forward.
Then front and center said, oh, I know you want all the windows forward and it will bring them all forward.
And what this looks like if you're using Switchglass is I configured Switchglass to just bring one window forward.
But every time I click on it, it brings them all forward.
And it's not Switchglass that's doing it.
It's front and center that's doing it.
Right.
So you see, like I could say, oh, this is an invalid use case.
Don't set your preferences that way.
But they're two different applications, and it seems like a reasonable thing to want to do.
When I click on Switch Glass, I just want one window to come forward.
But the other times I click...
i want all of them to go forward because that's how i have front and center configured so this this is a complication entirely of my own making but once i realized it existed i'm like oh this will like people will end up setting it this way and they will think it's buggy and they'll be like your your app doesn't work i said one window and every time i click that they all come forward right and i don't want to have to explain to them that you know well don't set your preferences that way or whatever
And I don't have enough information to sort that out on either end because like when front and center gets notified that something was clicked, I don't even know like what event caused that to happen.
Like front and center itself has some very scary, weird code to do heuristics to like...
uh you know keep track of the last time a mouse was clicked but i don't know where or why it was clicked i just know that it was clicked and i do this time windowing around activations to figure out if that clicks belongs to a thing like it's it's scary and everything but it mostly works and that's not where the bugs come from the bugs are all like uh nothing happened because
you know the i call the api and the windows didn't come to the front or whatever anyway that there's front and center doing that over there i but in from front and center perspective i have no idea if you just clicked on switch glass like i have no way of knowing that i can know that you clicked but i don't know if you like legit clicked on a single chrome window or if you clicked on the chrome icon and switch glass i have no idea that that happened
And so I need to figure out a way to deal with this.
And then the simple application used to be like, oh, I'll make a little palette and there'll be icons and you click on them and I'll call a single API.
That all went out the window as soon as I realized this was an issue.
maybe i made the wrong choice maybe i should have said you know what this is again an invalid use case or i'll take away that preference and switch class and you can't run it in that mode but i'm going to run both applications at once and i would know that there was this problem i just i decided i wanted to tackle it so i had to figure out a way to get these two apps to talk to each other uh and they're both sandboxed
So a lot of things are out of the question.
And I had some ideas about, I mean, I don't know, you two are iOS programmers, but I think you know enough about the APIs that are similar enough.
How would you handle this?
Can you come up with some spur of the moment technical solutions to the problem that I have here?
An automatic kicking machine?
I've been doing a lot of clips and I've seen your kicking machine in action.
I'm not going to reject anything for grossness, but literally how can I make this happen?
Again, what I want to happen is I click on switch glass and it brings a single window forward and even though front and center is configured that it's supposed to bring all windows forward when a new app is activated, it has to somehow know that...
you know this time lay off because it was switch glass that brought that window to the front and it's configured to say don't bring them all to the front so front and center lay off how do i make that happen uh can you do darwin notifications between the two apps what would i say between them
I guess you would post notification from the one that wasn't, or from the one that is activating, basically saying like, hey, I'm about to activate this behavior, and then post another one saying, I'm done activating this behavior, and have like a slight delay between those things, so that way, I don't know.
As you're thinking about it, you're realizing, I'm creating a race condition.
So this was my first inclination, too, is like,
I want switch class to tell front and center I'm doing a thing.
Lay off.
Right.
Right.
But, uh, all the things, all these APIs that I'm using, like, so switch class, that's like synchronous, like someone clicks and I get to run code in response to that click.
But on the front and center side, uh,
I'm just there listening for notifications that the operating system gives me.
The operating system tells me, by the way, a new app became active, and I have no control over when the operating system tells me that.
Also, I'm watching for mouse clicks in front and center just so I can know, hey, they clicked the mouse.
Can't tell you anything else about it, but they clicked the mouse.
I also have no control over when those notifications come, which is part of the complexity inside front and center, which is sometimes I get the mouse click before the activation, and sometimes I get it after.
So to make a decision, I need both pieces of information, but there's a time windowing thing there, and I don't want it to be laggy or slow, right?
So if I'm going to have Switchglass say, hey, front and center, I'm about to activate an application.
Leave it alone.
Just don't touch it.
I know you're going to get at some point in the future, you're going to get an activation notification, but do not react to it.
I can send that with Darwin notifications, which is just this kernel mediated messaging mechanism that's in theory very fast between two applications that are on the same operating system.
It's not a socket connection.
It's not networking.
It is just a way through the kernel for you to pass simple messages to each other.
First hurdle to that is sandbox applications can't send our notifications to other sandbox applications unless they're inside the same app group.
App groups exist on iOS and on Mac.
And you have to make an app group and it gives them a shared container, but it also lets them send messages to each other.
So that was the first hurdle.
So I had to get them both into an app group.
And the rules for that on the Mac are totally different than iOS.
And all the tutorials talk about iOS.
But eventually I figured it out, despite that there's some weird bugs in Xcode's GUI for doing this.
Shocking.
Yeah.
But then, of course, I knew when I was implementing this, I'm like, this is not going to actually solve the problem because the race condition is I'm going to send that notification, but I have no idea in what order front and center will see things.
Front and center could see a mouse click and then an activation and then have to make a decision.
And then three milliseconds later, get a notification that says, oh, by the way, I'm switch glass.
I just did that.
And front and front is like, oh, too late.
I already activated all the, I already pulled all the windows to the front.
I didn't know you, like, there is, it's a race condition.
I have no idea when those things will come.
In practice, the timing is, you know, it's a pretty good race condition.
Most of the time it comes in time, but sometimes it doesn't.
Oh, goodness.
And you can mess with the windows or whatever, like the window of time of like how long you're going to wait.
But I don't want it to be slow.
I don't want it to be like, I'm going to wait three seconds to see whether I should bring all the windows forward because that's a terrible experience.
Like, I want it to be fast.
so i did the notifications and it worked most of the time but that's not a solution now that's just a race condition so i had to come up with another solution and this is where i had to get creative and or even more disgusting but already this is by the way way too complicated because now i have you know these things they're already listening for different events and they have these darwin notification centers and then i have them sending messages and they're in an app group and all this other stuff like
for, for a very rare use case.
And it doesn't even cover a hundred percent of the cases.
Cause especially with race conditions, I'm using whatever my 12 core Mac pro.
I have no idea what these timings are like on someone's on Casey's crappy 12 inch MacBook, like number of cores and what else is going on and how much memory, like do not trust how things behave timing wise on your computer, you know, and then half the ones I'm running in like Xcode debug builds.
What is it like with release builds?
So I'm making release builds or whatever.
Yeah.
So my belt and suspenders approach was, yeah, do that.
And when that works, great.
But you know sometimes it's not going to work because you're going to lose the race and things are going to come in a different order.
How do you handle that?
So the way I handled that was...
Since these things are in the same app group and I have a shared container where they can both write files.
And since one of the things that is the nature of switch class is that the switch class window doesn't move around or change size too much.
It only moves when either an application is quit or launched or if someone if you use the preferences to move it around.
What I can do is anytime the switch glass window moves or changes size, I can record the coordinates, the frame of every switch glass switcher that supports multiple displays, and I can write that to a file in the shared container.
And then front and center can read that file
And always know the coordinates of the switch glass things.
So when a mouse click comes along, there's no more race because front and center will have read those coordinates ages ago.
And as long as the window hasn't moved since then, even though it doesn't know where the click happened, like in terms of what application or event, it doesn't know the X and Y coordinates on each screen.
And I can see based on your, you know, coordinates of all the switch glass app switcher frames,
did that clicks x y coordinates land in in a switch glass thing in which case you should ignore it because switch glass is the thing that made that app activate wow that's that still doesn't cover a hundred percent of the cases because you can imagine a scenario where you very quickly quit an application and move the palette and click on it like you can do some video game gymnastics to outrun this thing right
Because it is writing a file to disk and it's being read.
And by the way, you use a Darwin notification to tell it immediately to read the file, right?
Like the file has changed.
Yeah.
But it does work.
And I have not been able to induce any kind of buggy behavior in all of my testing with both of these approaches.
Occasionally one will miss, but there's always the other one there underneath.
And a surprising amount of time, the synchronous one with the notification, like 90% of the time that one works and wins and doesn't rely on this fallback.
The fallback is just there for the scenarios where I lose the race.
And then that one works.
And then, of course, the complication is, but do you really want to be sending all these notifications of writing these stupid PLIST files?
So I need both applications to not do this crap if the other one isn't there.
If you just have switch class, I don't want any of this stuff running.
If you just have front and center, I don't want any of this stuff running.
Luckily, both of them are constantly watching applications be launched and quit.
So they always know when their companion appears and when it disappears.
Right.
They both do that already.
So there is no polling.
There is no you know, there are no spin locks, no loops.
And both of them will just shut up and be and be quiet and be themselves when they're just there in isolation.
But as soon as their companion appears, they'll start communicating and cooperating with their frames behind the scenes.
And if one of them quits, they'll stop doing that and they will stop listening and stop sending notifications.
is way too complicated for what looks like a stupid application switcher thing but i have to say it was one of the most fun things that i did in this development because it is completely not needless complexity but like surprising complexity for what looks like a very simple application again of my own making because i made two of these stupid apps that both do weird things and i made both of them have way too many options and be way too flexible instead of being like opinionated and saying it just should be classic mode everywhere that would have avoided all this problem but
It was a fun programming challenge, and this was the – I guess the most interesting technical – the most interesting thing that didn't have to do with working around bugs.
It was just entirely – it was just me and my own bad decisions about my own applications that I had to solve a problem.
And it was fun doing it, and it was fun, like, essentially doing –
server-like program without any servers because it's you know sending requests and responses and notifications and all that other stuff is a lot like server-side program but there's no servers running there's no networking it's all through the kernel and uh it's pretty neat may i propose an alternate solution sure why don't you just build in the front and center functionality as an option in sight glass and
i absolutely thought of that i absolutely thought of that that before i did the stupid frame thing i'm like i should just combine these two apps because then you don't have this problem they're both the same application there's no coordination things they are literally the same app uh i thought about it seriously for a long time the reason i decided against it well two reasons one
Not everyone wants both these apps.
What I'm proposing is not that you combine the apps.
What I'm proposing is that Cyclast becomes the both app and that front and center becomes the smaller baby version if you don't want the Cyclast mini dock thing.
Switchglass, not Cyclast.
I know it's a bad name.
Sorry, I was thinking expensive coffee places.
um no i didn't want i didn't well the first thing was some people don't want both right so if you make switch glass the one that has both still same issue what if people don't want that other functionality you're like well if they don't want it they don't have to use that functionality switch glass like make an optional then we get to the second problem the second problem is
It is so hard to just explain what front and center does.
You can't even keep the name straight.
I know.
What can I tell you?
I only made up one of these names and it's the one I like less.
Anyway, front and center is hard enough to explain as it is, right?
And it's like preferences UI and its settings are themselves weird and hard to explain.
but switch glass is also surprisingly strange to explain and has a ton of options because that's the way i wanted to like if listeners this is a time when you should go to the show notes go and look at my website like you don't have to buy the app just look at the website and look at the stupid preferences window for switch glass and get an idea of exactly how far down the rabbit hole i went with customization it's a
If I combine both these applications, just trying to find a way to communicate all the functionality would have been incredibly hard, especially because this is a complication.
Maybe we'll get to another war story.
Switch glass is configurable per monitor.
So on each display, you can choose whether or not you want the palette to appear and every single setting about how like where it appears and everything.
Right.
And so when you bring up the preferences, it brings up a window in every single monitor, kind of like display preferences, you know, you do displays and it brings up a separate window in every display.
That's how you configure displays separately.
That's how this works.
That's not how front and center works.
Like just dealing with the UI issues and the explanation of how this stuff works alone is
It was just... It would have been a much bigger task.
Like, at that point, I'm basically signing up to start making drag thing, and I'm not ready to sign up for that yet.
So I'm going to make two... You're going to give it another two weeks.
I'm going to make two purpose-built applications that do specific things.
If you want one, or you want the other, or you want both, like...
They'll work in all scenarios, but they're like single purpose things.
And within those single purpose things, it's hard enough to explain and get working.
Right.
But but you're right.
That is a technically better solution.
Obviously, the real solution is why don't you just make a new drag thing like you're you're two percent of the way there already.
Why not just do the other 98 percent?
And I am thus far very capably resisting the urge to do that because that is way more work than I've been doing.
And I just want these two little things, and I just want them to work together.
So, yes, that did occur to me and would be more straightforward technically, but I would still be working on that, and I would probably get to a point where I regretted it terribly because just trying to figure out how to massage the preferences UI into something sensible would just be...
Not from a technical perspective, but just like user interface design.
How do I convey to the user how all these different things work?
It's hard enough.
Like if you look at the switch glass preferences, this section of it that applies globally and there's another section that applies just to the display.
And I try to label that and try to explain that.
But even that, it's not it's not a great interface.
Like it's a difficult problem if you want to have per display settings, but also have global settings, but not have two different preferences things.
You end up having to make like, you know, like a quote unquote real preferences dialogue with like the toolbar at the top and the different images.
And it's just it's complicated.
So.
Anyway, that's enough war stories for this week.
I can revisit it in future weeks because there are plenty more interesting and fun things about developing what looks like a very simple application.
But just to give you an idea of the ridiculousness that's lurking under the covers of this thing that lets you click on an icon and bring an app to the front.
Awesome.
It's so true.
I mean, I had the bare bones of Peak of You done really, really quickly, but it was trying to get it to work the way I wanted to and do the things I wanted to do and be more polished and like, golly, I spent...
probably a couple of days on the zoom in animation.
And I already done almost the exact same thing on vignette, but I was doing it differently and I wanted it to work a little differently.
And that alone took me days, which is probably an indictment of my own skill in UI programming more than anything else.
But that's just not the sort of thing that comes naturally for me.
And, oh God, there's so much, there's so much to even the simplest app.
And the,
And I don't think I have it as bad as you, John, but I run into Apple APIs that are not really as robust as I would like them to be and not really as bug free as I would like them to be.
And like you, if something happens in an Apple API, like a lot of times Vignette would just stop writing updates because Apple's APIs have decided, no, you're done now.
Yeah.
Okay.
Like, they don't really tell me I'm done.
It's just it doesn't work.
And I don't know why.
And, you know, the best theory I've had, and I wrote some code to try to slow everything down because maybe I was hammering the context database too quickly.
And it's just stuff like this is infuriating because there's no way for any regular outside of Apple human to know what the issue is.
And or there's just legitimately a bug.
Maybe Apple didn't design it that way.
In my case, I have a theory that they designed it so that you can only write so much to the contacts database so quickly, which is fine if you tell me what the limit is, but they don't tell you what the limit is.
Welcome to iOS.
Yeah.
Well, and you, John, I think you're probably bumping up against legitimate bugs.
And so, you know, Apple is made of humans.
Humans write bugs.
But still, it's infuriating because there's nothing you and I can do about it.
Or Marco.
I mean, all three of us.
There's nothing we can do about it.
We just have to sit there and go, yep.
If you're lucky, the API that you're running into a problem with will be a commonly used API for normal apps.
That's another one of the consequences of me choosing to make these weird apps.
Regular apps don't ever need to call the APIs that bring other applications to the front.
That is a rare piece of functionality.
So who cares if there's some weird minor bugs in it?
And I'm saying that from Apple's perspective, but honestly, I care as a Mac user.
Set aside all of my applications.
I'm frustrated when I can't
bring all the windows of an app to the front it happens to me a surprising amount of the time again nothing to do with my apps just literally clicking on the dock icon for safari and i want all my safari windows to come to the front and they won't it's been driving me nuts for years but if you're writing a text editor hell if you're writing photoshop if you're writing final cut you will never call those apis they are not relevant to app development so it doesn't surprise me that they haven't gotten fixes whereas if you're using the context api that is widely used on ios and there's a
Maybe they'll add in a subsequent release, oh, yeah, there's a limit and we'll notify you if you call it too many times or we'll document it or something like that.
But I don't think anything's going to happen for these.
What I think is more likely to happen is Apple will be like, why do we even have that API?
Yeah.
third party application shouldn't be asking for other applications to come to the front deprecated you can't use it anymore it's going to go away in two versions like you almost don't want to call attention to those type of apis because they're you know they're like system extension stuff it's not you never need to to make microsoft word you never need to call those apis so you know it's it is what it is