365: Day-One Cowboy


00:00:00   How's Hops? We're getting there. He wore a cool diabetes sugar monitor for two weeks.

00:00:07   The good thing is like the insulin shots are easy because like dogs have all that loose skin on

00:00:11   behind their neck and you just stick it in there like you don't even stick it in the muscle. He

00:00:14   doesn't even notice. Oh, that's what you tell yourself. I told myself the same thing, but

00:00:19   it's still a needle going through your skin. He notices. Oh, I know, but you know, like it's,

00:00:25   thanks, dad. Dogs are very tolerant. It was a branding exercise. I marketed it as chicken shot

00:00:33   because I would give him chicken before and after the shot to kind of try to develop a positive

00:00:39   association with it. Right. Or at least bribery. I don't know. So I marketed it as chicken shot. You

00:00:44   want to come get your chicken shot? And that seems to work where he actually seems okay with it.

00:00:49   I wonder if Apple could take a lesson from that, like, you know, rebrand like App Store

00:00:53   rejections, like beer rejection. Hey, here's, here's a beer. We're sorry we can't accept your

00:00:59   app like this because of these reasons. Here's another beer. I made it this far into winter.

00:01:06   This far before taking out the fisherman's friend. Oh, no, I'm sorry, Marco. I'm sick now,

00:01:17   too. I just, uh, last night's rec diff, I was talking to Merlin about that. I made it

00:01:21   several winters without really getting sick, but it caught up with me. This is it. I have a feeling

00:01:26   this is actually something that we caught from Merlin somehow through podcasts because he was,

00:01:30   he was so sick for so long and we listened to all of his podcasts and you read from podcasting with

00:01:34   him. So you're totally screwed. Somehow if it's possible to transmit viruses over Skype, I

00:01:38   guarantee you this is Merlin's fault. So thanks Merlin. Thanks a lot. I don't have that much I

00:01:43   can complain about really because usually like it's mid February. Usually I am sick from November

00:01:50   until WVDC just every year because like school happens and winter happens and so actually this

00:01:58   is the furthest I've made it through a winter without getting sick in years ever since Adam

00:02:02   started going to school and even like this winter like this has been such a ridiculously mild winter.

00:02:06   I really can't even complain about that really. I do and I will, but I feel like like I bought a new

00:02:11   snowblower this past fall and of course then it hasn't snowed at all. Not once. I bought it right

00:02:16   before Thanksgiving and it has snowed zero times since then and it's just sitting there in my

00:02:20   garage brand new untouched never used never run. Although I gotta say I mean again I think I would

00:02:28   buy a new snowblower every year if it made it not snow. I've only ever bought two and that happened

00:02:35   both of the years now that that happened so I don't know there's some kind of correlation there.

00:02:39   Definitely without question. All right so last week I think it was mostly me. I lamented the

00:02:45   fact that it seemed to me to be a political problem that you couldn't do SwiftUI style

00:02:53   previews of UIKit controls. So you know SwiftUI is this new fancy declarative way of making user

00:02:58   interfaces. UIKit is the old and busted except it actually isn't busted it actually works but that's

00:03:03   neither here nor there way of doing things and I want to have that sweet sweet live preview of UIKit

00:03:08   stuff and a bunch of people wrote to point to a couple of different links one of which is NS

00:03:14   Hipster which I definitely read in the past it's completely slipped my mind that will show you that

00:03:18   yes it is possible to do this with a UIKit view so I'm not entirely I feel like this kind of

00:03:26   implicitly corroborates my theory that it's all just political and little else but one way or

00:03:32   another we'll put a couple links in the show notes to indicate instructions on how to do this for

00:03:36   yourself if you are so interested. It was like I was saying last week that you can embed NS views

00:03:41   in SwiftUI things you can embed UI views like that's that's kind of your escape patch and so

00:03:46   this is sort of a you know the most simplified case where it's like I just want to see I don't

00:03:51   even want to use SwiftUI I just want to see a SwiftUI view so I will make a or I want to see

00:03:56   a UI view or an NS view so I will make a SwiftUI wrapper and the only thing in it will be okay now

00:04:02   show my NS view or UI view here which is not really using it for its intended purpose you still have

00:04:08   to end up like passing your data down through the the straw but I suppose you can hold on to

00:04:14   a reference to the UI view and Twitter it elsewhere so I do wonder how it behaves in those situations

00:04:18   but anyway yeah it's it's possible if you want to go that route although to try to develop your app

00:04:24   like this you'd have all these weird sort of candy coatings of SwiftUI that don't do anything wrapping

00:04:30   around all of your actual UI that does stuff that's written in a different API just so you

00:04:34   can get the live previews doesn't seem like a great strategy to me well maybe in the new version of

00:04:38   Xcode you never know moving on folder aliases in the dock this is not a problem that I feel like I

00:04:45   have my world so I pretty much ignored all of this but John I presume you have many many many

00:04:49   thoughts about the many many many pieces of feedback we've gotten last week we were talking

00:04:54   about the thing that happens when you click a folder in the dock sometimes you get the big

00:04:58   springy bendy tower and sometimes you get the big grid and I don't like either one of those things

00:05:03   and Marco was saying how he uses them can never find what he wants and the big grid that comes up

00:05:07   and then I shared the command option click shortcut which just opens the folder and then I

00:05:13   said gee wouldn't it be nice if if you just clicked a regular click and it opened the folder if that

00:05:18   was one of the options if you didn't like any of the two other options and I'd complained about

00:05:23   that in the past I complained about it again on the show I said that should definitely be

00:05:27   an option lots of people wrote in with the suggestion that I should have brought up last

00:05:31   week which is if you make an alias to a folder and you put the folder alias in the dock then

00:05:36   when you click on the folder alias the folder opens just like I want it but that's not exactly

00:05:42   a solution because if you put a folder alias in the dock it looks like a folder aside from the

00:05:47   little alias icon badge in the corner and when you click on it it opens the finder window and when

00:05:52   you drag something to that folder it highlights like it's going to accept your drag and then when

00:05:56   you let go whatever your dragon just springs right back and this is a long-standing complaint

00:06:02   that I have so long-standing in fact that I went back and searched for it myself in my own past

00:06:08   history that apparently can't remember and in 2009 in the snow in my Mac OS 10 snow leopard review

00:06:15   I made this exact complaint for the exact same reasons because I'm nothing if not predictable

00:06:23   and in that complaint in the review I mentioned that I had filed a radar against this in I don't

00:06:29   I didn't say when I filed the radar but the radar was closed in March of 2008 with the explanation

00:06:36   not currently supported so not only have I wanted this for over a decade but it's been more than a

00:06:42   decade since my radar complaining about it was closed by Apple saying no no and it's you know

00:06:49   I like I said in the last episode I do command option click all the time just reflexively but

00:06:55   it still annoys me and the folder alias thing which I also talk about in this very same snow

00:07:01   leopard review from 2009 that annoys me even more because the fact that you can make a an alias and

00:07:08   stick it in the dock like that makes sense to me because it's just like any other thing that you

00:07:12   can drag from the finder into that part you can put files there you can put folders there you should

00:07:16   put aliases there right once you have a folder alias in the dock why can you not drag things

00:07:22   into it like what other sensible behavior is there for a docked folder alias if you have a

00:07:27   docked folder alias and you drag something into it and highlights it's like here I am

00:07:31   dragging stuff into a folder what else should it do that is literally the only thing it should do

00:07:36   and the fact that the bug was closed over a decade ago and the time since no one has ever thought to

00:07:40   either disallow aliases to be in the dock because maybe like no the doc isn't for aliases this is

00:07:45   just for real things fine whatever but if you're going to allow them and you're going to allow

00:07:48   aliases to folders let us drag something into them anyway lots of people had other uh potential

00:07:54   solutions to this one of them was to just write to the docs plist directly you can just add an entry

00:07:59   for a thing that actually is a folder but if you added it like so the doc thinks it's a file it

00:08:03   basically behaves like a folder alias uh and someone uh wrote an automator workflow that

00:08:10   sits in your doc and looks kind of like a folder but when you manipulate it it's really running this

00:08:15   automator workflow to do the things that it's supposed to do all this is just way too much work

00:08:20   for something that apple should just support which is either a just add a third option for

00:08:25   folders in the doc that says hey when i click it open it in a finder window or b let us do the

00:08:30   thing with folder aliases which works in all ways except it doesn't work as a folder you can't drag

00:08:34   stuff into it so yeah everything old is new again and apparently this aspect of the doc has not been

00:08:41   revisited in more than a decade somebody i didn't record who but somebody refiled this as a new

00:08:46   radar that's i'm gonna read this number five nine two eight nine four two three that is the more

00:08:55   recently filed radar on the fact that if you put a folder alias in the doc it looks like a folder

00:09:00   but doesn't behave like one we'll put a link in the show notes all right so you weren't here before

00:09:06   the show and the listeners weren't here before the show but i was lamenting to marco that what kind

00:09:11   of jerk releases an app 45 minutes before we record the show so i didn't even realize that

00:09:15   you had released it when i sat down to scroll through the show notes right before we record

00:09:19   it's almost as bad as releasing an app live on the show i mean who would ever do that so what's going

00:09:24   on john it was no surprise because you both knew about the app and i've been talking about on the

00:09:28   show or whatever um i know i know it was a little bit of uh app review excitement about this but i

00:09:33   will i'll briefly describe what the app is and then we can move on to other things because i don't

00:09:37   want to spend too long on this and have this be like the the show where we all release apps next

00:09:40   next next show it's your turn marco so get an app ready geez uh aggressive timeline right but but

00:09:47   later uh after we may be in an after show or maybe we get through some topics i would do want to talk

00:09:52   about some war stories from the development of this app uh but anyway for now my new app is

00:09:57   called switch glass no it's not a great name it's switch and then the word glass and it's all stuck

00:10:02   together uh it is another replacement for a drag thing functionality that i miss uh the window

00:10:08   layering thing was front and center this is the application switcher palette that i like to have

00:10:14   it's just literally a thing on your screen that shows an icon for every running application and

00:10:18   you click on the icon to switch to the app which sounds to most people like the most ridiculous

00:10:23   thing ever so anyway it's a very simple application most people do not want or need this it has an even

00:10:30   narrower you know potential customer base than front and center which itself was very weird

00:10:36   but i wanted this app because i used the application switcher that was built into drag

00:10:39   thing for years and years and years and drag thing is gone and i just wanted this back so i wrote it

00:10:44   uh it is not the simplest possible mac app that was front and center because i literally had no ui

00:10:48   uh that you interacted with this actually has a little bit of ui but is like the second most

00:10:54   simple app that you can ever imagine but i made it uh made it the way i like it i included way

00:11:00   too many options uh just because that's something that amused me to do i do not recommend this when

00:11:05   you're making an app don't make a million options it's too many options no one needs that many

00:11:10   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

00:11:13   my post about it or the product page and the giant fact where you can read uh answers to all of your

00:11:18   questions like why would anyone want this application and what does it even do and why is it only running

00:11:23   catalina the answer to that is it's swift ui and swift ui is only on catalina and the answers to a

00:11:29   bunch of other questions like uh all the sad limitations of sandboxing let me not implement

00:11:33   all the features that i want that's life anyway it's five bucks i'm starting at the deterrent

00:11:39   pricing level because look no one's gonna buy this thing anyway honestly i i when you have to explain

00:11:46   why would anyone want this you know you don't have a big seller on your i just wanted this to exist

00:11:50   and if there's someone else out there who want who also wants something like this then here you go

00:11:54   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

00:12:01   trying to understand so you have a dock somewhere on your screen that is showing all of your running

00:12:06   applications and then you have switch glass also on your screen also showing running applications

00:12:12   easy to read the fact is he well i haven't had the chance i didn't even know this was a thing

00:12:15   yeah okay i do i do yes uh it's a part of this is kind of habit from the old days but it's like

00:12:23   it's a habit that went away with mac os 10 but then came back as i you know started to use drag

00:12:30   thing to replace it so classic mac os towards the end of its life had an application switcher palette

00:12:36   that just showed little icons for every running application that you could just drag it was just

00:12:40   like a draggable window you could just drag it around on the screen and usually i had it as a

00:12:44   vertical list in the upper right hand corner remember classic mac os did not have a dock

00:12:48   it had an application switcher menu like the upper right hand corner of the screen had a menu like a

00:12:52   pull down menu in the menu bar that would show all your running apps but you'd have to pull that down

00:12:56   and then they added like a little floating palette right and i used to use that and in the absence of

00:13:00   a dock and if you're not doing command tab i don't even remember if command tab was implemented at

00:13:04   the time that thing came out um you click on the app you switch to it it's convenient and you know

00:13:09   it's just kind of get used to it maggots 10 obviously has a dock the dock does the same exact

00:13:13   thing but as i complained about in my early maggots 10 reviews the dock does tons of other stuff too

00:13:20   right so the trash is there you can put folders there even though they behave weirdly you can put

00:13:23   files there also applications that are not running are in the dock and they're mixed in with the

00:13:28   applications that are running uh back in the day used to be able to pin the dock to to the corners

00:13:32   right so you can make the dock be centered on the bottom or you can make it be pinned to the left

00:13:37   side or pinned to the right side and same thing for you know when you had the dock on the left

00:13:41   edge of the screen or the right edge screen you could pin it to the top or the bottom they took

00:13:44   away that pinning feature which is always a sort of undocumented plist hack they took that away

00:13:49   years and years ago and that annoyed me and i you know i just started running the drag thing

00:13:56   application switchers one of the features of drag thing is you can make palettes and put them

00:13:59   anywhere on your screen but you could also make a palette that just always showed your running

00:14:02   applications so i did and i put it pinned to the upper right corner of my screen and i've just been

00:14:06   using it for years now you said why do you need two places to click on your screen to switch

00:14:11   applications you know about me and mousing right like it's not like i don't use command tab i do i

00:14:15   use command tab i also obviously click on windows to switch them around that's the whole deal with

00:14:18   front and center right one of the things i also do is click with my mouse and very often either

00:14:25   my muscle memory or my cursor just finds itself there the upper right corner is a convenient place

00:14:29   for you to go to click on an app to switch to it i also click on apps to switch to them in the dock

00:14:35   how do i decide when to do which i don't know it just i i don't think about it i just find myself

00:14:39   doing it but when i didn't have that palette there in the upper right i missed it and i found my

00:14:45   cursor going to that side and looking for the thing that wasn't there anymore so you know it's

00:14:50   just a thing that i enjoy uh you can also make it smaller than the dock uh or you know i guess you

00:14:57   can probably go the same so you can make it very very tiny you can adjust uh the spacing between

00:15:02   the icons there's never anything else there you can keep your dock hidden right so doc isn't

00:15:07   visible at all and you just use this as a switcher i don't know like i honestly i don't have much of

00:15:12   a pitch for this application other than to say i wanted it to be exist and i made it for myself

00:15:17   and i tried to do a good job on the app to make it so that it's useful for other people too but

00:15:21   if you don't if you don't want this thing you don't want this thing so it's kind of like uh front and

00:15:25   center at least front and center like even if you don't want it adds an ability that you didn't have

00:15:29   before like you can you know shift click to bring uh the whole app forward if you run it in modern

00:15:33   mode or whatever that was an ability you didn't have before this doesn't really give you any

00:15:37   abilities you didn't have before it just gives you a different way to do things you could already do

00:15:40   that's it i mean this looks very pretty and very well done i i am i am confused how you have found

00:15:48   yourself in a position that you feel like this is a part of your computing world but you know what

00:15:52   john you do you and i'm excited that this is here yeah i mean it's just i i'm just as surprised as

00:15:58   you were when drag thing went away i'm like oh well i'll just you know those habits i won't need

00:16:01   those but i i knew probably i knew i would need the window layering because i'd use many things

00:16:04   to do it but i didn't think i would really need the application switcher but i ran without it for

00:16:08   a while and i said you know what i miss i miss the stupid application switch about and like i said and

00:16:14   i just posted on my website uh a short little thing about it i'm not the only one so uh the

00:16:21   author of keyboard maestro you know the mac automation utility like when i was working on

00:16:27   front and center i noticed that keyboard maestro had added an application switcher palette like to

00:16:32   keyboard maestro like it was a new feature of the application just like in one of the menus lurking

00:16:36   in the keyboard maestro menu there's an option that said show application switcher whatever like

00:16:39   what and i showed it and it looks basically exactly like front like a switch glass looks like

00:16:45   i i looked at that i was like wow someone had an application palette i don't have to i can use this

00:16:50   to replace drag thing because i already own keyboard maestro and i run it right but then i

00:16:54   had feature requests so i wrote the author i'm like oh could you change this about the application

00:16:57   switch or could you change that and he was like not really this is not really what my application

00:17:03   does like keyboard maestro does his own thing i just added this for the hell of it and so that's

00:17:08   when i decided rather than pestering this poor person who just added this feature to his much

00:17:13   bigger complicated sophisticated application i should just make it myself how hard could it be

00:17:17   an excuse to use swift ui or whatever um but yeah the whole i don't know uh why it was added to

00:17:23   keyboard maestro but obviously someone wanted this thing besides me so there are at least two people

00:17:29   two people in the world who uh wanted to have an application switcher enough to code it up well

00:17:35   good for you yeah i agree and it is annoying to me how good this looks now are you pulling and i

00:17:41   think i already know the answer to this because i'm pretty sure i saw some discussion about it

00:17:44   you are pulling the actual desktop background in the position um preference is that correct

00:17:50   we're gonna say that for the war stories okay okay okay that's in too depth i think we've more or

00:17:55   less covered it oh and yeah read the blog post more information read the fact more information

00:17:59   i think i covered most of the questions people are gonna ask but yeah we'll get to war stories

00:18:02   later there are plenty but i don't want to bog down the whole being the show with this anyway

00:18:05   switch guys is five bucks go pay for it and never use it again that's ideal yeah definitely never

00:18:11   send any support email exactly that's pretty cool i mean it's funny to you know for for somebody who

00:18:18   is such a you know mac person and a programmer it is kind of funny that you have you know up until

00:18:26   a few weeks ago never released a mac app and all of a sudden you've released two that's pretty cool

00:18:32   like i feel like the world needs more you know public john syracuse of work that's not just cpan

00:18:40   modules agreed yeah i mean no one needs my programming like this is all silly but like

00:18:45   part of it is the mac app store honestly because uh i would not have gone through the hassle of

00:18:50   you know making a website to even just distribute the software and update it and just deal with all

00:18:56   that hassle if i couldn't make like a couple bucks here and there right so but the mac app store makes

00:19:00   it easy enough that i can put in like i don't have to run a store or do credit card processing because

00:19:05   i'm not going to make enough money like i even thought about that for this app because this would

00:19:08   be so much easier if it wasn't sandboxed i could do more stuff i'm like this app is never going to

00:19:12   make enough money to justify me making my own like website and payment processing like it's not you

00:19:19   know i do want to distribute it i want it to be out there for people to use say here's this thing

00:19:23   but there's no way i would have ever done it if you know the mac apps didn't exist now is it worth

00:19:29   the 30 cut apple's taking not for an application that would actually make any money but for my

00:19:33   applications that are just making me hopefully making me enough money to buy that stupid 400

00:19:37   bracket for the inside of my mac pro uh that's i mean this is this is this all goes to the the

00:19:43   pegasus j2i fund uh so you know that's so sad for that amount of effort god i don't understand why

00:19:51   it's why is it 400 an eight terabyte hard drive is like 130 bucks retail because they're only

00:19:55   gonna make like a hundred of these i know it's a bent piece of aluminum painted black i just i

00:20:01   don't understand it yes but it's a custom bent piece of aluminum painted black and apple's

00:20:06   probably taking 50 of that price for their retail margin i i think it's just pegasus i don't think

00:20:11   there's any profit sharing with apple it's just a pegasus but is it sold in the apple retail store

00:20:15   yes then apple then pegasus making probably 200 bucks of that i don't know but i don't know what

00:20:21   that deal is i think apple has this big disclaimer about how these aren't their products i don't know

00:20:25   if there's any profit sharing anyway but there if apple's the retailer like they take a large like

00:20:30   retailers take a large slice of the retail price of items usually it's at least a third

00:20:35   and often half i mean apple is apple fulfilling it i think isn't it sold like in the apple store

00:20:40   yeah i don't know i don't like a third-party seller on amazon i don't know it's anyway no no it's it's

00:20:46   i'm sure i guarantee you it's like a standard retail arrangement like i'm sure apple's taking

00:20:49   probably almost half the cut and you know as as their retail markup and so they probably have

00:20:55   it's probably a 200 bracket not a 400 bracket that has to include the price of the hard drive

00:20:58   which is probably at wholesale i don't know maybe 80 or 100 bucks i don't know how much any terabyte

00:21:02   drives cost these days so you figure it's more like a 100 bracket you know for something that is

00:21:07   machined to precise tolerances and is probably going to sell in pretty low volumes that isn't

00:21:12   that ridiculous honestly well anyway i'm glad that the mac app store exists because it's part of what

00:21:19   made me actually go through the formal i probably would have written these anyway just for myself

00:21:23   but i would not have spent nearly as much time like polishing them to get them to the point where

00:21:26   i'm not 100% embarrassed to put them out into the world and that takes all the time it's really easy

00:21:32   to get this working enough for me to use it much harder to productize it and that was part of the

00:21:37   fun like i said talked about the front and center i wanted to have that experience of like go through

00:21:41   app review deal with xcode you know get a thing on the store like just all all those different

00:21:47   things of course now that i've done with front and center you know it's getting kind of old but

00:21:49   like yeah i've i've had it i've had the experience uh i'm enjoying the program experience as we'll

00:21:57   talk about in more stories later uh but i'm i'm just glad these apps exist because i'm running

00:22:02   them both all the time well i am happy for you that you've put a new baby into the world yeah

00:22:06   me too it's pretty cool yeah we're gonna take a break for a while yeah next week it's marco star

00:22:11   and so you can't you're not casey we're gonna take a break and marco is just gonna kick back pour

00:22:16   myself a beverage and watch mark already did this he made quitter which was exactly the same thing

00:22:19   it's something that he wanted on the mac and he made it although he didn't even bother with the

00:22:24   mac app store do you still use it uh usually not um i i have i've kind of like trained myself to

00:22:31   not use social media stuff too aggressively on my mac enough that i usually don't run it and i

00:22:37   forget about it um but i do use forecast a lot i use forecast because the m3 encoder that's that's

00:22:43   my mac app that i use all the time but you haven't ever taken on that i'm gonna do the final 90 to

00:22:48   polish it to a commercial product you're still just reading it for yourself and using it and

00:22:51   distributing it to friends right correct i mean well yeah because like to actually make enough

00:22:57   money on it because it's such i mean talk about you know you're talking about like super specialized

00:23:01   products with very small audiences like yeah forecast is probably one of those although

00:23:05   honestly it's a bigger market than switch glass i'll tell you that does it i mean yeah there are

00:23:10   more people who make podcasts than want a second thing on their screen showing running apps but

00:23:13   how many people are encoding chapterized podcasts and would know about this it's it's not a big you

00:23:19   know it's probably a hundred people or less everyone you could sell to you already gave the

00:23:23   app to that's your problem well right and that's that's the thing it's like for you know when i

00:23:27   have an app that's like forecast where it's like what would be a good price for forecast it's

00:23:31   actually it actually has a lot of utility so i think five bucks would actually be too cheap

00:23:36   you know i think if i was going to charge money for it it would probably be i don't know 20 30

00:23:40   something like that 99 it's a pro app uh yeah i was gonna say 100 bucks just just make it just

00:23:45   make the window black maybe but if i'm gonna charge that much money for it i have to then

00:23:50   also offer a level of support that would be commensurate with that level of money and then

00:23:55   that would be so much hassle and so much time for me that it wouldn't be worth having those sales in

00:24:00   the first place because there'd be so few of them yeah because you're not going to use it you're not

00:24:03   even visualizing it as an income stream you'd be like oh i tried to use this chapterized thing on

00:24:07   this mp3 can you look at this file for me and it's like what am i doing am i debugging your weird

00:24:10   mp3 file for the you know 20 bucks you gave me three years ago on an app that no longer makes

00:24:15   any money exactly that's why like if i make the decision that an app is probably never going to

00:24:21   bring in enough money to like notice then i'd rather just have it be free than have it be cheap

00:24:27   because i don't want to deal with the support entitlement that people sometimes rightfully feel

00:24:33   about the amount of money they spent on your app yeah if you make a five bucks you could you know

00:24:37   fund your next mac pro hard drive bracket or something but then after that you know

00:24:42   put it to bed i mean you should you should see some of the emails i get for people who have

00:24:46   paid the overcast ten dollar a year subscription like that's who some people get really upset about

00:24:51   things like that yeah but even though and what crushes me so much is when people say i hey i

00:24:57   downloaded your app and it doesn't have you know some feature like video it doesn't have video

00:25:02   podcast playback so i bought the subscription to see if it had it then and it still doesn't have

00:25:06   a refund it's like oh i never said that would add it and i can't issue refunds because app store

00:25:13   oh like it's just so people do not like hearing that i can tell you they do not like hearing that

00:25:19   you can't issue refunds because nobody believes you all i do is i i send people a link there's

00:25:24   an i'more article like if you search google for app store refunds like every other google search

00:25:30   there's an i'more article in like you know one of the first three results and so and it's like how

00:25:34   to get it refunds from the app store i just send people that link i'm like i'm sorry i can't do it

00:25:37   i send them the official apple page i'm afraid if i send them to a third-party site they're going to

00:25:41   be like this isn't true this isn't even apple's site just give me my refund i think it's more

00:25:46   likely that the i'more page will remain there and remain current than some random apple support

00:25:53   document about app store refunds yeah yeah i i click through the apple instructions to see that

00:25:58   it looks like it works and i think it does people are getting refunds so they they can figure it out

00:26:01   that's i said it in slack before uh we started the show that like uh applications that are hard

00:26:07   to explain and easy to misunderstand is my new niche on the mac it's like front and center you

00:26:13   can't even explain what the hell it does then people get it and they think it does whatever

00:26:16   they had in their head and it doesn't do that and then they're angry about it and then this thing

00:26:20   it's like you look at the screenshot and you think you know what it does you think it's basically a

00:26:23   drag thing where you can make a configurable set of palettes everywhere like that's not how this

00:26:26   works and people don't read and they just buy it and they're angry so that is the uh the thing

00:26:31   i've carved out for myself weird little apps that satisfy my own needs that other people do not

00:26:36   understand and one thing i love about your apps first of all they are you know these kind of

00:26:42   little utilities they exist but they usually are not nicely done and you are actually caring about

00:26:51   things like the gooey spacing of the preferences dialogue it's like how many people who launch

00:26:58   one of your apps even even people who would use it every day how many of those people are going to

00:27:03   see that preference of screen a at all or b more than once and yet you're putting in all this effort

00:27:09   into like getting all the spacing it's like the only window in my app you know i know i'm a lot of

00:27:14   like i get it but like you know like you know like if i tweak the interface for forecast which i

00:27:19   should probably do because i don't know what i'm doing uh but like you know the ui of the app is

00:27:23   the app like it's you're constantly using the ui like i feel like that's like a high risk you know

00:27:27   a high reward thing to do whereas what you're doing is putting tons and tons of time into

00:27:32   perfect into perfecting a screen of the app that most of the users will never see or will see once

00:27:38   and that's kind of cool and then the second thing i like about what you're doing is that you are

00:27:43   making apps that adjust mac behavior in a way that a provides utility to people but b that in our new

00:27:52   world of quote the future of computing called ios these wouldn't even be possible neither would

00:27:59   quitter neither would things like clipboard managers which i love so much like this is the

00:28:03   kind of utility that makes the mac so great it's like you can actually customize it like first of

00:28:10   all you can have apps that interact with other apps in non-trivial ways and in ways that weren't

00:28:16   like pre-programmed by the target apps you can have apps that add things to effectively the system

00:28:22   shell that you you have something that's always displayed or that's displayed you know permanently

00:28:27   in the background or whatever you can do things like interact with the desktop like this is all

00:28:31   stuff that you can't do on ios like at all nobody can make utilities like this for ios except apple

00:28:39   and they won't like third parties can't do this and so that's i think it's just it's cool from

00:28:46   the point of view of like a kind of reinforcing the mac as like hey this platform is not dead or

00:28:52   not like a relic of the past this is actually a current thing that people use and love and b

00:28:57   kind of just taking advantage of the power that we have in this platform of like look you know i

00:29:03   know it's i know a lot of people love ios and that's great and there's some advantages certainly

00:29:08   but the mac is really cool for lots of things and lots of reasons that ios will probably never be

00:29:14   able to offer and the ability for utilities like this to exist on the mac and to be as good as they

00:29:20   are will never happen on ios and that's pretty cool yeah i mean it's it's kind of weird because

00:29:27   the mac is getting harder to do stuff like this on and ios is arguably getting slowly easier for

00:29:33   things like third-party keyboards or you know the share extensions and stuff right so they're moving

00:29:37   towards each other but they're still very far away and this is i've always liked this type of little

00:29:43   utility thing for the mac like things like i said things that change how you use the mac

00:29:47   lots of people ask me with front and center everything aren't you afraid you're gonna get

00:29:50   sherlock that apple will implement this functionality i'm begging apple to implement

00:29:53   this functionality sherlock all of my apps make it so i do not have to continually keep these things

00:29:59   running as you change the operating system and deprecate the apis i'm using or whatever

00:30:02   please take front and center's functionality build into the os let me pin the dock to the

00:30:07   ends add a dedicated application switcher like it used to be in class like i welcome that with

00:30:11   open arms anytime you do any kind of system extension that's a possibility right if you're

00:30:16   trying to make your living for it off of it you don't want apple to sherlock you but if like me

00:30:20   the only reason you're the only reason you're making these things is because you have no choice

00:30:25   like then i'm totally happy for them to be integrated and even if you're trying to make

00:30:29   your living off of something like that be aware that if you make something that extends the system

00:30:34   and it actually is popular like this is awesome i'm making tons of money i made this cool thing

00:30:38   and it's like to give one example which i don't think apple will make but like you mentioned

00:30:42   clipboard history right i think clipboard history has broad appeal if implemented well

00:30:47   there are lots of third-party applications that implement it i can't live without it

00:30:51   apple could build that into the system uh i still think they i wouldn't like their implementation as

00:30:57   much as the third-party ones but it would be cool to just know that every mac out there has

00:31:00   clipboard history in some fashion you know what i mean oh yeah um and so if you're making a really

00:31:05   good clipboard history manager like i use payspot i think it's really good you have to be aware it

00:31:10   could be that despite you making this app and maybe making lots of money off of it at any point

00:31:14   apple could decide this year we're going to add that to the os and that's just the price of doing

00:31:18   business when you're extending the system and it's true of applications too you know if you make uh

00:31:23   i don't know uh thing that lets you read articles later apple could add that feature to uh its

00:31:28   applications and you know could and did what can you do uh you could keep going because nobody uses

00:31:33   it yeah yeah that's the other thing just because they added to the operating system doesn't mean

00:31:38   people still won't want your fancier much more configurable version but you never know well

00:31:43   congrats john i hope you uh earn enough money for a wheel for your no i can't afford a wheel i just

00:31:49   want i just want a bracket that holds hard drives not even one wheel you can't do one wheel if they

00:31:55   sold the wheels individually that'd be nice you could go on like a payment plan i mean you'd be a

00:31:59   little lopsided for a while every six months you get one wheel for 100 bucks oh my goodness

00:32:04   we are sponsored this week by bombas working out is hard it's always been hard even when it's easy

00:32:11   it's still pretty hard bombas socks can't change that but they could make it more comfortable

00:32:17   if this year your theme or your resolution is to get fit start by getting socks that can keep up

00:32:23   every step of the way you do a lot of things to stay active lots of different things so bombas

00:32:28   made lots of different performance socks designed from everything from running to hiking to cycling

00:32:32   and more if you're very into sports or if you're planning to get very into sports bombas can help

00:32:37   there with performance socks and styles made specifically for basketball tennis running golf

00:32:42   and more there too these are made with a lightweight poly cotton blend which means no

00:32:46   matter how hard you're working your feet will stay cool dry and comfortable never sweaty and

00:32:52   bombas socks are just really good socks they provide support in places you didn't even know

00:32:56   you needed like your arches each sock is built with a special arc support system that's supportive

00:33:00   but not too tight kind of like a nice hug but on your foot a foot hug and constantly pausing your

00:33:06   treadmill to adjust twisted bunched up socks is enough to make anyone ready to quit that's why

00:33:11   bombas are designed with left right contouring and a y-stitched heel so they stay perfectly in place

00:33:17   and you ever notice that annoying toe seam most socks have along the toe that little ridge on top

00:33:22   bombas got rid of it they designed it out it's gone just smooth sailing all the way across the

00:33:27   top of your foot i gotta say i use bombas socks myself a lot of the time and i recently you know

00:33:32   i i got for christmas i got a couple of their merino socks these are my favorite socks i like

00:33:37   them so much i actually just earlier today ordered more because i keep going through them like first

00:33:42   thing on every laundry cycle and then i run out i gotta wait till the next laundry cycle to get more

00:33:46   get my bombas back so i had to order more to get more pumpas because they're so good so also did

00:33:51   you know that socks are the number one most requested item in homeless shelters bomba socks

00:33:55   were created to change that for every pair you buy bombas donates a pair to someone in need so go to

00:34:00   bombas.com slash atp today and get 20 off your first purchase that's b o m b a s.com bombas.com

00:34:10   slash atp for 20 off bombas.com slash atp thank you so much to bombas for hugging my feet and

00:34:17   sponsoring our show all right so the oscars were a couple of days ago and uh i would just like to

00:34:27   let you gentlemen know that apple's laptop keyboards did not actually win an oscar they kind of anti-won

00:34:33   an oscar so i actually i saw that this was the thing but i i never got a chance to watch the

00:34:39   video so would one of you like to explain to me what happened here yeah this is taika watidi uh

00:34:43   what did he do he was directed jojo rabbit this year which was nominated he's done a bunch of

00:34:48   things and been in a bunch of things um and he was in that thing where you stand in front of the

00:34:52   weird background uh like the big backdrop and the press asks you questions i believe it's called a

00:34:57   step and repeat i how do you know this that's the picture-taking thing i'd like it a red carpet

00:35:02   there's like a big banner oh i didn't even know that yeah like the big banners and you stand in

00:35:05   front of me get your picture taken you keep walking oh yeah i know what you're talking about

00:35:07   i just didn't know that's what it was called those are called stepping receipts anyway he's standing

00:35:11   in front of us and he's taking questions someone asked him like something i don't remember the

00:35:14   question it's like with the writer strike writers guild something or other how do you feel about what

00:35:18   you know what should writers do or what would you like to see happen it was some question that

00:35:22   really wasn't leading in this direction at all it was a hollywood question about the entertainment

00:35:26   industry and and being a writer or whatever and his answer was a whole big spiel about how apple

00:35:33   needs to fix its keyboards like that would help writers because writers are out there in hollywood

00:35:36   and they're typing away on their apple laptops because it's hollywood and they all love max

00:35:39   but those keyboards are terrible and here's here's the quote that it gets keeps getting passed around

00:35:44   the money quote what are some of the needs that you believe that writers should be asking for in

00:35:49   the next round of talks with produce um apple needs to fix those keyboards though they are impossible

00:35:56   to write on they've got they've gotten worse that makes me want to go back to pcs because pc keyboard

00:36:02   the bounce back on for your fingers is way better and the hands up who still uses a pc

00:36:07   you know what i'm talking about this is a way better keyboard and those apple keyboards are

00:36:13   horrendous especially as the computers as laptops get newer and newer i mean here's the new the

00:36:19   latest the latest one the latest uh new iMac the keyboards are worse and i've got very about that

00:36:27   some shoulder problems i've got um like a sort of ooze don't know if you call it over here like this

00:36:32   sort of thing here which is that tendon that goes from like the forearm down into the thumb you know

00:36:37   what i'm talking about you guys who are writing and what happens is you open the laptop and you're

00:36:41   like this so we've just got to fix those keyboards wga needs to step in and actually do something

00:36:48   this you know went all around the web because it is you know the oscars are a mass market thing

00:36:54   apple's keyboards despite all us complaining about them in all the stories in tech world

00:36:58   generally don't break out into the same world as hollywood entertainment

00:37:03   but here here it is the crossover event of the century

00:37:05   famous hollywood person hates apple keyboards now a couple things are interesting to know about this

00:37:11   one when he's describing it he you know he's just you know speaking off the cuff and he mentions

00:37:17   like on apple's new iMacs and so you might start listening and say is he actually complaining about

00:37:24   the laptop keyboards or is he because he said iMac but really as he goes on it becomes clear as he

00:37:30   explicitly mentions keyboards later or laptops later the massive brand footprint that the iMac

00:37:37   name has still in people's mind from that teal compute plastic computer all those years ago

00:37:41   is such that when a brain just reaches for what was the name of that apple product sometimes the

00:37:48   thing that pops out is iMac especially when you're thinking of a Mac so i thought that was fascinating

00:37:52   but but no he is actually talking about the laptop keyboards but the second thing is because he's not

00:37:56   a super duper tech nerd he's not specifying oh i don't like the butterfly keys he doesn't know what

00:38:01   butterfly keys are we also don't know does he hate the new 16 inch macbook pro with the good fixed

00:38:10   keyboard i don't know he might hate that one too like there wasn't enough information for tech

00:38:15   nerds to latch onto but you know all this the summary here is that these keyboards even if

00:38:22   apple fixes them all to everyone's satisfaction tomorrow which they still haven't done because

00:38:27   they're selling the butterfly keyboards on all their laptops except for the one that margo bought

00:38:30   for years apple will continue to have this reputation of keyboards that people don't like

00:38:36   and if it is actually the case that people still don't like the keyboard on the 16 inch macbook pro

00:38:43   apple still has more work to do again i don't know this is just one person's complaint i suspect what

00:38:48   they're actually complaining about is the butterfly keyboard whether they know it or not and i suspect

00:38:52   they don't know or care that there's a new laptop that has a different keyboard and i suspect further

00:38:56   that if you showed them the new keyboard they might say they like it better but it'd still be

00:38:59   grumpy about it because in their minds apple and keyboards like i said they've gotten worse you

00:39:04   know it makes me want to go back to pcs because the keyboard is not satisfying to him so much so

00:39:11   that when you know at the oscars in front of a bunch of press ask questions that have nothing

00:39:16   to do with tech they weren't asked like what kind of tools would help you you know or maybe it was

00:39:20   like what would help the writer's guild or whatever but it wasn't about a techn it wasn't a technology

00:39:23   question and this is what he came up with so this is not good for apple uh and this just goes to show

00:39:29   the the lasting legacy of the butterfly keyboard even though apple thinks maybe that they have

00:39:37   solved this problem with the combination i mean the official party line like what what they've

00:39:41   actually said you know from pr marketing like what they've actually said is a like you know the 16

00:39:47   inch has this wonderful new magic keyboard blah blah blah and that b that the like new materials

00:39:53   revision of the butterfly keyboard is doing great and so it kind of sounds the the public statement

00:40:00   seems to currently be this problem is behind us now whether they believe that internally we don't

00:40:05   know a they very much haven't solved it like most people who are using their laptop for like non

00:40:13   super high-end stuff like you know if he's talking about in the context of using it as a writer

00:40:18   you think he has a 15 inch maybe i think it's very clear that apple sells a heck of a lot more

00:40:24   uh 13 inches and airs so if this is a market that largely uses those they might not even realize

00:40:32   that there is a model with a better keyboard because they aren't shopping for a laptop that

00:40:37   big they don't want one that big and so not only is this problem not solved in any of the smaller

00:40:45   ones from the like you know butterfly reliability perspective but this shows that also he wasn't

00:40:51   talking about reliability he just hates the low travel so it isn't enough that they simply might

00:40:57   have fixed the reliability or at least improved their reliability with the new materials revision

00:41:01   last year like they have to get rid of this keyboard altogether because even if it works

00:41:07   perfectly a lot of people still hate it which i'm one of those people so i totally get that

00:41:11   so that's one problem the other problem is what if they had actually replaced every single keyboard

00:41:18   in the lineup which i think this makes clear they have to do that they still are going to have years

00:41:26   of reputation damage from people who either don't know that they have been fixed or are still using

00:41:33   an old one that hasn't yet had the new keyboard put into it or still remember being burned by having

00:41:41   owned one of those that's going to take years before it's mostly behind them and it just goes

00:41:48   to show like how immense the damage has been done to their reputation and to their brand image

00:41:53   and to their customers image of like do i want to even buy apple products anymore

00:41:57   the the immense amount of damage that they did i honestly think this has been the biggest screw-up

00:42:04   in the last at least decade for the mac and possibly for apple period it's such a huge deal

00:42:10   and when we were all saying you know hey this is this is kind of a problem we were saying that for

00:42:15   years a lot of people were telling us why do you why don't you just forget about it why don't you

00:42:20   just move on why don't you just stop harping on it it's not that big of a deal i like my butterfly

00:42:24   keyboard like no this was a really big deal it still is a really big deal and it's going to

00:42:29   continue to be a really big deal for years after they completely removed from their lineup which

00:42:35   they now definitely have to do and still haven't yeah this is a tough thing for apple too because

00:42:41   this is this is the type of press that apple hates which is basically not particularly informed and

00:42:48   in some ways unfair criticism from someone very famous right so like he went he went into a thing

00:42:56   of like talking about his art is it unfair i don't know i don't think he was talking he was talking

00:43:01   about his rsi and everything and for all the faults you could have with low travel keyboards i have

00:43:06   never seen anyone even you know imply that they increase the the risk of rsi you know if anything

00:43:12   they should help because you're pressing less hard on the keys or whatever like there's no foundation

00:43:16   for that but when you're annoyed with something when you're just a regular person who doesn't

00:43:20   care about tech stuff or whatever you're just you're just a regular consumer and you have this

00:43:23   thing and the keyboard annoys you and maybe you keep buying them and like the keyboards used to

00:43:27   be better and you keep buying these new apple laptops and you don't like the keyboards you're

00:43:31   going to map all sorts of bad feelings onto that so you're going to say yeah my shoulder's been

00:43:34   bothering me and i bet it's because of these new keyboards which is not it's not because of the new

00:43:39   keyboards but you still don't like the new keyboards and that's like the worst case scenario

00:43:43   for like public relations where someone with with a big microphone like someone in front of a million

00:43:47   cameras at the oscars right is asked an unrelated question and of their own accord pulls out let me

00:43:54   complain about an apple product like i can just imagine those people going oh no like this is the

00:43:59   word it's like you know it's not it's not a good day for apple and it's it's not and you have to

00:44:05   just deal with that people are not going to try to be fair and even-minded with their criticism

00:44:09   and if they just feel like saying i think this thing caused my rsi they're going to say that

00:44:12   right and that's going to become the story you know famous person says apple products have

00:44:18   bad keyboards and it will you know even if it was a hundred percent false which it's not like there

00:44:23   some people don't like keyboards even if even if there was nothing to this story it would still

00:44:27   have traction so i feel for apple pr um you know like this is i think the first time that the

00:44:36   keyboard problem has had something like this happen where it's a magnified example of extremely

00:44:43   you know like worst case scenario potentially unfair criticism everything else has been like

00:44:48   we're a bunch of tech nerds and we love apple but we're disappointed by this thing

00:44:52   and trying to be reasonably fair and measured about it uh but hollywood director doesn't care

00:44:59   about being fair and measured about technology product opinions he's just gonna say i don't like

00:45:03   these darn keyboards right and that's that's what happened so i kind of feel for apple but uh other

00:45:09   people may be you know having the opposite feeling of just glee that that apple is getting slammed

00:45:14   for this i don't have any glee about it um i i mean i do find myself wondering uh you know tica

00:45:20   give us a call uh do you who you know do you like the new keyboard do you like is the 16 inch better

00:45:27   right because if it's not then that's even the worst scenario where it's like i don't know i

00:45:31   mean it's just one person like you know some people will just never like keyboards that aren't the ibm

00:45:36   model m or whatever right everyone has their own personal opinions and it's a shame when that person

00:45:41   is very famous and says i'm never going to use anything except for a buckling spring keyboard

00:45:45   and apple doesn't offer those on his laptops therefore i had apple laptops that's another

00:45:49   example of unfair bad pr from a single person but that's the world we live in right but i do wonder

00:45:56   like you were saying marco you know if if everything had the new keyboard is the problem solved marco

00:46:02   likes the new keyboard but and you know and this wasn't even around reliability this is about you

00:46:07   know feel but how does the rest of the world feel about the new keyboards when it eventually replaces

00:46:12   the old ones will people buy a new apple laptop and say oh it's better than the old keyboard but

00:46:18   they used to make them even better even if that's not true they might save them that to themselves

00:46:21   for the rest of their lives right again unfair right like in reality maybe this keyboard is

00:46:27   better but they have this this rose-colored glasses memory of apple of marco's best laptop ever that

00:46:33   you know whatever whatever they're remembering about how the keyboards used to be they'll even

00:46:38   if apple makes a keyboard that's better than that in the future they'll always be like yeah they

00:46:42   used to be better like that's just human nature and you can't fight that's the danger of having

00:46:46   a misstep like this that you know you're like well we corrected it and we made a new keyboard and and

00:46:51   it's better and in blind tests everyone likes it better than the old one it's reputation and people

00:46:57   are stubborn about reputation you know you just think of all the people you've heard in your life

00:47:01   who have told you how much they hate insert company x you know weber grills delta airlines you know

00:47:08   whatever some company that did some bad thing or had some bad product three decades ago and forever

00:47:14   this person every time they come up just complains about it and says their new products are no good

00:47:19   whether or not that that's true that's the danger of of taking a misstep the reputational damage can

00:47:24   live as long as the people it lives inside which is not fair to the company especially if they fix

00:47:29   things or you know used to make crap pox it was true of japanese cars i don't know if you either

00:47:35   one of you have talked to your grandparents about the reputation products from japan used to have

00:47:41   like after world war ii right japan makes crap and they're like i'm never buying a japanese car they

00:47:46   make garbage and for some of these people for their whole lives just always thought japanese

00:47:51   cars were garbage whereas if you you know if you were in a later generation you think japanese cars

00:47:56   reliability they're they're well made they're reliable and that's the reputation japanese

00:48:00   cars have and even if japan's quality goes downhill maybe we'll have that reputation in our

00:48:04   mind it's very difficult to dislodge these things sometimes the only way they ever go away is that

00:48:09   generation people of dying and the new generation of people thinking oh japanese cars that's

00:48:13   synonymous with reliability because they make good cars yeah i think i think the way that you

00:48:19   minimize the risk of this happening to you as a company you know a obviously try not to ship

00:48:25   flaws right but nobody can do that every time nobody's perfect every time so i think you know b

00:48:30   if you ship a flaw try to recognize it and rectify it as quickly as you can so that the number of

00:48:39   people who have negative experiences with your product is as small as it can be and here apple

00:48:45   seemed to do the opposite of that they seem to not only not recognize it because this was this was a

00:48:51   problem since the 12 inch macbook in 2015 they had plenty of time and then they moved to the whole

00:48:56   product line with this keyboard in late 2016 and it took them three more years before they released

00:49:02   a single model that didn't have it and now we are you know three and a half years into that timeline

00:49:08   now and they're still selling this keyboard brand new in their probably highest volume laptops they

00:49:16   kind of did the worst possible thing here like you know not only did they ship a mistake okay everyone

00:49:19   ships mistakes sometimes but they have taken an eternity to fix it and they have made the mistake

00:49:26   affect the broadest possible swath of their customer base like it isn't that they continue

00:49:32   just shipping one model with this like if it was only ever the 12 inch macbook you know it would

00:49:36   maybe get a reputation for okay this keyboard kind of sucks in this tiny little laptop but

00:49:40   oh well we'll buy a bigger laptop we can avoid that keyboard but they didn't do that they put it

00:49:45   in all of them so everyone who buys mac laptops which is most people who buy max was forced to

00:49:52   have this keyboard for this entire time span so this was a significant problem and this affected a

00:49:58   large portion of their customer base for a very long time the damage from that is way bigger than

00:50:06   like if the new mac pro had a problem sorry john like if the new mac pro had a problem

00:50:10   then that okay that would that would affect a very small customer base and probably for not that long

00:50:15   of a time whereas like if you know if the laptops have a problem that affects lots of people and

00:50:21   this problem has lingered for years like i'm happy to try to place blame on them for shipping this

00:50:26   keyboard in the first place but just as critical of an error was letting it sit for so long without

00:50:32   replacing it the interesting thing is you can you can actually be cranky and and immature and bitter

00:50:40   about it and still uh save yourself so i was thinking when you're talking about that i was

00:50:46   thinking about other examples of where apple has screwed up um and tennegate uh they made a phone

00:50:53   that had uh you know the story was you wrapped your hand around it the signal couldn't get out

00:50:58   which was true and you could demonstrate it and apple was cranky about it particularly steve

00:51:02   job saying but you could do that to blackberry phones too and and you know it's not fair and

00:51:06   blah blah blah and they had that press conference like fine you want a bumper we'll give everyone

00:51:10   free bumpers like he was just so you know immature and and not not uh magnanimous about it at all

00:51:17   and he was just mad that he even had to have this press conference and give people free bumpers or

00:51:21   whatever uh but two things uh were different about that thing or first of all they did it fairly

00:51:28   quickly the antenna antenna gate story came out and they didn't you know insist that there was

00:51:32   nothing wrong for three years like they fairly quickly had an actual press conference about it

00:51:36   and tried to fix it and the next thing they did was you can be damn sure the phones after that

00:51:42   didn't have that exact same problem they changed the designs of their phone to be better in that

00:51:46   regard whether or not they thought it was fair or thought that the previous phone actually was

00:51:51   no worse than any other phone or whatever it was kind of like bending it too same deal learn from

00:51:56   it quickly and then the very next phone make it less bendy and from that point on have this be

00:52:01   one of your criteria right i mean like it wasn't addressed as like well they did such a good job

00:52:07   and they just had perfect pr like steve jobs was cranky about it right he was the face of the

00:52:12   company and he seemed like indignant that you could be complaining about this which is not even

00:52:18   really a problem but his attitude did not dictate that the company you know what this isn't a problem

00:52:23   we're not going to do anything about it no they still had a press conference they still gave people

00:52:28   free bumpers right if you know and that's that's the bar like you don't have to be perfect you

00:52:33   don't have to be like i'm a saint and if i ever do anything wrong i will be uh you know immediately

00:52:39   uh contrite and i will offer our sincere apology and i will right all the wrongs you don't have to

00:52:44   be that good but time to action is key take reasonably appropriate action learn from your

00:52:50   mistakes and do it quickly and you can even be cranky and now how many people think iphones have

00:52:56   your reputation that if you hold them in your hand they don't get a signal you never hear that

00:52:59   like even from people who who remember and tennegate that is not a slam on iphones you

00:53:05   say iphones aren't those the phones that don't get a good signal when you hold them in your hand

00:53:08   nobody says that but that was that was a big story at the time and they didn't gracefully nip

00:53:15   it in the bud but they did act quickly and fairly decisively and did not continue to ship iphones

00:53:22   with the exact same performance characteristics for years and years and so you know i think

00:53:26   obviously that was a different apple and at a different time and a different scope and yeah

00:53:31   the iphone wasn't as big at that time and then you know there's many things about the current

00:53:34   situation that are different but i think apple itself has shown good examples of quickly learning

00:53:41   from and recovering from its mistakes in an imperfect way such that you avoid this sort of

00:53:48   long-term unfair put scare quotes around that if you want reputational damage i don't i don't i

00:53:54   just don't get it i don't understand why they would double and then triple and then quadruple

00:53:58   down on it and as you both were saying i don't understand why we don't have this across the line

00:54:04   across the entire laptop line and the answer is is because it's a big ship that moves slowly and

00:54:10   i'm not appreciating how challenging it is to make these changes and have them be global changes not

00:54:16   not only in the figurative sense of global across their line their laptop line but global in the

00:54:21   sense of literally these devices are shipped around the world but i mean they seem to be able

00:54:25   to do it phones i mean not exactly the same thing but similar things like you were saying like we

00:54:30   can make it work for phones we ship a hell of a lot more phones we do computers well i think it's

00:54:34   largely about attitude and and about economics like it it probably took them a long time a longer

00:54:41   time than i bet we would have guessed to even decide you know what this was the wrong move

00:54:47   obviously no one took the feedback in 2015 on the 12 inch no one cared obviously the the high

00:54:56   failure rate and low manufacturing yield of that initial 2015 keyboard that information didn't

00:55:02   really go anywhere either obviously there was an attitude that this is the way forward this is a

00:55:08   great period by the way that same attitude seems to apply to the touch bar still they still think

00:55:14   the touch bar is a universal good because if they didn't think the touch bar was a universal good

00:55:19   they would make it optional but they don't so clearly they think why would anybody not like the

00:55:25   touch bar and i think that's still the wrong move regardless like something kept that attitude going

00:55:32   of this keyboard is is great this is fine there's we have no problems with this through all those

00:55:37   revisions and revisions because they didn't want to admit to themselves properly that they were

00:55:42   wrong and then secondly there's a huge economic thing of like you're going to have this manufacturing

00:55:47   line running for x years it's going to cost you you know x dollars to retool and redesign

00:55:54   and re-engineer a different keyboard into this into this line and i have a feeling they just

00:55:59   spread sheeted it and at some point somebody decided hey you know what it would be too

00:56:04   expensive to fix this faster and so we're going to fix it on our timeline and in the meantime oh well

00:56:12   we'll do a repair extension program and sweep it under the rug problem is that didn't work

00:56:17   we are sponsored this week by linode my favorite web host look no matter what you need if you need

00:56:24   servers whether it's from a personal project or a hobby thing or learning how to use linux

00:56:29   all the way up to larger scale things like running an entire app like i run all of overcast at linode

00:56:34   whatever it is you need from small to big linode has the pricing the support and the scale that you

00:56:39   need for your project they have 11 data centers worldwide and they're always adding more they

00:56:43   recently added sydney australia all these data centers have enterprise grade hardware they just

00:56:48   launched an s3 compatible storage option recently and it's all backed by their next generation

00:56:53   network linode delivers the performance that you expect at a price that you honestly don't you can

00:56:58   see for yourself today using code atp 2020 to get a 20 credit and that'll give you access to

00:57:05   everything they have to offer you have native ssd storage and all their servers this 40 gigabit

00:57:10   network behind it all all these servers come with root access you can install whatever software you

00:57:15   need you can figure everything with their api to automate things like expansion or contraction

00:57:20   they have a cli tool in python i use it all the time and all this comes in starting at just five

00:57:25   dollars a month this is great for people who just want to get started who you want to try things out

00:57:30   and all their plans from you know you know i use mostly the bigger ones but all their plans in my

00:57:35   opinion are the best value in the business and i've been with them for almost a decade and the

00:57:40   entire time they've stayed the best value in the business whenever new technology gets better it

00:57:45   gets cheaper they give you more for your money so it's super great to be a linode customer i've been

00:57:49   with them for all this time i run all of overcast there i run markets.org there on the live streaming

00:57:54   server for this podcast there everything i run there i'm very happy with see for yourself linode.com/ATP

00:57:59   using promo code ATP2020 to get a 20 credit that could be four months free on a five

00:58:07   dollar a month plan so once again linode.com/ATP promo code ATP2020 thank you so much to linode

00:58:15   for hosting all my stuff and sponsoring our show you posted some interesting things to instagram

00:58:24   today oh yeah yeah you're not gonna get away with this we'll close out the crank chapter here this

00:58:29   will be the last thing i'm cranky about tonight so i look at my instagram stories at some point in

00:58:34   the evening and i see that you were lamenting the fact that you couldn't debug something in xcode

00:58:40   if i'm not mistaken in the beta specifically and then you were lamenting the fact that it required

00:58:45   catalina and then next thing i know you're doing the thing that you swore that i was not allowed to

00:58:49   do dad and you're installing catalina on a device i'm presuming it's your iMac pro did you buy your

00:58:56   mac pro before or after this this travesty happened i haven't had time yet are you going to

00:59:04   i don't know my fan noise is back i still gotta figure that out but uh no i'm so annoyed uh no

00:59:10   yeah i i've been resisting catalina on my main iMac pro uh i i've had it on my laptop because it came

00:59:17   with it and it's been you know i've been dealing with it it's fine um but as i said before i didn't

00:59:23   see any reason to upgrade to catalina and there only seemed to be downsides and risks no real

00:59:28   upsides and well now i finally had to do it because i upgraded my phone to the 13.4 beta which

00:59:36   presumably sometime in the next few weeks will become the 13.4 release of ios and you can't

00:59:42   develop for that phone with xcode 11.3 you can only develop for it which means i can only do

00:59:49   like the build and run and install development builds on my phone easily from the new beta of

00:59:55   xcode 11.4 which requires catalina they do this every year where like every year like at some

01:00:03   point halfway through the year or so they make the newest version of xcode require the newest mac os

01:00:08   and that is what finally pushes developers who have been reluctant to install the new version

01:00:12   of mac os to finally do it because while it is possible to continue doing my job without being

01:00:19   able to instantly run development builds on my phone it becomes much more cumbersome and it it's

01:00:24   just the cost of that to me is too great so i bit the bullet and i upgraded on podcast day

01:00:33   mere hours before the podcast very bold maneuver yes uh and here i am running catalina

01:00:40   on my desktop finally so i'm finally fully upgraded reluctantly i i've been really eyeing

01:00:48   both side eyeing and excited i in catalina uh on account of you know starting to do some swift ui

01:00:55   work and it would be so much nicer as we discussed last episode to be able to do that on my imac pro

01:01:00   but my two dads that's a reference john have told me that i am not allowed to upgrade to catalina

01:01:06   so i haven't and here it is now i am the only holdout on mojave is that correct because john

01:01:11   you have to run it on your mac pro correct yeah my wife's imac is still on mojave and i i thought

01:01:16   about upgrading her but i'm like you know what just don't just like i don't i'm not honestly i

01:01:23   don't have many catalina problems like i had one weird freak out where i don't know if it was xcode

01:01:31   related i was always running xcode so i don't know whether to blame it but at a certain point like

01:01:34   how did it manifest oh uh i would select uh i was fast user switching between people to take

01:01:40   screenshots and i selected a different account from the fast user switching menu and nothing

01:01:46   happened cool just and just i i was trapped i could not switch to another user and i was like

01:01:52   okay this means time to restart like no error message no nothing in the console nothing like

01:01:58   it just you would pick something from fast you're switching and it would just blink like and then

01:02:02   there were just nothing would ever happen and that they said okay this is a sign i need to restart and

01:02:08   so i did and everything was fine after that but other than that and of course the bazillion

01:02:12   permission dialogues and everything that marco was putting in his story that we just know are

01:02:16   inherent in catalina i haven't actually had any catalina problems you better knock on some wood

01:02:22   and and mojave by the way which my wife is still running every once in a while like it decides to

01:02:27   activate the screensaver in such a way that it won't deactivate it i have to ssh in and kill the

01:02:31   screensaver process right so the mojave is not without its set of weird bugs too so i figure i'll

01:02:37   just stick with this with the set of bugs i know in mojave and uh and catalina my mac pro has been

01:02:41   fine um but yeah i i saw the the new xcode beta come out and i'm not down with the especially

01:02:49   i was about to release an app not down with the xcode betas but i i feel you marco with like at

01:02:53   a certain point you do you do have to upgrade uh and i guess your time has come and i and i think

01:02:59   i think you picked a reasonable time like i don't think it'll be a disaster for you

01:03:02   this is about as long as i make it every year this actually i think it's longer than i usually tend

01:03:06   to make it because usually there's some new feature of the os that i eventually just break

01:03:10   down because i want it um and and like like casey like you know your swift ui previewing thing that

01:03:15   you want like that would be that's a pretty good one of those features like it would it would

01:03:21   make sense like you know the reason i did it was because okay now some like pretty important part

01:03:28   of my job has become impossible on mojave that's motivation enough for me to make the jump for you

01:03:33   if you're doing a lot of swift ui stuff that live preview part of swift ui is pretty nice and it

01:03:39   would kind of make sense that okay you should probably like you should probably update if

01:03:44   that's a really important thing to you but you know for everyone the threshold of where that is

01:03:48   gonna be different like you know again like in past years there have been such compelling features

01:03:53   sometimes that you do it for that for everybody the threshold is going to be different of like

01:03:58   when do you update to a new os and if the os has compelling features that threshold could be

01:04:04   you know pretty pretty soon after release i mean you could even be one of those day one cowboys

01:04:08   that you know just i don't recommend that but you know you could do it more level-headed approaches

01:04:15   usually the you know maybe wait wait until the point one comes out you know that's that's usually

01:04:20   a pretty safe bet most years but you know that threshold moves for various people depending on

01:04:26   their priorities and depending on the particular release you know my threshold is like well i'm

01:04:31   gonna i can stay on the old version as long as it doesn't impede anything i really need to do

01:04:36   and that was true until today and it's no longer true and so here i am

01:04:40   i'm sorry but does that mean i'm allowed to dads finally please i mean if you want if you really

01:04:48   are you're still doing swift ui stuff and you want to have the preview i suppose

01:04:52   you have an actual reason to do it before you didn't have any reason though i mean and you

01:04:57   weren't telling us about your the details of the app you're making so okay uh we should quickly

01:05:03   mention things that would perhaps require catalina since this is related swift playgrounds is out

01:05:08   for the mac and it requires catalina because it's uh it's not combined it's what's the other one

01:05:16   uh catalyst there we go it took me a minute um so yeah so that's really exciting i haven't tried it

01:05:21   yet because i'm not on catalina but this is super cool and uh generally speaking from what i've

01:05:27   read it sounds like it's a pretty decent mac app which is exciting as well it's not flawless but

01:05:32   it's pretty decent all in all so hey that's a win as far as i'm concerned i've seen some people

01:05:37   complaining that like that it is swift playgrounds on the mac like literally you know swift

01:05:41   playgrounds the thing they demoed on the ipad hey look at this you can learn how to program this is

01:05:44   cool little robot you can make it hop around like all the stuff that you saw them demo on the ipad

01:05:48   at wwcl years ago it's that on the mac but i think when people saw it they were thinking oh it'll be

01:05:55   like swift playgrounds but all the apis will be mac apis and that's not the case this is a catalyst

01:06:01   app and inside the app like someone i saw them put a screenshot of trying to like instantiate an ns

01:06:06   color and it was like no i think you mean ui color like oh like yeah it's playgrounds like you saw on

01:06:12   the ipad on your mac literally through catalyst which is great and it's cool and it's you know

01:06:17   i downloaded it and uh you know it's it's exactly what you would think it would be uh it's convenient

01:06:23   if you don't have an ipad and you have a kid who wants to do this type of thing no but you do have

01:06:27   a mac now if they can have a way to do it um i was confused at first when i saw like the headlines

01:06:32   flying around it was like wait playgrounds have been on the mac forever i use them all the time

01:06:36   when i'm developing an xcode and i want to try out a quick little thing i bring up a playground

01:06:40   i type some stuff in it and it works fine but then i remembered no it's the thing with the robot

01:06:45   yeah which i don't what is the name of the thing in xcode that's that's called playgrounds but not

01:06:52   swift playgrounds what is that thing called uh it's just playgrounds i believe it's a new

01:06:56   playground that's i mean yeah you just you just do you know from the file menu file new what and you

01:07:00   one of the things you can make is a new project new file you can also make a new playground and

01:07:04   it makes a little thing where you can type in code and it runs in real time and shows you the results

01:07:08   in the right hand side everything they demoed in a different wwc session all those years ago

01:07:12   but it doesn't have a distinct name and it's not its own application it's just a playground file

01:07:17   for xcode anyway this is swift playgrounds for the mac some people have been poking around and

01:07:23   finding all the non-mac aspects of it but it's just like any other catalyst file like the keyboard

01:07:27   shortcuts don't work the way you expect like the the responder chain is weird the window layering

01:07:32   is weird i think i'm saying if you bring up a window and hit command w it closes the window

01:07:36   behind the active window which is you know not right many things about ios applications that

01:07:44   are running on the mac through catalyst that is not quite right but it's better to have this is

01:07:49   an example of catalyst you know quote-unquote shovelware but like you wouldn't have this

01:07:52   app at all on the mac so maybe the one you got is not super duper mac like but it's better than

01:07:58   not having it on the mac and the app itself once you're inside it functions just like you would

01:08:02   see it on the ipad only you get to use the mouse on a keyboard so even though catalyst continues to

01:08:07   not be a shiny example of good mac applications it is still vastly preferable to have a so-so

01:08:15   catalyst port of an app than to not have it at all especially for an app like this where it's

01:08:20   like this is not a professional app where you're trying to say this is the new way all mac apps are

01:08:25   going to work this is just allowing people who have a mac to use a cool application that was

01:08:29   previously only on the ipad i don't have any problem with that in fact i i'm with you i think

01:08:34   it's overall theoretically it's a good thing now in practice catalyst has had a really slow start

01:08:41   and that's due to lots of reasons that the more apple uses it the more that they will see and feel

01:08:49   these reasons and the sooner they are likely to get fixed so that's actually a good thing like

01:08:53   if apple's gonna keep bringing over apps like this that are that like you know are not critical apps

01:08:58   to mac os but have some utility if they are present bring as many over as they want to and

01:09:03   and have them use catalyst and they can see you know how incomplete it is they could they can feel

01:09:09   like oh this this actually is kind of crappy like and and there have been some recent changes like

01:09:14   i don't know if we're gonna get to this today but like they they have introduced a new date picker

01:09:17   style that doesn't use the stupid ios wheels finally like in whatever the new catalina beta is

01:09:23   and they recently announced and we didn't cover this yet either they recently announced something

01:09:27   last week that you can you'll now be able to build catalyst apps that use the same bundle id

01:09:34   which is pretty important for lots of reasons especially like sharing a purchase

01:09:37   as your ios app when catalyst was unveiled last summer you had it forced you to have this big like

01:09:43   matt catalyst prefix on the bundle id so you couldn't your app that you ran on the mat could

01:09:48   not have the same id for store and technical purposes as the app that you that you had an ios

01:09:55   so you couldn't do things like one purchase gets you all apps and i think the reason for that was

01:09:58   simply because they hadn't set that all up yet like on the store back end and everything else

01:10:02   so they were forcing this thing and so like catalyst as it was released was pretty incomplete

01:10:07   they are very slowly chipping away at catalysts various shortcomings and problems and so the more

01:10:13   apple ships their own apps like swift ui for it the more they're going to feel these issues and

01:10:18   and hopefully prioritize them so i don't personally have really any feelings on this particular app

01:10:25   but hey it's a fun thing for people to use and if you're learning whatever else it's it's easier

01:10:30   than xcode so you know good for them yeah it's a very polished like the application itself is like

01:10:37   you know a very polished example of like a learning to program type thing because i

01:10:40   remember a lot of those learning to program things from my youth obviously this is ancient and things

01:10:44   you know but like just in terms of the production values adjusting for the times and the technology

01:10:48   stack it's a very fancy well done sort of high production value in hollywood parlance as we're

01:10:57   talking about hollywood this episode uh high production value example of learning to program

01:11:01   like it's you know like two the production values are too high it's like this is not what

01:11:07   is it really important this important to learning the program to have this adorable uh you know of

01:11:13   an interface and these kinds of graphics no it's not it's just typical apple like over polish over

01:11:19   kill and it's it's great it's all the more disappointing when i couldn't get any of my

01:11:22   kids interested in it because they were just at the time i tried to show it to them they were like

01:11:26   not interested don't care about the robot don't care about typing things why would i ever do this

01:11:30   why wouldn't i just use an analog stick to move the little robot around like video games you know

01:11:37   anyway but but anyway i think if kids are into programming and they get their hands on something

01:11:43   like this at the right age it can be amazing and i wish i had something like this because i

01:11:47   the things i had at my disposal had much lower production values and are much less friendly

01:11:51   yeah i very much admire apple for doing this and i think it is it is a really nice move to help

01:12:00   people teach their kids like you were saying or teach themselves and you know the playgrounds

01:12:07   playgrounds as a scratch pad for trying you know to write code that does exist in xcode and it's

01:12:15   for somebody like the three of us is a better answer but for somebody who is um for somebody

01:12:22   who is just trying to learn how to write code it's so good and you know i would never turn to this i

01:12:29   would just go to an xcode playground but but if i was trying to show deklin how to write code i

01:12:33   would definitely use this and i think that that's extremely cool and i think it should be commended

01:12:37   that apples still cares enough to do this sort of thing the the sad thing about me trying to

01:12:43   teach my kids to program is that eventually my son did get into programming more or less on his own

01:12:48   because you know another example of kids not wanting to hear from their parents but if they

01:12:51   just go to other homes they're into it right and now he's taking courses in high school programming

01:12:56   courses in high school and he's he's doing it in netbeans like we have to install netbeans on on

01:13:02   on the max because it's java oh god and he installed his netbeans ide which is this ancient thing and

01:13:07   then java doesn't come on the mac anymore so he turned his nose up at swift playgrounds which are

01:13:12   like you know glass of ice water and hell compared to netbeans are they i i still think swift is a

01:13:19   terrible beginner's language but that's you know that's just me i guess it's better than java i can

01:13:24   tell you that and anyway he's doing java now he's not doing swift he's doing doing java in netbeans

01:13:29   because that's what's on the the the computer science ap test is still in java because you know

01:13:34   lags behind the rest of the world i suppose so he's gotta you know learn and use java what should

01:13:39   it be instead i don't know i mean i would feel better about c for that you know or like a pseudo

01:13:44   language like is it computer science is not about you know computer science is as much as they say

01:13:48   it's as much about computers as astronomy is about telescopes right right so like it or if you're

01:13:54   learning actual computer science the details of any particular language should be immaterial and i

01:13:59   understand you have to have something to do the test with but you know it could just be like an

01:14:05   algorithms test i don't know i know i'd computers ap computer science as far as i'm aware did not

01:14:09   exist when i was in school so i have no idea what he's in for but he's doing it and i installed net

01:14:13   beans so there you go yeah i wish it existed when i was in high school agreed can we just state

01:14:19   publicly that you are aware that there are other better java ides that exist and that is not the

01:14:24   point oh i'm not choosing to install netbeans it's like you know it's like anything in school here's

01:14:29   the calculator you have to buy here's the id you have to install for this class exactly he's not

01:14:34   picking this like this is this and it's it's not just netbeans it's like a specific old version of

01:14:38   netbeans that really is angry about both mojave and catalina it's it's not it's not as bad as

01:14:44   the me trying to install minecraft mods but it's close i'm gonna go out on a limb here and say that

01:14:49   java is no worse a learning language than swift i i think swift is way better than java way better

01:14:59   yeah i agree million miles better as language i want to use today i agree but a learning language

01:15:05   has different needs and and i think as a learning language as well i i think they're both mediocre

01:15:10   learning languages honestly i i think you i would want to go something simpler and more forgiving

01:15:15   like either javascript or some maybe like python you know something like that javascript is too

01:15:20   weird it's a reasonable second choice but honestly i think swift is a great language to learn

01:15:26   programming in uh of all the real languages out there that we can pick because i think both python

01:15:31   which is my other pick and javascript are a little bit too weird in the basics and i wouldn't if i

01:15:37   was teaching a course i wouldn't want to have to explain the weird basics whereas i think i could

01:15:40   go a long time without explaining any weirdness for just doing the basics in swift yeah until

01:15:45   until you do something wrong yeah yeah anyway uh there's no uh javascript playgrounds app like this

01:15:50   so there you go we are sponsored this week by blue vine running a business is filled with unexpected

01:15:57   events that require sudden cash flow blue vine can help you secure cash fast applying online is easy

01:16:03   and takes just a few minutes blue vine is an easy fast way to help support your business growth with

01:16:08   a line of credit of up to 250 000 whether you need money to offset some upfront costs secure a new

01:16:14   inventory or maybe pay an unexpected expense through blue vine you can help yourself and your

01:16:19   business stay secure for any reason there's no fee to set up your line of credit and blue vine never

01:16:24   charges maintenance or prepayment fees applying is easy just go to getbluevine.com slash atp fill out

01:16:31   a few simple details and you're done within minutes seeing an offer will not affect your

01:16:36   credit score and once approved funds can be received in as quickly as 24 hours so you can

01:16:41   have peace of mind knowing that funds can be drawn with a click of a button for any business expense

01:16:46   blue vine has helped more than 20 000 customers and has delivered over 2.5 billion dollars in

01:16:51   funds to businesses blue vine also has advisors available by phone to answer any questions you

01:16:56   might have and help meet your business needs with an a plus rating from the better business bureau

01:17:01   and nearly five star review on trustpilot see why thousands of satisfied business owners have chosen

01:17:06   blue vine as their go-to source for financing blue vine is offering our listeners a special limited

01:17:10   time promotion of a 100 gift card when you take out a loan or open a line of credit with blue vine

01:17:16   so go to getbluevine.com slash atp for more details all you have to do once again getbluevine.com

01:17:23   slash atp and apply that's quick easy and meaningful help to your business in as little as

01:17:29   24 hours this promotional offer is subject to terms and conditions that can be found at getbluevine.com

01:17:34   slash atp thank you so much to blue vine for sponsoring our show

01:17:41   uh shall we do some ask atp let's do it so we start with anthony scartapani i should have tried

01:17:47   that before reading it just now i hope i got that right uh anthony writes today at work we started

01:17:52   debating the differences between mac and windows on the basis of security people were discussing

01:17:56   having antivirus software like avg or kaparski or etc on their windows machines but there weren't any

01:18:01   mac owners that did the same some of the windows users mentioned that they only use windows

01:18:04   defenders their defense to malware it made me realize the mac os doesn't really have any in

01:18:08   your face software that is quote unquote protecting you at all times anthony writes i understand mac

01:18:13   os has built in security like xprotect and gatekeeper is this software essentially doing

01:18:17   the same thing as other antivirus software also do you think that mac os is really better at

01:18:20   defending malware viruses beyond the fact that there are less machines running mac os versus

01:18:24   windows if so how uh there's a lot here but no there's no real antivirus that comes with mac os

01:18:31   that i'm aware of or am i crazy i mean you know as this person mentioned just xprotect really

01:18:36   but xprotect is really doing i think as i think it is basically serving as antivirus like it is

01:18:44   it is a system thing that runs in the background all the time that uh that silently downloads

01:18:48   updates from apple whenever there is one and that can be used to target and block the execution of

01:18:55   binaries with certain signatures and that's what antivirus programs do as far as i know uh john

01:19:00   what am i missing here well they but they do more than that so like xprotect and gatekeeper and the

01:19:05   general design of mac os is made to like there are multiple ways one is to protect it against

01:19:11   known threats like that's what x predict is doing like if there's a thing that's bad and we know

01:19:14   it's out there we can describe it and quickly tell all the max about it so they will not run that

01:19:18   thing gatekeeper is like don't just run stuff willy nilly make sure you prompt for permission

01:19:23   and you know the quarantine attribute and downloading stuff or whatever so that's all kind

01:19:26   of like sort of passive preventative stuff and then there is the other passive stuff which is

01:19:31   like in the design of the the os like address space randomization and protecting against loading uh

01:19:37   dynamic dynamically loading libraries from weird locations and sandboxing right so that's sort of

01:19:42   baked into the thing but antivirus software of the type being described you know in this uh

01:19:48   question and of the type that people think of when they think of windows does something above and

01:19:54   beyond that right because windows at various times has had equivalents of all the things i just

01:19:59   described less so maybe in the windows xp days but much more so now because microsoft has gotten

01:20:04   very serious about security after getting totally reamed on security back in the what was it late

01:20:09   90s early 2000s i don't know i don't know what how you guys work talk about long-term reputation

01:20:14   damage like microsoft had horrible security on windows basically for what 20 years at least or

01:20:22   longer like like it was it was until when did they introduce windows defender which was like

01:20:27   their built-in antivirus stuff that was not that long ago right but but like their security problems

01:20:32   were there but didn't come and bite them until it all landed at once right so yeah maybe they had

01:20:37   like lack security for a long time like everybody else in the industry but they because they were so

01:20:42   prominent and dominant they bore the brunt of this big security catastrophe and then they got

01:20:48   serious about security after that so they they acted as quickly as possible it's just that

01:20:54   people kept running windows xp right for a long time um but yeah for the antivirus stuff like what

01:21:01   the difference is is they're thinking of programs that run on your computer and periodically and or

01:21:08   continuously wander over every single file on your computer and say let me look at this file

01:21:13   is there anything bad in here nope okay let me go to this file is there anything bad in here nope

01:21:16   okay and then beyond that say every time you do any file i own anything or try to launch anything

01:21:22   or whatever this third-party program jumps in and says you're trying to write to this file who are

01:21:26   you are you allowed to write this file you're trying to launch this program is it okay to launch

01:21:29   this program let me look at this program right which is more invasive than xprotect like that

01:21:35   that's the general complaint of you know the mac users at a you know big corporation have to run

01:21:41   antivirus software is that oh it's destroying my computer it's killing my battery life because it

01:21:44   is literally looking at every single file on your computer right or when you're trying to do lots of

01:21:49   file i/o this third-party program is intervening and saying that that before you do that file i/o

01:21:54   let me look at what you're doing and let me see who you are and what you're writing and what this

01:21:57   file is and make sure it's okay and that slows everything down right all the things we described

01:22:02   xprotect gatekeeper address space randomization sandboxing they don't do that they do not like

01:22:08   there's not suddenly a process using 100 CPU grinding over your entire disk right well except

01:22:13   dropbox yeah separate separate issue entirely you know for the purposes of antivirus there's not

01:22:19   something that is causing your file i/o to be slower again except for dropbox because it is

01:22:23   intercepting or doing something on every single bit of file i/o like dropbox drinks from the fs

01:22:28   events fire hose and it can actually slow down i/o significantly so if you're if you're worried

01:22:33   about that quit dropbox and then do whatever anyway those programs absolutely do exist for

01:22:39   the mac i personally hate all of them even the quote-unquote good ones because they screw with

01:22:43   my mac because i feel like they're doing something that i don't need to be done like i've never

01:22:48   voluntarily run that kind of antivirus software on my mac and i have also never had a problem with

01:22:53   viruses and i don't think i'm just lucky right so is that because max have better security

01:22:58   i doubt it i think it's mostly big you know right now windows has pretty good security and i think

01:23:06   so does the mac because the mac os 10 sort of grew up in an era when windows was getting slammed with

01:23:11   security threats so apple took that took that lesson to heart even though it wasn't happening

01:23:15   to them right so i think the security of it's probably fine but bottom line is that it is a

01:23:20   less popular operating system that is less profitable to exploit because there are fewer

01:23:25   max and many more windows machines um so i don't recommend that mac users run any kind of antivirus

01:23:31   software because i think the antivirus software itself is more of a problem than viruses will be

01:23:35   but that doesn't mean you're not vulnerable it just means i think that's i think that's the

01:23:38   correct balance for most people because these antivirus programs they really they make the

01:23:44   experience of using a mac worse they're complicated they're buggy i used to get kernel panics from one

01:23:49   of them that i had to run at work they slow your computer down they kill your battery and in

01:23:53   practice thus far being a mac user since 1984 i have never needed one well i hope you knock on

01:23:59   some wood chris wright writes marco you said you have you that you apply voice boost here on

01:24:04   recordings and posts which will typically be processed once again within overcast at playback

01:24:09   time have you done anything to mitigate recursive processing resulting in exaggerated or undesirable

01:24:13   audio artifacts yeah so i and actually and i believe chris wrote this before i released

01:24:19   voice boost 2 and i went through this very slightly in the blog post i think mostly in a

01:24:22   footnote but basically voice boost 2 is a whole effect set it can apply lots of different effects

01:24:30   in lots of different configurations what ships an overcast is basically a preset that's like here's

01:24:36   one configuration of this engine it is applying the loudness the compressor and the eq what i

01:24:43   have been processing my files through all these months that i've been testing this is a command

01:24:48   line utility that i've been you know that basically is like a test harness for the voice boost 2

01:24:53   engine and i can specify as arguments to that command line utility which are the filters to

01:24:58   engage and with which settings so i'm not actually engaging all of voice boost 2 i'm engaging parts

01:25:04   of it specifically what i'm processing our files through is i'm processing each individual track

01:25:09   each of our three voice tracks through the loudness normalizer to a certain loudness

01:25:15   and applying a custom eq to each of our tracks based on each of our voices and microphones to

01:25:21   make us sound good and i do all that just with an automated shell script that runs this command

01:25:26   line utility and you know every time i process the files and so out you know out of that i get

01:25:31   three tracks that have been all normalized to the same volume and have had our personal eqs applied

01:25:36   what the overcast app is doing is applying a it's applying the loudness matching thing

01:25:42   and then also a little bit of compression a little bit of eq and the eq it's applying is a very gentle

01:25:48   eq that is kind of like a an all-purpose you know broad appeal eq that's going to do a small tweak

01:25:55   to make most voices sound a little bit better but is not especially severe and not especially

01:26:00   targeted to any particular voice so if if that's basically if it's double applied like you know by

01:26:06   me having done loudness matching first and then applying a q in my pre-process and then having

01:26:12   the overcast app play back those files and possibly apply voice boost if the user has

01:26:16   it enabled the loudness matching part of it is actually not going to be changed much at all

01:26:21   because voice boost 2 reads loudness first and then decides how much to adjust it and so if it's

01:26:26   already at the target loudness voice boost 2 doesn't really do any adjustment there so there

01:26:32   there's not much of an effect in double applying loudness normalization the only thing that's

01:26:37   really being double applied here is the eq but because the eq settings in voice boost it for for

01:26:44   the you know in the overcast default configuration because those are such subtle eq tweaks the fact

01:26:51   that they're being applied to you know a podcast like mine that i believe is already well eq'd

01:26:57   they're by design configured to be pretty subtle and to not be a massively noticeable change on

01:27:04   already well produced podcasts because the reality is most people listening to you know listening to

01:27:09   podcasts most of the time are listening to professionally made shows that probably don't

01:27:14   need a lot of eq and probably don't need a lot of volume leveling so part of the design of voice

01:27:19   boost 2 was to be like a gentler touch and especially to be dynamic with the volume leveling

01:27:25   and to not apply more correction than is necessary from the input so double applying it doesn't really

01:27:31   do that much with the sole exception of the eq which is pretty subtle simo isto writes how do

01:27:38   you guys use show notes as a listener before or after listening to the episode scared of a spoiler

01:27:42   what makes for good show notes personally i almost never read them but you seem to actually put quite

01:27:46   a lot of effort into it so maybe i'm missing something here well thank you for noticing

01:27:50   because the show notes are done by me with marco tweaking and john occasionally adding some missing

01:27:56   stuff from time to time so thank you how do i use them as a listener uh generally speaking i i will

01:28:02   at least glance at some point but i usually only take a deep dive if i'm looking for a particular

01:28:09   link of something that's mentioned on the show i also feel like uh thanks to forecast and some

01:28:14   of the work that marco has done i miss out on a little bit because i don't often pay attention to

01:28:20   show art which can change during an episode and i think it's mostly like us and some of the relay

01:28:26   folks that do that i don't know marco if you know some other good examples but yeah well marco is

01:28:30   very good about putting in relevant chapter art for each of our chapters and sometimes there's

01:28:35   some really good gags there that that i don't see because i am not typically looking at a screen

01:28:41   when i'm in the midst of listening to a podcast if anything i'm or if i'm looking at a screen i'm

01:28:46   looking like code or something so uh i i don't typically pore over them but i almost always

01:28:52   glance at them marco you're just talking a lot so let's go to john john how do you use show notes as

01:28:56   a listener i'm mostly i mean so in the podcast i listen to people will refer to them we do it all

01:29:02   the time the link will be in the show notes right if i'm interested in that thing i will then go to

01:29:07   the show notes and seek out that link uh in terms of spoilers that's a possibility like especially

01:29:12   if they chapterize it and i can see the chapter titles but i'm not listening to narrative podcasts

01:29:16   that have spoilers of that kind of the thing it's not really a spoiler to know that later they're

01:29:20   going to talk about cars like whatever you know i can live with that so i will seek out the links

01:29:24   for that purpose the second time i do it is when something is being discussed on a show

01:29:30   and it's visual and even if they don't mention it if i know if i listen to the show oh when they

01:29:35   talk about this someone got a new car and they're talking about uh you know the new car and the new

01:29:40   something in the new car if i know this is the kind of show where that there's going to be

01:29:45   pictures in the show notes of that car i will then pick up my phone and go to the show notes and see

01:29:49   so i can look at the picture that they're talking about right now they're talking about the car i

01:29:53   want to see this car i want to see the the color of the seats or whatever right and when i know

01:29:57   that's going to be there like shows basically train you like you look for it one time and

01:30:01   it's not there and there's no show notes like oh i guess this isn't a show where they do that right

01:30:04   and by the way i think more shows should do this it seems to me the higher the production values

01:30:09   of the show like multi-million dollar shows with celebrities that have millions and millions of

01:30:14   listeners no show notes nothing no they'll be talking for an hour about oh i you know my dog

01:30:22   made this mess in the kitchen and they're all looking at a picture of it and they're sharing

01:30:24   a picture and like oh look at this picture oh we're talking about they talk about the picture

01:30:27   for a half an hour of the mess their dog made in the kitchen no way to see that picture no show

01:30:32   notes no link no nothing it boggles my mind but anyway that's what makes good show notes is when

01:30:37   you want to know more or want to learn more or want to share in the experience in a way that you

01:30:41   can't when it's just audio go to the show notes and there should be something there for you and

01:30:46   that's what makes them good like i don't see people like looking at the show notes ahead of

01:30:50   time or even you know like they're there for you when you want to learn more and i think that

01:30:54   the two reasonable ways to do it are in real time while you're listening go to them so you can share

01:30:58   an experience and then at the end oh what was that app they talked about uh you know that did

01:31:03   the thing i don't remember and they go to the show notes and find it and you know occasionally we

01:31:07   don't put it there and if we don't someone sends us a tweet and says hey i was looking for the

01:31:10   app you talked about and we'll add it to the show notes later that's another thing by the way that

01:31:13   i'm assuming no multi-bazillion dollar podcast ever does but that we do all the time if we forget

01:31:18   a link in the show notes oh we talked about this app but we didn't put a link in there and yeah

01:31:22   three people ask us how if one person asks what was that app we'll add it to the show notes and

01:31:28   good podcast players will notice that we change the show notes and load new versions of them

01:31:32   and back podcast players will never reload the show notes and people will say i still don't see

01:31:36   it in the show notes and we'll have to send them to atp.fm because the shots on the web will

01:31:39   actually update because web browsers know how caching works so yeah like i think i think good

01:31:46   show notes add to the program i'm angry when they're not there and i think any way you want

01:31:50   to use them is fine like they're there for you to use them same thing with chapters but the way i

01:31:53   use them is in real time to enjoy the show more and then afterwards when i remember something they

01:31:58   talked about and i want to actually see what it is and follow the link marco most people never look

01:32:04   at show notes most podcasts don't have show notes or don't have meaningful show notes you know for

01:32:11   those that do i i think the role of show notes is mostly what john said is like to provide links and

01:32:18   context now some producers go way into it and put like entire like topic outlines and summaries and

01:32:26   timestamps that link directly to certain topics and everything kind of like a like a

01:32:30   lightweight chapter marker kind of thing that's done occasionally but it's not common the the by

01:32:34   far the more common use of them is either not having them at all or making them like a handful

01:32:39   a very small handful usually of links that were mentioned and i think that's totally fine as a

01:32:44   listener that's how i use them i use them as you know they're talking about something and i want

01:32:49   to i want to see it i'll check the show notes to see if there's a link to it and about half the

01:32:55   time there is but half the time there isn't because people are so bad at it um and yeah and you're

01:33:00   right like generally the more popular the podcast the less likely it is to have even basic show notes

01:33:07   like usually and you know the these podcasts that have staffs of 30 people working on them they

01:33:14   won't have show notes they won't do anything like they'll have the weakest stuff you wouldn't believe

01:33:19   how many proposals for new standards i get i hear and and get pitched on from major podcast

01:33:28   companies that can be solved already by either show notes or chapter markers with links which

01:33:35   it literally like almost every month some big podcaster tries to start a new standard and it's

01:33:42   like you know you can you can do this already today in every single podcast app by using chapter

01:33:49   markers to show a link and or an image at a certain time imagine that and you would not believe how

01:33:58   many standards people have tried to make to do this and then do any of them actually ever try

01:34:03   that no do like zero major podcasts from like you know the big like you know public radio style

01:34:10   producers zero of them ever use chapter markers i don't know why but they just don't like it they

01:34:15   they pretend like that doesn't exist and they do the exact same thing with show notes pretty much

01:34:20   zero of them have meaningful show notes and you know i guess their loss but the the general

01:34:28   inconsistency of use of show notes means that as as podcast listeners we can't ever really rely

01:34:34   on them for much so there it's just kind of like a you know a nice little reference to look at

01:34:38   and sometimes be helped by do you think that the reason that the big producers aren't interested

01:34:45   is because of dynamic ad insertion i mean i would assume that there's no reason why they couldn't

01:34:50   just reprocess the chapter markers based on new times based on the ads that are inserted but is

01:34:55   that something to do with it do you reckon i mean i think marco nailed it nailed it before the reason

01:35:01   people don't do it is because no one looks at the show notes like it's a cost benefit like they make

01:35:04   that calculation in their head they say okay 0.01 percent of our listeners ever look at show notes

01:35:09   should we invest even a single person's two hours of a single person's time in making them answer no

01:35:14   that's my theory yeah but if they're coming to marco and saying here's the spec that we think

01:35:19   you should implement then obviously they want it they're just doing that because they want better

01:35:22   tracking that's all about ad like they want to know like where you're located when you're

01:35:27   listening and cookie you and do all sorts of stuff like that that's what i assume those proposals are

01:35:31   about or not marco what do you think they're actually asking for when they make those proposals

01:35:35   i mean certainly they ask about that as well but like but a lot of times like i like oh man i

01:35:40   i was approached by uh by some kind of large you know podcast thing uh a couple years back about

01:35:48   possibly wanting to invest in overcast and what they mainly wanted to do was be able to pop up

01:35:55   at certain time ranges like a listener survey or a link to something they're talking about

01:36:01   and i was like you know you can do that already like literally you like they they they wanted

01:36:07   to spend large amounts of money to just do that and i i told them i'm like you shouldn't be

01:36:15   buying anything for this because you can literally do this today you can get like 90 of what you want

01:36:20   chapter markers can already today in every podcast app display images or links within certain time

01:36:30   ranges that is literally what they do and it's supported by every major player including apple

01:36:36   podcasts which if you go around trying to get individual podcast apps to add some kind of

01:36:40   functionality you'll never get that many of them especially on apple to add any kind of new standard

01:36:45   but like literally the standard already exists and has existed for like 15 years that like it's

01:36:50   already supported everywhere just use it do you think they use it today no they don't use it at

01:36:56   all like it's like and this was at this meeting was like two years ago no one knows about these

01:37:01   no one uses them and i think part of it is like a cultural thing and i think a big part of it is

01:37:06   also like a tooling and workflow thing like many of these large podcast producers are using like

01:37:10   their own custom-built cms's from forever ago and their cms probably doesn't even support show notes

01:37:16   their workflow doesn't support any of this they don't have anybody even on staff who would think

01:37:19   it would be their job to write show notes or to put in chapter markers and casey as for dynamic

01:37:24   ad insertion i mean so far my experience has been the people who write dynamic ad insertion software

01:37:30   are you know possibly not good programmers but it is totally totally fine for you know for you to

01:37:38   just adjust the chapter markers by timestamp as you're writing the file out like the chapter

01:37:43   markers it's just it's just a you know a binary blob of data at the beginning of the file like

01:37:47   all the other id3 info and the same little blob that says this file is 19 minutes long it's very

01:37:53   easy to say all right i'm inserting an ad at 10 minutes into the file that's one minute long so

01:37:58   this chapter marker that's at 11 minutes i got to move it forward one minute like that it's very

01:38:03   that's simple logic to do forecast like forecast has a feature where you can export what they call

01:38:09   air checks which is like basically copies of your sponsor reads so if you have chapters prefixed

01:38:14   like we do with sponsor colon or whatever you set the prefix to in the settings you can automatically

01:38:19   and quickly export little segments of the file that have been trimmed out that include that

01:38:24   chapter and i do the math for that so that that so that that little segment that you trim out that

01:38:29   has a certain amount of like i think it's like 15 seconds on either side of it or whatever it is

01:38:33   it includes the chapter markers that apply to that segment reset to zero or you know whatever

01:38:40   the time is that that you have there that took me like 10 minutes to write like it's not this is not

01:38:45   a big deal like this is not hard stuff it's very very easy stuff and if you're writing code that

01:38:50   chops and dices mp3 files already like da i stuff does it is trivial to also do this i just think

01:38:58   fundamentally nobody who makes podcasts that are big enough to use da i has ever asked anybody

01:39:05   about this because they don't even know it exists i think that's the real problem and there is a

01:39:10   difference in the audience too like when if you're doing a tech podcast with a bunch of nerdy people

01:39:14   a lot of which you think are probably using the podcast player written by one of the hosts of the

01:39:19   show like this is the ideal audience for people who would look for understand how to use and

01:39:24   appreciate chapters uh you know good show notes all the other stuff whereas if you are a mass

01:39:31   market true crime podcast maybe you don't even have that many links you're certainly

01:39:36   not going to be you know linking to a bunch of apps that you discussed and stuff like that like

01:39:41   obviously everything exists on the web and maybe if you're talking about crime scene photos you

01:39:44   might have a link to that crime scene photo or something but in general i think people

01:39:48   it's like i was saying i don't think people go to the show so that can change like if suddenly

01:39:52   a very popular mass market podcast uses show notes well and people appreciate it then they'll

01:39:57   stop expecting it of other shows that's what our listeners say a lot they'll say oh i'm an atp

01:40:02   listener and when we listen to popular podcast x i'm disappointed that they don't have good show

01:40:05   notes because i'm used to that from atp which is great but there's not that many of those people

01:40:11   right so uh as with many of these things lots of stuff starts in the technical world and only like

01:40:17   the weird hardcore enthusiasts are into it and eventually spreads to the mass market but so far

01:40:23   that has not happened with uh you know good show notes and chapters and what do we call the images

01:40:30   chapter art chapter images uh yeah just chapter images yeah yeah and like we use them like i i'm

01:40:37   like hazy i feel like sometimes i miss out on gags because i know marco does a ton of them but i'm not

01:40:42   always looking at my phone and a lot of the relay shows do them when i catch them i appreciate them

01:40:46   but podcasts are inherently an audio medium so you can't like don't spend too much time on clever

01:40:52   uh chapter art because if you thought a lot of people don't see the show notes even fewer are

01:40:56   going to see the chapter art thanks to our sponsors this week linode bluevine and bombus and we will

01:41:03   see you next week now the show is over they didn't even mean to begin because it was accidental

01:41:14   oh it was accidental john didn't do any research marco and casey wouldn't let him

01:41:22   because it was accidental it was accidental and you can find the show notes at atp.fm

01:41:32   and if you're into twitter you can follow them at c a s e y l i s s so that's casey list m a r c

01:41:44   o a r m anti-marco armen s i r a c u s a syracuse it's accidental

01:41:55   they didn't mean to accidental

01:42:00   tech so long so john you wrote an app did you have any adventures in programming

01:42:13   i sure did uh so front and center such a simple application no real ui to speak of just as a

01:42:20   simple thing uh fairly straightforward as my first app so there's complications there and and all the

01:42:25   overhead of making an app this app like i said earlier is a little bit more complicated but not

01:42:31   much it does have some form of ui but i learned some things from dealing with front and center

01:42:37   and i have a bunch of war stories from the development of this very simple application that

01:42:43   you know they're not novel like everyone who writes any app of any sophistication is going

01:42:47   to run into tons more of these things and be even weirder or whatever but for someone who's not a

01:42:51   programmer it may surprise you that such a simple application can have all these complications so

01:42:56   take this as like a microcosm of what programming is actually like um and i'll preface this by

01:43:01   saying both of the applications that i made uh inherently deal with a bunch of apis on macos

01:43:09   that are buggy and have been buggy for years and it's it's painful for me to say that but it's like

01:43:14   you know blaming the compiler or blaming the operating system but the mac operating system

01:43:20   does indeed have bugs and both of my applications sit square in the center of one particular set of

01:43:26   bugs which is and i even put this in the fact when uh you know the mac operating system has apis that

01:43:32   you can call that are supposed to do a thing to an application they're supposed to say bring all

01:43:37   the windows from that application to the front apple horizon's apis they're part of the operating

01:43:42   system there's a couple different ways to do it most of them are deprecated except for one or two

01:43:46   but that's what they're supposed to do either activate this application and just bring it to

01:43:50   the front or activate the application and bring all of its windows to the front that's and i have

01:43:55   to call those apis to make my programs work because i don't have any other way to do that

01:44:00   i just have the apis that macos provides the bug is that sometimes you call those apis

01:44:07   and nothing happens and that's and that's like there's no failure code like literally just it

01:44:13   doesn't work nope it just doesn't happen can you at least like do you have any way to detect like

01:44:18   can you like can you call the api like bring this up to front and then can you check is the app in

01:44:22   front like a half second later or something you can do stuff like that but here's here's the

01:44:26   question what's your recourse then you're going to call it again i guess i can tell you from

01:44:30   from experience that calling it again will not help you like this is the thing are you going to

01:44:35   call it a hundred times like at a certain point you can't you you know if it works the the seven

01:44:40   thousandth time that's going to be surprising to the user who's moved on to other things and

01:44:43   something that app that you asked for right like in my experience calling any of these apis a second

01:44:49   or third or fourth time does not help when it stops working and by the way you can see this

01:44:55   in action by not running any third-party applications whatsoever and occasionally what

01:45:00   will happen is you'll for example click on the dock icon for safari in the in the dock

01:45:06   you know it's already running and you're clicking on it because what you want to happen is what's

01:45:09   supposed to happen when you click on an icon in the dock and it's supposed to bring all the safari

01:45:12   windows forward and you'll click on the safari dock icon and maybe one safari window will come

01:45:17   forward another one is you'll be in an application and you'll do you'll select hide others to hide

01:45:25   all the other applications that's a that's a menu command in a lot of mac applications hide others

01:45:29   hide all the other windows that are on my screen i just want to see the safari windows and you'll

01:45:32   select hide others and a couple applications will hide but a couple won't and you can pick it again

01:45:38   hide others nope you can pick it again hide others nope there's xcode still in the back there why is

01:45:43   it why am i still seeing my giant xcode window i said hide others and i'm in safari it's not

01:45:47   going to work anything having to do with hiding showing hide all show all hide this application

01:45:54   show this other one there are bugs and i have yet to find any kind of workaround for them and

01:46:01   unfortunately these two applications i made lean heavily on the apis for hiding and showing

01:46:07   applications when though i call those apis and they don't work and i don't have a workaround

01:46:12   i get bug reports so that's that's just like background noise for all of this there's nothing

01:46:18   i can really do about that right now this but it's just it's just adding to the general malaise

01:46:22   of these two applications i chose to make now i knew this going in because i do things like that

01:46:27   all the time i do try to hide others i do try to click on an application and bring it all to the

01:46:30   front and sometimes it doesn't work and it's been this way for years like nothing to do with third

01:46:35   party applications just in the mac os i don't remember when it started but it's just a years

01:46:39   long thing so i knew going into this was going to be a struggle i thought there might be workarounds

01:46:43   so far i haven't found any i haven't found any heroics that i can do to make it work when it

01:46:47   when it stops working it doesn't stop for all applications most of the time usually it stops

01:46:50   for one or two of them finder and safari are big culprits but that may also just be because they're

01:46:54   commonly used i don't have a rhyme or reason for this so anyway that's not my adventure all that

01:47:00   is to say that these two applications that i made that look super simple inherently what they do is

01:47:06   already challenging because it's not always going to work i think the one war story i will bring out

01:47:12   today is an interaction between them that is a complexity that i added that i didn't think of

01:47:19   until about midway through development and then just had a very sad face when i did so

01:47:23   um you know getting to another set of i'm not gonna talk about it today you guys but anyway

01:47:29   front and center you know it does like when you click on a window it does stuff you know brings

01:47:34   all the windows forward or if you shift click it just brings one of them does all that stuff or

01:47:37   whatever right how front and center works is it's able to listen through an api for an event which

01:47:46   is new activation a new app has been activated right so anytime a new app has been activated

01:47:51   the operating system lets front and center know and says hey by the way uh i know you've just been

01:47:55   hanging out there front and center but here's what happened a new application has been activated

01:47:59   at that point front and center gets to choose what to do you can say oh if i'm configured in there

01:48:04   it's supposed to bring that application to the front uh i'll do that now i'll call that api that

01:48:09   says bring all the windows that application to the front right that's that's basically what it does

01:48:14   like it waits for activations it doesn't know how that app got activated it can tell which app is

01:48:20   activated but it doesn't know why and so there's a bunch of weird heuristics that front and center

01:48:24   has to do to figure out should i do anything about this or should i just just hang back and not do

01:48:28   anything and it doesn't get active it get notified about every activation just certain ones because

01:48:33   like for example if you use like expose or mission control to activate uh an application it gets a it

01:48:39   looks different to front and center anyway there's front and center doing that thing over there here

01:48:42   i am right in switch glass and i decide when i'm you know making it that it should have the same

01:48:48   kind of options as front and center does where it's like oh you can put it in one mode when you

01:48:53   click and it will bring all the windows to the front and then shift click to just bring one right

01:48:57   and i did that and i said well front center has that opposite mode where you can do a modern mode

01:49:01   and it is the opposite behavior where shift click works if i clicked it and vice versa so i should do

01:49:06   that in switch glass too so that because if you like using it in modern mode if you if you want

01:49:11   your default to be just a single window comes forward wouldn't it be nice to have the default

01:49:15   be a single window come forward in switch glass as well and that would make it different than the doc

01:49:19   because you can't control that in the doc when you click on a doc icon it always brings all the

01:49:22   windows forward in theory if it's not if it's not bugging out at that particular moment right

01:49:26   so i did that so i added the options easy enough to go two different ways in switch glass and then

01:49:33   it occurred to me that if you have front and center and switch glass installed and you have

01:49:38   their preferences set the opposite way so if you have front and center setting classic mode

01:49:43   but switch glass set so that when you click a single icon it's supposed to bring a single

01:49:47   window forward this will happen you'll go to switch glass you'll click on an app icon it will

01:49:52   say ah i'm in the mode where i'm supposed to bring a single window forward so it will go and say you

01:49:56   i'm activating chrome and i'm bringing a single chrome window to the front and then front and

01:50:01   center will get notified hey front and center a new application was just activated you think you

01:50:06   should do something and front and center will say oh there was a mouse click and an app was

01:50:11   activated and i'm in the mode where if you click them if you click activates an application i'm

01:50:15   supposed to bring all those windows forward so it will so front and center will undo the action that

01:50:21   was supposed to happen in switch class switch class said bring one window forward then front

01:50:24   and center said oh i know you want all the windows forward and it will bring them all forward

01:50:27   and what this looks like if you're using switch glasses i configured switch glass to just bring

01:50:32   one window forward but every time i click on it it brings them all forward and it's not switch

01:50:36   class is doing it's front and center that's doing it right so you see like i could say well this is

01:50:42   an invalid use case don't set your preferences that way but they're two different applications and

01:50:47   it seems like a reasonable thing to want to do when i click on switch glass i just want one

01:50:51   window to come forward but the other times i click i want all of them to go forward because that's how

01:50:57   i have front and center configured so this this is a complication entirely of my own making but once

01:51:03   i realized that it existed i'm like oh this will like people will end up sending it this way and

01:51:07   they will think it's buggy and they'll be like your your app doesn't work i said one window and

01:51:11   every time i click that they all come forward right and i don't want to have to explain to them

01:51:15   that you know well don't set your preferences that way or whatever and i don't have enough

01:51:22   information to sort that out on either end because like when front and center gets notified that

01:51:26   something was was clicked i don't even know like what event caused that to happen like front and

01:51:32   center itself has some very scary weird code to do heuristics to like uh you know keep track of the

01:51:39   last time a mouse was clicked but i don't know where or why it was clicked i just know that it

01:51:44   was clicked and i do this time windowing around activations to figure out if that clicks belongs

01:51:48   to a thing like it's it's scary and everything but it mostly works and that's not where the bugs come

01:51:53   from the bugs are all like nothing happened because you know the i call the api and the windows didn't

01:52:00   come to the front or whatever anyway that there's front and center doing that over there i but in

01:52:05   from front and center i was like i have no idea if you just clicked on switch glass like i have no

01:52:09   way of knowing that i can know that you clicked but i don't know if you like legit clicked on a

01:52:13   single chrome window or if you clicked on the chrome icon in switch glass i have no idea that

01:52:18   that happened and so i need to figure out a way to deal with this and then the simple application

01:52:25   used to be like i'll make a little palette and there'll be icons and you click on them and i'll

01:52:29   call a single api that all went out the window as soon as i realized this was an issue i maybe i

01:52:35   made the wrong choice maybe i should have said you know what this is again an invalid use case or

01:52:40   i'll take away that preference in switch class and you can't run it in that mode but i'm going to run

01:52:44   both applications at once and i would know that there was this problem i just i decided i wanted

01:52:49   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

01:52:57   both sandboxed so a lot of things are out of the question uh and i had some ideas about i mean i

01:53:06   don't know you you two are ios programmers but i think you know enough about the apis that are

01:53:10   similar enough how would you handle this what can you come up with some uh spur-of-the-moment

01:53:15   technical solutions to the problem that i have here an automatic kicking machine yeah i just i've

01:53:21   been doing a lot of clips that i've seen your kicking machine in action yeah like yeah i'm

01:53:24   i'm not going to reject anything for grossness but literally how can i make this happen again what i

01:53:28   want to happen is i click on switch glass and it brings a single window forward and even though

01:53:33   front and center is configured that it's supposed to bring all windows forward when a new app is

01:53:36   activated it has to somehow know that you know this time lay off because it was switch glass

01:53:42   that brought that window to the front and it's configured to say don't bring them all to the

01:53:46   front so front and center lay off how do i make that happen uh can you do darwin notifications

01:53:51   between the two apps what would i say between them hmm i guess you would you would post notification

01:53:59   from the one that wasn't or from the one that is activating basically saying like hey i'm about to

01:54:06   activate this behavior and then post another one saying i'm done activating this behavior and have

01:54:11   like a slight delay between those things so that that way i don't know i mean as you're thinking

01:54:17   about it you're realizing i'm creating a race condition so this is my first inclination too

01:54:21   is like i want switch glass to tell front and center i'm doing a thing lay off right right but

01:54:28   uh all the things all these apis that i'm using so switch glass that's like synchronous like

01:54:33   someone clicks and i get to run code in response to that click but on the front and center side

01:54:38   i'm just there like listening for notifications that the operating system gives to me the

01:54:43   operating system tells me by the way a new app became active and i have no control over when

01:54:48   the operating system tells me that also i'm watching for mouse clicks in front and center

01:54:53   just so i can know hey they clicked the mouse can't tell you anything else about it but they

01:54:57   click the mouse i also have no control over when those notifications come which is part of the

01:55:02   complexity inside front and center which is sometimes i get the mouse click before the

01:55:06   activation and sometimes i get it after so to make a decision i need both pieces of information

01:55:11   but there's a time windowing thing there and i don't want it to be laggy or slow right so if

01:55:17   i'm going to have switch glass say hey front and center uh i'm about to activate an application

01:55:22   leave it alone just don't touch it i know you're going to get at some point in the future you're

01:55:25   going to get an activation notification but do not react to it i can send that with darwin

01:55:30   notifications which is just this kernel mediated messaging mechanism that's in theory very fast

01:55:35   between two applications that are on the same operating system it's not a socket connection

01:55:38   it's not networking it is just uh a way through the kernel for you to pass simple messages to

01:55:44   each other first hurdle that is sandbox applications can't send darwin notifications to other sandbox

01:55:49   applications unless they're inside the same app group the app groups exist on ios and on mac

01:55:55   and you have to make an app group and it gives them a shared container but it also lets them

01:55:58   send messages to each other so that was the first hurdle so i had to get them both into an app group

01:56:02   and the rules for that on the mac are totally different than ios and all the tutorials talk

01:56:05   about ios but eventually i figured it out despite that there's some weird bugs in xcode's gooey for

01:56:11   doing this um shocking yeah but then of course i knew when i was implementing this i'm like this

01:56:16   is not going to actually solve the problem because the race condition is i'm going to send that

01:56:20   notification but i have no idea in what order front and center will see things front and center

01:56:25   could see a mouse click and then an activation and then have to make a decision and then three

01:56:31   milliseconds later get a notification that says oh by the way i'm switch glass i just did that

01:56:35   and front and i was like oh too late i already activated all the i already pulled all the windows

01:56:38   to the front i didn't know you like there is it's a race condition i have no idea when those things

01:56:43   will come in practice the timing is you know it's a pretty good race condition most of the time it

01:56:50   comes in time but sometimes it doesn't goodness right and you can mess with the windows or

01:56:54   whatever like like the window of time of like how long you're gonna wait but i don't want it to be

01:56:59   slow i don't want it to be like i'm gonna wait three seconds to see whether i should bring all

01:57:02   the windows for because that's a terrible experience like i want it to be fast so i did the notifications

01:57:07   and it worked most of the time but that's not a solution now that's just a race condition so i

01:57:12   had to come up with another solution and this is where i had to get creative and or even more

01:57:18   disgusting but already this is by the way way too complicated because now i have you know these

01:57:23   things they're already listening for different events and they have these darwin notification

01:57:25   centers and then i have them sending messages and they're in an app group and all this other stuff

01:57:28   like for for a very rare use case and it doesn't even cover 100 of the cases because especially

01:57:34   with race conditions i'm using whatever my 12 core mac pro i have no idea what these timings are like

01:57:40   on someone's on casey's gravity 12 inch macbook like right number of cores and what else is going

01:57:46   on and how much memory like do not trust how things behave timing wise on your computer you

01:57:51   know and then half the ones i'm running in like xcode debug builds what is it like with release

01:57:55   builds so i'm making release builds or whatever so my belt and suspenders approach was yeah do that

01:58:02   and when that works great but you know sometimes it's not going to work because you're going to

01:58:06   lose the race and things are going to come in a different order how do you handle that so the way

01:58:11   i handled that was since these things are in the same app group and i have a shared container where

01:58:16   they can both write files and since one of the things that is the nature of switch class is that

01:58:22   the switch glass window doesn't move around or change size too much it only moves when either

01:58:30   an application is quit or launched or if someone if you use the preferences to move it around

01:58:34   what i can do is anytime the switch glass window moves or changes size oh no i i can record the the

01:58:45   the coordinates the frame of every switch glass switcher that's on because it supports multiple

01:58:52   displays and i can write that to a file in the shared container and then front and center

01:59:00   can read that file and always know the coordinates of the switch glass things so when a mouse click

01:59:07   comes along there's no more race because front and center will have read those coordinates ages ago

01:59:14   as long as the window hasn't moved since then even though it doesn't know where the click happened

01:59:18   like in terms of what application or event it doesn't know the x and y coordinates on each

01:59:22   screen and i can see based on your you know coordinates of all the switch glass app switcher

01:59:29   frames did that clicks xy coordinates land in in a switch glass thing in which case you should ignore

01:59:37   it because switch glass is the thing that made that app activate wow that's that still doesn't

01:59:43   cover a hundred percent of the cases because you can imagine a scenario where you very quickly quit

01:59:48   an application and move the palette and click on it like you can do some video game gymnastics to

01:59:54   outrun this thing right because it is writing a file to disk and it's being read and by the way

01:59:58   use a darwin notification to tell immediately to read the file right like the file is changed

02:00:02   here's yeah but it it does work and i have not been able to induce any kind of buggy behavior

02:00:09   in all of my testing with both of these approaches occasionally one will miss but there's always the

02:00:14   other one there underneath and a surprising amount of time the synchronous one with the

02:00:18   notification like 90 percent of the time that one works and wins and doesn't rely on this fallback

02:00:22   the fallback is just there for the scenarios where i lose the race and then that one works

02:00:27   and then of course the complication is but do you really want to be sending all these notifications

02:00:31   writing these two appealist files so i need them to not both applications to not do this crap if

02:00:36   the other one isn't there if you just have switch glass i don't want any of this stuff running if you

02:00:40   just have front and center i don't want any of this stuff running luckily both of them are

02:00:44   constantly watching applications be launched and quit so they always know when the when their

02:00:50   companion appears and when it disappears right they both do that already so there's no polling

02:00:57   there is no you know there are no spin locks no loops and both of them will just shut up and be

02:01:02   and be quiet and be themselves when they're just there in isolation but as soon as their companion

02:01:06   appears they'll start communicating and cooperating with their frames behind the scenes and if one of

02:01:10   them quits they'll stop doing that and they will stop listening and stop sending notifications

02:01:14   it's way too complicated for what looks like a stupid application switch of a thing but i have

02:01:19   to say it was one of the most fun things that i did in this development because it is completely

02:01:24   not needless complexity but like surprising complexity for what looks like a very simple

02:01:30   application again of my own making because i made two of these stupid apps that both do weird things

02:01:34   and i made both of them have way too many options and be way too flexible instead of being like

02:01:38   opinionated and saying it just should be classic mode everywhere that would have avoided all this

02:01:42   problem but it was a fun programming challenge and this was the i guess the uh the most interesting

02:01:50   technical the most interesting thing that didn't have to do with working around bugs it was just

02:01:55   entirely it's just me and my own bad decisions about my own applications i had to solve a problem

02:01:59   and it was it was fun doing it and it was fun like essentially doing server-like programming

02:02:07   without any servers because you know sending requests and responses and notifications and

02:02:11   all that other stuff is a lot like server-side programming but there's no servers running there's

02:02:14   no networking it's all through the kernel and uh it's pretty neat may i propose an alternate

02:02:20   solution sure why don't you just build in the front and center functionality as an option

02:02:28   in sight glass i absolutely thought of that i absolutely thought of that that before i did

02:02:33   this stupid frame thing i'm like i should just combine these two apps because then you don't

02:02:36   have this problem they're both the same application there's no coordination things they are literally

02:02:40   the same app uh i thought about it seriously for a long time the reason i decided against it well

02:02:47   two reasons one not everyone wants both these apps i know there's not really what i'm proposing

02:02:54   is not that you combine the apps what i'm proposing is that cycle s becomes you know the the both app

02:02:59   and that front and center becomes the smaller baby version if you don't want the site class

02:03:05   mini doc thing switch glass not cyclists ah switch i know it's a bad name i have had naming

02:03:10   problems sorry i was thinking expensive coffee places yeah um no i didn't want i didn't well

02:03:15   the first thing was some people don't want both right so if you make switch glass the one that

02:03:18   has both still same issue what if people don't want that other functionality like well if they

02:03:23   don't want it they don't have to use that functionality switch glass like make an optional

02:03:26   then we get to the second problem the second problem is it is so hard to just explain what

02:03:31   front front and center does you can't even keep the name straight yeah right there i know what

02:03:36   can i tell you i only made up one of these names and it's the one i like less anyway uh front and

02:03:41   center is hard enough to explain as it is right and it's it's like preferences ui and its settings

02:03:48   are themselves weird and hard to explain switch glass is also surprisingly strange to explain and

02:03:56   has a ton of options because that's probably the way i wanted to like if listeners this is the time

02:04:01   when you should go to the show notes go and look at my website like you don't have to buy the app

02:04:05   just look at the website and look at the stupid preferences window for switch glass and get an

02:04:09   idea of exactly how far down the rabbit hole i went with customization it's a little bit silly

02:04:14   but it's what i wanted to do right if i combine both these applications just trying to find a way

02:04:21   to communicate all the functionality would have been incredibly hard especially because this is

02:04:26   a complication maybe we'll get to in another war story switch glass is configurable per monitor

02:04:32   so on each display you can choose whether or not you want the palette to appear in every single

02:04:37   setting about how like where it appears and everything right and so when you bring up the

02:04:41   preferences it brings up a window in every single monitor kind of like display preferences you know

02:04:45   ecosystem preferences and you do displays and it brings up a separate window in every display

02:04:48   that's how you configure displays separately that's how this works that's not how front and center

02:04:53   works like just dealing with the ui issues and the explanation of how this stuff works alone

02:04:58   it was just it would it would have been a much bigger task like at that point i'm basically

02:05:02   signing up to start making drag thing and i'm not ready to sign up for that yet so i'm gonna make

02:05:06   you another two weeks i'm gonna make two purpose-built applications that do specific things

02:05:13   if you want one or you want the other or you want both like they'll it'll work in all scenarios but

02:05:18   they're like single purpose things and within those single purpose things it's hard enough to

02:05:23   explain and get working right but but you're right that is a technically better solution obviously the

02:05:27   real solution is why don't you just make a new drag thing like you're you're two percent of the

02:05:32   way there already why not just do the other 98 percent and i am thus far very capably resisting

02:05:38   the urge to do that because that is way more work than what i've been doing and i just want these

02:05:42   two little things and i just want them to work together so yes that that did occur to me and

02:05:47   would be more straightforward technically but i i would still be working on that and i would

02:05:53   probably get to a point where i regretted it terribly because just trying to figure out how to

02:05:58   to massage the preferences of ui into something sensible would just be you know and not not from

02:06:03   a technical perspective just like user interface design how do i convey to the user how all these

02:06:08   different things work it's hard enough like if you look at the switch glass preferences this section

02:06:12   of it that applies globally and there's another section that applies just to the display and i

02:06:16   try to label that and try to explain that but even that it's not it's not a great interface like it's

02:06:20   a difficult problem if you want to have per display settings but also have global settings

02:06:25   but not have two different preferences things you end up having to make like you know like a quote

02:06:29   unquote real preferences dialogue with like the toolbar at the top and the different images and

02:06:34   it's just it's complicated so anyway that's that's enough war stories for for this week i can

02:06:42   revisit it in future weeks because there are plenty more uh interesting and fun things about

02:06:46   developing what looks like a very simple application but just to give you an idea of the

02:06:50   ridiculousness that's lurking under the covers of this thing that lets you click on an icon and

02:06:54   bring an app to the front awesome it's so true i mean i had the bare bones of peek of you done

02:07:04   really really quickly but it it was trying to get it to work the way i wanted to and do the things i

02:07:10   wanted to do and be more polished and like golly i spent probably a couple of days on the zoom in

02:07:18   animation and i already already done almost the exact same thing on vignette but i was doing it

02:07:22   differently and i wanted it to work a little differently and that alone took me days which

02:07:27   is probably an indictment of my own skill in ui programming more than anything else but that's

02:07:32   just not the sort of thing that comes naturally for me and oh god it there's so much there's so

02:07:38   much to even the simplest app and and i don't think i have it as bad as you john but i run into

02:07:45   apple apis that are not really as robust as i would like them to be and not really as bug-free

02:07:50   as i would like them to be and like you if something happens in an apple api like a lot of

02:07:56   times vignette would just stop writing updates because apple's apis have decided no you're done

02:08:03   now okay like they don't really tell me i'm done it's just it doesn't work and and i don't know why

02:08:11   and you know the best theory i've had and i wrote some code to try to slow everything down because

02:08:16   maybe i was hammering the context database too quickly and it's just stuff like this is

02:08:19   infuriating because there's no way for any regular outside of apple human to know what the issue is

02:08:25   and or there's just legitimately a bug maybe apple didn't design it that way you know so in my case i

02:08:30   have a theory that they designed it so that you can only write so much the contacts database so

02:08:34   quickly which is fine if you tell me what the limit is but they don't tell you what the limit is welcome

02:08:38   to ios yeah and well in you john i think you have probably you're probably bumping up against

02:08:43   legitimate bugs and so you know apple is made of humans humans write bugs but still just

02:08:49   infuriating because there's nothing you and i can do about it or marco i mean all three of us there's

02:08:53   nothing we can do about it we just have to sit there and go yep if you're if you're lucky the

02:08:57   api that you're running into a problem with will be a commonly used api for normal apps that's

02:09:01   another one of the the consequences of me choosing to make these weird apps like regular apps don't

02:09:06   ever need to call the apis that bring other applications to the front like that is a rare

02:09:11   piece of functionality so who cares if there's some weird minor bugs in it and and i'm saying

02:09:17   that from apple's perspective but but honestly i care as a mac user set aside all my applications

02:09:21   like i'm frustrated when i can't bring all the windows of an app to the front it happens to me

02:09:26   a surprising amount of the time again nothing to do with my apps just literally clicking on the

02:09:30   dock icon for safari and i want all my safari windows to come to the front and they won't

02:09:34   it's been driving me nuts for years but if you're writing a text editor hell if you're writing

02:09:39   photoshop if you're writing final cut you will never call those apis they are not relevant to

02:09:43   app development so it doesn't surprise me that they haven't gotten fixes whereas if you're using

02:09:48   the contacts api that is widely used on ios and there's a slim chance that if you file that bug

02:09:53   maybe they'll add in the subsequent release oh yeah there's a limit and we'll notify you if you

02:09:57   call it too many times or we'll document it or something like that but i don't think anything's

02:10:01   going to happen for these like what i think would happen is more likely to happen is apple will be

02:10:06   like why do we even have that api third-party application shouldn't be asking for other

02:10:11   applications to come to the front deprecated you can't use it anymore it's going to go away in two

02:10:14   versions like you almost don't want to call attention to those type of apis because they're

02:10:19   you know they're like system extension stuff it's not you never need to to make microsoft

02:10:24   word you never need to call those apis so you know it's it is what it is