I Have No Urge to Speak
John:
for the pre-flight the thing that we really need to pre-flight is the pre-show please two of you work out which of you has a half an hour of content that you're going to stick before but the fun john the fun is neither marco nor i knows who's going to win right but see the problem is when you get this you know 100 year storm thing where we have 45 minutes before the little modem sound so work something out please
Casey:
All right.
Casey:
An anonymous Apple employee writes to make yet another correction.
Casey:
This is turning into the T whatever, whatever, whatever feedback.
Casey:
Another correction with regard to always on VPNs and work devices and so on.
Casey:
This anonymous Apple employee writes, the always on VPN mentioned on a past episode cannot, all caps, be implemented on a user owned iPhone or iPad.
Casey:
That policy can only be applied on supervised devices, which, if you recall, is just Apple's fancy word for a corporate-owned iPhone.
Casey:
You can only supervise an iPhone if the company purchased it through a specific reseller or carrier, or the company takes over the ownership of your phone, which is extremely rare.
Casey:
And this usually only happens with donated devices.
Casey:
It's a tedious process, which requires a full phone race in multiple steps.
Casey:
In other words, a company cannot snoop your web traffic unless they own the phone.
Casey:
Moving right along, Julian Torres writes, there's a preference in settings on iOS under Contacts called Short Names that allows you to set the system-wide preference.
Casey:
What was the context for this?
Casey:
I don't recall.
John:
It was like the mom and dad, whether you use their names or their nicknames in your address book and what shows up where.
John:
And I was trying to recall that there was some setting that you could use to control this, but that not all apps honored it.
John:
This, I think, was the setting I was thinking of.
Yeah.
John:
I seem to recall also messing with either messing with the setting and expecting it to work on the Mac or there's an equivalent on the Mac.
John:
But it's the type of thing where you can suggest that this is how things show up.
John:
And I bet if you call the right Apple APIs, it honors this setting.
John:
But if you don't and just have or just pulling the contact data directly in your app, I suppose you could just do whatever you want.
John:
But anyway, in case you're wondering, that's where it is in iOS settings.
Casey:
Good to know.
Casey:
All right, my buddy Brian King sent us a link to a talk from Skydio.
Casey:
And I believe Skydio makes drones.
Casey:
And this talk is like an hour and a half long.
Casey:
And I was talking to him privately outside of the feedback that he had sent us.
Casey:
And he said, basically, just skip around in this video and darn near anywhere, you'll see something cool.
Casey:
And I don't remember exactly what the timestamp was.
Casey:
But at some point, they had these drones following a person like running or cycling or something like that.
Casey:
I don't remember exactly what it was.
Casey:
But the drone was flying in between power lines.
Casey:
It was amazing.
Casey:
I do not understand how this could possibly work.
Casey:
It looks like it was somewhere around between 10 and 15 minutes, I think.
Casey:
Anyways, it is a fascinating video.
Casey:
Yeah, at about 14 minutes, I see it now as I'm jogging through it.
Casey:
It is really bananas to watch as you see it going above, below, and through these power lines, which I assure you, as someone who is now an experienced drone pilot, except not really...
Casey:
That is terrifying to think about doing.
Casey:
And I have pretty much the smallest drone on the market.
Casey:
So this is extremely, extremely cool.
John:
If you watch the entire hour long video, that's what it's about.
John:
How they do that.
John:
You know, all the different sensing that they use to figure out how not to hit things when flying through the air.
John:
It's cool.
Casey:
All right.
Casey:
Moving right along.
Casey:
We have some follow outs.
Casey:
The talk show, episode 309, Pinkies on the Semicolon.
Casey:
That was where some guy joined John Gruber on his show.
Casey:
And it was really good.
Casey:
And I wanted to call your attention to it because I really enjoyed it.
Casey:
It was a really nice overview and kind of history lesson about the Mac.
Casey:
And I thought it was really, really good and well worth the couple of hours that it took to listen.
Casey:
So well done, whoever that random person was.
Marco:
There was some guy named John Syracusa.
Marco:
I don't know if you guys have heard of him.
Marco:
Yeah, it was really good.
Marco:
It was nice to hear John able to rant in his giant paragraphs about the Mac.
Marco:
Very hypercritical style.
Marco:
For those listeners out there who miss hypercritical and who want a show where Casey and I aren't here and it's mostly John ranting –
Marco:
in these large composed arguments.
Marco:
This had a lot of that in it, and I really appreciated that as a listener.
John:
I was just going to say the opposite, that I felt like on that show what I was doing was trying to give the Cliff Notes versions of what people get in ATP, because everything I said on the talk show are things we've discussed in the past in the ATP, but I have to give the compressed version, because it's just one appearance as opposed to over weeks and months.
John:
So if you're listening to ATP, you're getting the pure uncut stuff.
John:
But if you want the Cliff Notes, you can check out that episode of the talk show.
Casey:
Well, either way, I thought it was very good.
Casey:
And if you're a listener to this show and if you don't regularly listen to the talk show, you might want to make some time for this one because it's very, very good.
Casey:
All right.
Casey:
John, I think especially has lots of thoughts about Clubhouse.
Casey:
Can you tell me about this, John?
John:
Yeah, I've been still hanging out in the Clubhouse, as they say.
John:
No one says that.
John:
A couple of thoughts and extra bits about Clubhouse.
John:
The first one is, and I forgot to mention this last time, it occurred to me even when I was just first participating in these Clubhouse rooms, you know, so that you've got speakers who are quote unquote on stage and they can nominate other people to come up on stage and speak, right?
John:
And the rest of the time...
John:
there's an audience like the way it's presented is the speakers are at the top with their little avatars then there's a second section which says it's like people that the speakers follow and then there's a third section where the avatars get a little bit smaller and that's like everybody else right and anybody can be nominated to be a speaker then they go back down to their thing so when you're in a room and someone is talking and you're in the audience uh
John:
The total number of things that you can do in the audience are, number one, raise your hand, which says, hey, I would like to be nominated as a speaker to let the people who are speakers know that they can pick you or not, right?
John:
Or two, leave the room.
John:
And when I was down there, I was thinking of our podcast where we do a thing kind of like Clubhouse where there's a bunch of people right now who are in a chat room.
John:
And although we can't nominate them to speak on the show, they can talk to each other through text in the chat while we...
John:
are on stage.
John:
And I find that an incredibly valuable thing.
John:
You know, you can't invite every single person from the audience up to be a speaker in any kind of clubhouse room.
John:
I haven't seen any that have been like that.
John:
It's always like you nominate the lucky few who get to talk and the rest of the people are just in the chat room and they don't get to do anything in clubhouse.
John:
I, you know, I don't I'm not saying they should add a text chat, but I feel like it's something I'm used to and would find valuable.
John:
I like the idea that the audience can speak amongst themselves.
John:
And that's a huge can of worms.
John:
As we know, not every not every audience is as well behaved and wonderful as our chat room.
John:
Once you get more than a handful of people in there, then it just becomes a giant cesspool.
John:
See any chat in Twitch or other or live chat in the YouTube stream or anything like that.
John:
So I fully understand the problems.
John:
And I'm thinking they're making the right call for this stage in their startup process.
John:
But I have to say that I missed the chat room, the chat room experience in Clubhouse.
John:
Have either one of you done any more Clubhouse observing slash participating?
Casey:
Yeah, I think all three of us, or I think maybe it was me and some with John and some with Marco, were in a chat.
Casey:
Shoot, what was that?
Marco:
Is that the one that Gruber joined and pointed everyone to about UX design and stuff like that?
Casey:
Yes, that's what it was.
Casey:
And it was good.
Casey:
I enjoyed it.
Casey:
I don't personally see this as something that I would do often, but if somebody whose work I enjoy...
Casey:
is talking about a topic I find interesting, and I'm not also doing something else, which is a lot of ifs, ifs, ifs.
Casey:
Yeah, I think it would be something I would enjoy.
Casey:
And it just so happened that that particular time, you know, I saw that John was doing something, and I enjoy John's work.
Casey:
And it was something that I thought was interesting, and it ended up being interesting.
Casey:
And so I popped in for a bit, and I saw both of you guys there at some point or another.
Casey:
And I definitely enjoyed it.
Casey:
And I was able to do other things simultaneously, not on like a podcast podcast.
Casey:
But basically, once I joined the room, I closed or I didn't close the app, I suppose, but I turned off my phone.
Casey:
I locked my phone and didn't play with my phone anymore.
Casey:
And I don't know if that's good or bad for Clubhouse, but it was good for me from a user experience perspective, except that it wasn't very sticky, as the people like to say, in the sense that I wasn't piddling with the phone at all or with the app at all.
Casey:
I was just sitting there listening.
Casey:
And yeah, it would have been nice to have a chat room.
Marco:
This is still a thing that I have not found compelling.
Marco:
Even when it's people I like.
Marco:
There's never a time when I stop wishing it was a podcast in a podcast app.
Marco:
People keep saying, you know, that people who say things like that are missing the point and we're not taking advantage of the two-way nature of Clubhouse.
Marco:
And, you know, and I think, you know, it's worth mentioning, too, that we're not just picking on this one particular service, but now we're also going to be picking on this category of things since everyone's copying them.
Marco:
First of all, I still don't want to talk on most of these.
Yeah.
Marco:
I think most people who listen don't want to talk.
Marco:
John, I think, was being kind just now, talking about the issues of how this kind of two-way communication thing scales.
Marco:
I think if you've ever been in a conference that had a Q&A where there's mics that are passed around or open mics somewhere out in the auditorium and people can come up and ask a question at certain points or make a comment –
Marco:
That usually is not very interesting to listen to.
Marco:
The only people who tend to like Q&A parts of conferences and stuff are people who want their voices to be heard, who have something to say and they want to say it.
Marco:
That's very different from listeners really benefiting strongly from it.
Marco:
And everybody can point to some clubhouse they were in in this period where it's been super hot and all these VCs and famous people are trying it out.
Marco:
Almost everyone can point to something and say, wow, look at how valuable this was because famous or insightful person X happened to be there.
Marco:
And this is amazing that you have access to them.
Marco:
And wow, isn't that great?
Marco:
But the reality is...
Marco:
That's temporary and that doesn't scale.
Marco:
It's temporary in the sense that right now all these VCs and celebrities and stuff are checking this out because it's the hot new thing amongst these circles.
Marco:
But they're going to move on and get bored of it too just like they always do because it's a big world.
Marco:
There's a lot of stuff that happens.
Marco:
So they're only going to be there for a short time.
Marco:
In the meantime, the floodgates are going to slowly open and flood the service with a whole bunch of people who you all don't want to hear from and who are going to be competing for everyone's attention in these rooms that you want to get into and try to make your voice heard.
Marco:
And so it's going to just become more crowded and the signal-to-noise ratio is going to decrease.
Marco:
The quality level of the average participant is going to decrease.
Marco:
And the whole service, I fear, is going to just turn into this Q&A at conference kind of thing where the two-way nature of it loses a lot of its value because...
Marco:
most of the second way like most of the way back is is not of high enough quality that anybody wants to hear it and I think it would just like grind most shows to a halt you know I heard somebody discussing it I forget who comparing it to a panel discussion at a conference
Marco:
I think that's apt except panel discussions at conferences usually are the least interesting conference sessions in my opinion.
Marco:
And I kind of find it to be kind of like an easy way out as a conference speaker.
Marco:
Cause you don't have to do a lot of planning compared to a full blown, like single person talk.
Marco:
Um,
Marco:
And there's less value there.
Marco:
Now imagine the panel discussion format with even less planning and where half the session is Q&A from the audience.
Marco:
And I just don't see how that produces value for listeners consistently.
Marco:
To me, it just seems like an easy way to make a whole bunch of like...
Marco:
bad am talk radio show quality stuff but at even greater scale than ever before and that's that's fine and i'm not going to say that like good stuff will never come up where you have like you know good people like telling their steve jobs stories and whatever else like that's going to occasionally happen but that's not the norm even now that's not what's usually going on there and that's going to become even less of the norm over time as the service scales to more and more uninteresting people who just want to have their voices heard
John:
What happened to you being optimistic and not an old curmudgeon and not poo-pooing the new thing?
John:
Remember when you were talking about that?
John:
You seemed to have turned over a new leaf with your pessimism.
Marco:
Yeah, I listened to podcasts again and I learned how much better they were.
John:
One thing I'll say to reassure you on the Q&A at a conference point, and this is going to sound bad, but I think it's actually an advantage of Clubhouse.
John:
in clubhouse the speakers get to pick who asks the question and they know at least something about the people they're picking and you can't see who they're not picking like so you can't see them going no no no no yes you can't see them checking what your bio says how many followers you have who follows you right and i suspect although i don't know because i have not hosted a room but i suspect that's the thing that you can do in clubhouse and that people do in clubhouse
John:
It's not a random selection of Q&A.
John:
And even in the worst case, like the only big conferences I go to is, you know, I used to go to PAX every year a while back.
John:
And then, of course, I go to WWDC.
John:
And sometimes I really like the Q&As.
John:
In fact, there was one session at PAX.
John:
The entire two hour session was 100 percent Q&A.
John:
Now, granted, in like comedy type shows, getting random questions from the audience is part of the fun.
John:
But on the flip side of that, WWDC, like there's a reason Apple got rid of the Q&A in their sessions, mostly because they didn't want to answer hard questions about the App Store.
John:
But setting that aside, the place where Q&A still exists at WWDC is in the celebrity lunch sessions where they have someone famous or, you know, well-established in a profession or whatever come up and do a talk not about Apple stuff.
John:
And, you know, again, sometimes the Q&A's there were terrible too, but sometimes they were really good, especially if it's a, you know,
John:
Beloved character, as Brenner would say.
John:
Someone who the audience really loves and wants to hear things from.
John:
Every single person in line loves the person and gives them nice, respectful, hopefully interesting questions, and the audience enjoys it.
John:
My main frustration with Clubhouse now is still when someone tries to talk to me when Clubhouse is on, I pull out one of my AirPods and the thing doesn't stop.
John:
Again, I see last week where I wished for pausing and catching up.
John:
But anyway, that's...
John:
i'm i'm still investigating clubhouse sounds like marco may not be investigating much longer but you know not everything is for every person uh there's tons of things that we all don't do i don't think marco plays video games and streams himself but that is a very popular thing to do despite the fact that marco doesn't want to do it
John:
oh yeah and that and i mean i'm not saying anything about that but yeah i just i i just so far like i like when when guru joined that that room and everybody was talking about i saw and i saw the two of you were in i'm like all right fine i should probably join this and see what this is about that particular room demonstrated an anti-pattern that happens i don't know it's an anti-pattern i don't know what you can do about it maybe it's a feature but it's a it's an awkward thing that i've seen happen in clubhouse multiple times now in my tiny experience in clubhouse which is
John:
Yeah.
John:
And that's nobody's fault, really.
John:
But it's a dynamic that's a little bit awkward and weird because, like, you know, if who's running the show and I bet Clubhouse would say, well, no one's running the show.
John:
It's just a big collaborative thing that just is an emergent property of the participants.
John:
But sometimes the person who started the rooms thinks they're running the show and then eventually they're not.
Marco:
i haven't cracked this nut yet and found anything that was really that i really thought needed to be that format as opposed to like wow this was just released as a podcast i would enjoy this a lot more and it would and it would be a much easier for me to listen to it it should be a fish concert because they can nominate people to play guitar from the audience and marco would love it it's all just collaborative it's different every time
Marco:
maybe i'm just like a snob but i i mostly just want to hear the people who are good like i i want to hear like not just like hey let's incorporate everyone's ideas in this discussion what what about the the kiss guy from the foo fighters concert am i getting this right i need merlin on the show to tell me if i'm getting these references right i don't chat room look up kiss guy foo fighters tell me if i'm right i don't know
Marco:
If I had a ticket to the to the Foo Fighters, I wouldn't want them to pick random people from the audience.
Marco:
I want I want to see Dave Grohl.
Marco:
Like I want like that's that's why I'm going.
John:
You might like Kiss Guy.
John:
The whole the whole reason this is the meme is it was some I don't know the details right.
John:
Some famous band invited someone up on stage to play guitar and the person was amazing.
John:
And the band was amazed by the fact that they were amazing.
Marco:
And anyway, I mean, I'll look it up.
Marco:
But like that, first of all, that is probably not the common case.
John:
I was just trying to make a fish joke.
John:
As far as I'm concerned, it's just a bunch of people noodling around on stage.
John:
So who cares?
John:
They bring that from the audience.
Marco:
That's all I was doing.
Marco:
That's not it.
Marco:
But yeah, I know.
Marco:
I know.
Marco:
That's why it's a joke.
Okay.
Casey:
Wow, that went right off the rails.
Casey:
Like a clubhouse room.
John:
If only.
John:
That's the thing.
John:
There's not enough over-talk in clubhouse.
John:
That's what clubhouse needs.
John:
More people talking at once.
Marco:
Yeah, oh God.
Marco:
And that's the other thing too.
Marco:
Again, this must just be really wrong for me because what I hear on clubhouse sounds in both audio quality and communication effectiveness like a conference call.
Marco:
It sounds like I'm just on a conference call.
Marco:
I hate conference calls.
Marco:
I think conference calls are one of the worst communication mechanisms we've ever devised as a species.
Marco:
And this service basically is like, hey, jump on any conference call you want.
Marco:
Can everybody hear me?
Marco:
Oh, wait, no, you talk.
Marco:
I think you're muted.
Marco:
Wait, no, John, John, now you talk.
Marco:
Casey, I can hear you typing.
Casey:
You know, I was just going to say.
John:
I don't know why the two of you are complaining about conference calls.
John:
I'm on conference calls all day long.
John:
You two are not.
John:
So you're desensitized.
Marco:
You don't realize how bad they are.
John:
No, no.
John:
It's the opposite.
John:
It's like being on a desert island with fish.
Marco:
You hate it even more.
Marco:
Usually, I am very fortunate in that usually I'm not on conference calls.
Marco:
So when I am on one...
Marco:
Our wonderful sponsors and everything almost never make me do anything like this, but occasionally somebody wants to have a call, and occasionally they can't be talked out of it, and occasionally I have to go on a conference call.
Marco:
And every time I'm on a conference call, I have a number of opinions.
Marco:
Number one is like...
Marco:
Who are all these people on this?
Marco:
Why did this call have to have seven people on it when only one to two of them are actually talking ever during the whole call?
Marco:
I don't even know what six of these seven people do.
Marco:
Their job titles seem like they don't do anything or that they are redundant.
John:
You're missing out on the great part of the conference call where everybody has to introduce themselves and say,
John:
It takes half an hour.
Marco:
Right.
Marco:
Yeah, exactly.
Marco:
And then most of the people never talk again.
Marco:
So I didn't need to know that.
Marco:
And am I supposed to remember what your voice sounds like the whole time?
Marco:
No.
Marco:
And then afterwards, I'm like, all right.
Marco:
The amount of person hours that it cost to arrange the call...
Marco:
then on the call, then the follow-up email after the call, it's like, it must have cost this company like $20,000.
Marco:
And it's like, what?
Marco:
Was that worth it?
Marco:
That couldn't possibly have been worth that.
Marco:
That could have just been an email.
Marco:
So yeah, I'm not a fan of conference calls in case that wasn't clear.
Casey:
I had no idea.
Casey:
I don't know.
Casey:
I'm, I think, between the two of you guys.
Casey:
John, I think you have some reserved enthusiasm for it, it seems.
Casey:
I think mine is even more reserved.
Casey:
And Marco, I think that you've pretty much unequivocally decided it's not for you.
Casey:
And I think any of those conclusions is perfectly reasonable.
Casey:
But we should move along a little bit.
Casey:
Guy Rambo did some investigations with regard to the spewing and uploading of all of your contacts.
Casey:
And so he had a short Twitter thread, and I will read pretty much all of it.
Casey:
Guy says, I just had a poke at the Clubhouse app with a proxy given the recent concerns about contacts usage.
Casey:
The bad part is that it uploads all of your contacts' phone numbers.
Casey:
Surprise!
Casey:
Yeah.
Casey:
Yeah.
Casey:
So that's some technical jargon to say that there are ways in which they could do this more safely, but the good news is all they're taking is numeric phone numbers and seemingly nothing else.
Casey:
So it could be worse, but it's still not great.
John:
Yeah, I mean, they have access to everything.
John:
Like the fact that they're just doing phone numbers now, unless you're going to constantly monitor one of them, that could change at any time.
Marco:
Yeah, I just I still don't see how this is anything but a privacy disaster.
Marco:
And by the way, probably a violation of GDPR also, because all those phone numbers that people are uploading, those people could not and did not consent to the sharing of that data.
Marco:
So it's got to be illegal in the EU for them to even possess this data in the first place.
John:
I don't know what the GDPR says about data given to other private citizens that, you know, what happens to it there.
John:
If they give it to a company, then obviously it's different.
John:
But anyway, who knows?
John:
I'm sure they'll work it out with whatever – if this ever gets big, I'm sure they'll work it out with whatever countries they're dealing with stuff.
John:
And by the way, on the subject of hashing, which I also brought up on a previous show, a couple of people on Twitter sent me links to some depressing demonstrations that given the limited –
John:
given the limited sort of uh key space of email addresses and the email addresses are constrained they can't be unlimited length there's certain characters that are valid they have a particular format uh one-way hashes are not quite so one way as you might think they are when it comes to email addresses given a little bit of time and effort which is a bummer but you know that's life all right can you tell me about ephemeral clubhouse
John:
Yeah.
John:
The supposed beauty and promise of Clubhouse is that, you know, it's not recorded.
John:
It's not a podcast.
John:
It's you had to be there.
John:
If you were there, great.
John:
If not, oh, well, this shortly after recorded the show, we mentioned these stories about Steve Jobs Clubhouse.
John:
It was posted to YouTube.
John:
Yeah.
John:
because it was recorded obviously i mean there's nothing you can do to stop people from recording and i think the clubhouse app strongly discourages it but computers or computers i'm not quite sure how this recording was made but not only was the stories from steve jobs thing recorded but it was also uploaded to the computer history museum site sort of you know for as a as a historical artifact so if you didn't get in on that clubhouse room and want to see it it's on youtube link will be in the show notes
John:
And related to that, there was a story in Inc.
John:
website, Inc.com, that says with the sensational headline, Clubhouse is recording your conversations.
John:
And that's not even its worst privacy problem.
John:
A little bit sensational, but in their terms of service that nobody reads, it does say, Clubhouse says, solely for the purposes of supporting incident investigations, we temporarily record the audio in a room while the room is live.
John:
If a user reports a trust and safety violation while the room is active, we retain the audio for the purpose of investigating the incident and then delete it when the investigation is complete.
John:
If no incident is reported in a room, then we delete the temporary audio recording when the room ends.
John:
So, I mean, not that you shouldn't have already been assuming this anyway, but just because the Clubhouse app discourages you from recording, it doesn't mean that they're not recording it.
John:
And you can see based, you know, like they have a thing in Clubhouse where you can report like a reporter, recent speaker.
John:
If someone comes on stage and says something bad and you want to report them, like this is all sort of reputation and reporting system built into the app, which is a good thing.
John:
And to sort of adjudicate those, they have to have a recording of what went down.
John:
Well, they don't have to, but it's better to have a recording than to just take someone's word for it that someone did something bad or whatever.
John:
So this makes some sense.
John:
But lest you believe that Clubhouse really is completely like a wisp on the wind and it's here and it's gone, just like all those other things, whether it be Instagram stories or Snapchat or whatever.
John:
you're giving your data to the service provider and they're doing with it whatever they want.
John:
And if you're wondering what they're doing with it, you can read their 800 page terms of service and figure it out.
John:
But the bottom line is once you give it to them, they are, you know, who knows what they're doing with it.
John:
And if you're uncomfortable with your things being recorded, don't use Clubhouse.
John:
But then again, you probably also shouldn't use Instagram stories or Snapchat or any other service that records your audio.
Marco:
We are sponsored this week by Away.
Marco:
Whether it's a trip to the corner store, a weekend away, or an extended stay with friends and family, we're all navigating the current reality of travel.
Marco:
But no matter your destination or your style, Away's suitcases, bags, and accessories all come in a variety of colors, sizes, and materials to suit your needs and inspire your future travels.
Marco:
All of Away's suitcases are made to the highest quality.
Marco:
They are designed to last a lifetime with durable exteriors that can withstand even the roughest of baggage handlers.
Marco:
And if any part of your suitcase ever breaks, their standout customer service team will arrange to have it fixed or replaced.
Marco:
These have lifetime warranties.
Marco:
And all these suitcases are incredibly well-designed on the inside, too.
Marco:
They have an interior organization system that includes things like a built-in compression pad to help you pack more stuff, a hidden removable laundry bag to separate your dirty clothes from your clean clothes as you travel, and they all have four 360-degree spinner wheels, so you can roll them through the airport really easily.
Marco:
Lots of maneuverability there.
Marco:
And all this is available in a nice, huge variety of materials, colors, and sizes to fit your style and your personality.
Marco:
This is a great line of suitcases and other travel gear at Away.
Marco:
And you can see for yourself by taking advantage of their 100-day trial.
Marco:
All of their products come with a 100-day trial.
Marco:
So you actually are expected to take...
Marco:
Take it out traveling.
Marco:
Take your new Away suitcase out on the road.
Marco:
Live with it.
Marco:
Travel with it.
Marco:
Get lost with it for 100 days.
Marco:
And if you decide it's not for you after that, you can return any non-personalized item for a full refund.
Marco:
No ifs, ands, or asterisks.
Marco:
And they have free shipping and free returns on all orders within the contiguous US, UK, Europe, and Canada.
Marco:
So start your 100-day trial and shop the entire Away lineup of travel essentials, including their best-selling suitcases, at awaytravel.com slash accidentaltech.
Marco:
That's awaytravel.com slash accidentaltech.
Marco:
Thank you to Away for sponsoring our show.
Casey:
So, John, you also defected away from Clubhouse, and you've tried Twitter Spaces?
John:
Notice that tried is in scare quotes in this item.
John:
I tried Twitter's Clubhouse.
John:
This is like right after we finished recording the episode where Marco was saying, like, you know, we were debating whether it was going to be a feature or be purchased, and Marco said it's going to be both.
John:
They'll be copied by everybody else, but also maybe they'll get purchased.
John:
Yeah.
John:
Twitter very quickly announced a bunch of stuff that they're doing, one of which is, hey, it's like Clubhouse, but on Twitter.
John:
And basically the way I found out about this, so I don't use the official Twitter client, but occasionally in my third-party client, I come on a tweet that I can't see the features of because Twitter is evil and doesn't allow third-party clients to have access to all the features.
John:
So, for example, polls.
John:
If you see a poll, I can't see polls in my third-party Twitter client.
John:
So if I see a tweet that is a poll and I want to see it, I have to open it in the official client, right?
John:
And so occasionally I do that.
John:
And so I had I had done that like there was some tweet.
John:
I don't remember if it was a poll or not, but something like that that I couldn't see in my third party Twitter client.
John:
So I hopped over to the real client, which is just a matter of saying, you know, open in Twitter, open in browser, even with the link redirect thing.
John:
And I ended up in the official Twitter client.
John:
I'm so sorry.
John:
Yeah, it was tough.
John:
I saw a thing.
John:
I want to get out of there as fast as possible because I can't make heads or tails of that mess.
John:
And I think I wanted to either reply or compose a tweet or something like I wanted to do something quickly.
John:
And I was already in the Twitter app.
John:
So I pressed a little like compose button or something like that.
John:
And it popped up like a constellation of three little circles.
John:
I don't know.
John:
I don't know if I was paying attention or what, but I hit one of the circles or hit something.
John:
And rather than a tweet compose screen, what happened was I was suddenly in a Twitter space.
John:
And I was the host of the Twitter space.
John:
And then apparently Twitter notified everyone who follows me, hey, John has created a Twitter space.
Casey:
Oh, delightful.
John:
Do you want to come into John's Twitter space and space with him?
John:
And then so my icon is in the little Twitter space.
John:
And then another icon appears.
John:
And then another icon.
John:
And then another icon.
John:
And then another icon.
John:
And another icon.
John:
And another icon.
John:
I'm pretty sure at this point my mic is live as well.
John:
Like, cause I pressed, cause I pressed there.
John:
So I'm in, I'm in a thing and like my mic, I think I found like the mute thing or whatever and turned my mic off.
John:
And then I was like, because look, I didn't know what Twitter spaces was at this point.
John:
And I'm like, what just, it looks so much like clubhouse.
John:
I'm like, did I accidentally swipe over to the clubhouse?
John:
No, I'm still in the Twitter app.
John:
Like what even is going on here?
John:
Yeah.
John:
And so the room filled up and I looked around for any other controls.
John:
What I would have done, speaking of chat room, is typed into the chat room and said, sorry, everybody, I have no idea what the heck I just pressed to make this thing happen.
John:
But I'm not I didn't do this on purpose.
John:
And now I have to go.
John:
So that's what I did.
John:
Like the room had filled with like a dozen people in like the short period of time, very short, like seconds.
John:
people had come in because i guess they got like push notifications and then i just bailed so if you're one of those people who came into my to my twitter space because i'm somehow in the beta or i don't know this is this a publicly rollout feature i had no freaking idea i'm sorry i apologize for making a space and i apologize for not saying anything and just immediately leaving
John:
This gets to what Marco was saying before.
John:
Was it Marco saying, like, you have no urge to speak in any of these things?
John:
I also... This is going to sound weird from somebody who literally speaks into a microphone for hours every single week and then distributes it to the world.
John:
I also have no urge to speak in almost every clubhouse thing that I'm in.
John:
And including the Twitter space that I accidentally created, I don't have any urge to speak in that scenario.
John:
Now...
John:
and i don't know why that is like i obviously i wanted to do podcasting i got into it you know like it was a thing that i thought about doing and was excited to have the opportunity to do but i just i don't know if it's a different skill set or i just got to get in the right vibe or i just have to try it a few times to get used to it but so far i'm not enthusiastic about hosting a room and not particularly enthusiastic about participating in a room i think when it comes to clubhouse i'm just a lurker and when it comes to twitter spaces apparently i'm an accidental activator
John:
uh cue the theme song yeah um and so twitter is rolling out some more things that are just tangentially related we're not gonna have time to go into now but i figure they're worth mentioning super follows which i think is actually a clever name because it makes no sense but sounds neat um super follows is where you can charge people to get access to exclusive content on twitter uh which is interesting because that means twitter is going to have to you know get people's payment methods and just you know the whole deal right now no one pays to use twitter as far as i know right yeah
Casey:
I think that's right, unless you're advertising with them.
John:
Yeah, I suppose.
John:
Anyway, and then you can offer them bonus content, tweets that only they can see, a group, a newsletter.
John:
Who knows?
John:
This is not a release feature, at least not released to me.
John:
But it's Twitter.
John:
This was at their investor meetings.
John:
They say, we're going to do a thing where you can charge people to get exclusive content.
John:
So let's see how that turns out.
John:
But hey, at least Twitter is trying something.
John:
And then the final thing is communities.
John:
which is like they show in the screenshot here groups, one group called Crazy for Cats, one group called Surf Girls, G-U-R-L-Z, and Plant Parents.
John:
And I don't know what they're trying to go for here.
John:
It's like every time you look at these things, you have to squint and say, who are they trying to copy?
John:
So it's like, okay, Spaces is Clubhouse.
John:
Super Follows is Patreon.
John:
Twitter Communities is...
John:
What?
John:
Like Facebook groups?
John:
Yeah.
John:
No.
John:
Anyway, coming soon to a Twitter client that you should never use near you.
Casey:
Oh, man.
Casey:
Yeah, I try periodically to go to the official Twitter client just to see, you know, what's going on there.
Casey:
And there are a couple things I like about it, but overwhelmingly so much about it I really dislike.
Casey:
And
Casey:
One of the best examples is there is no sort or I haven't found any sort of idea of state.
Casey:
So I do try to be a Twitter completionist for a list, a private list that I have, and certainly for my mentions.
Casey:
And it seems like every time I arrive at the official Twitter client, it's just like, hmm, we're going to put you right here.
Casey:
I have no idea why.
Casey:
You don't have any idea why.
Casey:
I don't have any idea why.
Casey:
But that's where you're going to start, because that sounds fun.
Casey:
And if they just got that right, I think it would actually be semi-tolerable.
Casey:
I wouldn't say it would be great, but it'd be semi-tolerable.
Casey:
But golly, every time I go and land there, even if that was the last Twitter client I used, it's still like, oh, yeah, we'll just put you in the middle of nowhere.
Casey:
Why not?
Casey:
And it's very, very frustrating.
John:
Yeah, I want to make that pitch.
John:
I continue to be shocked every time I realize that some person I am acquainted with in my tech nerd circles uses the official Twitter client because they'll complain about something like seeing ads or some other thing in the official Twitter client.
John:
If you're listening to this extremely tech nerdy podcast and you use Twitter at all and you're using the official Twitter client and you've never tried a third-party client,
John:
I know it's a lot of qualifiers.
John:
Please check out a third party Twitter client for iOS.
John:
There are lots of good ones to choose from.
John:
I use Twitterific and love it.
John:
Tweetbot is also very good.
John:
There are others to choose from.
John:
It's so much better if you just want a sane reverse chronological timeline of tweets in order from the people you follow, which sounds like what Twitter should always be, but hasn't been for many, many years.
John:
The official client is janky in many ways.
John:
I know you can turn off the algorithmic timeline if you are persistent.
John:
But in a third party client, you don't get ads unless they're ads from the third party client itself, which you can usually pay to get rid of.
John:
And if you can't use a different third party client where you can, it's just so much nicer experience.
John:
Like I don't I think very often that if I couldn't use a third party client, would I still use Twitter?
John:
I would use it a lot less or I would like it a lot less.
John:
So if you've never tried it, give a third-party client a try.
Marco:
That actually is, I think, the best reason to use the main client is if you want to use Twitter less.
John:
It encourages you to use it less because it stinks.
Marco:
It does because it is... Yeah, it's so...
Marco:
Like weird to use the main client.
Marco:
You might end up in a space.
Marco:
It's really, it's quote good.
Marco:
It's good if what you want to do is be a very light Twitter user, a very casual Twitter user where you just like dip in occasionally, look at some random crap and then dip out.
Marco:
It's good for that.
Marco:
That's pretty much all it's good for.
Marco:
And so if that's what you're going for, if you're currently super addicted to Twitter and you're trying to reduce maybe being a completionist or something else, then by all means, delete every other Twitter app on your phone and just use the main app because it will force you into the habit of using Twitter less because it is so bad at being a power user app.
John:
Speaking of that, can you both launch the official Twitter app right now and long press on the Compose Tweet button?
Casey:
I did that earlier.
Casey:
Yeah, so I get three options.
Casey:
There are three icons.
Casey:
And this is very reminiscent of, what was it, Path that did this radial thing way back in the day, which is a really beautiful social network, even though it was otherwise useless.
Casey:
There's three lines with a quill, which I believe means make a new text tweet.
Casey:
There's a box with GIF in the center that presumably means make a tweet with an animated GIF.
Casey:
And then there's like a box with a landscape in it.
Casey:
And I presume that means, you know, open your photos and tweet a photo.
Casey:
And that's all I have.
John:
Marco?
John:
I don't have it installed.
Marco:
I'm not going to install it for this.
John:
All right.
John:
Anyway, I've got the same first two buttons as Casey, but my third button is a diamond made out of dots.
John:
And that's the spaces thing.
John:
So I just wanted to see if it was rolled out for everybody or if I'm just a lucky person.
Yeah.
John:
So instead of the upload a photo, you have the diamond diamond made out of dots, which honestly, even if I had looked at, I would have had no idea what that was going to do.
Casey:
I, I, I, there's a part of me that wants to just use the official Twitter client and live the way the regular people do.
Casey:
And then I use it for 10 minutes.
Casey:
I'm just like, Oh God, it's, it's regular people shouldn't live though.
John:
That's what I'm saying.
John:
Like, I don't think people, that's why I said, I made the point to say it on the podcast because like for regular people, maybe they don't care, but like,
John:
it's so much better than than the other than the official client if you just want like like imagine if when you looked in your email inbox it just gave you like a random selection of your emails algorithmically chosen you'd be like but i just just show me all the emails i got in chronological order i'll go through them right don't just try to guess at what i want to see like if that's how you if that is how you want to interact with twitter to marco's point maybe you don't maybe you just want it to be like i'll show me some popular stuff and then i'll bail but if you want to interact with like you interact with rss or email
John:
a third-party twitter client and even if you don't even if you like the algorithm timeline just to get rid of ads like and yeah i know he's like oh you didn't just say you can't use polls and stuff trust me you're not missing much most twitter polls stink and you can always go over to the it's it's the worst you can't even see the results unless you vote that's why everyone has to put the uh just show me the results thing and
John:
And they limit the number of choices.
John:
I tried to do a Twitter poll like sometime this past year.
John:
And I was so angry that I couldn't put all my options in because there was a limit.
John:
It's like five options or something.
John:
And I had six for my joke poll.
John:
And I'm like, oh, well, you just ruined my joke.
John:
Nice thing.
John:
Five options, whatever the hell it is.
John:
I'm not saying this should be a thousand, but it should be more than like a handful.
Marco:
Transcription by CastingWords
Marco:
Get started today with $100 in free credit at linode.com slash ATP or text ATP to 474747 for that instant access to $100 in free credit.
Marco:
Linode is a great web host.
Marco:
I've hosted, I think I currently host something like 28 servers there.
Marco:
I've been with them for a long time, long, long, long before they were a sponsor.
Marco:
And they're just, they're a great host.
Marco:
They have amazing value.
Marco:
You know, if you compare the resource levels and stuff that you get from them compared to anybody else in the business, and I don't think I've ever seen anybody who can consistently beat them.
Marco:
It's just really, it's a great value for what you pay for what you get.
Marco:
And it's just really great even at any price.
Marco:
Like I love their control panel.
Marco:
I love their capabilities.
Marco:
They have 11 data centers you can stick your servers in.
Marco:
They have all different kinds of server capabilities and optimizations for different tasks if you need.
Marco:
They have all sorts of managed additional services like their new S3 compatible object storage.
Marco:
They have managed Kubernetes support.
Marco:
And there's so much more at Linode.
Marco:
Great support if you ever need it.
Marco:
I needed it recently and they're just wonderful.
Marco:
Super easy to deal with.
Marco:
And the people that you talk to are like the right people.
Marco:
There's never any kind of tiers or handoffs to like higher level service.
Marco:
It's just like you're always talking to the right people.
Marco:
It's great.
Marco:
Visit Linode.com slash ATP and click that create free account button to get started or text ATP to 474747.
Marco:
Get started on Linode today.
Marco:
Thank you to Linode for hosting all my servers and sponsoring our show.
Casey:
So speaking of official clients that are meh and third-party apps that are way better, Overcast 2021.1 is out.
Casey:
That doesn't just roll off the tongue, does it?
Casey:
Nope.
John:
You got to give cool code names for your releases.
John:
This is the Watch Me Now release.
John:
I don't know.
Casey:
Well done.
Casey:
Well done.
Casey:
Actually, I think I first saw this from Curtis, Herbert, and Slopes, and then Marco adopted it shortly thereafter.
Casey:
But I do like this kind of year and then increment version scheme, which is what I've used for my apps.
Casey:
But no, it does not roll off the tongue at all.
Marco:
No.
Marco:
Yeah, and I think I might kind of regret this versioning scheme just because it's so clumsy.
Marco:
You got version inflation.
Marco:
You can't go back now.
Marco:
You literally can't.
Marco:
Apple does not allow you to ship a version to the App Store that is numerically less than the one you shipped last.
John:
Can you use scientific notation?
John:
95 yeah i feel like i should just do you know version like all right 5000.1 5000.2 you can put an exclamation point and then it'll treat this factorial yeah maybe that's like all the fields in photoshop where you can put in math expressions and it will just expand them for you i don't think photoshop understands factorial now i just want to go test that
Casey:
Tell us about this, Marco.
Marco:
The main changes in this version of Overcast are under-the-hood stuff that nobody even sees.
Marco:
And then secondly, the entire Watch app.
Marco:
The main goal of this was, number one, modernize a lot of the guts of the app, a lot of the data layer, the network layer, all that stuff.
Marco:
Because it was all seven-year-old code, most of which is still there.
Marco:
But modernize it to the point where
Marco:
both it could be optimized to whatever it needs to be for modern day, but also the driving factor behind it was I wanted to rewrite the Watch app to have the same sync engine and all the model and data layers and stuff as the main app.
Marco:
Because the Watch app was miserably bad at being reliable and at sync and everything else.
Marco:
It was to the point where I knew phone to watch communication is so unreliable with the watch connectivity framework and everything.
Marco:
It's so unreliable.
Marco:
I knew the key to happiness here is to have the watch be a first class sync client that syncs directly to the Overcast web service.
Marco:
and runs all the sync stuff itself, and only communicates to the phone when it comes time to use the watch as a remote for the phone app, which is a common use, granted.
Marco:
Probably even the most common use.
Marco:
But that should be the only communication it does.
Marco:
The phone telling it what's playing on the phone, the watch telling the phone, like, hey, the user just hit pause, pause the audio, whatever, that kind of thing.
Marco:
But not using the phone app and that communication channel as this, like...
Marco:
way to sync all the data to the watch and all the podcast files for people who are wanting to listen to stuff directly on the watch without their phone present, like if they're going on a run or whatever.
Marco:
I knew I had to bring the sync engine over to the watch.
Marco:
In order to do this, there were two major undertakings.
Marco:
Number one, the watch does not run UIKit.
Marco:
And for the time being at least, the watch does not run my audio processing engine.
Marco:
And so all the places in the sync engine and the model layers, all the places where that code was intertwined with UIKit or with the audio engine had to be broken up and made more orthogonal.
Marco:
So I couldn't have a little clause in the sync engine that says, oh, well, if this is synced this way or if this condition happens in the model layer...
Marco:
go tell the audio engine to do this or fire this UI notification directly to the UI of the app.
Marco:
I had to break those bonds, make the code more isolated, more orthogonal, more independent from the other components of the app so that the sync and model layer could sync itself without any UI kit code, without any tying in with the phone app in ways that I couldn't bring over the watch app.
Marco:
Part two was simply making it more efficient, because to run the sync engine and everything, to run that whole thing, the whole data engine on the watch, well, the watch has a way slower processor, way less RAM, way less storage space, and...
Marco:
you are allowed to use way less of those resources before your app gets killed.
Marco:
Background operation on the watch is very limited.
Marco:
If you use, I think, two seconds of CPU time, your app gets killed.
Marco:
And again, memory is constrained.
Marco:
So it's a much more constrained environment for resources and for what apps are allowed to do and when.
Marco:
So I had to make everything efficient.
Marco:
And it was already pretty close, but it took some work.
Marco:
And then finally, I wanted to rewrite the Watch app in SwiftUI for lots of reasons.
Marco:
I mean, WatchKit is the worst.
Marco:
And SwiftUI, while it has many challenges to it, is a hell of a lot better than WatchKit in so many ways.
Marco:
It's not even close.
Marco:
So, you know, I was willing to tolerate the pain of learning SwiftUI and all the weird walls you hit when using SwiftUI compared to the
Marco:
That last challenge was to adapt or rewrite parts of my almost entirely Objective-C data layer to be easily integrated into SwiftUI.
Marco:
Which involves, in many cases, just rewriting certain classes in Swift.
Marco:
Things like the download manager, the sync queue for sync operations, like for how those are scheduled.
Marco:
Stuff like that, so that they could then tell the UI things like whether sync is in progress, what the download state is of an episode.
Marco:
Things like that.
Marco:
It's much, much, much easier and better to have a lot of that stuff be in Swift classes.
Marco:
And so making the data layer integrate better or at all with Swift UI required a lot of rewriting stuff in Swift or writing shims on top of things in Swift.
Marco:
So that was the main challenge of this version is over the last few, I think about three or four months or so,
Marco:
rewriting core components in swift when necessary bridging things to swift and making things more swift friendly when i wasn't rewriting them uh and then rebuild and then making all the code like for sync and everything standalone from the rest of the ios app so that it could be built and run on the watch and making that efficient enough that i didn't get killed constantly that's what this update was and what users saw was basically like bug fixes and new watch app
Marco:
That's like this massive amount of work, massive amounts of change, all of that to basically say bug fixes and the watch app is all new.
Marco:
But that's the kind of thing that I really needed.
Marco:
And the watch app was in a really bad state before this.
Marco:
It really didn't work well for a lot of people.
Marco:
And so I had to really tackle that.
Marco:
And this allowed me to do a bunch of other stuff.
Marco:
There was a whole thing about...
Marco:
I did rewrite all the intent handling.
Marco:
Adopting the new intent handling required me to switch my old UI app delegate thing to UI scene delegate, the scene delegate API that was launched a few years ago.
Marco:
And I decided, well, I might as well do that in Swift as well.
Marco:
And then I might as well rewrite my app delegate.
Marco:
Since I have to rewrite it anyway, I might as well rewrite the app delegate in Swift.
Marco:
And as any iOS developer can tell you, rewriting your app delegate after a seven-year code base can be terrifying and quite an ordeal.
Marco:
So it's just like there was tons of stuff like that where in order to do some modern thing, I had to...
Marco:
Either rewrite something from scratch or at least significantly change it to use a new API.
Marco:
And so it just took a lot of time.
Marco:
There was a lot of code monetization to do, a lot of rewriting or refactoring or shimming to do.
Marco:
I still haven't even gotten to all of it.
Marco:
Part of the reason I was doing all this was to prepare myself to do iOS 14 widgets.
Marco:
which I still, frankly, don't really want as a user for a podcast app.
Marco:
I don't really think it's going to work the way people think it will.
Marco:
But my customers are demanding that in moderate numbers, and so I figured I should probably do it.
Marco:
But even to do that, I had to lay all this groundwork.
Marco:
There's a bunch of changes to CarPlay's abilities in iOS 14 that this version does not tackle yet, because I just didn't have time.
Marco:
But that's going to be something I tackle next, and I think a lot of this groundwork is going to help that become easier or possible.
Casey:
Wait, so slow down.
Casey:
What is it that CarPlay can do now that it couldn't before, for your perspective?
Yeah.
Marco:
Again, I haven't looked too far into this yet.
Marco:
Again, I just haven't had time.
Marco:
But I think you're able to have a lot more control over the types of UI that you can display than previously.
Marco:
Before, the CarPlay interface I have now is built on this older API where you basically responded to Apple asking for a tree structure.
Marco:
So it would say, all right, we're on the root screen.
Marco:
What are the list elements of the root screen?
Marco:
Give me the list items.
Marco:
And then it would say, all right, person tapped in this item.
Marco:
Give me the list elements in the next level of the tree or whatever.
Marco:
It was a very, very simple list-based thing.
Marco:
And then the now playing screen, I had almost no control over.
Marco:
the new carplay api adds some ways and again i don't i don't know to the extent yet how much but it adds more places where you can customize what the ui actually is including on the now playing screen which which is very important to me because i really want to be able to tackle that in a good way and so my next major update i intend to have you know widgets and carplay redo basically but that's probably a few months out still
John:
It's a feature request from the chat room for chapter skip and chapter control and display on the now playing screen.
Marco:
Yeah, in CarPlay, yeah.
Marco:
That's certainly on my list.
Marco:
I don't know to what degree that's possible yet.
Marco:
It's always been frustrating with CarPlay because in the previous one, the one that my current app is based on, you could offer speed control.
Marco:
But if you did, you would have to say, all right, here's the list of speeds I support.
Marco:
and then the only way the user could go through them would be like tap the speed icon on the screen and it would then for every tap it would go to the next speed and so you'd have to like if you wanted to slow it down by one you have to tap through every single go through chipmunk yeah okay you have to go through every single other speed first it was it was just a terrible experience like i tried i did it in beta once i tried to actually use it that way and it was miserable but
Marco:
And so I didn't even ship the speed feature, even though I could have easily.
Marco:
But I disabled it because the experience was so bad.
Marco:
So with this new CarPlay API, I believe we're able to do better things like that.
Marco:
So things like having a better speed picker or having a chapter list and chapter picker, I think will become possible with this new API.
Marco:
But until I actually try it, I won't know, A, whether I can do it, and then B, whether it's shippable or not.
John:
So Casey and I have quotas based on our union membership and we have to point out that if you did have any kind of automated testing that work you did to divorce your sync engine from your UI, it probably wouldn't have happened because you would have already had them separated just so you could easily test the sync engine before you wrote the UI.
John:
Just saying.
Casey:
Not only that, but since we're beating on Marco now, one of the advantages of having any sort of automated testing is that when you do utterly destructive things like destroy your app delegate and move to a scene delegate, not all of that, and maybe even not a ton of it, could have been covered by automated tests, but presumably more than zero could have been.
Casey:
Yeah.
Casey:
And one of the things that I love most about when I do have good test coverage and do as I say, not as I do, I paint this picture like I unit test everything and I don't very far from it.
Casey:
But when you do have good unit test coverage, what's nice is you can break something in terms of the, you know, the quote unquote real part of your code.
Casey:
And then just run your unit test to make sure they still pass.
Casey:
And if they do, you have some amount of confidence, certainly more than zero, that everything should still work the way it's supposed to.
Casey:
And that doesn't replace all the human testing that I'm quite confident Marco did, because I didn't have any particularly major issues with this update.
Casey:
But nevertheless, it does give you some amount of confidence and some amount of flexibility.
Casey:
And I guess a parachute over you, behind you, whatever, when you're making these sweeping changes like you did.
Marco:
I wanted to also address one more thing quickly.
Marco:
UnderscoreMyNameIsT in the chat is talking about how I didn't mention the audio engine for the Watch app.
Marco:
So when I was writing Voice Boost 2 last year, I specifically wrote it to be ruthlessly incredibly efficient.
Marco:
Yeah.
Marco:
to the new currently supported AV audio engine, which has actually lots of problems, but I figured ways around them.
Marco:
And when I did that, I intentionally stuck with APIs that were available on the watch as well.
Marco:
So I have laid almost all of the groundwork to port my audio engine to the watch as well.
Marco:
The only thing I couldn't get to be available on the watch in a way I could use on the phone, or at all, is to have speed control.
Marco:
Not smart speed, but just plain old play this at 1x or 1.5x or whatever.
Marco:
That...
Marco:
is not a public API on the watch in a way that you can use in AV audio engine.
Marco:
The only way that's exposed on the watch in public usable APIs is if you make like an AV player or something.
Marco:
But those APIs don't give you the flexibility to process the audio the way my audio engine does.
Marco:
So if I want to run an audio engine with processing on the watch...
Marco:
I have to either not offer speed up, which no, or I have to write my own speed up, which I've never all the audio processing I've done before.
Marco:
I've never written a speed up algorithm.
Marco:
I intend to tackle that at some point just to try to see if I can do it to an acceptable level of quality.
Marco:
I assume that what the Apple version of it is doing is like a PSOLA kind of algorithm or TSOLA.
Marco:
I've looked at what these algorithms are.
Marco:
And I think I could do it slightly reasonably in a way that would be good enough quality for speech on the watch.
Marco:
But that's what's holding me back there is that I can't yet find a way to offer speedups on the watch in an API where I can process the audio in other ways as well.
Marco:
without writing my own speedup algorithm, which is just a job I haven't tackled yet.
John:
Maybe you should just change the icon or finally get rid of the custom font just so people could be in an uproar about your new version.
Marco:
Honestly, I am very, very close to dropping the custom font for whatever I do for the UI redesign that I've been thinking and brainstorming about for five years.
John:
haven't done yet it would be a big change i remember being indignant that everyone complained that the iphone 4s wasn't a big upgrade because it looked the same on the outside and that is the eternal curse of people with gooey apps that don't change the gooey people think nothing changed that's life no and the reality is my customers are really good they i've not i haven't gotten a lot of crap from anybody about this like
Marco:
the there was actually there was there were a couple there was one i think or two negative reviews somewhere i forget whether it was app store or what but a few people complaining before i had released this that i hadn't updated the app in like seven months and that's not actually true it had been about three months but the last version number was 2020.8 which
Marco:
which somebody might interpret as August, even though it was actually in November.
Marco:
And so that is actually a problem with this version number scheme, that it kind of looks like year.month.
Marco:
I thought it was year.month.
Marco:
Well, and it just so happened that during most of 2020, like during the first half of 2020, I released about one version a month.
Marco:
And so for the first half of the year, it matched up pretty well to the month.
Marco:
But no, it's not.
Marco:
It's just sequential numbering.
Marco:
It's just whenever it's ready, I ship that version.
Marco:
Like, what if I wanted to ship two versions in a month?
Yeah.
John:
I think I was on a patch version a day with front and center for the first few weeks that it was out.
John:
So I wonder if people thought the last number was the day I released it.
Right.
Marco:
So yeah, so that is definitely one problem with date-based versioning is that it sure looks like it's date month or year month instead of just year.
Marco:
But anyway...
Marco:
At some point, I do intend to do like a larger UI redesign.
Marco:
And I've decided throughout all of this, I'm going to start tackling that when I can require iOS 14.
Marco:
And that way I can use a lot more Swift UI stuff and a few other niceties.
Marco:
And I could probably, I mean, realistically, I could require iOS 14 now.
Marco:
But it's not a super great idea if you don't have to yet.
Marco:
And so, again, a UI redesign is definitely on my list of things to do.
Marco:
But because it's not super pressing, and there's lots of other stuff that is more pressing, it just keeps not getting done.
Marco:
And it might be another year or two before I even tackle it.
Marco:
Because now that I've spent...
Marco:
four months or whatever it's been on like under the hood stuff and a very small number of new features but mostly just under the hood stuff what I want to do next is features like people have been asking for certain features for a long time so I want to tackle that next as opposed to a massive UI redesign which I mean it's a podcast app the UI doesn't matter that much and it's
Marco:
the reality is features matter more to my customers at this point and so a ui redesign is more like self-serving i want to do it because i want to do it but uh what my customers want is features and so i want to work on that for a little while first so you've opened the floodgates for feature requests time for my uh semi-annual overcast feature requests i have two of them one easy one hard catch up mode uh
John:
No, I'm not going to go into all that stuff.
Marco:
I do want to do that, by the way.
Marco:
I actually wrote server side support for catch up mode, but it's kind of buggy.
Marco:
The function on the server that handles what episodes in a podcast should be shown to you as new.
Marco:
is incredibly finicky and incredibly high stakes.
Marco:
If I screw that up, the servers explode, basically, because it's just massive amounts of volume going through that function, and it's dealing with the biggest database table in the app by a long shot, which is the progress of a user within a certain episode.
Marco:
that table is massive.
Marco:
And it's highly optimized, and if anything goes wrong with that table, or with the function that determines what to write to that table, and more importantly, when not to write to that table, things go very badly.
Marco:
And so...
Marco:
I haven't wanted to tackle that yet because last time I tried tackling it, I blew up the servers.
Marco:
It sucked for a few days.
Marco:
I eventually was able to roll it back and I'm like, I don't want to touch it.
Marco:
I'd rather not touch that area of the app because to touch it for this like relatively low needs feature is a very, very high risk.
Marco:
And so I'd rather not do it, but someday I'll get there.
John:
well since you brought up that feature my suggestion for how to deal with that is not to screw up your the table you were just describing but to essentially be able to mark a podcast as participating in this special mode and then have your own separate table that is only for podcasts marked in this mode i know it's annoying to fork the uh the code and say okay well if there's one of these podcasts do this but if one of these podcasts do this and now i gotta do everything twice but it will totally save you from hosing your very precious table because like you said this is a small feature
John:
Yeah.
John:
Yeah.
John:
but that's not what i was going to ask about i asked about easy features because i have a chance to be implemented number one uh when sending a clip from overcast very often i want to send a clip that is that is below the minimum size the ui will let me squish those two little endpoints together and there's plenty more room to squish them and i want to when i'm crushing their head i want to get that thing back together so whatever the limit is now it's like what 10 seconds five seconds i don't even know i've never i've never thought of sending a five second clip
John:
it's like it's like a centimeter it's always when i want to clip out someone pronouncing a word weird right and i just want to get the word and not the thing surrounding it whatever the limit now is it's like a centimeter between those two endpoints and you could definitely squish them farther than that so that seems like an easy one to do throw that one in there the harder one to do is when i'm making my beautiful hand tailored overcast clips i often want to zoom in for more accurate scrubbing with placing the endpoints instead of rolling my fat meat finger and sort of like
John:
twisting it a little bit then trying to release it from the screen oh but no it moved after i picked it up and then trying again oh no it moved well because you're trying to make a one second clip i know just say it's a minute long clip i'm just trying to get the end point exactly where i want it and sometimes the the whatever your default zoom the granularity doesn't let me get like this one people have words that are strung together very quickly i just want to slice right in between the words and i can't get the thing on the right pixel
John:
uh i know you what i'm asking you is just this is the hard one it's to slowly make a tiny audio editor inside overcast but you want to make an audio editor anyway so might as well work on this now some kind of pinch to zoom feature for the for the timeline so i can get more accurate so the easy one uh smaller minimum size the hard one zoom uh maybe just two step zoom zoom in zoom out two levels like start with that
Marco:
yeah the the whole feature of clip sharing i would like to give some attention to here's the challenge there so the automatic kicking machine is still necessary and the need for it seems to slowly be getting higher i hate this i notice that yes i notice every i watch it every time it's like it's actually a form of entertainment like is it gonna do it the first time this time no it's not
Marco:
And so, and part of the reason it would be hard for me to increase the granularity of the, of the scrummers in part, because what the automatic kicking machine does.
Marco:
So for listeners, in case you have forgotten, this is the, the thing in the overcast clip exporter where the API that generates those, the, the like AV rendering of like, I feed it like an animation basically.
Marco:
And then it generates a video file from that, like a, you know, an M4V file from that.
Marco:
that API just occasionally hangs the, I think it's AV asset exporter or something like that.
Marco:
Um, it just occasionally hangs for no visible reason and it just will hang forever.
Marco:
And the solution it, well, a way to get around it is to just detect when it's just not progressing anymore and just cancel that job and start a new one with very slightly different input and see if that works.
Um,
Marco:
And so what I do, I called that a while back, the automatic kicking machine.
Marco:
And what I do is every time that it stalls and it restarts the job, it subtly tweaks the starting and ending timestamp by some tiny random amounts.
Marco:
So it's not enough that you would really notice it, but if I start letting you do very granular start point and end point editing, you might actually start to notice that.
Marco:
So I don't love that.
John:
If it's small enough that we won't notice it, we won't notice it no matter what.
John:
I know what you're saying, that it would be a larger, like if you so carefully placed it, now I'm perturbing it, but you're perturbing my placement now anyway.
John:
All I want to do is get closer to it.
John:
Presumably your random thing is oscillating around the point that was selected.
John:
I'm fine with that.
John:
If that's what you've got to do with the stupid kicking machine, I'm fine.
John:
I just want a little bit more granularity.
Marco:
Part number two of this comment is...
Marco:
Ultimately, I want to rewrite the clip sharing implementation to use a whole different method of generating the video to avoid the need for this at all.
Marco:
That whole AV asset exporter thing where like – so right now I'm basically generating a core animation set of layers.
Marco:
And I say, all right, go between points zero and one in the animation, make the progress bar go from here to here.
Marco:
at you know points one two three four and five make the time stamps this this this this and this and then you know overlay this audio in the background under it i'm able to then pass that to the av acid exporter and it generates the video for me what i want to switch to is a much more complicated way of doing it where i have to generate every frame as an image and pass it to some other api using all these like different low-level apis but
Marco:
The reason I want to do that is, first of all, I want to get rid of the automatic cooking machine.
Marco:
Second of all, I want to redo the visual layout of what's being generated to include some kind of more dynamic animations, like a waveform animation.
Marco:
And I want to try putting in editable transcriptions from the iOS transcription API.
Marco:
When I wrote the feature, I don't think there was an offline running version of the transcription engine, but now there is.
Marco:
Like, in iOS 14, at least, there is.
Marco:
And so I would like to rewrite that feature to have...
Marco:
to have it be more visually interesting when people see a clip without their sound on, which is becoming more and more of a thing on social networks.
Marco:
So I want to have some kind of text be able to roll by, possibly even use the text in the editing view, depending on how that API works, how well it works.
John:
You've got to let people fix mistranslations now.
John:
That's the key part of that.
Marco:
Sure, yeah.
Marco:
And that's why it might not end up being very worth it in the output video, but it could definitely be worth it in the editor.
Marco:
So anyway, I want to play with that.
Marco:
But so the point is, I want to do these things that are basically rewriting massive parts of what clip sharing is.
Marco:
However, here's the problem.
Marco:
Almost nobody uses it.
John:
Oh, really?
John:
But the people who do use it are both promoting your app and also promoting podcasts.
John:
So I think it punches above its weight in terms of a feature.
John:
Like you don't necessarily need everyone to use it, but every person who does use it is sending out into the world a thing they enjoyed from a podcast and an Overcast logo.
John:
And what I was thinking of is the main feature that I would love to see on Clips, which I know you probably can't add, but it's always worth just looking into it again.
John:
It's I always just want to tap on them and get taken to an Overcast link to the rest of the episode, like basically URLs.
John:
Like if you share them on Twitter, there may be some way to hack that in.
John:
I know when I do do something in Overcast, don't you have that feature for like chapter art and you can tap on it and it takes you somewhere?
John:
Or am I misremembering?
Marco:
The art?
Marco:
Well, I mean, chatbots can have links, but no, I mean, the problem that you're talking about now, though, is a problem just in the sharing context.
Marco:
I'm already putting two items on the pasteboard.
Marco:
I'm putting the video and the link, but most apps don't do anything with that.
Marco:
Most apps just take the video.
Marco:
And so, like, I'm already supplying the data, and the only way that I don't know how to, or the only way I'm able to in this context, but most apps don't make it clickable.
John:
I was thinking, like, in a QuickTime world, you'd have multiple tracks, and one of the tracks would be, like, a URL track that a savvy client would understand.
John:
that is a link you're right it's just like i'm thinking of it from sharing purposes and you're right that most things that you share on no matter what you did they would just say just give me the video and i'm going to show it but that's what i really want out of sharing like when you share a blog post people tap on the link and get the full blog post when you when i share a podcast i always want be able to i love the fact that it's a clip that they don't have to do anything here it is here's the clip and you're listening and i love the fact that it's a movie see that past episode where we discussed this just the one missing piece is sometimes people ask me
John:
uh hey what podcast is that from despite the fact that the name of the podcast and the logo of the podcast is in the video they don't have any way to find it except for going to google and typing in like accidental tech podcast and hopefully then what episode was it oh i see the episode number and then they have to go through the site right you have all that info right there you have overcast timestamp urls all ready to go it's just a question of how to get them out of your app and into uh
John:
the wider world because the reason i use the clips feature as much as i do which is not that much but still some is i love to be able to share fun parts of podcasts half granted half of my clips that i send are you know to just friends through messages when someone we know said something funny on a podcast but i do send them on twitter as well here's this clip from this thing or check out this part of this episode or whatever or
John:
i use them as snarky comebacks when people complain about something uh on a podcast that i was on and then i send them a clip addressing whatever their point was and then i don't have to reply to them on twitter it's like audio replies but canned so i i like the feature i think is it is super useful for overcast to have and and
John:
Not only that, but I see tons of similar features from people who use other podcast clients, including ones with transcription on them.
John:
So maybe they have the same problem that you do that most people don't use them.
John:
But there's enough that I see them and there's enough that I know other people have transcription.
John:
So I feel like it's kind of table stakes at this point.
Marco:
So to give you some idea of how many people use this feature.
Casey:
So now don't tell me because I agree with John.
Casey:
I love this, even though I don't use it that often.
Casey:
I love it.
John:
I mean, I think I think overcast problem is that it's not particularly discoverable.
John:
And I think we talked about that when the feature first rolled out.
John:
But yeah, I mean, yeah, I mean, that's not really helping.
Marco:
But it's, you know, it's in the share menu.
Marco:
But no one knows what the share menu is.
Marco:
And it's so small.
Marco:
Well, but the share menu is used by a decent amount of people, and the shares of just links that aren't clips are about five times higher than clip shares.
Marco:
Clip sharing is used by about a third as many people as the screen reader voiceover.
Marco:
about a tenth the people as people who use the website player while logged in.
Marco:
And it is used by about a quarter of as many people as who are using the Mac app on an M1 Mac.
Marco:
My goodness.
Marco:
So it's not a large portion of the user base.
Marco:
And so, you know, if it's something like supporting voiceover is almost no work at all, which is why I'm embarrassed whenever I mess it up.
Marco:
But clip sharing is a ton of work to do that feature...
Marco:
justice and i already have a version of it now that works okay and to make it better i have to like rewrite it basically and so it would be a large amount of work to make this feature better that almost no one uses and i think it would be probably not time well spent i
John:
that doesn't mean i won't do it i do things all the time that are time poorly spent just because i want them to be done and so i will probably do this at some point but it's not going to be a high priority i would give it more visibility because i feel like it's uh i you know i maybe it's just me in the circle who traveling but i see a lot of clips shared not just from overcast like i said from other podcast apps so someone's sharing clips from somewhere and if people aren't doing it from overcast that much maybe it's because it doesn't occur to people to do it or whatever and
John:
Granted, the editing interface is weird, and I understand all the reasons why it would be a narrow thing, but I think it's free advertising for your app, and it is advertising for podcasts in general.
John:
But anyway, if you bail on all that, just make the minimum size smaller.
John:
It's really easy.
John:
Just change the number.
Casey:
Well, I'm excited this shipped, and I think it certainly seems to be well-received.
Casey:
I've enjoyed it.
Casey:
I haven't yet gone on a run with just my watch, but the watch app certainly visually seems to be way, way, way better.
Casey:
So all good things.
Casey:
I have one final question for you, though.
Casey:
If you were stranded on a desert island and could only bring Swift or Objective-C, what do you bring in these days?
Casey:
And I say that obviously to be funny, but you talked a lot about having been porting a lot to Swift, and you've kind of made references to that in the past couple of months.
Casey:
Do you feel like your default state is now Swift, or do you still think that you're reaching for Objective-C first and Swift only in certain circumstances?
Yeah.
Marco:
During this version is when I crossed over.
Marco:
I don't know exactly when, but it was during this version that I have now crossed over to the point where not only do I write more Swift than not, and not only has it become my default, but I've actually started to prefer it.
Casey:
What do you either like about Swift that's making you prefer it or perhaps now you dislike it about Objective-C?
Casey:
Can you build on that anymore?
Casey:
To quote an underscore, let's pull on that thread a little bit.
Marco:
Yeah, unpack that a little bit.
Casey:
Yeah, unpack that.
Marco:
There you go.
Casey:
Sorry, I got it wrong.
Casey:
You're right, you're right.
Casey:
We'll fix it in post.
Marco:
That's what we'll do.
Marco:
It's hard to pin it down.
Marco:
I mean, some of it is just syntactic and API differences.
Marco:
Just small stuff where I could save a bunch of keystrokes doing this.
Marco:
That's a lot of it, if I'm honest.
Marco:
Some of it is some of the niceties that are afforded by the type system.
Marco:
Things like dealing with enums and stuff like that.
John:
Enums, please, everyone, let's agree.
Marco:
but you enumerate things.
John:
I know, but it's, we're going to have to go through a car and char again.
John:
It's not.
Casey:
Well, which one do you prefer?
Casey:
Is it car char?
John:
Uh, I say char.
John:
Yeah.
John:
Yeah.
John:
Then you don't say char actors.
Marco:
Yeah.
Marco:
All right.
Marco:
I'll, I'll enumerate my char actors.
John:
Anyway, Swifty noms, Swifty noms are great.
John:
Oh, I agree there.
Casey:
Swifty noms are fricking amazing.
Casey:
I, that's my, my, still to this day might be one of my favorite features of the language.
John:
I mean, that's just to bring Destiny into this because I always must do it.
John:
This is what they call in Destiny and in the gaming world in general.
John:
Like when they do releases for games that, you know, things like there are bug fixes and there are new features and there's new content.
John:
And the things Marco is talking about so far are what they call in the gaming world quality of life improvements.
John:
Like, oh, it's easier to get to your inventory screen and you can delete these items in sets of five instead of individually.
John:
And, you know, like things don't really affect gameplay, but affect things that you do every day.
John:
You know, sort of the drudgery, the chores of whatever task you're trying to accomplish and just making them easier.
John:
Even just something as simple as how do I define a class and a bunch of attributes?
John:
Doing that in Swift involves so much less typing and so much less navigating in your UI and so much less thinking than in Objective-C.
John:
Even if you know how to do the Objective-C version like the back of your hand, like it's totally instinctive, there's just mechanically more to do than to do the same job in Swift.
John:
And I feel like enums in Swift are the same deal.
John:
You know, you don't need that feature.
John:
You can do the same thing with a bunch of pound defines or constants or static variables or all the other tools that are available to you in Objective-C.
John:
But Swift has this one tool to do it, and it's incredibly powerful and doesn't involve a lot of typing.
John:
It's a quality of life improvement.
John:
And that's setting aside the safety stuff of, like, all the different safety things.
John:
Just setting all that aside.
John:
Forgetting about, like, oh, reducing bugs or whatever.
John:
Just the process of typing the code.
Marco:
Yeah.
Marco:
Like, that to me is where I'm seeing much of the benefit is things, you know, not only, like, little time savers from just, you know, shorter names of everything and stuff like that.
Marco:
But, like, things like what you said about making classes or making types or making protocols where...
Marco:
not only is it less typing in Swift, but because it is just so much simpler and faster to do, I do it more.
Marco:
And that changes the way I code, it changes the way I structure things in certain ways, and it makes certain things a lot easier or better, or it enables change to happen faster, or it enables me to know that something is correct faster.
Marco:
One thing I don't do much is the kind of prefix-less lifestyle.
Marco:
I still name my stuff beginning with OC, and I'll tell you why.
Marco:
It's not because I'm being stubborn and bucking the trend or whatever.
Marco:
It's because I search my code.
Marco:
I do Command Shift F to find global all the time.
Marco:
And if a class has a generic name without a prefix, without my little OC prefix in the front of it, it's harder for me to find references to it.
John:
But the other classes won't be in your code when you do Command Shift F. They're in frameworks, and you're not searching them when you do Command Shift F.
Marco:
No, I know, but it's kind of like the common, or I guess I think the preferred style right now for writing new Swift code and SwiftUI code is to not prefix stuff with your own prefix.
Marco:
It's to make everything just generic name, like playlist, whatever.
Marco:
If my object was called playlist instead of ocplaylist, and I did a string search for playlist in my entire app...
Marco:
I'm going to get so many things that aren't OC playlist commands and objects.
Marco:
And there's just certain times when I use that all the time, and so I find it very, very nice to search for that.
Marco:
And frankly, I think dropping all the prefixes from all the APIs might be a mistake for lots of other reasons, like even the framework APIs, because it makes it harder to search Google and Stack Overflow for things like that, too.
Marco:
It makes it so much harder to disambiguate...
Marco:
Am I talking about a list or am I talking about an NS list or whatever?
Marco:
I know that's not really a thing, but I miss having those two-letter prefixes on things because it makes it easier for me to find in my code base.
Marco:
And I know you can do more structured searches for things like find call hierarchy and stuff like that.
Marco:
but doing just a basic text search is so much faster and easier.
Marco:
And I do it all the time.
Marco:
And to not have named prefix or to not have prefix names makes that harder and makes it less effective.
John:
So there's two aspects that one is just the cultural one, which you said is like the, the,
John:
The culture now in Swift is not to do that, whereas in Objective-C, it was to do that.
John:
When I wrote my first Swift app for the Mac, I put... Well, first, I wasn't even thinking about it and just typing, but then eventually I realized, oh, I should probably prefix all of these because I was in the Objective-C mindset.
John:
So I did FNC for front and center, right?
John:
FNC whatever was the class names because I am a strong proponent, let's say, of namespaces in other languages.
John:
But my first problem was I had no idea how namespaces worked in Swift.
John:
So I was like, do I need to do this?
John:
Is something not going to work?
John:
Ah, better safe than sorry, FNC in front of all my classes.
John:
But eventually I learned that that is not in the culture and not strictly necessary according to what everyone else was doing.
John:
So in my second app, Switch Class, I didn't do that.
John:
The refixes and I have to say I aesthetically prefer not having the prefixes I understand what you're saying about the search stuff and I think I'm probably benefiting in my searching when I search for things like the NS prefix sort of Getting me out.
John:
I'm sure that I'm gonna get a result that has to do with programming if I type NS string Whereas if it types just string by itself, it's harder but I have found that
John:
adding the word Swift or the framework name like SwiftUI as a search term in Google and then type it.
John:
If you type Swift string, Google kind of figures it out.
John:
Within the project, I haven't found it to be that much of a problem.
John:
That said, I still don't know how Swift namespacing works, by the way.
John:
I would like to know, but apparently not enough for me to look it up.
John:
right but i have to say that when i wrote switch class uh totally unprefixed i ran into a namespacing issue for the exactly the reason that marco said if you name things in a generic way i think i made a tweet about this like the incredible guts that it took for swift ui to call one of its classes view it's just called view like oh really view you're just going to take that name but of course it's not like they're taking it forever it's it is my vague understanding that it is namespaced underneath swift ui blah blah but
John:
In Switchglass, as you can imagine, I have things in the code that represent the apps that appear in the palette, and I called them app.
John:
And that seems fine until I ran into some weird thing with the SwiftUI Previewer in Xcode where they used the same symbol app, and it was conflicting with mine, and I had to qualify mine.
John:
I had a place in my code that just said app that runs perfectly fine in the running app, but in the preview, it was flipping out, and I could not figure out what it was, and then I changed it to switchglass.app.
John:
And suddenly my thing worked in the preview and I'm like, all right, well, someone needs to have a, you know, a sit down and talk about what are we doing with namespaces here in Swift?
John:
Because I thought it was perfectly safe for me to call my stuff app, but apparently that is not true.
John:
And now I'm a little bit angry and I don't know what to do.
John:
Anyway, someday I'll learn how namespacing works in Swift.
Casey:
So this is one of those moments where I know I'm just inviting a bunch of follow-up.
Casey:
But my limited understanding of namespacing in Swift is that basically each module is its own namespace.
Casey:
But outside of that, there's really no concept of namespacing.
Casey:
The closest you can do is have an enumeration that has no cases in it.
Casey:
So you have an enumeration that's just like functions and properties and things of that nature.
Casey:
And that sort of kind of gets you there.
Casey:
But it's not like, say, C-sharp or something like that where you can explicitly define a namespace.
Casey:
And I miss that, and I wish it was there.
Casey:
And I think that that was an error in early Swift to not have more explicit namespacing.
Casey:
I've run into this from time to time because Combine has a print method that is designed to be used as a debugging tool within the context of a publisher chain.
Casey:
Um, and sometimes I'll try to do a, you know, a generic Swift print and it'll be like, no, you're not giving, you're not giving it the right, uh, parameters and so on and so forth.
Casey:
And I'm like, wait, what, why is print bro?
Casey:
Oh, right.
Casey:
Swift dot print is what I want in this particular context.
Casey:
And it is very frustrating.
Casey:
So I totally hear you.
John:
Yeah, I mean, coming from languages, I've spent most of my time in languages that have global namespaces, and I can tell you that's terrible as well.
John:
Java tried to do the right thing to fix that by saying we're going to solve this problem and not have any of these ugly naming conflicts.
John:
But the price for doing that is Java class names, and I don't think anyone wants that.
John:
You know, like piggybacking on another system to disambiguate com dot whatever dot, you know, it's just it's gross, right?
John:
uh so i that's why i was excited about swift not having like oh per module names and it can all work it out or whatever but the fact that i did this surface to me already again not in my running app but only in the swift preview like maybe it's a bug with with xcode but either way like i want to not like my whole point with naming is i want to just do the right thing and then never have to worry about it and that's no longer the case now i have to be careful oh you want to name something in your app app
John:
Be careful because there may be some other important part of the machinery of building your app that it gets angry about that and breaks in a weird way.
John:
And now I'm not so upset by it that I'm going to go back to Marco's thing and prefixing everything because I find that more offensive.
John:
But it does make does give me a little bit of pause when I name my classes.
John:
And yes, before you send feedback, I totally should learn how namespacing works in Swift, but I haven't yet.
Casey:
Another great example of this is if you were to use or to create a widget for an app and use the default names, if I'm not mistaken, and Steve Trouton-Smith tweeted about this a while ago and then just retweeted himself.
Casey:
So hi, Steve.
Casey:
If you name your widget widget.
Casey:
Then it yells at you because that's not allowed because it conflicts with some of the Apple stuff.
Casey:
And the error message is completely inscrutable as to what's going wrong.
Casey:
And so eventually when I was first messing around with widgets, I just renamed it to like KCWidget or something like that.
Casey:
And then suddenly everything started working and I was deeply frustrated.
John:
Yeah, there's a bunch of pitfalls like that in Perl where –
John:
Like half the time I see someone really scratching their head, whether it's at work or on the internet, of like, I cannot figure out why this code doesn't work.
John:
And the answer is like, rename your class.
John:
And they're like, what?
John:
I'm like, just go with it.
John:
You named it test, but let me just, you know, you need one class A and one class B. And let me tell you about the B namespace in Perl.
John:
I know this is going to sound weird, but like, that's just, they're excited to learn the solution, but then they're so angry.
John:
I write PHP.
John:
Nothing sounds weird.
Yeah.
Casey:
Oh, my goodness.
Casey:
All right.
Casey:
So you do like some things.
Casey:
You don't like some other things.
Casey:
What do you miss about Objective-C?
Casey:
I mean, obviously, you were expert level at Objective-C, and I would say, with respect, you're probably not expert level at Swift at this point.
Casey:
But other than that, are there specific things that you feel like, oh, man, I really miss Objective-C's ridiculously awful block syntax?
Yeah.
John:
Objection leading the witness.
Marco:
I do miss a lot of the simplicity of the language.
Marco:
I miss how Objective-C did not make it easy to hide behavior.
Marco:
from reading code like you could read the code and because it was a fairly small language in its syntax and things like that it was hard to hide behavior in ways that couldn't be easily looked into or noticed when reading it whereas Swift does not have that um
Marco:
I also miss a lot of the style of the API naming and searchability and documentation and things like that.
Marco:
I definitely miss the reliability and speed of the tools and the builds.
Marco:
How many years are we into Swift?
Marco:
It still doesn't build very quickly, and I still occasionally get really weird behaviors that are solved by restarting Xcode.
Marco:
And I think we're a little late for that.
John:
Have you tried writing much, much smaller apps?
Marco:
Yeah.
Marco:
My favorite error is the one where it says, like, and this is more common in SwiftUI, which, of course, is much younger and much more of a giant pile of hacks.
Marco:
But my favorite one is the one where it says, like, this can't be evaluated in a reasonable time.
Marco:
You've got to break it up into sub-chunks or whatever.
John:
Yeah, yeah, yeah.
John:
Type inference.
John:
Yeah.
John:
yeah yeah i'm not gonna say it's non-deterministic but sometimes it goes off the rails at least it tells you and doesn't try forever to figure out what the type is supposed to be i'm gonna i'm gonna object slightly to your uh hidden functionality objective c supports pound define talk about hiding functionality again referencing pearl if you look at the pearl source code you're like what languages is written in the answer is macros it's written in pound define macros everywhere
John:
And you could say, well, you shouldn't use pound define that way and blah, blah, blah.
John:
But that's exactly the argument people make about, say, operator overloading.
John:
It's like, yes, the feature can be abused to make your code terrible, but don't do that.
John:
Pound define is the ultimate feature that can be abused to make your code completely incomprehensible and doing hidden things.
John:
You don't do that because you're a good Objective-C programmer.
John:
I think the same applies to Swift.
Marco:
while this is not unqualified there are things about header files that i miss really you're a monster you are a monster i like the way that they very easily make make like a a public list of like here's how i expect this thing to be called publicly and here it is in 10 lines
John:
I feel like it's an IDE issue, don't you?
Marco:
Well, maybe.
Marco:
But yeah, I mean, as opposed to, you know, in Swift, it's like you have this giant file that's this entire class, and four of the functions in it are public, but there's no quick way to see what that is outside of, like, the dropdown in Xcode.
John:
Yeah, like, it would be better if you could, like, collapse it all, and, like, they could even give a header view.
John:
If you can annotate the code to say which one is the public API, then give a little view in the navigation that says, oh, this is the equivalent of the header, and it just shows function signatures of the public ones.
John:
Like,
John:
I think that is a surmountable thing because the information is all there.
John:
And I like the fact that it's all on the file.
John:
And I like the fact that I don't have to make header files.
John:
And if you want that view of things, I feel like that's something that code should offer.
John:
I find myself in the same situation.
John:
And what I don't want to do is like, oh, well, I'll just come up with a naming convention myself and I'll put leading underscores and all the internal ones or some crap like that because that's gross.
John:
But...
Casey:
we you know we all have all the metadata in the language to provide you essentially a header view without you having to type one and that's something that would be a nice addition there is something that's similar to this in xcode and i've seen it like once it's buried it's so far down it might as well be in china and i cannot remember where it is but there's a way to do something like this you can you can get xcode to extract something that vaguely looks like a header file
John:
god i'm looking around right now trying to figure it out and i can't figure it out so you don't want to be extracted though you just want it to be like a view you know what i mean like it could be in your sidebar and you click right it's a non-editable thing like in the same type of experience or like what is it show counterpart i don't remember the names of these commands in the objective c uh days but you could switch back and forth from the dot m to the dot h you know
Casey:
Oh, yeah, yeah.
Casey:
And there's the minimap that is in Xcode now, which I actually really like.
John:
I always turn that off.
Casey:
Oh, I like it.
Casey:
But yeah, there's a shoot.
Casey:
I cannot remember how to do this.
Casey:
And it's going to drive me nuts.
Casey:
Maybe we'll have follow up next week.
John:
While you wait, I will try to fend off some feedback.
John:
And yes, I know it's the C preprocessor that I was referencing and not pound define.
John:
But I hope everyone is on the same page as me.
John:
No one in the chat room would correct me yet.
John:
I'm a little bit disappointed, actually.
Marco:
We are sponsored this week by Flatfile.
Marco:
One of the worst ways to spend your time is manually formatting customer spreadsheets.
Marco:
Thankfully, our friends at Flatfile have created Portal, the elegant import button, so your users can confidently import their data without you ever having to format their messy Excel files again.
Marco:
Flatfile Portal is a turnkey data importer for your product that automatically formats, validates, and transforms customer spreadsheets so the data is ready to use in your backend.
Marco:
That frees you and your customers from having to manually format spreadsheets for hours without needing to build a clunky in-house CSV importer.
Marco:
Flatfile's portal integrates with virtually any application and in minutes can upgrade your customer data onboarding from emailing Excel files back and forth to importing even the messiest data correctly and on the first try.
Marco:
With Flatfile Portal, intuitive data imports will be the standard for your customers, your engineers, and your product teams.
Marco:
If you're interested in testing out FlatFile portal, visit flatfile.io.
Marco:
That's flatfile.io.
Marco:
Thank you so much to FlatFile for sponsoring our show.
Casey:
Alex Guthman writes,
Casey:
So for me, I tried this like many years ago when this was very, very cool to use like Google or some other, I forget what else it was, but Google's DNS, maybe it was OpenDNS.
Casey:
And I tried it for a while and the experience I had, again, many years ago now,
Casey:
was that anything that involves streaming, like Netflix or YouTube or something like that, was all slower than dirt.
Casey:
Because some way, somehow, and this is beyond my knowledge, it was apparently through the magic of DNS that they would target me to a server physically near my house.
Casey:
And when I was using a DNS based out of California, everything slowed down to a crawl.
Casey:
And so I stopped doing this within the span of a couple of weeks.
Casey:
That very well may not be the case...
Casey:
anymore.
Casey:
So I have no idea.
Casey:
And I'll let the guys correct me here in a second.
Casey:
But what I will say is that for maybe a year now, I've been using PyHole on my local network, which is the most delightful and terrible name in the world.
Casey:
That's P-I-H-O-L-E.
Casey:
And what this is, is a DNS server that you run on Raspberry Pi or in Docker and
Casey:
And it has a bunch of block lists that will block things like advertisements and some malware and things of that nature.
Casey:
And so I have my Raspberry Pi running PiHole, and that is my local network's DNS server.
Casey:
But when it doesn't know the answer to something, it will just go to my ISP, to Fios' DNS server.
Casey:
Marco, what do you do?
Marco:
I just run the Fios.
Marco:
I just run my ISPs DNS server.
Marco:
I have very occasionally tried things like OpenDNS or like the Google ones or the Cloudflare ones.
Marco:
And I too have had occasional issues with them.
Marco:
And it's never been worth dealing with those issues for the benefit they provided.
Marco:
And so I would always switch back after a few weeks or a few days or whatever, just back to my ISPs.
Marco:
This solves problems I don't have, or it introduces problems I'm not willing to tolerate.
Casey:
Yeah.
Casey:
John?
John:
So back in the, I guess it may be my cable days when I had cable internet access, the reason I became interested in alternate DNS providers is that my DNS provider through my ISP was garbage.
John:
And, you know, it's the old saying of people who have ever debugged weird problems on the server side, it's always DNS.
John:
When you have a DNS problem,
John:
you're like, what's wrong with my computer?
John:
Nothing works.
John:
I can't understand.
John:
If you don't know enough network debugging to immediately check whether your thing is hanging, trying to resolve a name, right?
John:
You're like, I know, especially if you can't see the internals of some system, like everything is not working and something it's in somewhere is like trying to look up a name and your stupid ISPs DNS server is not down.
John:
It's up, but it's giving the world's slowest responses.
John:
It's incredibly frustrating.
John:
So that's why I started looking into them.
John:
Um,
John:
it's tricky for you to tell whether that's happening to you because unless you're literally debugging your own server-side code where you control where you know names are converted into ip addresses or whatever you probably don't know the internal guts of some set top box or some app that you're using is hanging on dns and it's difficult to figure that out but
John:
It could be that in the wide world of crappy ISPs, especially in the US, you too also happen to have a crappy ISP DNS server that you're using, and it's causing your browsing experience to be crap.
John:
So I think for the average person, if you're nerdy and you want to try this, it is worth looking into Cloudflare, Google, OpenDNS.
John:
In fact, I think there's an app, at least for the Mac anywhere, that does DNS benchmarking.
John:
They will try a bunch of DNS servers and tell you which one is the fastest responding from your location.
John:
That doesn't tell you anything about reliability, but at least it can tell you how fast you get the responses back.
John:
Honestly, speed isn't an issue unless you have a garbage ISP that's waiting seconds to give you your names back, which can really hurt things.
John:
But that's why I started experimenting with it.
John:
And I benchmarked a bunch of them and it turned out the one that was the fastest was one I hadn't heard of.
John:
So instead, I just tried using the Google one.
John:
And when I saw this question, I left it in here and I intentionally didn't look this up because honestly, I don't know which of my computers and devices are using which DNS server.
John:
I'm pretty sure some of them are still using Google DNS.
John:
But I'm also sure that some of them are just using my ISP one because I never configured them, right?
John:
I didn't change my DNS at the router level or anything.
John:
And a lot of times your router is your DNS server.
John:
You can just specify, you know, 10.0.1.1 or whatever.
John:
Like your main router will also do the DNS things.
John:
They can just delegate to that.
John:
But I'm pretty sure some stuff in my house is using Google DNS.
John:
And the fact that I don't know tells me that I don't have any problem with it because I stream things from everywhere.
John:
Everything's fine.
John:
I get fast internet speeds.
John:
I get fast uploads, fast downloads.
John:
And I honestly don't know which one I'm using.
John:
And I think I have Fios as well, and I think the Fios DNS is fine.
John:
That's not why I was exploring it.
John:
I started exploring it, I think, back when I had Media One, which turned into Comcast.
John:
Anyway, for listeners, I'd say...
John:
It's worth checking out, but what Casey said about potential GUIP stuff, I know Google does a bunch of stuff to counteract that, where even though you're doing 8.8.8.8, it's not the same 4.8s that other people are using.
John:
It's GUIP balanced from your lookups.
John:
They try to be clever about that, and things like OpenDNS and Cloudflare have similar systems to
John:
not have the cdn streaming problem that you have but uh you know there's no guarantee that it'll work for you so i'd say check it out but it's i think i feel like it's less important now than it used to be and if your isp dns is working fine just stick with that
Casey:
Nathan Roberts writes, there are people in the Mac community who dislike electron apps and modern web frameworks.
Casey:
I also dislike when resources are wasted for computing tasks that could be done in a more efficient way.
Casey:
But the history of computing is full of evolution.
Casey:
The difference between quote-unquote native versus quote-unquote web becomes intellectual when the software works well.
Casey:
See, for example, Visual Studio Code.
Casey:
Is there a problem with this tech that I don't understand?
Casey:
Is this an old man yells at cloud situation or are we about to get rained on?
Casey:
This was actually reasonably well put.
Casey:
I would also say that Visual Studio Code is an incredibly good example of something that is written in Electron that doesn't seem to be.
Casey:
It's very much visually, and in so many ways actually, cut from its own cloth, but it doesn't feel like a slow piece of garbage.
Casey:
And so to back up a half-step, Electron is a
Casey:
way to build a native-ish app using web frameworks.
Casey:
So Slack, for example, is Electron.
Casey:
I believe Skype now is Electron.
Casey:
And the guys will probably have more concrete complaints about it.
Casey:
But what I don't like about Slack and about Skype is that so much of it feels so not native and so wrong and is missing affordances that I would expect that
Casey:
And I wish I could cite some more specific examples, and I can't off the top of my head, but there's just a general wrongness to it that bothers me and frustrates me and at worst offends me.
Casey:
And I think Slack, for all my complaining about it, does mostly get the job done and mostly does a pretty decent job of it.
Casey:
But unlike Visual Studio Code, where I don't really ever tell, I can't even ever tell that I'm using a weird mechanism to run this app, it always just feels like something is not right in Slack.
Casey:
And that's what's so frustrating about it.
Casey:
I don't know, John, can you be more explicit and concrete about this than I am?
John:
I think you hit on the two the two main complaints and it's not just one about like electron one one is the speed thing like in general web based technologies have always lagged behind native in terms of speed and responsiveness but you know computers are getting faster and that is only going to fade with time as Nathan points out right that you know
John:
technology marches on and what some people might say is incredibly inefficient or whatever eventually just becomes trivial in a non-issue but the second thing is not going to go away based on performance and that is the nativeness feeling not in terms of responsiveness but just like what are the native widgets and how do they work with an electron app you will always be at best trying to imitate a
John:
the operating system's incarnation of a button, a scroll bar, a text field, a rich text editing field, even down to the window in some cases, right?
John:
Those things exist as of today, except perhaps in something like Chrome OS or whatever.
John:
There are native UI toolkits and native UI controls for menu bars, buttons, checkboxes, scroll bars, scrolling view, text, everything, right?
John:
And with an Electron app, you can either say, we're going to make...
John:
our own interface elements out of web stuff out of html and css and javascript and you could try to make them look like the os ones which is a losing battle because the os keeps moving you're constantly going to be chasing it and you're never going to be exactly like it so there's the uncanny value thing or you can do what visual studio code and other apps do is say well i'm not going to even bother trying to look like the native stuff i'm going to look like my own thing and it'll be good and you'll like it but no one will ever be fooled into thinking it's from it is an os native and
John:
And that can work, except part of the promise of the GUI from the original Mac is if you learn one set of controls and behaviors, that knowledge transfers, right?
John:
So every time I'm in a text field, I can use these keyboard shortcuts and I can do these things and it behaves in this way with respect to selection.
John:
Every time I see a scrolling view, it respects my OS preferences for scrolling and clicking to jump the scroll wheel versus clicking to move it and all my, you know, swipe gestures and all those stuff.
John:
Like that expectation thwarted
John:
as you have more and more Electron apps that don't use native controls, and each one of them has their own idea of what they wanna do.
John:
Oh, they're gonna try to imitate the US thing, but they failed to implement this feature, or they're not gonna try it, and you have to remember in this app, it works this way.
John:
So the complaint about Electron,
John:
The performance complaints may fall by the wayside, but the non-native thing will only fall by the wayside if we ever get to a point where there are more essentially more non-native apps than there are native apps.
John:
I don't think that we're there yet.
John:
And even if we were there, the non-native apps are not going to all get in a big conference call with each other and decide how they want their widgets to behave.
John:
Then you're going to be back to the bad old days.
John:
Everyone deciding how they want their app to work and not having like your sort of muscle memory and habits transfer from one app to the other.
John:
So I wouldn't want to live in that world.
John:
I understand that the web is kind of like that now.
John:
It's part of what makes websites frustrating that there's so much variance between them.
John:
I still kind of like the idea of a GUI with a set of controls that act consistently between apps because that makes my computing life easier.
Marco:
The only thing I would add is that there's also just a pretty significant issue about memory footprint and battery life with a lot of these apps.
Marco:
I actually don't have a huge amount of complaining to do about UI consistency with these apps.
Marco:
Because when Electron is being used, in many cases, like I think Slack...
Marco:
It's hard to picture, like, what would a, like, you know, quote, native Mac, you know, Aqua or, you know, AppKit, what would that look like for Slack?
Marco:
And I don't know what that, like, I don't think it would work.
Marco:
I think it would end up looking a lot like this and working a lot like this.
Marco:
And so it would be a lot of custom stuff anyway.
Marco:
And it's like, whether they're rendering custom stuff with a web view or with custom, you know, quartz drawing commands,
Marco:
If it's a bunch of custom stuff, it's still going to behave in a custom way.
Marco:
So I don't actually have a big problem with a lot of that with some of these apps.
John:
I can give you a specific example from Slack, though, by the way, with the native thing.
John:
One of the things that frustrates me about Slack, which I use every day a lot, is the interface for editing a message.
John:
Right.
John:
Like the little like the hover pop up thing lets you get the little thing.
John:
There's like more actions and you can click edit and you can or you can like add a reaction or whatever.
John:
The like the sort of active areas that brings up that UI.
John:
It's just so.
John:
so like twitchy that i can never quite get the message that i want and if it was a native mac app not just from a technological perspective but you know it's if it was a good native mac app the developer would spend a lot of time sweating over how that interface feels and they would have per pixel control and like they can essentially write custom code to do the mouse in and out handling and do all sorts of the things that the very best mac native mac apps do
John:
Whereas with web technologies, they're just going to be like, ah, we've got the mouse in and mouse out event or, you know, the hover event in our web thing.
John:
And that's that's sufficient.
John:
And it makes for a UI that's usable, but feels twitchier to me.
John:
So I get what you're saying about like the app would more or less probably look the same.
John:
And I think Slack is a very good Electron app.
John:
And in general, they do.
John:
pretty well like for example one of the things i tested was i went into the text field and then i hit control a use emacs key bindings to jump around in the text field and that totally works mostly because uh apple does a good job of making their web controls like you know the the web kit controls uh support native mac uh toolkit type things so it's not bad in fact i really like the slack app but i don't have trouble uh finding places where
John:
a if it was a native mac app even if it more or less looked the same that it would behave differently in ways that i feel like could be superior just due to the extra control app and again this is not even talking about consistency because you're right they're like well what would the editing control look like there's no there's no like native control for that and you surely wouldn't want a button next to everything so it would have to be some kind of custom ui but i feel like it would be a more mac feeling interaction for the custom ui
Marco:
Maybe.
Marco:
I think a lot of this comes down to care and craftspersonship as opposed to the framework they're using to do it.
Marco:
I look at something like Things, which is my preferred to-do app on all platforms, and Things has an incredibly highly custom UI.
Marco:
It does not look like AppKit.
Marco:
It does not look like Aqua.
Marco:
It looks like its own incredibly custom thing.
Marco:
But they wrote it in AppKit.
Marco:
It is using the native APIs.
Marco:
It's not a web app at all.
Marco:
I have used other to-do apps, I've tried them, that were web apps, that were web technology-based, even in their Mac quote apps.
Marco:
They sucked.
Marco:
They were terrible, and that's why I don't use them.
Marco:
And...
Marco:
It wasn't an issue of it was impossible to make a good Mac UI using web technologies.
Marco:
It was that they just didn't.
Marco:
Somebody could do it.
Marco:
It is possible.
Marco:
And a good Mac UI, as things demonstrates, doesn't have to be exactly like vanilla Aqua Controls.
Marco:
it can be done in a good way.
Marco:
And I think Slack gets very close.
Marco:
I think Slack, as Electron apps go, is a very good one.
Marco:
There are limitations of it being an Electron app.
Marco:
It does take a comically long amount of time to launch.
Marco:
It is comically wasteful of resources.
Marco:
They've had to do a ton of work over time to make it slightly less egregious at how much memory and stuff that it burns.
Marco:
But...
Marco:
I think that's the big problem with them.
Marco:
Electron and using web technologies to do UIs is a very heavy thing.
Marco:
So it has to be really worthwhile.
Marco:
Now if you're doing something like Slack, which is a very complicated app...
Marco:
I think that might be acceptable.
Marco:
If you're doing something like VS Code, I've never used VS Code, but I know people love it.
Marco:
A programmer's text editor is such a massive tool that if that becomes a heavy thing in the system, it's not that big of a deal.
Marco:
Xcode is damn heavy.
Marco:
I mean, IDEs are all heavy things.
John:
Damn it.
John:
That's what I would categorize Visual Studio Code as.
John:
It's more of an IDE and less of just a text editor.
John:
And in that respect, I would not want Xcode to be written with web technologies.
Marco:
Oh, no.
John:
Not that I'm saying Visual Studio Code is a bad IDE.
John:
I think it's a really good one.
John:
And I understand why it's written the way it's written.
John:
But I'm also really, really glad that Xcode isn't written like that.
Marco:
And I'm really, really glad that most of my apps that I use are not written like this.
Marco:
Because imagine right now I have two such apps open.
Marco:
I have Skype and Slack open.
Marco:
And I look at my doc and I have like 10 other apps open, all of which are native except for those two as far as I know.
Marco:
It would be very inconvenient for the resource level of my system if...
Marco:
nine of those apps were all electron apps like it's one of those things where like if you have one or two of these it's no big deal but it becomes much heavier it because because they're so heavy it becomes much more burdensome to have more than a couple of them and so it's not a good idea for most apps to do this and it's not a good idea to do this if what you want to do with your app can be easily done with the native frameworks but
Marco:
when you look at something like Slack and you look at, like, what they actually need on Slack is a very complicated UI that is often rendering web content, that is often rendering HTML, like, for just things like what's, you know, it's a giant rich text view that has a lot of embedded images and stuff like that.
Marco:
Like, that...
Marco:
Even if you wrote that with AppKit and native code, you'd probably implement it as largely a web view.
Marco:
Much of your UI would be rendered using web technology anyway.
Marco:
You wouldn't be saving a massive amount of resources by doing it that way.
Marco:
You would just introduce complexity at the engineering side.
Marco:
Slack is this very complex, rich service that
Marco:
has to run on every platform and it has to have feature parody constantly on every platform.
Marco:
And so again, like you can see why they do this.
Marco:
I don't love that this is the reality of a lot of things these days, but that's why they do it.
Marco:
And it makes a lot of sense.
Marco:
But if that's not your, if that's, if it's not your business needs, uh,
Marco:
if you can get away with using native stuff and it's not that big of a deal to your business then by all means it's better and you should but something like slack i think is electron for good reasons and it doesn't bother me that much with the exception of quite how incredibly resource intensive it is you should think about getting a mac with more than 16 gigs of ram oh brutal
Casey:
Matt Steiner writes,
Casey:
Similar to Waymo, they can focus their self-driving tech on well-mapped geographies, cities ideal for ride-sharing, to create a polished system that doesn't necessarily need to operate everywhere in the way a consumer EV would.
Casey:
Meh.
Casey:
This doesn't really do anything for me personally.
Casey:
I don't see this as a sustainable, reasonable model for a business to make decent money.
Casey:
By gut alone, I just get the feeling that this is not what Apple's interested in.
Casey:
They don't want to be Uber.
Casey:
At most, they might want to be Uber for shuffling employees between their different buildings in Cupertino, but even then, I don't think they're that interested.
Casey:
Yeah.
John:
yeah i don't i don't think this is for them this harkens back to the good old days of apple rumors where you and where you just you start with the premise that apple is able to do something that no one else thus far has been able to do and then you extrapolate from there oh what if apple could just do this thing that apparently nobody in the world can do yet but like what if apple could do it because they're super smart then do you think apple would do that uh if apple could make hoverboards they'd probably do it but uh i don't think
John:
uh yeah the the making fully autonomous cars and selling them and saying wouldn't that be a great service because you don't have to worry about dealers because apple would own all the cars and everything like i see the appeal but let's start with okay well where the fully autonomous cars come from i mean i guess it's just assuming apple
John:
Apple will be able to do that where everyone else has failed after decades of trying that just I mean, eventually, maybe but you know, I don't see anything that's that.
John:
As far as I know, Apple has not is not far ahead of the competition when it comes to full autonomy for this type of application.
John:
Now, in terms of whether if we start from that premise, though, and say, OK, well, let's assume it's just a thing that everybody can do.
John:
Right.
John:
Would Apple want to be in that business?
John:
Because I don't think you can start and say, OK, what if Apple was the only one that could do this?
John:
Then wouldn't they want to be in that business?
John:
There's very little that Apple will be able to do that people can't copy.
John:
Right.
John:
So what if Apple is the only one with a smartphone with a touchscreen for a tiny little while?
John:
They were like, you know, a smartphone with a good smartphone.
John:
iphone caliber touchscreen but eventually everyone else had one so apple had better hope their competitive advantage is not hey we're the first ones to figure out how to do this because that won't be true for very long so you have to assume the world is a place where everybody can do this google could make the service amazon can make this service hertz can make this service then is it a business that apple wants to be in and you got to ask the tim cook question is this a place where apple feels like they can make a big impact yada yada and i would hope
John:
From the perspective, from the high level perspective, what Apple would say to itself is not like, you know, is there a buck to be made while we're the first people to do this?
John:
But is basically, is this type of product going to solve a problem in the world in a way that we want?
John:
In some respects, yes.
John:
Like if you could have a set of autonomous fleet of cars that are shared in a city environment and then pair that with banning people from bringing their own cars, you could reuse existing infrastructure with fewer cars on the street in a more efficient manner.
John:
But in other respects, if you really want to solve the problem, the solution is not to either add more cars or have different kinds of cars, but rather to invest in more efficient, nicer public transportation, which carries people, you know, far larger number of people more efficiently with less space, stuff like that.
John:
And I would hope that any Apple thinking about a future product is thinking big picture.
John:
Is the answer more cars?
John:
Now, I know Apple's rumored to be making a car, and I hope they're also asking that question.
John:
And the reality is cars are, you know, a big thing in the entire world right now.
John:
So you can't stick your head in the sand and say, oh, I'm just going to ignore cars entirely.
John:
But for something like this where you have, oh, we have autonomy and we have this amazing advanced technology, I would hope that we would think a little bit bigger than let's just do cars, but slightly different because that type of technology enables all sorts of interesting things.
John:
other than simply trying to use our existing road infrastructure slightly more efficiently.
Marco:
Yeah, I still, I mean, there's a lot of smoke where this fire is alleged to be.
Marco:
And so I'm pretty sure that Apple is working on some kind of car.
John:
Or car-related thing.
John:
Car-related thing, as in maybe they're just doing the software.
John:
Maybe they're partnering with Hyundai.
John:
You know, there's so many rumors.
John:
We don't know yet.
Marco:
Yeah, but it's Apple.
Marco:
I don't think Apple wants to be in the business of being the partner with Uber or Hertz to supply them.
Marco:
That's like a big B2B deal.
Marco:
Apple sucks at that kind of thing.
Marco:
They're not going to make some kind of big sales deal with some other person who's going to share the major parts of the responsibility of the customer relationship and customer experience.
Marco:
They're going to do the whole thing themselves.
Marco:
Yeah.
John:
You're thinking Motorola Rocker, though, and I'm thinking Foxconn.
Marco:
Fair enough.
Marco:
Yeah, that's fair.
Marco:
But ultimately, this thing where Apple just makes a fleet of cars for Uber or whoever to operate, and you don't actually buy them.
Marco:
You just get into this car designed by Apple.
Marco:
Yeah.
John:
No, not for Uber to operate.
John:
The idea in this question is that Apple would run that service, so Apple would own all the cars.
John:
It wouldn't be selling cars to end users.
John:
It would be selling access to the Apple car transport service.
Marco:
At that point, Apple is just like a giant car leasing company and car maintenance company.
John:
I mean, they're a taxi service.
Marco:
Yeah, I don't see that... First of all, I don't see that being a business Apple would really want to be in.
Marco:
Services revenue.
Marco:
But secondly...
Marco:
I still don't know why Apple wants to be in the car business at all.
Marco:
This doesn't make any sense to me whatsoever.
Marco:
I can tell, obviously, they're putting a lot of resources into this project.
Marco:
There's so much supporting that now that it does seem like they do have some kind of major car project going and have for some time, but I still just do not see why Apple wants to or should be in the car business.
Marco:
And...
Marco:
Even as a huge fan of Apple and an okay fan of cars, I don't want an Apple car.
Marco:
I'm not excited about that.
Marco:
I don't think they should be doing any of this.
Marco:
I think this is a massive distraction, and I have yet to imagine...
Marco:
why this is a good idea for them to do why they need to do this why they need to spend any of their resources doing this why apple can bring something to the table here why they would even be good at it i don't see any of that i don't see anything in apple's product line it says like you know like part of this question is like apple can control the hardware and software and you can focus on the experience ultra high-end interior ecosystem integration advanced technology what does that mean
Marco:
can apple make an ultra high-end car interior maybe but we've never seen that before but you know what like when they when they launched the apple watch they had never made an ultra high-end you know watch band ecosystem before but they managed to make a pretty good one uh i wouldn't make maybe not ultra high end but they managed to make you know very good watch bands and and you know decent watch experience like i suppose they could try this but
Marco:
But Apple, like, this is so far from the kinds of things they do.
Marco:
You know, you mentioned earlier, like, the Tim Cook thing of, like, trying to make a, you know, make a real difference and to only tackle the things that they can make a real difference in.
Marco:
It's like, they decided not to do Wi-Fi routers.
Marco:
Like, there's so many things that they could do that would make a real difference to the business they're already in.
Marco:
And they choose not to for focus or resources or whatever.
Marco:
A car, let alone – even if you ignore all the magic self-driving stuff that seemingly doesn't exist and might never exist, even if you ignore that, just making a car, period, even a manually driven one where one is driven by a human –
Marco:
It's so much work.
Marco:
And it's so many specialty skills.
Marco:
And it takes so much infrastructure and so much support.
Marco:
Massive amounts of design and engineering and just such a massive distraction.
Marco:
Apple is not known for having a ton of extra engineering and design resources and the ability to multitask incredibly well while juggling all their other product lines.
Marco:
Why are they doing this?
Marco:
I still... I have no clue why they're doing this.
Marco:
And I... Again, unless... I mean, maybe I'm totally wrong and maybe they're going to blow us away in five or ten years or whatever.
Marco:
But it sure looks to me like just a giant distraction.
Marco:
A giant...
Marco:
massive resource suck that is not a good idea strategically for them at all i i don't see what this does for them i don't see why apple wants to be a car company or why they should become a car company no matter what the car even if it's fully autonomous cars or or manually driven cars no matter what kind of car it is i don't see why apple needs to or should or would be good at doing this
John:
I'm sure Apple will explain it when they roll out, whatever they roll out.
John:
But the really concerning slash interesting thing about this is Apple is seemingly so committed to whatever the heck they're doing in the car space that when their first run at it sort of, I'm going to say failed, but...
John:
uh didn't work out the way they wanted they didn't abandon the idea they rebooted it and are making at least a second attempt we don't know how many other internal restarts there have been but there's been one public restart that we more or less know so like i mean sure that's the thing in any big company especially apple you know you try lots of stuff sometimes it doesn't work out but when the car thing didn't work out they didn't say oh well we tried that it didn't work out they're trying again
John:
So they are determined to do whatever it is they're doing here.
John:
And you mentioned Wi-Fi routers.
John:
If and when AirTags ever actually come out after however many years being rumored, I'm just going to look at them and say, okay, so you're doing AirTags but still no Wi-Fi routers, huh?
John:
You can make a big difference in the tile business, but you can't make a difference in the Wi-Fi router business.
John:
To your point about so many areas in their current market where they could make a difference and aren't, AirTags seems like...
John:
Like, really?
John:
Is there so little for you to do that you thought, why don't we do these little tile competitor things?
John:
I mean, not that AirTags are probably being great.
John:
I think they're cool and everything, but not Wi-Fi routers, right?
John:
But also cars.
John:
It really is baffling.
John:
And I don't want to discourage Apple from trying all sorts of different things.
John:
But the car thing, I feel like eventually it's either got to just be dead for good or they need to ship something.
John:
The AR VR glass is another example.
John:
I think that's definitely an area that Apple should be looking in.
John:
And I like the idea that they've been working on it for a long time and haven't shipped anything yet because it shows they're not just shipping the first random thing they have.
John:
Because we know they've had all sorts of stuff internally that other companies probably would have shipped because it probably is cool and does a bunch of cool stuff.
John:
but they're waiting until they have something decent.
John:
So I hope whenever whatever they're doing with the car comes out, that Apple is able to answer at least some of the questions that Marco just posed, because if they can't, it's not going to be much of a product interaction.
Marco:
Thanks to our sponsors this week, Linode, Away, and Flatfile.
Marco:
Thank you to our members as well who support us directly.
Marco:
You can join at atp.fm slash join.
Marco:
Thanks, everybody.
Marco:
We will talk to you next week.
Marco:
Now the show is over.
Marco:
They didn't even mean to begin.
Marco:
Cause it was accidental.
John:
Oh, it was accidental.
John:
John didn't do any research.
John:
Marco and Casey wouldn't let him.
Marco:
Cause it was accidental.
Marco:
It was accidental.
John:
And you can find the show notes at atp.fm.
Marco:
And if you're into Twitter, you can follow them at C-A-S-E-Y-L-I-S-S.
Marco:
So that's Casey Liss, M-A-R-C-O-A-R-M-E-N-T-M-A-R-C-O-R-M-E-N-T-M-A-R-C-O-R-M-E-N-T-M-A-R-C-O-R-M-E-N-T-M-A-R-C-O-R-M-E-N-T-M-E-N-T-M-E-N-T-M-E-N-T-M-E-N-T-M-E-N-T-M-E-N-T-M-E-N-T-M-E-N-T-M-E-N-T-M-E-N-T-M-E-N
Casey:
So long.
Casey:
So keeping with the car theme, I have a group chat that I think I've mentioned before that is myself and two car enthusiast friends of mine, and it's not the two of you.
Casey:
One of them is the guy that recommended the Subaru, the BMW, and now has basically a clone of my car, except his is the wrong transmission.
Casey:
And we were chatting, the three of us, the other D, and one of them, I forget which one it was, made the point, what's the point of Audi?
Casey:
And I should have looked back at this conversation in preparation for today, but...
Casey:
If you want to get something Audi-like, why would you get an Audi when you can get a Volkswagen that's like 90% as nice in most cases, but half the price?
Casey:
Or if you want to go to the other direction, you want something that's obscenely nice and just obscenely expensive, then get a Porsche.
Casey:
So what's the point in Audi?
John:
I mean, setting aside the fact that the corporate ownership structure that we have today didn't always exist.
John:
And so it wasn't quite as absurd a question.
John:
I think you just basically described market segmentation.
John:
The whole idea of regular car brands eventually having a luxury brand companion was big in the 90s and is a proven business model.
John:
you take your toyotas and you make them a little bit fancier and you sell them for any more money and you get a lexus you do the same thing with the nissan and you get infinities to lesser effect um take a honda and you make it a little bit fancier and you get an accurate which is usually a worse car you should just buy hondas uh but like that see i'm
John:
saying it's it's a proven business model i think in the case of volkswagen audi uh the volkswagen is the regular people brand you take a volkswagen you make it fancier and you get an audi and yes obviously you're paying more and the margins are higher and you're not getting quote unquote your money's worth if you look at it in terms of features and experience or whatever but that's the that's market segmentation and luxury goods you always pay proportionally more to get proportionally less but i don't think there are many people who would say that a really good audi is not a nicer car than a really good
John:
volkswagen even if they're literally made on the same platform so i think it makes just as much sense as you know well i keep citing infinity i feel bad for them because i think their cars are crappy but uh like what's what's lexus i guess lexus is the best one because toyota is a very popular brand sells a lot of cars and lexus are acknowledged to be yes they're just fancy toyotas but guess what's a fancy toyota is a good car and for people who like toyotas but wish they were fancier lexus is right there for them and there's bigger margins on it so the point of audi is the same as the point of lexus and infinity
John:
okay i guess i phrased the question poorly why would one buy an audi rather than i mean other than like completely emotional reasons like i just want to look fancy you know but it's nicer as they have higher performance you can get the rs6 rs7 there's no equivalent volkswagen one of those and there's you can get higher performance cars with fancier interiors with more luxury features for way more money that's
Marco:
luxury brand right and and porsche is is an even higher step above that so audi is is like you know a good choice if you want something fancier from that car family than the volkswagen but you don't want to go all the way to porsche which is substantially more expensive and has much much more sporting and less luxurious right i don't know if i would say that i let less luxurious and that the ride quality is harsher
Casey:
Yeah, maybe.
Casey:
I mean, it's been a long time since I've been in a Porsche, but I'm not so sure it's quite as harsh in most applications as you're painting it to be.
John:
If you're not getting the performance version of an Audi, the ride is going to be much more comfortable in it than any Porsche.
Casey:
Yeah.
Casey:
I can't argue with you, but I'm not so sure that you should be as confident as you are.
John:
Anyway, I don't think I don't know who made this point, but I think it's just if you find Audi pointless, then you should find all luxury car brands pointless because what's true of Audi is true of all of them.
John:
I mean, maybe the complaint is that is the Audis that are too they're too much like the Volkswagens.
John:
Like if you squint, you can see the Volkswagen lurking under the covers.
John:
But I don't I don't really buy that.
John:
I think Audi makes cars that appeal to people who like Audis.
John:
And I find some of them appealing and some of them not to my taste.
John:
But I never question why the brand exists.
John:
It makes perfect sense to me.
Casey:
I guess, unlike BMW, which doesn't really have a cheap brand, like I guess kind of sort of mini-ish.
John:
They made that hatchback, remember?
Marco:
Mini is not cheap.
Casey:
I mean, the Mini is not cheap.
Casey:
You're exactly right.
Casey:
And yes, the 318 Ti, I believe it was, which our valedictorian drove, and it seemed like a piece of garbage.
Casey:
You know, there's no cheap BMW.
Casey:
There's no cheap Mercedes that I can think of, right?
Casey:
So there's no real equivalent in Audi's two main competitors.
Casey:
Whereas if I were to look at an Audi, in almost all circumstances, I would almost surely get the equivalent Volkswagen.
Casey:
Yes, there are cases where there is no equivalent Volkswagen, but in almost all cases there are, and that's what I would certainly get because it just seems to me like why would one choose an Audi for non-emotional reasons?
Casey:
Why would one choose an Audi over the equivalent Volkswagen?
John:
Right, right.
John:
What are you naming their competitors as being Mercedes and BMW?
John:
Is it just geographic competitors?
John:
Like, you know, Lexus would say that they're a competitor to Audi.
John:
Honda would say that they're a competitor.
John:
Infiniti would say just excluding those luxury brands like other, you know, Cadillac would say that they're a competitor to Audi.
John:
I feel like they're just the fact that, you know, I think it's an accident in history that BMW and Mercedes just grew into these luxury brands and weren't spawned from sort of
John:
non-luxury brands right you know i don't think mercedes started out as the luxury brand they are today but they didn't get spun out of something and the companies that did spin out of being like you know the people's car volkswagen right or honda or toyota or whatever or even things like ford like when you come out of a brand that is trying to sell to the mass market you eventually realize the business people say you know we can make a little bit more money if we made a fancier version of this car and gave it a different name and so you get cadillac right you know you
John:
You get you get the luxury brand spawning out of a regular brand.
John:
If you're not lucky enough, if you want to consider it to be a luxury brand from day one.
John:
But if you are a luxury brand from day one, like Porsche, maybe you'll try to buy Volkswagen because they sell a lot of cars.
John:
But that didn't quite work out the way everyone thought it would.
Casey:
I guess, to me, I don't really perceive the Japanese luxury marquees, automakers, as real direct equivalents, because I feel like... They're more reliable, too reliable to compete with the German brands.
Casey:
Yes, exactly.
Casey:
Yes, that and.
Casey:
Yes, and.
Casey:
I feel like they have a very different personality.
Casey:
Having driven several Japanese cars, admittedly not luxury cars, but I've owned a couple of Japanese cars in years past and I've owned a couple of German cars now.
Casey:
And I feel like, and I don't know how to explain it concretely, but there's a very different attitude to your average Japanese car versus your average German or perhaps even European car.
Casey:
Because I feel like Aaron's, you know, semi-Swedish Volvo also feels German-ish.
Casey:
And so I think I should really be saying European.
John:
How dare you?
Casey:
Volvos aren't German.
Casey:
No, I'm saying they have a similar feel in spirit to them.
John:
I mean, there's been a lot of homogenization, I feel like, in the luxury car segment.
John:
Like, when Lexus first came out, it was so clearly targeting Mercedes.
John:
Like, you just look at it and you look at the Mercedes that they were targeting.
John:
You're like, they just, you know, I can tell who you're competing with.
John:
And yet, despite so clearly targeting Mercedes, the original LS400 could not help but feel Toyota-ish.
John:
right it just you just can't help it it's you're right you're totally right that it's in the culture in the same way that a cadillac despite trying to compete with bmw there is no question that you're in a cadillac when you get into one of those things as opposed to being in a bmw so the homogenization has been i feel like in the feature set and maybe even the in sort of internal amenities and aesthetics but the values represented by the
John:
transmission chassis engine like combination driving experience not setting even aside obviously the styling is still radically different from the german brands the american brands the japanese brands the swedish brands the chinese brands and i think that's part of what makes the audio industry great but i wouldn't say that eliminates them as competitors from each other like they're going to they're going to be different
Casey:
No, I don't mean to imply they're not competitors.
Casey:
I guess what I'm saying is, I think in the same way that Volkswagen, Audi, and Porsche occupy different spaces, in my mind, and maybe I'm the only one, the European versus Japanese versus American luxury brands, I mean, nobody's even said Lincoln yet, but...
Casey:
I think all three of those groups have, to your point and to the point I was trying to make earlier, very, very different attitudes and feelings and kind of spirit about them.
Casey:
And so even though I agree they are all competitors, I view them as only competing within their little circle.
Casey:
Like, personally, I don't think I would cross shop a BMW and a Cadillac or a BMW and a Lexus.
Casey:
whereas I would absolutely cross-shop a BMW and a Mercedes, for example, and I would cross-shop a Cadillac and a Lincoln, and I would certainly cross-shop an Acura, and I actually would probably cross-shop the Infiniti and a Lexus.
Casey:
But, I don't know, it just seems to me like...
Casey:
particularly with respect to volkswagen auto group there's a lot of there's a lot of overlap and i i don't i can't put my finger on anything that i think audi does extraordinarily well that would make me say yes i want an audi now with there are a couple of exceptions and one you pointed out earlier is there are cars that audi makes that volkswagen does not and
Casey:
I don't have anywhere near enough money to afford an RS6.
Casey:
But if I was given infinite money tomorrow, I would bring an RS6 to my desert island because, oh my gosh, that thing looks so awesome.
Casey:
And even though the more correct answer for a really fast wagon is whatever the current Mercedes wagon is, that is certainly the better choice.
Casey:
But God, I love the look of the RS6 so much and I want one so badly.
John:
The Audi fast wagons are actually pretty good.
John:
Someone posted a link in the chat room.
John:
We'll put it in the show notes to a Car Wizard video showing a more modern Lexus versus a more modern Mercedes.
John:
I think people do cross shop Lexus and Mercedes.
John:
And Lexus apparently continues to ape the Mercedes styling and features and size and everything.
John:
So like I was thinking of the original LS 400, which was what, 90s, the early 90s.
John:
And they were nice cars.
John:
But it was it was so clearly like just they looked at Mercedes S-Class and they said, let's make the Toyota version of that.
John:
And here is modern video showing they continue to do that.
John:
And I think that's a good business because if you want a Mercedes, but want it to be more reliable and even more comfortable, get a Lexus.