catatp.fm Unofficial Accidental Tech Podcast transcripts (generated by computer, so expect errors).

97: You Have to Know When to Stop

Marco leaves his house for the first time, Casey travels to Italy on his iPad, and John rescues his family from outdated operating systems.

Episode Description:

Sponsored by:

  • Automatic: Your smart driving assistant. Get $20 off with this link.
  • Warby Parker: Boutique-quality, vintage-inspired eyewear at a revolutionary price.
  • Backblaze: Online backup for $5/month. Native. Unlimited. Unthrottled. Uncomplicated.

MP3 Header

Transcribed using Whisper large_v2 (transcription) + WAV2VEC2_ASR_LARGE_LV60K_960H (alignment) + Pyannote (speaker diaritization).

Transcript start

⏹️ ▶️ Casey So, uh, John, I may not talk to you before your birthday, it sounds like. So if I don’t

⏹️ ▶️ Casey have a happy 40th, sir. Hmm. Can

⏹️ ▶️ Casey we make that the beginning of the show, please?

⏹️ ▶️ Marco Absolutely. Is it a secret that you’re turning 40, John?

⏹️ ▶️ John No, I don’t think so. It’s crappy though.

⏹️ ▶️ Marco If we need to talk about something, I both bought my first iPad in a while.

⏹️ ▶️ Marco And have a new opinion on the iPad. I also did something in a new programming language for the first time in a while.

⏹️ ▶️ Casey Oh, okay. I am genuinely

⏹️ ▶️ John I saw your I saw your tweet tantrum about PHP.

⏹️ ▶️ Casey Yeah. Yeah, I genuinely want to hear about this. So let’s put that in both of them, actually. So let’s

⏹️ ▶️ Casey put

⏹️ ▶️ Casey, John that right.

⏹️ ▶️ John Even you can even write them in the notes to

⏹️ ▶️ John, Casey remind

⏹️ ▶️ Casey us exactly what I

⏹️ ▶️ John, Casey was gonna

⏹️ ▶️ John do. So

⏹️ ▶️ Marco you Marco? Well, naturally, I won’t do it. You need to I’m coughing too much. I gotta keep my hand on the mute button.

⏹️ ▶️ John I was I was coughing a little bit last night. And I was like, is it possible to catch

⏹️ ▶️ John, Casey it?

⏹️ ▶️ John I blame I blamed you like somehow you transmitted this to me over the internet.

⏹️ ▶️ Casey All right,

⏹️ ▶️ Marco do you want to do some follow-up? Do we have any follow-up since we last recorded two days ago? We should point out also we are

⏹️ ▶️ Marco recording this show almost a week in advance of when it’s going to be likely be released.

⏹️ ▶️ Marco So please pardon us if anything we say is out of date or if we missed some giant news that for some reason happens

⏹️ ▶️ Marco during Christmas week.

⏹️ ▶️ John And the last episode was just released what yesterday right?

⏹️ ▶️ John, Marco So we’ve only

⏹️ ▶️ John had like one day to accumulate follow-up but we got two items. All right,

⏹️ ▶️ John so the first one is from S. Mike Lewis, unless that S is his typo and his name is actually Mike

⏹️ ▶️ John Lewis.

⏹️ ▶️ John, Marco Maybe his name is Smyke Lewis. Yeah, it

⏹️ ▶️ John could be. The Super Mikey on Twitter, he pointed us to

⏹️ ▶️ John an article from this summer actually, and I remember we were hearing about this at the time, that Google is

⏹️ ▶️ John going to start taking HTTPS into account for their search ranking, so they will give you a slightly

⏹️ ▶️ John higher rank if your site is SSL. They said it’s It’s not going to be a big boost

⏹️ ▶️ John and it should only affect fewer than 1% of global queries. But they’re trying to encourage

⏹️ ▶️ John sites to switch from HTTP to HTTPS. And this is exactly what we were talking about last show about

⏹️ ▶️ John marking things as secure, insecure for customers. Instead I was

⏹️ ▶️ John suggesting that they need to work on the people who own the websites. And the best way to do that, this is a great way to do that,

⏹️ ▶️ John to hit them where it hurts. Hey, we will ever so slightly hurt your search ranking if you don’t use HTTPS. suddenly

⏹️ ▶️ John having a secure server becomes something that every SEO person says, oh you just got to do that you get

⏹️ ▶️ John that extra whatever percent boost and anyway yeah this is a

⏹️ ▶️ John using their power for good instead of evil I think.

⏹️ ▶️ Marco The best part is you don’t actually like they don’t have to actually ever change it all they have to do is say

⏹️ ▶️ Marco we will probably change it starting on this date and then because SEO is all based on you know

⏹️ ▶️ Marco some evidence and mostly like intuition and guessing and outdated

⏹️ ▶️ Marco information and all sorts of like, you know, voodoo and BS that that is common

⏹️ ▶️ Marco wisdom or everything else, so So yeah, they don’t have to actually Derank

⏹️ ▶️ Marco or plus rank anything they just have to say they will and that’s that’s enough

⏹️ ▶️ John and they said it’s gonna be like a lightweight Thing was these are these quotes from them Less weight than other signals

⏹️ ▶️ John such as high quality content in terms of the search ranking But they also they may decide to strengthen the signal

⏹️ ▶️ John because they want to encourage website, you know So they’re threatening to like this. Oh, it’s only going to be a small effect. You know, that’s to not

⏹️ ▶️ John scare people who, you know, are worried that they need to get a cell right now, but they said, but we may decide to strike

⏹️ ▶️ John that. I mean, they can do whatever they want. Like they could change their search algorithm to favor or the hell they want.

⏹️ ▶️ John And if it doesn’t work for customers, that’ll be bad. But website owners will do whatever it takes because Google is still

⏹️ ▶️ John pretty much the only important game in town when it comes to website search.

⏹️ ▶️ Casey Hey, so let me ask a genuine question for a website like mine or either of yours

⏹️ ▶️ Casey where there’s no interactivity. It’s just a series of pages, and

⏹️ ▶️ Casey there’s no forms or anything like that. What’s the advantage of going secure? What is going to get snooped?

⏹️ ▶️ Marco Well, there are a handful of privacy advantages to it. I think

⏹️ ▶️ Marco one of the biggest—is it still the case, chatroom, that HTTPS pages don’t serve referrers when you link

⏹️ ▶️ Marco out of them or into them? I forget. I think there’s no referrer data, which is annoying

⏹️ ▶️ Marco for analytics packages, but I don’t know if that’s out of date. way, I think it’s mostly,

⏹️ ▶️ Marco you know, there are some benefits here, but they’re, you know, for pure content sites like

⏹️ ▶️ Marco blogs and everything, I think the benefit is pretty small.

⏹️ ▶️ Casey Right, that’s what I

⏹️ ▶️ Casey, John thought.

⏹️ ▶️ John Yeah, I probably wouldn’t do it, even if they say, oh, your search rankings gonna go down by whatever, like,

⏹️ ▶️ John I mean, well, it’s kind of unfair for me, I think, because, you know, no one reads my site and it’s small, and, you know, but like

⏹️ ▶️ John Casey said, there’s nothing, there’s no login, there’s no authentication, there’s no cookies on my

⏹️ ▶️ John site, there’s nothing related to my site that would need to be kept from

⏹️ ▶️ John prying eyes and so I probably wouldn’t go SSL but that’s mostly because it’s

⏹️ ▶️ John kind of a hassle and usually cost money and there I mentioned last show but the EFF,

⏹️ ▶️ John Electronic Frontier Foundation’s plan to give away free SSL certificates

⏹️ ▶️ John to anybody who wants them to try to encourage more people to have certificates and this is other

⏹️ ▶️ John site unless it’s the same exact one I don’t think it is I again two days for the follow-up I haven’t had a chance

⏹️ ▶️ John to look at this stuff but a couple people said that it’s let’s encrypt.org and the tagline

⏹️ ▶️ John says here let’s encrypt is a new certificate authority it’s free automated and open arriving summer 2015. Well it

⏹️ ▶️ John says brought to you by EFF maybe it is that thing that I was talking about anyway um if

⏹️ ▶️ John uh SSL certificates were free and slightly less hassle I probably would do it because what the hell like I can

⏹️ ▶️ John set it up you know and and I would probably redirect people to HTTPS. Like, why not? You know, why

⏹️ ▶️ John not get the free tiny Google Boost? Why not make people feel slightly better? The only reason why not

⏹️ ▶️ John is because it’s expensive and a hassle. And hopefully, if they could reduce those down to about the same hassle as, you know,

⏹️ ▶️ John just having a hosting account at all, then I’d probably do it.

⏹️ ▶️ Marco On some level, I do kind of, I’m a little skeptical about the possible

⏹️ ▶️ Marco effect this might have on on smaller self-hosted sites because it’s now like,

⏹️ ▶️ Marco you know, if it wasn’t a hard enough battle to be like a self-run, self-owned site,

⏹️ ▶️ Marco now you have to deal with, oh, if you don’t have SSL, you’re not like, you’re not ranking with the big kids anymore. So now

⏹️ ▶️ Marco I feel like in a small way,

⏹️ ▶️ Marco, John not,

⏹️ ▶️ Marco maybe not a huge way, but in a small way, this is going to reinforce like the

⏹️ ▶️ Marco mediums of the world and make it that much harder for so many people

⏹️ ▶️ Marco out there to have an independent presence on the web?

⏹️ ▶️ John Well, don’t you think it’ll just raise the bar? Like then, you know, hosting providers, like, you know, the various

⏹️ ▶️ John WordPress blog hosting services and Squarespace and stuff, they’ll just say, okay, well, if that’s where the

⏹️ ▶️ John bar is now, then we basically have to, kind of like how, you know, Squarespace or whatever will give you a free domain

⏹️ ▶️ John name and stuff. That didn’t used to be the bar. You could just have, you know, markerarmond.edithispage.com and that felt

⏹️ ▶️ John fine, but it’s like, oh no, I gotta have my own domain. And now the hosting provider said, all right, if that’s where the bar is now,

⏹️ ▶️ John We’ll give you a domain with your hosting purchase and we’ll set it up for you. And like, you know, it’s all right. Well,

⏹️ ▶️ John if SSL is a thing, we’ll set that up for you. Like there’s no reason they can’t automate going through this, you know, let’s

⏹️ ▶️ John encrypt.org or whatever. And just, it makes it harder to be a full

⏹️ ▶️ John featured hosting provider that provides everything we want. But I think kind of raising the bar for the entire web is the whole point of this.

⏹️ ▶️ John So I don’t think it’ll be that bad.

⏹️ ▶️ Casey All right. So any other follow-up about perhaps Google Authenticator?

⏹️ ▶️ John Yeah, this is about them putting the space between the six digit number. A couple of people asked,

⏹️ ▶️ John I didn’t mention this, but it’s worth addressing because people have this question. Uh, what if they

⏹️ ▶️ John put a space between the three digit numbers? Um, and the answer to

⏹️ ▶️ John that is it shouldn’t matter because that’s another example of like, say, you know, if you’re

⏹️ ▶️ John doing some simple task and you ask yourself for even a moment, what

⏹️ ▶️ John about this simple task? what things about the simple tasks do I look at to decide whether

⏹️ ▶️ John I did a good job on it? And there’s usually very few things. And so if the thing you’re doing is showing a number, one of the

⏹️ ▶️ John things you can think about is, hey, it’s kind of hard to transcribe a six-digit number, let me split it up.

⏹️ ▶️ John Another thing you might think about if you have a text field that’s accepting a six-digit number,

⏹️ ▶️ John don’t worry about spaces. Get rid of the spaces. This is perhaps the oldest frustration of web developers

⏹️ ▶️ John on the entire web, of the websites that want you to enter a telephone number, a credit card number or

⏹️ ▶️ John anything, and they’re like, please enter digits only, no hyphens, no

⏹️ ▶️ John, Marco parentheses. You

⏹️ ▶️ John must use this format. Right, if you know the, yeah, or like dates, date parsing is a little

⏹️ ▶️ John hard, but credit card numbers and phone numbers are the worst. It’s like perhaps the simplest programming test possible

⏹️ ▶️ John to strip everything except digits. And it’s inexcusable, both on the client side and the server side, not

⏹️ ▶️ John to do that. So any web form that tells you write digits only here, like immediately you just think that entire website

⏹️ ▶️ John and everyone who made it is terrible And there’s no excuse for that.

⏹️ ▶️ Marco So wait, which do you think is worse out of these three options? That, so a numeric

⏹️ ▶️ Marco field that requires a certain format, otherwise it’ll reject it. The ones that don’t let you type numbers? Is that the next one?

⏹️ ▶️ Marco Or a reset button on a form. Oh, I haven’t seen those in years.

⏹️ ▶️ Marco Or a checkbox that does not have a label set so that you can’t just click the label.

⏹️ ▶️ Marco You have to click the actual checkbox.

⏹️ ▶️ John Browsers used to do that. Did you know back in the olden days, even if you did the label for you know, ID,

⏹️ ▶️ John whatever, so on and so forth, it still wouldn’t work. That was actually I remember like preferring

⏹️ ▶️ John I don’t remember which one it was this I remember preferring one browser or another because one browser did let you click the label and the

⏹️ ▶️ John other one didn’t, you know, but the same markup,

⏹️ ▶️ Marco did you lose it in all your windows?

⏹️ ▶️ John Yeah, I think that no, I think the the one you didn’t list is like where it’s a

⏹️ ▶️ John numeric field, and either it beeps, or puts up an alert or just simply doesn’t or like back

⏹️ ▶️ John auto backspaces for you when you type anything that’s not a letter. You ever see those?

⏹️ ▶️ Casey No, I haven’t

⏹️ ▶️ Casey, John seen

⏹️ ▶️ Casey that. My favorite is when you’re starting to type a phone number and there’s just a blank field

⏹️ ▶️ Casey and as you start typing, suddenly a parenthesis appears and as you continue to type, hyphens appear

⏹️ ▶️ Casey or even better yet, actually, is automatic tabbing between fields.

⏹️ ▶️ John Yeah, when you get to the end of the field, jumps to the other one. Yeah.

⏹️ ▶️ Casey Uh-huh. Oh, it drives me

⏹️ ▶️ Marco nuts. Right. And like if you made a mistake, you can’t backspace into the other one. Oh, it drives me crazy.

⏹️ ▶️ John People think they’re being clever than the others. But all those things are hostile. At least the ones that are active

⏹️ ▶️ John show that someone thought about it. They made bad choices, but they thought about it. But the worst are the ones that things are so

⏹️ ▶️ John aggressive that they’re yelling at you for entering incorrect data when it’s like, just remove

⏹️ ▶️ John things that aren’t numbers. So I haven’t even tested this, but I just assume that every place you can type in

⏹️ ▶️ John a Google Authenticator number thing, you can put spaces in it. It doesn’t matter. Because if that’s not true,

⏹️ ▶️ John then those applications need to be burned to the ground. And I’m assuming it is true, because that’s just that’s like 101 web 101

⏹️ ▶️ John stuff. So that’s why I’m not worried about people typing the space because they should be allowed to type the space. It

⏹️ ▶️ John shouldn’t be a big deal.

⏹️ ▶️ Casey All right, why don’t you tell us about something that’s

⏹️ ▶️ Marco cool, Marco? I would love to. It’s our friends once again, at back plaza.

⏹️ ▶️ Marco Or maybe you pronounce it. It’s probably pronounced backblaze. Yeah, I’m pretty sure it’s backblaze. All right.

⏹️ ▶️ Marco Backblaze is unlimited, unthrottled online backup for $5 a month.

⏹️ ▶️ Marco Really, truly unlimited disk space and unthrottled, meaning they will take your files as fast as

⏹️ ▶️ Marco you’re willing to upload them. Truly, five bucks a month for unlimited space, per computer,

⏹️ ▶️ Marco of course. You gotta set a limit somewhere, so it’s per computer. So really, Backblaze is awesome.

⏹️ ▶️ Marco They have iOS and Android apps. You can access your files when you’re on the go. You can restore files

⏹️ ▶️ Marco individually, or of course, the whole thing. They’ll do all the options, like mail you a hard drive or something if you need to restore

⏹️ ▶️ Marco a whole lot of files. Backblaze was founded by ex-Apple engineers, and so they respect

⏹️ ▶️ Marco the Mac as a platform. And so their app runs in native code. This is not

⏹️ ▶️ Marco a Java app, this is not some kind of like weird flash or any other kind of runtime. It is a real native

⏹️ ▶️ Marco Mac app, runs great on every version of Mac OS that I’ve had in the last, I don’t know, four years that

⏹️ ▶️ Marco I’ve been a customer, something like that. Including on day one, Yosemite, they were there.

⏹️ ▶️ Marco There’s no add-ons, there’s no gimmicks, there’s no additional charges. Really, this is truly it. $5 a month per computer

⏹️ ▶️ Marco for unlimited, unthrottled backup. And it’s just so simple. Let me

⏹️ ▶️ Marco tell you, I mean, Backblaze, again, I’ve been a customer of them since long before they sponsored the show,

⏹️ ▶️ Marco since before we even started the show. And I’ve tried other online backup solutions. Backblaze is by

⏹️ ▶️ Marco far my favorite. And let me tell you, if you don’t have an online backup solution, right now, we’re gonna

⏹️ ▶️ Marco release this during the holiday week, I think, you should really consider giving this to

⏹️ ▶️ Marco your family if they don’t have online backup. If you’re visiting family over this break,

⏹️ ▶️ Marco for God’s sake, install online backup. It is so easy, it’s so inexpensive, and it

⏹️ ▶️ Marco can save you from a world of trouble. Like back when Apple introduced Time Machine, you know, probably all of us nerds had the idea,

⏹️ ▶️ Marco oh, we’ll go visit our parents and we’ll set up a Time Machine drive, and maybe some of us actually did that. But there’s so

⏹️ ▶️ Marco many possible issues with that. Backblaze is automatic, and it doesn’t matter

⏹️ ▶️ Marco what happens in your house, or what happens to your electricity supply, or what happens to

⏹️ ▶️ Marco a single hard drive sitting on your desk that you may or may not remember to plug in. It is just automatic.

⏹️ ▶️ Marco It even emails you periodically to say, hey, just so you know, here’s our current backup status.

⏹️ ▶️ Marco If it doesn’t see you for a while, it’ll email you and say, hey, you know what? We haven’t seen this computer or this disk connected to it

⏹️ ▶️ Marco in a while. It’ll back up all your drives that are connected to your computer, external, internal, whatever you

⏹️ ▶️ Marco want to back up, it’ll back that up. Really, it is the simplest online backup program to use. Just

⏹️ ▶️ Marco install it and it does the rest. Go to backblaze.com slash ATP to learn

⏹️ ▶️ Marco more. That is backblaze.com slash ATP. Unlimited, unthrottled,

⏹️ ▶️ Marco online backup for just five bucks a month. I use it, my wife uses it, we put it on my mom’s computer, she uses it,

⏹️ ▶️ Marco my whole family uses it. It is amazing and I highly recommend them. Thanks a lot to Backblaze for sponsoring.

⏹️ ▶️ John People ask about this sometimes. You can make Backblaze backup anything you want. I don’t know if this is supported,

⏹️ ▶️ John so I’m not gonna say that Backblaze recommends this, but it’s just an XML file that says which files should be included or

⏹️ ▶️ John excluded, And you can just edit that XML file. So if there are people, a lot of listeners out there who are like,

⏹️ ▶️ John I don’t want to get Backblaze because I heard it doesn’t backup X. As of right now, and as of the entire history of Backblaze, you

⏹️ ▶️ John can make it backup anything. Like I have my thing backup user local for me. I have a backup slash applications. I have a backup

⏹️ ▶️ John tons of stuff that by default it doesn’t do. And it’s hard coded to exclude.

⏹️ ▶️ John It’s not hard coded in the sense that you can’t change it. It’s hard coded and it’s not visible in the GUI. But if you just go to the

⏹️ ▶️ John XML file and edit it, you can.

⏹️ ▶️ Marco Well, and the UI has added options over the years. Like there used to be, I think, a five gig file

⏹️ ▶️ Marco limit, something like that, or eight gig maybe.

⏹️ ▶️ John You could change that too. Even when that was the limit,

⏹️ ▶️ Marco you could just go change that. Right, but now that’s even in the GUI. Now you can even set that to unlimited if you want to.

⏹️ ▶️ Casey So you were complaining about PHP recently, which in and

⏹️ ▶️ Casey of itself is not terribly remarkable, but you were complaining with

⏹️ ▶️ Casey a vigor and an angst that I don’t recall having seen from you in a long time.

⏹️ ▶️ Casey And I was curious, what was the issue, if you can share, and have you

⏹️ ▶️ Casey tried anything different or are you still just stuck in PHP hell?

⏹️ ▶️ Marco So remember when the Poodle attack was coming around? The Poodle attack

⏹️ ▶️ Marco was, for those of you who missed it, it was basically one of the many SSL shortcomings and vulnerabilities

⏹️ ▶️ Marco discovered in the past year. And it basically completely breaks SSL

⏹️ ▶️ Marco v3 so that you really should disable SSL3 and force

⏹️ ▶️ Marco people to use TLS. That’s the gross overview. Please research it if you want

⏹️ ▶️ Marco more details than that. It’s called Poodle. Anyway, the problem I had, which I discovered last night when somebody

⏹️ ▶️ Marco kept tweeting at me saying, hey, my podcast feed doesn’t work in Overcast. It’s not getting updates.

⏹️ ▶️ Marco And they had recently upgraded their SSL, Cypher suite, and they are serving

⏹️ ▶️ Marco a podcast feed over SSL because they wanted to go all SSL. So, you know, as we were saying 10 minutes ago, that makes

⏹️ ▶️ Marco some sense. Anyway, I discovered through this that my PHP

⏹️ ▶️ Marco feed crawlers, which are using libcurl and which itself uses OpenSSL, somewhere

⏹️ ▶️ Marco along the line, basically refuse to use anything but SSLv3

⏹️ ▶️ Marco and seem to be totally ignoring any configuration flags I pass them to the contrary.

⏹️ ▶️ Marco And doing some quick searching around the web last night and trying to fix this problem, I discovered there’s actually

⏹️ ▶️ Marco quite a lot of people complaining about this problem that whatever they’re doing with their PHP apps

⏹️ ▶️ Marco that are using curl to crawl something, they keep breaking under sites that have disabled SSLv3,

⏹️ ▶️ Marco which is really obnoxious. Basically there is no good fix yet that I can

⏹️ ▶️ Marco find. I’m hoping to find at least a crappy fix in the meantime, but right now there’s basically no good fix.

⏹️ ▶️ Marco I basically can’t make this work. This is not the first problem I’ve had with PHP’s version

⏹️ ▶️ Marco of SSL as curl using it being totally out of date and being a problem like this.

⏹️ ▶️ Marco Secondarily, so Overcast right now crawls something along the lines of 240,000 RSS feeds

⏹️ ▶️ Marco every few minutes. And so

⏹️ ▶️ Marco it’s doing a lot of crawling of these feeds. And you know, it does the basic web stuff to

⏹️ ▶️ Marco hopefully get a 304 response with most but you know, obviously it’s still

⏹️ ▶️ Marco doing a whole lot of network requests and then a whole lot of feeds come back and then I do you know

⏹️ ▶️ Marco basic MD5 checking to see if this is if this is actually changed and then

⏹️ ▶️ Marco decode all the XML and do everything there and so on. The the feed crawlers

⏹️ ▶️ Marco are by far the vast majority of the cost of running

⏹️ ▶️ Marco overcast. They they take up almost all the server resources, This is, you know,

⏹️ ▶️ Marco almost all the RAM, almost all the CPU power on all the servers, it’s almost all being taken up by feed

⏹️ ▶️ Marco crawling. The actual serving of the application and doing the sync requests and everything is

⏹️ ▶️ Marco almost nothing. It’s, it’s no, it’s nothing on the servers at all. This is all doing

⏹️ ▶️ Marco feed crawling. To try to solve both of these problems at once, I did an experiment last night.

⏹️ ▶️ Marco I tried writing a basic feed poller in Node. What?

⏹️ ▶️ Marco The main problem I have with this feed crawling problem with PHP is that

⏹️ ▶️ Marco PHP is single threaded. It’s single process, single threaded. The crawlers

⏹️ ▶️ Marco all run as background tasks, like terminal tasks,

⏹️ ▶️ Marco being run by Supervisor, which is a great little Python thing, Supervisor D. So it’s all

⏹️ ▶️ Marco being run by that, and then Beanstalk Q manages the whole thing. So the Beanstalk queue has all

⏹️ ▶️ Marco these tasks, and then these PHP queue processing processes, basically, are there popping

⏹️ ▶️ Marco stuff off the Beanstalk queue and then re-enqueuing things when it’s done. Right now, this is running something

⏹️ ▶️ Marco along the lines of 240 processes simultaneously across, I think, seven VPSs,

⏹️ ▶️ Marco seven line of instances. So roughly 240 simultaneous consumers making

⏹️ ▶️ Marco this happen, and that’s crushing these servers and taking up so much RAM,

⏹️ ▶️ Marco And it’s just really, really obnoxious. And if this was the best way to do it, I would just suck

⏹️ ▶️ Marco it up and just deal with the cost accordingly and deal with all that complexity accordingly. But

⏹️ ▶️ Marco I decided, you know what, maybe PHP is not the best tool for this job.

⏹️ ▶️ John Why is it taking up so much RAM? And why do you need seven machines to have 240 processes? Like how big are these processes?

⏹️ ▶️ Marco Off the top of my head, I don’t know. I think there’s something like 40 or 50 megs each, something like that. But it’s,

⏹️ ▶️ Marco you know, I think it’s under 100, but still.

⏹️ ▶️ John like the math isn’t working out like so why can’t you have 240 50 meg processes on

⏹️ ▶️ John one machine

⏹️ ▶️ Marco how much RAM is that

⏹️ ▶️ John not a lot

⏹️ ▶️ John, Marco and

⏹️ ▶️ John they should it should be even less because if you’re forking all the memory from the parent process is shared and the only thing that’s different

⏹️ ▶️ John is the pages you dirty during the the child process is doing its work

⏹️ ▶️ Marco right I’m not doing a fork situation here maybe I should be maybe look into

⏹️ ▶️ Marco that

⏹️ ▶️ Marco, John right now

⏹️ ▶️ Marco it’s literally just running independent processes. All right, all right, go ahead. So anyway, I, uh,

⏹️ ▶️ Marco so, and this is just, you know, it’s crushing the CPUs in the machine. CPU seems to be

⏹️ ▶️ Marco the main limiting factor here, not Ram. Uh, Ram, Ram prevents me from running too many of them on

⏹️ ▶️ Marco one box, uh, economically, but it seems like CPU power is my main limiting factor here.

⏹️ ▶️ Marco And, uh, and I don’t, honestly, I haven’t looked into exactly like what the most, you know, the single

⏹️ ▶️ Marco biggest function is because PHP is notoriously very hard to profile.

⏹️ ▶️ John There’s no no PHP profiling not even with the the Facebook thing.

⏹️ ▶️ Marco Yeah, there is one There there are there actually a couple of profilers, but they all kind of suck

⏹️ ▶️ Marco in different ways And they’re kind of hard to run in production And yeah, it’s it’s kind of a mess the whole situation with PHP

⏹️ ▶️ Marco and profiling and debugging anyway, which is itself a problem, but Anyway,

⏹️ ▶️ Marco so what I really wanted here was some kind of parallelism. That was not just process parallelism You know something

⏹️ ▶️ Marco like there’s no way there’s no reason I need to have a process sitting there taking up RAM,

⏹️ ▶️ Marco taking up, you know, all the OS overhead of having another process to just be sitting there waiting for

⏹️ ▶️ Marco each feed individually that it’s processing. Now there you can do the one way you can do parallelism

⏹️ ▶️ Marco in PHP is you can do curl multi. And I actually

⏹️ ▶️ Marco a while ago, I wrote the feed crawler to do this. And it’s a mess.

⏹️ ▶️ Marco It is really not a good implementation. That is the one thing PHP can do

⏹️ ▶️ Marco multiple times, multiple things at once, is you can execute a multi-handled curl resource

⏹️ ▶️ Marco together at once. But there’s so many issues with that. The main reason is that it’s incredibly inefficient,

⏹️ ▶️ Marco because you can’t provide a constant pipeline, a constant queue saying,

⏹️ ▶️ Marco okay, as soon as you finish one, add one from this list to it. like you know, queue up 10,

⏹️ ▶️ Marco run through all 10, the slowest one will block all everything else, and then once you’ve finished

⏹️ ▶️ Marco all 10, then I can give you more things to do. So there’s just a whole bunch of like little problems like PHP

⏹️ ▶️ Marco again is is really not the best tool for this job. I heard Node was good at this stuff and

⏹️ ▶️ Marco the reason I started looking into Node was because two reasons. Number one, this github

⏹️ ▶️ Marco camo project, the Atmos camo project that I mentioned last week to do an SSL proxy for

⏹️ ▶️ Marco serving big files. That’s written in Node and I figured I want to at least look into what it takes to host

⏹️ ▶️ Marco this if I wanted to host it myself because I can do it on Heroku but it’s probably gonna be really expensive. And so, yeah, I wanted

⏹️ ▶️ Marco to look into what it takes to host it. Also, secondarily, I’m a huge fan

⏹️ ▶️ Marco of the event-driven parallelism kind of model. Like that, I like that a lot. I’ve seen

⏹️ ▶️ Marco it work a lot. Like almost every good web tool these days that

⏹️ ▶️ Marco scales really well is the event-driven model. If you look at Memcache, look at Nginx,

⏹️ ▶️ Marco obviously Node itself, this is really a very good model. And it’s very practical for hosting big things like this because

⏹️ ▶️ Marco you’re able to make very, very good use of server resources without

⏹️ ▶️ Marco risking overrunning them too much. I decided, let me see how, like I already know

⏹️ ▶️ Marco JavaScript a little bit. I’m not a JavaScript expert by any means. The whole thing people do these days with all like the crazy

⏹️ ▶️ Marco prototype stuff and try to force an

⏹️ ▶️ Marco, John object

⏹️ ▶️ Marco system onto JavaScript, I think

⏹️ ▶️ Marco, John it’s

⏹️ ▶️ Marco clunky as crap.

⏹️ ▶️ Marco, John That’s more than these days, but yeah. I know, I know, okay, thanks.

⏹️ ▶️ Marco I know Opera did it in the 70s, but it’s a terrible language for many things, but I wanted

⏹️ ▶️ Marco to try Node. And one thing, this sounds really stupid. When I installed Node on, you know,

⏹️ ▶️ Marco brew install Node, huh, that was easy. And then

⏹️ ▶️ Marco I did a little, you know, console.log hello world. I didn’t even know that console.log

⏹️ ▶️ Marco existed in Node, I just knew it from browser. I was like, let me see if it exists. And I did that, and I

⏹️ ▶️ Marco ran it from the command line. And just running that program

⏹️ ▶️ Marco on the command line was so freaking fast. That is faster than

⏹️ ▶️ Marco PHP. If you do hello world in PHP, it loads the whole interpreter. And it’s not…

⏹️ ▶️ Marco I wouldn’t describe PHP as slow before I tried this. But once I saw that, I immediately

⏹️ ▶️ Marco recognized, oh my God, this is a different level of speed. Like this is insane how

⏹️ ▶️ Marco fast, how quickly that Hello World thing just launched and ran. And again, I know

⏹️ ▶️ Marco that’s a stupid way to measure things, but it was noticeable. After using PHP for years, believe

⏹️ ▶️ Marco me, that’s noticeable.

⏹️ ▶️ Casey Let me interrupt you right there, because I have a related story that I think you’ll get a kick out of. Sure, yeah. When I was living in Austin,

⏹️ ▶️ Casey when I was in middle school, my dad and I wanted to buy a new computer, and I don’t recall what we

⏹️ ▶️ Casey had at the time, But living in Austin, we decided to go to the one and only Dell store.

⏹️ ▶️ Casey And I believe at the time, what we were looking to get was a Pentium Pro. And

⏹️ ▶️ Casey I will never forget going in to the Dell outlet store

⏹️ ▶️ Casey and the way we benchmarked all of the computers they had on display was

⏹️ ▶️ Casey watching them deal Solitaire hands. Because the ones that were

⏹️ ▶️ Casey really quick at dealing Solitaire at the time, as far as I I knew that was

⏹️ ▶️ Casey a CPU bound operation. And so those that dealt the solitaire hands really, really fast, you

⏹️ ▶️ Casey knew that was a computer you wanted. And sure enough, the Pentium Pro dealt those things. It was so fast.

⏹️ ▶️ Casey It was, dude, I couldn’t even see it. It was so fast. It was amazing. That’s

⏹️ ▶️ Casey, Marco awesome.

⏹️ ▶️ Marco So I know what you mean. Yeah, so anyway, so I decide, you know what? Let me just see. You know,

⏹️ ▶️ Marco I really don’t want to have to go and rewrite the entire feed parser, the entire feed handler,

⏹️ ▶️ Marco the decoder, how it normalizes everything, how it puts it in my database, how it, you know, like, I parse all the, I

⏹️ ▶️ Marco parse the episode descriptions to remove harmful HTML tags and try to summarize them and make them all nice

⏹️ ▶️ Marco and everything. There’s so much processing that’s all written in PHP that has so many, like, built-up-over-time

⏹️ ▶️ Marco bug fixes and capabilities and dealing with crappy feeds, like, I have so much of that over time I really

⏹️ ▶️ Marco don’t want to have to rewrite that, but I suspect I can get a big savings out of having

⏹️ ▶️ Marco a thing in the front that fetches all the feeds, that’s written in something faster than PHP for this purpose,

⏹️ ▶️ Marco something in the front that pulls and fetches all the feeds and then only sends to the PHP processes

⏹️ ▶️ Marco the actual changed feeds. Because most of the requests, as I said, are not resulting in

⏹️ ▶️ Marco new information. So that, I bet, would cut things down by enough that

⏹️ ▶️ Marco it would be worth the hassle of running something else in front of it. I decided

⏹️ ▶️ Marco to write this thing up and I stumbled through most of the day in Node, figuring

⏹️ ▶️ Marco out how it works, getting the whole, you know, HTTP request thing, the URL parsing

⏹️ ▶️ Marco nonsense, like getting all this stuff. And I guess I know, there’s a million different libraries that make it simpler, blah, blah,

⏹️ ▶️ Marco blah, but I just wanted to do things in, you know, in the in a in a most low level way possible. So

⏹️ ▶️ Marco I so I knew what was going on. And so using as many in the way I do things using as many core modules as possible,

⏹️ ▶️ Marco and trying to minimize my reliance on on infrequently used third party code. So I made a thing

⏹️ ▶️ Marco that would pull the feeds every x seconds or every x minutes and do basic 304 tracking

⏹️ ▶️ Marco and then you know call a callback function when it has new information for one of the feeds.

⏹️ ▶️ Marco And I load it up and it starts flying through all of them

⏹️ ▶️ Marco and it was incredible until it just seemed to stop.

⏹️ ▶️ Marco And I noticed and it all of a sudden it went to 100% CPU usage and it stopped and it was

⏹️ ▶️ Marco using approximately 1.7 gigs of RAM. Do you know what happened Casey? because you know JavaScript.

⏹️ ▶️ Casey I’m guessing that something wasn’t cleaned up. But no, I don’t know specifically what happened.

⏹️ ▶️ Casey John?

⏹️ ▶️ John I don’t know. I don’t do a lot. I don’t do any Node.js programming. I only do JavaScript in the browser. And

⏹️ ▶️ John in that case, I would say you accidentally kept a reference to a DOM node that’s no longer in the DOM. Or

⏹️ ▶️ John, Marco you’re using IE, which has an

⏹️ ▶️ John amazing set of Byzantine rules about what you can and can’t reference from JavaScript that will end up leaking

⏹️ ▶️ John memory. But no, I don’t

⏹️ ▶️ Marco know. Turns out, the V8 engine, which I believe, Node is based on, the Chrome JavaScript V8 engine,

⏹️ ▶️ Marco just has a RAM limit of roughly 1.6 to 1.7 gigs. The garbage collector just dies at that point.

⏹️ ▶️ Marco It’s like Java, where you have to give

⏹️ ▶️ John, Marco an argument on the command line

⏹️ ▶️ John to tell it how much heap space to use. I had this hilarious experience

⏹️ ▶️ John recently at work where I was trying to run a Java command to tell me what version of Java I have, whether it’s Java 7 or whatever.

⏹️ ▶️ John If you just do Java minus version, it says, sorry, not enough memory. You have to

⏹️ ▶️ John, Casey give it. But on our system,

⏹️ ▶️ John this could be a configuration thing, could be a file in Etsy, could be a dot file, could be an environment variable I don’t

⏹️ ▶️ John have set. But whatever it is, the situation on our work computer was you type Java minus version, and it says

⏹️ ▶️ John not enough memory and heap to do that for you.

⏹️ ▶️ Casey That’s amazing. So I did not know that that was a thing, though, Marco. That is news to me.

⏹️ ▶️ Marco Yeah, and the reality is you’re just not expected to use more than 1

⏹️ ▶️ Marco and 1 1⁄2 gigs of RAM in a node process. But anyway, that’s a thing, and you can’t change it.

⏹️ ▶️ Marco obviously you can just run multiple processes and split the load and everything. So there’s ways around it, but it’s still annoying. And

⏹️ ▶️ Marco again, not like PHP doesn’t have its own set of obnoxious limitations and badly documented

⏹️ ▶️ Marco options and things like that. Anyway, one thing I like is that everything in Node is stream and callback based.

⏹️ ▶️ Marco And so even like the MD5 calculator is a streamable thing.

⏹️ ▶️ Marco And so in the data callback for each URL request, I’m like, you know, if I don’t actually need the

⏹️ ▶️ Marco body of the feed, if I just need to know whether it has changed, I can just

⏹️ ▶️ Marco pipe it through the MD5 hasher and just never keep any part of it in RAM. That could really cut this

⏹️ ▶️ Marco down. So I did that, it cut it down substantially. You weren’t doing that in PHP? No, in PHP

⏹️ ▶️ Marco I was loading the whole thing. I mean, I was doing like, you know, basic ETag and if modified since, but if the

⏹️ ▶️ Marco server gave me a 200 and gave me the whole page, then I would do an MD5 over the whole body

⏹️ ▶️ Marco to make sure, like do I actually need to do anything? Is this actually new? If, you know, if it is new, I

⏹️ ▶️ Marco need to process it. So there’s no reason for me to feed it all in and then immediately fetch it again.

⏹️ ▶️ Marco Like I figured, you know, I might as well just process it. Anyway, so I decided, let me see for this

⏹️ ▶️ Marco node thing. Maybe I don’t have to do that. If I remove that and if I say that, well, anything that actually

⏹️ ▶️ Marco is new, I’ll just fetch a second time, like from PHP, you know, that’s not the best scenario, but

⏹️ ▶️ Marco let me see what that does to RAM usage. Ran it again and same thing, slam into that 1.6 gig

⏹️ ▶️ Marco limit pretty quickly. If I make a node process only do, say, quarter of the

⏹️ ▶️ Marco feeds I can make this entire thing run and do that entire polling

⏹️ ▶️ Marco thing where it crawls them every depending on the thing how many subscribers every

⏹️ ▶️ Marco two to thirty minutes roughly one process can crawl 60,000 feeds like that

⏹️ ▶️ Marco and tell me what tell me when each one has actually changed with about 20%

⏹️ ▶️ Marco CPU power on one core and about 600 megs of RAM

⏹️ ▶️ John why did you have to split it up into processes, though, couldn’t you just have your single process have a window

⏹️ ▶️ John of a quarter of like a maximum window of a quarter of a thing? I’m still not quite sure where the memory is going, because if they’re all just streaming

⏹️ ▶️ John things through, there’s just like one buffer is worth of stuff. And so you just that’s just how many

⏹️ ▶️ John web requests do you have in flight at once. And if you just keep that limit small, then it should work through, you

⏹️ ▶️ John know, you basically you’re trading. Oh, yeah, I see. I see what you mean. You know, like, just have the just have the if,

⏹️ ▶️ John anyway, if four processes isn’t that much, Now you’ve got like a sharding problem where you’re divvying up the

⏹️ ▶️ John workload like manually between them, whereas if you just make one process, or one master process that divvies them up

⏹️ ▶️ John into Java. Anyway,

⏹️ ▶️ John, Marco go on.

⏹️ ▶️ Marco So the problem there is, so when I first did this, I initially went, okay, well, how do you, you know, let me look

⏹️ ▶️ Marco for a node-based message queue. So, you know, maybe I can get rid of the

⏹️ ▶️ Marco Beanstalk queue that I run this on, because Beanstalk has a number of limitations that make this kind of thing annoying to do with it.

⏹️ ▶️ Marco So let me just see, like, you know, hey, what can I do here? And I looked up some of the node message

⏹️ ▶️ Marco queues, and I looked at the source to one of them, and it was like 100 lines. I’m like,

⏹️ ▶️ Marco what is this doing? And then of course, it’s just doing setTimeout.

⏹️ ▶️ Marco, Casey And I’m like,

⏹️ ▶️ Marco, John oh,

⏹️ ▶️ Marco like, duh. And so I tried, okay, let me write this entire thing using setTimeout

⏹️ ▶️ Marco as my queuing method, and then when the function finishes, it just queues the next one, and

⏹️ ▶️ Marco it works great. Now the problem is I then have no way, well, I have

⏹️ ▶️ Marco no straightforward way to limit the number of simultaneous requests that

⏹️ ▶️ Marco are kept in memory at once.

⏹️ ▶️ John Where are you getting your work, your queue of work from? You’re pulling it from a database? Yeah. So why don’t you just pull from the

⏹️ ▶️ John database in chunks? And just work on your chunk. And as things

⏹️ ▶️ John fall off the end, pull in new things. You just need a window size of, this is my

⏹️ ▶️ John current set of things that I’m working on. And as soon as you complete one, a new one comes in. And you could

⏹️ ▶️ John chunk the pulls from the database so you’re not selecting a single row at the time. But other than

⏹️ ▶️ Marco that. Oh, I’m actually selecting all the rows at once. Like, at the beginning, like, every so often, it’s just like, you know,

⏹️ ▶️ Marco select ID, comma, URL from database. And it gives me this

⏹️ ▶️ Marco, John giant.

⏹️ ▶️ John Didn’t working at Tumblr make you, like, never want to do those queries? Like, always say, like, if anything,

⏹️ ▶️ John what would happen if I multiplied my traffic by 100? And if the answer is it blows up, like, you know,

⏹️ ▶️ John the discipline of saying, never have everything in memory. Always be limited by just by your buffer size. like,

⏹️ ▶️ John I don’t care how big the file is because I’m only going to be working on X amount of it at a time. I don’t care how many

⏹️ ▶️ John jobs there are because I’m only going to have this many at a time. I don’t care how many there are in the database, I’m never going to select them all. I’m always going

⏹️ ▶️ John to go Windows.

⏹️ ▶️ Marco No, in most cases, I would agree with you. However, the fact is the world of podcasts is so

⏹️ ▶️ Marco damn small. Like the entire, like every podcast feed that I know about in

⏹️ ▶️ Marco all of Overcast, 240,000 of them. And they grow very slowly. Like two months ago,

⏹️ ▶️ Marco it was probably 220,000. You know, the fact is, from what I’ve heard, I’ve heard the entire iTunes

⏹️ ▶️ Marco directory is somewhere along the order of four to 500,000. You know, in the world of database

⏹️ ▶️ Marco stuff, these are tiny numbers, really. Like, this is not a big deal. I can do, like, queries for stats and

⏹️ ▶️ Marco stuff with these ridiculous group bys and ridiculous joins that, you know,

⏹️ ▶️ Marco on something like the size of Tumblr, you just can’t even do. But I can do that on these tables because

⏹️ ▶️ Marco everything is just so damn tiny. If you weren’t

⏹️ ▶️ John limited by the crazy node memory limit, you wouldn’t have to do any windowing at all, probably,

⏹️ ▶️ John, Marco you’re right

⏹️ ▶️ John you know but KJ Healy posted in the chat room text from what I assume is the node side

⏹️ ▶️ John and it seems to confirm that yeah there’s that there’s a limit and it’s it’s less it’s one one

⏹️ ▶️ John gigabyte and 32-bit machines 1.7 and 64 bit and it’s recommended that you split your single process into several workers

⏹️ ▶️ John if you’re hitting memory limits which I think is pretty lame you should write it and go you don’t have to deal with that crap

⏹️ ▶️ Marco actually I I am interested in go you know theoretically however that

⏹️ ▶️ Marco as stupid as it is the fact that I already already know all the JavaScript syntax, even if I don’t know a lot of languages

⏹️ ▶️ Marco like nitty gritty details, the fact that I already know all the syntax and a lot of the basic functions made it a lot more a lot

⏹️ ▶️ Marco easier for me to just jump in and start making something productive here.

⏹️ ▶️ Marco, John All

⏹️ ▶️ John right. Well, how about this, Marco? Are you familiar with nsurl session? I thought about that too.

⏹️ ▶️ John Because you can write in Swift as a command line script. I

⏹️ ▶️ Marco thought about that too. But where would I run it? I’d have to get like a Mac mini colo kind of thing. And that’s like, like I can’t

⏹️ ▶️ Marco if I can’t just run it on my line node boxes in my existing set up like that’s kind of annoying.

⏹️ ▶️ John I forgot that Swift doesn’t cross compile does it?

⏹️ ▶️ Marco Nope.

⏹️ ▶️ John Yeah. It’s not even open source yet.

⏹️ ▶️ Marco And also like I don’t think there’s a whole I don’t think there’s a lot of reason to do it in Swift or Objective-C

⏹️ ▶️ Marco over Node because the model would be the same like you’d have basically single-threaded

⏹️ ▶️ Marco networking you know with with all this event based callback stuff like that would basically be the

⏹️ ▶️ Marco way to do it in Objective-C also like that’d be the smart way to do it. Whether it’s that or Node Like there’s not

⏹️ ▶️ Marco a huge gain to one or the other, except that Node.I can host anywhere.

⏹️ ▶️ Casey So in the end, you tried something new, which admittedly was new-ish insofar

⏹️ ▶️ Casey as, like you said, you knew the language. But you tried something

⏹️ ▶️ Marco new. It was a little jarring when I went to some of the pages for some of the modules and

⏹️ ▶️ Marco on their GitHub page, it’s like last modified four years ago. I’m like, man,

⏹️ ▶️ Marco this is so not new.

⏹️ ▶️ Casey But either way, you tried something new to you, and it sounds like

⏹️ ▶️ Casey so far so good.

⏹️ ▶️ Marco Yeah, I haven’t deployed it to the servers yet, because that’ll take a little bit more work and I’m actually about to go traveling,

⏹️ ▶️ Marco so I figured this would be a bad time to start messing with things. But I suspect

⏹️ ▶️ Marco as soon as I get back from this trip, I’m most likely going to install this front end in place and have it take

⏹️ ▶️ Marco over all the polling and maybe even the initial crawling if I can get, if I can figure out how to do

⏹️ ▶️ Marco the memory in a relatively efficient way. Or somehow overcome those limits, but

⏹️ ▶️ Marco we’ll see. But yeah, so far I would say it was a big success. It was exciting. I was very happy

⏹️ ▶️ Marco the whole day. Like I was, I was satisfied with what I was doing. You know, I’m a sucker for speed.

⏹️ ▶️ Marco That’s the, that’s it. Like I’ve always been like a low level nerd. I love C. I love programming

⏹️ ▶️ Marco things in C. I love using the crazy vector functions. Like I love all this crazy stuff that makes things super,

⏹️ ▶️ Marco super fast. PHP can’t do that for me. Like, it’s like, this is a need, it’s not serving

⏹️ ▶️ Marco for me. PHP is not, I wouldn’t call it slow. It is not a slow language

⏹️ ▶️ Marco as things generally go. But when it comes to massive parallel tasks like

⏹️ ▶️ Marco this, there’s just no good way to do it in PHP. And Node is

⏹️ ▶️ Marco made for stuff like this. Like, it’s really good at stuff like this. And so to have something with really

⏹️ ▶️ Marco pretty little effort that is very easy to host that I think, I’ll find

⏹️ ▶️ Marco out about that, I’ll report back on how easy

⏹️ ▶️ Marco, John it is to host

⏹️ ▶️ Marco later. But it hit all the boxes for me. And the fact that

⏹️ ▶️ Marco all the crazy, like everything is a callback kind of stuff, to write a whole web app in this, I think would be pretty clunky.

⏹️ ▶️ Marco I think it would definitely be callback hell, lots of weird spaghetti

⏹️ ▶️ Marco, John code type things. I can’t

⏹️ ▶️ Marco imagine writing a whole web app in it, and I don’t plan to. But for components or

⏹️ ▶️ Marco for simple things, I can definitely see the value of it here. And so

⏹️ ▶️ Marco I think I’m going to start mixing it in in places and see what happens.

⏹️ ▶️ Casey I am extremely happy about this. Although it would be remiss of me not to point out that you’ve said in basically

⏹️ ▶️ Casey the same breath that you love low level stuff and you love speed. And then you talked about Node, which

⏹️ ▶️ Casey is about as far away from low level as you can get.

⏹️ ▶️ John Well, it’s not like PHP was failing here because the quote unquote language is slow. Because

⏹️ ▶️ John JavaScript, like you said, is also another high level language. Neither one of them is directly dealing with memory. all have these, you

⏹️ ▶️ John know, dynamic types and all this other stuff that is generally slow. The thing that was falling down is that PHP

⏹️ ▶️ John either doesn’t provide or Marco wasn’t willing to try to make happen

⏹️ ▶️ John the control at sort of the, you know, the infrastructure level, the process level,

⏹️ ▶️ John the, you know, how, you know, how many, if you could do something event driven like that in PHP, it sounds

⏹️ ▶️ John like you can’t, except for that one curl thing. Like it’s not, not sort of part of the language or not

⏹️ ▶️ John a language supported thing. I’m assuming forking and everything is a language supported thing. So you could have done that.

⏹️ ▶️ John And that would have been sort of a half step towards this. It is. But yeah, like a node, you know,

⏹️ ▶️ John sort of the event driven thing is baked into language. The example I’m familiar with is Perl, where, of course, you can do the forking thing. And there

⏹️ ▶️ John are multiple event driven languages that are based on various, you know, event libraries. Or you

⏹️ ▶️ John could do like you could you could do it yourself in Perl if you want, if you want to, because it gives you full access to all the Unix system calls

⏹️ ▶️ John that these things are all implemented in. So you can just do it that way as well. So in all those cases, all

⏹️ ▶️ John the languages we’re talking about are slow compared to, you know, C++ and stuff like that. But that’s not the limiting factor. The limiting factor is

⏹️ ▶️ John your your thing was spend wasting time and resources not doing anything, you know, like

⏹️ ▶️ John processes would be stuck in IO8 or something like

⏹️ ▶️ John, Marco that.

⏹️ ▶️ Marco Right. It’s very inefficiently using the using the resources.

⏹️ ▶️ John Right. And the event driven thing is like, well, I can’t do anything more with this thing. I’ll move on to the next thing. Oh, I can actually do a little

⏹️ ▶️ John work on this. What about you? I can do some work on that. Oh, but this has some data ready for me because compared to the speed

⏹️ ▶️ John of the CPU, the speed that IO happens across the network is glacial. So the CPU is always just like

⏹️ ▶️ John twiddling its thumbs saying, you know, give me something to do. Because this,

⏹️ ▶️ John I sent this HTTP request and it’s not gonna come back for another few million or billion cycles. So I would like to spend those cycles doing

⏹️ ▶️ John something.

⏹️ ▶️ Marco Exactly. And also, you know, you mentioned, yeah, these are all high level languages. They’re all gonna be

⏹️ ▶️ Marco slow compared to something like C. But my biggest frustration with PHP

⏹️ ▶️ Marco over the years has been everybody else who uses it the people who make it.

⏹️ ▶️ Marco Like it’s, I don’t say this like this is not, I’m not actually joking that like it is

⏹️ ▶️ Marco that bad. Like a handful of people are able to use PHP

⏹️ ▶️ Marco in a reasonable way and they mostly keep quiet and don’t participate in the community and aren’t contributors to the PHP

⏹️ ▶️ Marco project. PHP itself has been so erratically

⏹️ ▶️ Marco and relatively poorly maintained over the years. third-party code for it is a disaster.

⏹️ ▶️ Marco It’s all over the map, mostly being pretty bad. It’s getting a little bit better these days, although it’s

⏹️ ▶️ Marco also getting really Java-y, the whole, like, the whole Composer era of PHP

⏹️ ▶️ Marco and the Zend framework era and all this. Oh, they’re turning it to Java, it’s horrible. And

⏹️ ▶️ Marco the fricking backslash, how did that get through? Seriously, the backslash

⏹️ ▶️ Marco as an operator, or as a namespace divider, like, why is the backslash anything

⏹️ ▶️ Marco but an escape character? Anyway, PHP is not maintained

⏹️ ▶️ Marco in a direction or to a level of quality that I have much confidence in.

⏹️ ▶️ Marco The Chrome JavaScript engine, on the other hand, is really good, and there’s a

⏹️ ▶️ Marco fantastic engineering company behind it, that even though I think Google is creepy as hell

⏹️ ▶️ Marco most of the time, and I don’t use many of their products because I’m just a little creeped out by them,

⏹️ ▶️ Marco you can’t deny their engineering prowess is just insanely good. The Chrome JavaScript engine

⏹️ ▶️ Marco is something that gets a lot of attention. There’s a lot of incentive for Google to keep that being awesome.

⏹️ ▶️ Marco Their whole company basically depends on that being awesome. So, you have this company with fantastic

⏹️ ▶️ Marco engineering resources and throughput, having a really good incentive to maintain

⏹️ ▶️ Marco this one component this language is based on. Then you look at PHP and it’s just kind of all over the place. It’s

⏹️ ▶️ Marco sloppily maintained. Deploying it is weird. There’s still so many language

⏹️ ▶️ Marco shortcomings that will never be fixed. A lot of the new directions language is taking

⏹️ ▶️ Marco have really been questionable and I don’t have a lot of confidence in. Facebook’s whole thing with hack

⏹️ ▶️ Marco and HHVM is its own pile of gains and losses.

⏹️ ▶️ Marco That just shows how bad PHP is maintained that Facebook decided they had to do that that they were probably right.

⏹️ ▶️ Marco Even though this is all, you know, the same class of language, generally speaking,

⏹️ ▶️ Marco I have a lot more faith in the technical prowess and the long-term

⏹️ ▶️ Marco stability and long-term efficiency of Node than I do of PHP.

⏹️ ▶️ Casey So if you were to write Overcast today, I think the obvious answer

⏹️ ▶️ Casey is you’d probably write it the exact same way you did. But assume that you’re

⏹️ ▶️ Casey maybe a little more comfortable with Node than you are today, but you’re equally impressed by it. What pieces

⏹️ ▶️ Casey of Overcast do you think you would write in Node, if any? Like, for example, the Overcast

⏹️ ▶️ Casey web interface that I would use, it probably stands to reason you would still do that in PHP, would

⏹️ ▶️ Casey you not?

⏹️ ▶️ Marco I’m not sure it would make sense to maintain large portions of the app in two different languages.

⏹️ ▶️ Marco I think that would just be kind of a deployment nightmare. Generally, I’d like to do things all in one language.

⏹️ ▶️ Marco As I said, I don’t like JavaScript enough and its weird object system enough,

⏹️ ▶️ Marco and I don’t like Node’s lack of blocking calls in many ways

⏹️ ▶️ Marco to do a lot of common web app-type tasks. Honestly, I probably wouldn’t pick either of them if I had to pick just

⏹️ ▶️ Marco one language for the whole project. Or the reality is, if I was writing Overcast

⏹️ ▶️ Marco from scratch today, I would probably write it with CloudKit and just not even have servers. I can be

⏹️ ▶️ Marco honest. I mean, that like, I’ve thought about to like, do I really need to still maintain the servers

⏹️ ▶️ Marco for much like, could I move all of the user data to CloudKit, and then just

⏹️ ▶️ Marco have the servers doing feed crawling and had to be publicly available to all the app installations? I could do that.

⏹️ ▶️ Marco Right now, there’s not a lot of reason to do that. But like, if I was writing, if I was writing it from scratch today, and I didn’t already

⏹️ ▶️ Marco have all the server stuff in place and written, I would probably do it that way instead. That’s interesting.

⏹️ ▶️ Marco And if I was going to learn a brand new language to write a whole

⏹️ ▶️ Marco to replace PHP as my main web language of something I was going to use for the next 15 years,

⏹️ ▶️ Marco hopefully not, but something I was going to use for the next long time in my web development career.

⏹️ ▶️ Marco I’m not entirely sure I would pick either of them for that either. Like, I think,

⏹️ ▶️ Marco again, like, I love the whole event-driven model a lot. I don’t love

⏹️ ▶️ Marco JavaScript or some parts of Node enough. And again, I’ve been using

⏹️ ▶️ Marco it for a few days, so this opinion could change. But Go is

⏹️ ▶️ Marco very interesting to me. I don’t know enough about it to know whether it would be substantially

⏹️ ▶️ Marco better in this regard. I like the idea of Go being kind of this

⏹️ ▶️ Marco almost C-level language and being very, very fast and very efficient. I like that a

⏹️ ▶️ Marco lot. I kind of wish Swift could be that language and there could be a server. So

⏹️ ▶️ Marco that way I could kind of consolidate my language expertise for the next generation and just have this one language I can

⏹️ ▶️ Marco really deeply master and have it be available in both places. I would love that. But right now Swift

⏹️ ▶️ Marco can’t reasonably be a web language because there is no open tools for it and everything. So maybe

⏹️ ▶️ Marco in the future, I don’t know, we’ll see. Maybe Node can carry me over until you can run Swift on the server if that can ever happen. But

⏹️ ▶️ Marco I wouldn’t count on that happening anytime soon.

⏹️ ▶️ Casey And that’s reasonable. I was just curious. And, you know, it’s, I think that node is really

⏹️ ▶️ Casey good at, um, doing proof of concepts, it’s really good at, you know, event driven stuff, which

⏹️ ▶️ Casey is exactly what you’re talking about using it for. You can definitely get into callback hell and it,

⏹️ ▶️ Casey it can get really ugly really quickly. So I, even as someone who. Really likes

⏹️ ▶️ Casey node. I completely concur with pretty much everything you just said. So yeah, that makes a lot of sense,

⏹️ ▶️ Casey but I am genuinely very proud of you for trying something new. And it’s as self-serving as it may

⏹️ ▶️ Casey have been. You typically are not too enthusiastic about getting

⏹️ ▶️ Casey outside the PHP comfort zone. So kudos to you, my

⏹️ ▶️ Casey, Marco friend.

⏹️ ▶️ Marco You can say it. I never do it. I never leave my comfort zone. You can say it. That’s that’s correct.

⏹️ ▶️ Casey And so kudos to

⏹️ ▶️ Casey, Marco you,

⏹️ ▶️ Casey my friend, for trying something new. Thank you. All right. Why don’t you

⏹️ ▶️ Marco tell us about something else? That’s awesome. Um, let me tell you about automatic. Automatic is your smart driving assistant

⏹️ ▶️ Marco on your smartphone. You may remember automatic from last week show where they sponsored us then to, and I’m going to

⏹️ ▶️ Marco tell you about them again because they’re just that good. Go to automatic.com slash ATP. That’s

⏹️ ▶️ Marco spelled the usual way, automatic.com slash ATP. Automatic monitors how you

⏹️ ▶️ Marco drive, so you can monitor your fuel economy, read check engine error codes, automatically signal for help in a crash,

⏹️ ▶️ Marco and more. But the best part is that this intelligently monitors how you drive to tell

⏹️ ▶️ Marco you how to optimize your fuel economy. This gives you all the data you need to track your costs and efficiency every week,

⏹️ ▶️ Marco and and it can give you tips on small changes you can make to save a lot of money in the long run. Automatic can even make

⏹️ ▶️ Marco subtle audio cues when you drive inefficiently to help guide you towards better habits or to reach the goals

⏹️ ▶️ Marco you’ve set for your economy. If you accelerate too hard, if you really slam

⏹️ ▶️ Marco it or you brake too hard, it can beep if you want it to and it can kind of guide you towards these better habits

⏹️ ▶️ Marco and be like, you know, I was trying to keep this level of average gas mileage or I was trying to keep my fuel cost to below

⏹️ ▶️ Marco X dollars a month. And if you’re not reaching those goals with the way you’re driving, you can have it gently remind you, if you want

⏹️ ▶️ Marco to, again this is all optional, you can have it gently remind you to guide you towards the goal. Automatic can help you save

⏹️ ▶️ Marco hundreds of dollars on gas, it can diagnose your check engine light code so you don’t have to go necessarily immediately

⏹️ ▶️ Marco to get your car serviced if it’s a really minor error. And also the getting help

⏹️ ▶️ Marco in a serious crash thing, this is pretty cool. So this, you know, if you’re in a crash, God forbid, if you’re in a crash,

⏹️ ▶️ Marco it can use your phone, because it communicates with your phone over Bluetooth, it can use your phone to call

⏹️ ▶️ Marco for help automatically because of course the name is automatic so it would be weird if it wasn’t automatic.

⏹️ ▶️ Marco Automatically ready for help in a crash and this could I mean no joke this could save somebody’s life this you know this is a big

⏹️ ▶️ Marco deal. Anyway there’s even you know less serious things there’s like a parking locator that automatically

⏹️ ▶️ Marco remembers where you park great stuff like this. The app supports both iPhone and

⏹️ ▶️ Marco Android and there’s no monthly fees to use it there’s no monthly service charge

⏹️ ▶️ Marco all you have to do is buy the the automatic, I don’t know, what do you call these things? Dongles? Plugins? Yeah,

⏹️ ▶️ Marco dongle. Buy the automatic dongle up front. Normally, it was $100. Now,

⏹️ ▶️ Marco they’re running a holiday promotion that brings it down to $80, but even better than that, they’re running a promotion for

⏹️ ▶️ Marco ATP listeners. It’s just $60. So go to automatic.com slash

⏹️ ▶️ Marco ATP. This is a special limited time offer. Automatic.com slash ATP.

⏹️ ▶️ Marco Just $60, you can get this thing. No monthly fees after that. It’s literally just 60 bucks

⏹️ ▶️ Marco one time forever. And there’s free shipping ships in two business days 45 day

⏹️ ▶️ Marco return policy. So there’s no risk here. It’s fantastic. automatic.com slash

⏹️ ▶️ Marco ATP, your smart driving assistant on your smartphone. Thanks a lot to automatic.com.

⏹️ ▶️ Casey All right, so this episode will be coming out during Christmas week.

⏹️ ▶️ Casey And a lot of people are traveling home during that time. So, John, what do you recommend

⏹️ ▶️ Casey people do if you’re of a particularly nerdy and technical, technological bent

⏹️ ▶️ Casey for your family who may not be quite so nerdy?

⏹️ ▶️ John I think this is a question that comes up for, uh, tech nerds all the time, visiting for the holidays

⏹️ ▶️ John or any time, uh, when you visit relatives or friends, even mostly

⏹️ ▶️ John relatives, uh, who are less technically savvy than you, sometimes there’s an expectation,

⏹️ ▶️ John uh, formal or informal that you’re going to help them with whatever problems they’re having,

⏹️ ▶️ John because you have to understand that the the life of someone who is not tech savvy, but who, but

⏹️ ▶️ John who is also a tech enthusiast. I think we know each know some of those people who are interested

⏹️ ▶️ John in gadgets, but aren’t really that interested enough to like learn a lot about them. So they’ll

⏹️ ▶️ John have a bunch of gadgets. Maybe they have an iPad, maybe they have a smartphone, they have a computer, you know, TV, whatever they’re

⏹️ ▶️ John interested in all these things. And when they have problems, they, you know, like, I can’t quite figure

⏹️ ▶️ John out why it’s not working. Maybe they spend some time in tech support. Maybe that solves it. Maybe it doesn’t. But they can tend to suffer in silence

⏹️ ▶️ John until a tech savvy friend or relative shows up. And then it’s like, depending on what the relationship is between

⏹️ ▶️ John these people. Oh, maybe you can help me with this thing. And the formal version is just like

⏹️ ▶️ John parents who will say, you just build up a big queue of broken things in their house. And like, well, next time you visit,

⏹️ ▶️ John here’s the things you’re going to do. You’re going to fix this for me, fix that for me. Look at that. Tell me why this is doing that.

⏹️ ▶️ John Some people like that responsibility. Some people don’t like it. I think it’s, you know,

⏹️ ▶️ John it’s kind of our duty as tech nerds to help those in need. And obviously we can’t help

⏹️ ▶️ John everybody. But if it’s like your family, especially your immediate family, it’s definitely something you should do. So

⏹️ ▶️ John this topic is say you’re going to a friend or relative’s house and there is some expectation

⏹️ ▶️ John that you’re going to help them with stuff, you know, like that, like they actually want this from you. What

⏹️ ▶️ John things should or shouldn’t you do sort of on your own as part of your work in there? Like they say, I’m

⏹️ ▶️ John having problems with my computer. It’s slow or I can’t get something to work or whatever.

⏹️ ▶️ John You know, what should you do? What should you look for in their house? Potential problem areas. Again, you talk to these people, you get their permission,

⏹️ ▶️ John you tell them what you’re doing. You’re not going to screw with their stuff without their permission. This is the assumption that they want you to help them. And then

⏹️ ▶️ John you could offer other services. And I’ll start off with the one that I talked about last year, which I still think is a good idea.

⏹️ ▶️ John There’s a blog post about it back when I used to write a blog called Fill Your TV. This is about high division

⏹️ ▶️ John television sets, most of which are configured out of the box not to show the full 1080p or 720p

⏹️ ▶️ John picture. They’re configured to cut off the top, bottom, right and left

⏹️ ▶️ John edges by a certain amount. So you are buying HD television and then they’re zooming the picture

⏹️ ▶️ John and cutting off parts of the picture and effectively running, you know, in slightly zoomed, uh, you call it non

⏹️ ▶️ John native resolution, but that’s not quite accurate for plasma and stuff. Anyway, that’s bad. And these days,

⏹️ ▶️ John almost all shows and all appliances that you buy, at the very least,

⏹️ ▶️ John have some expectation that maybe this person isn’t running their TV in

⏹️ ▶️ John a screwed up mode. To give you an example, PlayStation 4 I just got, when you first launch the

⏹️ ▶️ John applications or when you first launch certain things in games, it will prompt you to say,

⏹️ ▶️ John push this button on your controller to adjust the size of the visible image of your screen. It starts out with

⏹️ ▶️ John it shows like a rectangle that did not fill my TV screen, of course, because my television is configured

⏹️ ▶️ John to show the actual signal and not cut off the things. And you basically hold down the joystick or the D-pad, I forget which one it is,

⏹️ ▶️ John and it zooms this thing out until the rectangle actually fills your entire TV screen. And I had to do that twice,

⏹️ ▶️ John once for applications and once for game UI or something like that, maybe once for video or whatever.

⏹️ ▶️ John That’s what you want. So this setting, this goes into this blog post. Most televisions have a setting in the

⏹️ ▶️ John television itself that says, uh, how do you want me to display the signal I’m getting? And like I said,

⏹️ ▶️ John the default is, Oh, make it a little bit bigger and cut off all the edges. You don’t want that default. You have to

⏹️ ▶️ John find your way to whatever setting. Sometimes it’s like size number one, size number two. Sometimes it’s called zoom.

⏹️ ▶️ John Sometimes it’s called overscan support on off. Like you have to Google for it.

⏹️ ▶️ John Most almost all televisions have a way to find this setting and to change, you know, disable

⏹️ ▶️ John the zooming. So it displays natively. This is a feature you can usually sell to people when

⏹️ ▶️ John you visit. If you’re visiting a relative, you say, hey, can I just adjust the size on your television so you can see more

⏹️ ▶️ John of the picture? And it’s great if it’s great if you’re showing a program

⏹️ ▶️ John like maybe a football game or something where these days the football things will get closer to the edges. They won’t go all

⏹️ ▶️ John the way to the edge because then it would be cut off and everybody’s TV. But if you can show them, hey, there’s a little part of this play that was

⏹️ ▶️ John broadcast, but the you are not seeing like if it’s if it’s instant replay and there, you know, you can pause it during instant replay.

⏹️ ▶️ John And you can say, if you want to see an extra inch on the right edge of the screen where you’re wondering what’s happening over there,

⏹️ ▶️ John you know, I think you can sell this feature to people. Uh, and there usually aren’t any harmful effects.

⏹️ ▶️ John And it used to be more, more of the case with like analog cable and stuff like that, where you might get noise in the fringes,

⏹️ ▶️ John uh, that doesn’t happen as much these days with a digital HDTV. So that’s my suggestion for one of

⏹️ ▶️ John the things you should suggest. Read this blog post, uh, internalize it, explain

⏹️ ▶️ John it to your relatives, offer to make this adjustment. This is a one time adjustment. I never need to change it again. You do it once and you’ve

⏹️ ▶️ John essentially, quote unquote, fix their television set.

⏹️ ▶️ Casey Yeah, I don’t have any go to impressive,

⏹️ ▶️ Casey let me show you a whole new world sort of recommendation. And in fact,

⏹️ ▶️ Casey so my family is split not only in terms of in-laws versus my

⏹️ ▶️ Casey actual family, but split in terms of Apple users and non-Apple

⏹️ ▶️ Casey users. So most of my family uses Apple products. Most

⏹️ ▶️ Casey of Aaron’s family uses not Apple products. They mostly have PCs,

⏹️ ▶️ Casey mostly have Android phones. And it’s gotten to the point that

⏹️ ▶️ Casey even though Aaron’s family is local, and even though I do something that

⏹️ ▶️ Casey they think of as basically tech support for a living, I will not fix any of their

⏹️ ▶️ Casey computer issues because I’m tired of dealing with Windows problems. I’ve told them a thousand times, if you really

⏹️ ▶️ Casey don’t want to have these problems, just get a Mac and they always snicker and say, no, it’s too expensive.

⏹️ ▶️ Casey And so it’s gotten to the point that I’ve told them, I will not fix your problems until you buy a Mac. And yes, that’s

⏹️ ▶️ Casey obnoxious and no, that’s not very helpful, but sure enough, I don’t get

⏹️ ▶️ Casey bothered by all of their stupid windows issues. So if you’re a jerk like

⏹️ ▶️ Casey me, that’s the approach I would recommend.

⏹️ ▶️ John jerky version of my I’m just looking at my fill your TV post. The jerky version of this is you’re suggested and don’t tell them.

⏹️ ▶️ John Which

⏹️ ▶️ John, Casey is

⏹️ ▶️ John implied by the last paragraph of my blog post is like, just make the adjustment for your own peace of mind.

⏹️ ▶️ John And they probably won’t notice it all, but you’ll just feel better about it. The nice thing to do is to talk

⏹️ ▶️ John to them about it. If their eyes glaze over like you just want to get permission to mess with their their things.

⏹️ ▶️ John My other suggestion is like the obvious one, which is it’s usually on my cue for whenever I visit

⏹️ ▶️ John my parents or they visit me, update all their computers to whatever the latest version of everything, which

⏹️ ▶️ John, Marco we think,

⏹️ ▶️ John oh, you don’t want to do that. They’re going to get angry. They know version X don’t update their stuff. Everything will break.

⏹️ ▶️ John If you subscribe to that policy of giving in to people’s sort of

⏹️ ▶️ John conservative notion of like this works for me, just don’t change anything. That will work for a while,

⏹️ ▶️ John but eventually they’re going to be using things that are so incredibly old and the transition from that super old thing

⏹️ ▶️ John to the super new thing is much more painful than a series of small ones. So the policy I take with my family is continual small updates,

⏹️ ▶️ John uh, and leading eventually to replacing their computers every like five years or something reasonable like that.

⏹️ ▶️ John Uh, if that’s viable in your family, I recommend that approach. Uh, you have to know when to stop. Obviously,

⏹️ ▶️ John you know, my dad has like a white Mac book that, you know, we’re not updating that anymore. Like even if their updates

⏹️ ▶️ John are available for it, you just, you have to stop at some point. So like two gigs of Ram or something insane like that. Um, So

⏹️ ▶️ John you have to know when to stop. But during the useful lifetime of like fairly recent hardware, keep the

⏹️ ▶️ John updates going and install the security updates, update their flash for them, because, yes, they need to have flash installed. You know,

⏹️ ▶️ John make sure, you know, check desk, check their desk for HFS plus errors, repair that is do

⏹️ ▶️ John a full backup for them, do a full backup for them before they do anything. I whenever my parents visit, I back up their computers

⏹️ ▶️ John to my sonology, you know, just for peace of mind. And like, well, Bill, recently my mother emailed me and said,

⏹️ ▶️ John I think I deleted my whole iPhone library. Well, good news, I have her entire 40

⏹️ ▶️ John, Casey something gig of

⏹️ ▶️ John, Marco the library sitting

⏹️ ▶️ John in my Synology. I have no way to get it to her until the next time we see each other because I’m not going to try

⏹️ ▶️ John to upload 48 gigs over her insane, terrible cable connection. But

⏹️ ▶️ John sort of like changing the oil, changing all the fluids, swapping out the air filters, checking

⏹️ ▶️ John the tire pressure, the equivalent of that. And my main recommendation is if you’re going to do those type

⏹️ ▶️ John of things, try to make a complete backup of their system before you start doing that stuff.

⏹️ ▶️ John worst worst case scenario and you totally hose their system, which can happen, you can just be like, well, this this visit

⏹️ ▶️ John is a wash. I’m just going to restore you from the backup that I made. The only tricky thing in there is do you do HFS

⏹️ ▶️ John plus repair before or after you do the backup? And that’s a tough choice either way.

⏹️ ▶️ Marco Wait, so what is the right answer? I’m

⏹️ ▶️ John curious. I usually do the backup before because

⏹️ ▶️ John it is possible to make things worse by trying to repair hfs plus corruption, I like to just say

⏹️ ▶️ John this is the state the disk is in, I’m going to try to back it up in this state. If I do the repair after that

⏹️ ▶️ John and it finds tons of errors and it successfully repairs them, you can do a second backup after that

⏹️ ▶️ John and just ditch your first backup. If it tries to do an incremental repair after that and hoses things,

⏹️ ▶️ John at least you can restore from whatever you had before. There’s no perfect answer because there are still situations where the disk could be so hosed that

⏹️ ▶️ John the backup doesn’t catch this entire directory tree because it’s like some kind of corruption and then you can’t

⏹️ ▶️ John get it from backup because you didn’t back it up and trying to repair it also hoses the disk. I mean, what are you going to do? If you have a disk in this

⏹️ ▶️ John situation there’s no move that is safe, like there is no way forward except for maybe Disk Warrior

⏹️ ▶️ John which is the king of I will resurrect this disk from HFS plus corruption. Yeah,

⏹️ ▶️ John tough choices. But if you keep doing that on a regular basis, and especially because people who aren’t

⏹️ ▶️ John like us don’t have literally four million files on their boot disks, they have a smaller number of files

⏹️ ▶️ John and they don’t have as much stuff. So it’s an attractable amount of stuff.

⏹️ ▶️ Casey All right, Marco, do you have any such tips? I know that you’ve talked in the past about how

⏹️ ▶️ Casey going and visiting your mom can be a little challenging in this department. So anything

⏹️ ▶️ Casey you would like to share?

⏹️ ▶️ Marco I don’t really need to ever do anything anymore. Like occasionally she’ll have a problem like, hey, you know,

⏹️ ▶️ Marco by the way, my computer hasn’t been charging for the last two weeks and I’ve just been, you know,

⏹️ ▶️ Marco using it for five minutes a day and hoping it doesn’t die. Can you maybe do him? Yeah, okay. You can tell

⏹️ ▶️ Marco me earlier That’s what I

⏹️ ▶️ John talk about the people who will like silently suffer and limp along with

⏹️ ▶️ John, Marco like yeah

⏹️ ▶️ John Situation like that they like you wouldn’t think that’s acceptable, but it’s like well, so what do you mean? It won’t charge How have you been

⏹️ ▶️ John using I just use it a little bit each day?

⏹️ ▶️ John, Marco Yeah,

⏹️ ▶️ John crazy, but people will do that because they’ll be like I’ll just wait until next time I see Marco.

⏹️ ▶️ Marco Yeah, it’ll probably last Yeah, so there’s stuff like that occasionally, but really it’s it’s pretty rare

⏹️ ▶️ Marco A while ago like she she first learned how to use a computer computer,

⏹️ ▶️ Marco maybe seven or eight years ago, somebody handed her down an old iBook.

⏹️ ▶️ Marco And I mean it was old and in terrible shape even when she got it. Because, you know, she got it from some friend who was

⏹️ ▶️ Marco handing it down and it was pretty worthless even then. And she used it like into the ground. I mean

⏹️ ▶️ Marco it was really, really bad. But she learned how to use it. And so one time

⏹️ ▶️ Marco I was there for Thanksgiving, a few years ago, I think 2011-ish era,

⏹️ ▶️ Marco because I’m thinking what we got her. And we

⏹️ ▶️ Marco decided to just get her a new MacBook Air because it was right after, it was like the 2011 model I think, was that the

⏹️ ▶️ Marco one where the MacBook Air became really good, like the second generation? Anyway, around then. So we just got her a new

⏹️ ▶️ Marco MacBook Air and she’s still using that one and it’s been fine. It’s been awesome. The one thing I would recommend,

⏹️ ▶️ Marco as I said during the ad read and as I said in the past, is install an online backup program. I use Backblaze and

⏹️ ▶️ Marco so that’s what I install. That covers a lot of your Synology restoration. Obviously, it’s not perfect

⏹️ ▶️ Marco and it wouldn’t help you restore 40 gigs faster to her computer necessarily,

⏹️ ▶️ Marco if the problem is her connection. But, I installed Backblaze on my mom’s computer. The entire backup

⏹️ ▶️ Marco set of what she really needs to be backed up was only like 28 gigs or 30 gigs. It

⏹️ ▶️ Marco was not a whole lot, because it’s mostly just photos and a handful of documents and emails.

⏹️ ▶️ Marco It wasn’t a whole lot of data, so yeah, I think it was like 30 gigs. And that’s it.

⏹️ ▶️ John problem with online backups is unless it’s a relative that you’re close enough to that you’re going to pay the bill for them. Trying

⏹️ ▶️ John to convince someone that it’s worth five dollars a month to do a backup is actually surprisingly

⏹️ ▶️ John hard because it’s like, you know, you know who buys batteries again all over again? Like it just seems

⏹️ ▶️ John like something you shouldn’t have to spend money for, even though it is a tiny amount of money and you cannot express to them how important it

⏹️ ▶️ John is to have backups and how there’s such a small amount of money, but you just sound like you’re selling like the extended warranty at Best

⏹️ ▶️ John Buy to them because they’re

⏹️ ▶️ John, Casey inherently

⏹️ ▶️ John suspicious of this. So if it’s your parents, you can just buy it for them and just say, this is a new

⏹️ ▶️ John thing you have now. Don’t worry. Don’t even tell them it costs money. They don’t need to know it costs money. But if it’s

⏹️ ▶️ John a distant cousin or something, maybe you don’t feel like paying their $5 a month bill and then you’re stuck with trying to have

⏹️ ▶️ John that argument. Time machine is even harder because they have to have a second disc. And

⏹️ ▶️ John yeah, backup is still a bit of a challenge. But it’s something you should

⏹️ ▶️ John at least discuss, depending on how it’s like the, what was that thing, Casey? the

⏹️ ▶️ John messaging medium pyramid. What was it called?

⏹️ ▶️ Casey Communication pyramid. It’s I think what we called

⏹️ ▶️ Casey, John it.

⏹️ ▶️ John Communication pyramid, yeah. This is like the technology pyramid. Depending on how

⏹️ ▶️ John close you are to the person, should you talk to them about backups? Should you talk to them about security

⏹️ ▶️ John updates? Should you talk to them about flash? The closer you are, the more sensitive

⏹️ ▶️ John subjects you can bring up.

⏹️ ▶️ Marco Mom,

⏹️ ▶️ John we have to talk. The other thing these days is that I think most, not everyone has a computer

⏹️ ▶️ John that they maintain or care about, but increasing the number of people who have things like smartphones or iPads and stuff like that.

⏹️ ▶️ John And dealing with that, especially when the advent of iOS 8, when my parents visited recently,

⏹️ ▶️ John I updated them to iOS 8 and I had to do it through iTunes because they were at their storage limits or close to them,

⏹️ ▶️ John or thought they were at their storage limits and they really just had a bunch of crap that they could delete and they really weren’t using even half of the space.

⏹️ ▶️ John But anyway, doing those type of updates, either because they’ve been dismissing them

⏹️ ▶️ John and not allowing them to happen because they’ve been nervous or because they think they’re out of space because they’re legitimately out of space,

⏹️ ▶️ John helping people with their big yellow other bar in iTunes so they can’t figure out how to get rid of, you know,

⏹️ ▶️ John updating their apps, looking, look at the apps that are installed in their iOS device. Are they running

⏹️ ▶️ John like a free ad festooned, disgusting iOS app that you know there is a

⏹️ ▶️ John really awesome 99 cent alternative for buy them the 99 cent alternative, you know, like

⏹️ ▶️ John you can at least you know, you’re not getting rid of their other one or whatever. But if you know that there is a better whatever

⏹️ ▶️ John app out there that does this job better, a better free one or a better 99 cent one. Just just, you know, have

⏹️ ▶️ John them enter their password, stuff a dollar bill in their pocket. And, you know, you can you can make their life

⏹️ ▶️ John a lot better that way. And if they don’t like it, I was easy enough. They can still delete the thing you just bought for them and go back

⏹️ ▶️ John to their old terrible ad festoon piece of crap. But I mean,

⏹️ ▶️ John you just because people go to the app store and they don’t know which applications are good or bad and they just do a search

⏹️ ▶️ John and you know what comes up in the search. We’ve talked about this before, just terrible keyword spam,

⏹️ ▶️ John fake applications that I mean, it’s not malware, they’re not viruses, but they’re as close as you can get without actually

⏹️ ▶️ John being a

⏹️ ▶️ John, Marco malware virus. They’re just

⏹️ ▶️ Marco and they’ll only ever use free apps. So they go to that first.

⏹️ ▶️ John, Marco Yeah,

⏹️ ▶️ John right. And they’re just at a front a front to all of your senses, like audio, visual

⏹️ ▶️ John and just performance wise. And yeah, so that is a

⏹️ ▶️ John nice thing you can do for their iOS devices. And iOS devices are just so much more resilient and easy that

⏹️ ▶️ John you can be more free with what you’re doing a because like I said, you can just keep stuffing dollar bills into their pockets as you buy 99

⏹️ ▶️ John cent apps, you don’t have to worry about the money, everything is so cheap. They usually in

⏹️ ▶️ John my experience, most people usually know how to delete an app. If they’ve done it once, like they figure

⏹️ ▶️ John it out, and they’re not afraid of it, they’re just like, Oh, it makes the icon go away. Like visually, it seems simple. So conceptually, they’re they’re comfortable

⏹️ ▶️ John with it, despite you know that it’s under the covers, you know, slightly more complicated than that.

⏹️ ▶️ John So and you can always restore it to me your press purchases are always there. You don’t have to worry about did I buy it in the Mac App Store

⏹️ ▶️ John that are not buying the Mac App Store. So all the advantages of the iOS of the iOS ecosystem mean you can be slightly

⏹️ ▶️ John more aggressive there with your helping hand.

⏹️ ▶️ Casey All right. Why don’t you tell us about one last thing? That’s awesome, Marco.

⏹️ ▶️ Marco I would love to we’re finally sponsored this week by Warby Parker. Warby Parker believes that prescription

⏹️ ▶️ Marco glasses simply should not cost $300 or more. They bypass the traditional channels and sell higher

⏹️ ▶️ Marco quality, better looking prescription eyeglasses online at a fraction of the usual retail prices,

⏹️ ▶️ Marco starting at just $95. Go to warbyparker.com slash atp.

⏹️ ▶️ Marco Warby Parker’s designs are vintage inspired with a contemporary twist. Every pair is custom fit with anti-reflective,

⏹️ ▶️ Marco anti-glare, polycarbonate prescription lenses. And every pair comes with a very nice hard case

⏹️ ▶️ Marco and cleaning cloth, so you don’t need to buy any overpriced accessories. They now offer progressive lenses.

⏹️ ▶️ Marco Is that like the replacement for bifocals?

⏹️ ▶️ John I think that’s what they mean. I’m not quite at the bifocal stage yet, but I’m getting close.

⏹️ ▶️ Marco Progressive lenses have a distance prescription at the top and transition to a reading lens near the bottom. Yeah, it sounds

⏹️ ▶️ Marco like a modern bifocal, but a better version because it’s gradual. Worry Park progressive lenses are digital freeform

⏹️ ▶️ Marco lenses, which is the most advanced progressive technology with higher precision and a larger field of vision than traditional

⏹️ ▶️ Marco progressive lenses. Now, buying glasses online sounds like it would be risky. How would you know, for instance,

⏹️ ▶️ Marco whether they would fit or how they would look on you? Well, Warby Parker’s website has a helpful tool that uses your

⏹️ ▶️ Marco computer’s webcam to give you a preview of how the glasses will look on your face. They can even

⏹️ ▶️ Marco help measure your eyes and face with the webcam thing to help get your fit exactly right.

⏹️ ▶️ Marco In fact, that’s how I don’t wear glasses, but we did this for my wife back when they first sponsored us, and she measured

⏹️ ▶️ Marco with the webcam thing. And the measurements, we then later on got the official measurements from her

⏹️ ▶️ Marco eye doctor, And the ones that WorryParker took were perfect. They were exactly the right measurements.

⏹️ ▶️ Marco Anyway, the best part of all this is their home try-on program. You can borrow up to

⏹️ ▶️ Marco five pairs of glasses risk-free. They ship to you for free. And then you try them on in the

⏹️ ▶️ Marco comfort of your home for five days. Then you can send them back with a prepaid return label. So you’ve paid

⏹️ ▶️ Marco nothing this whole time. They ship them to you for free. You get to keep them for five days. Send them back with a prepaid return label.

⏹️ ▶️ Marco And there’s no obligation to buy after that. So you can get the five frames, try them out for

⏹️ ▶️ Marco five days, send them back, and never buy anything again. They’re confident though that you probably will. That’s why

⏹️ ▶️ Marco they offer this. And I gotta say, this stuff is great. My wife now has, I think, three pairs of their glasses,

⏹️ ▶️ Marco and they’re really good. They also have sunglasses. They have prescription and non-prescription polarized

⏹️ ▶️ Marco sunglasses. Lots of great options there. I love polarized sunglasses. If you have not ever worn polarized

⏹️ ▶️ Marco sunglasses, or if you’ve only worn bad polarized sunglasses, you don’t know what you’re missing. You gotta try it.

⏹️ ▶️ Marco $95 even for good Polaroid sunglasses is a really good price. Anyway,

⏹️ ▶️ Marco go to warbyparker.com slash ATP. Check out their great selection of premium quality affordable

⏹️ ▶️ Marco eyewear. Get a home try-on kit risk-free. Thanks a lot to Warby Parker for sponsoring our show

⏹️ ▶️ Marco once again.

⏹️ ▶️ Casey So I wanted to talk about something really quickly and I wish I could do a really good Italian accent because

⏹️ ▶️ Casey if I could, I would do this entire small segment in an Italian accent. But

⏹️ ▶️ Casey I cannot, so I’ll just do it as me. I’ve been playing with Workflow lately, which is an app for

⏹️ ▶️ Casey iOS that lets you automate stuff. Have either of you guys played with this?

⏹️ ▶️ John I keep hearing about it, and here’s my problem, and maybe you can help me with it. I’m trying

⏹️ ▶️ John to think of things I do with my iOS devices, whether it’s a phone or iPad or whatever,

⏹️ ▶️ John that are repetitive and tedious that I could automate. And I’m having trouble coming

⏹️ ▶️ John up with one. I’m sure they’re there, but either I have blind spots for them or I’ve trained

⏹️ ▶️ John myself not to do even remotely complicated things with my iOS devices because it’s too tedious.

⏹️ ▶️ John So I’m still working on it, but I haven’t even downloaded the app. But as soon as I can think of one, I will download it because I want to try it out.

⏹️ ▶️ Marco Can I have it automatically delete on my support email?

⏹️ ▶️ Casey I don’t think so, but I like where your head’s at. So

⏹️ ▶️ Casey the reason I didn’t download it for a long time, even after Federico Vaticci said a thousand times that it was amazing.

⏹️ ▶️ Casey And, and I, it is his influence that makes me wish that

⏹️ ▶️ Casey I could do this entire segment in an Italian accent. But anyway. We would love to hear you

⏹️ ▶️ Marco attempt

⏹️ ▶️ Casey it.

⏹️ ▶️ Casey, Marco No, it’s not happening.

⏹️ ▶️ Casey The thing is that I wanted to download it just to see what the hubbub was about. And when I downloaded

⏹️ ▶️ Casey it, I completely agree with you, John. I didn’t really know what I was going to do with this.

⏹️ ▶️ Casey I started fiddling and just kind of seeing what I could do. And I ended up trying to think

⏹️ ▶️ Casey of, well, what do I do a lot on my iOS device that is kind of a pain?

⏹️ ▶️ Casey What I came up with was I like to download all the copies of ATP

⏹️ ▶️ Casey and analog that have ever been posted. So if for some reason the internet disappeared tomorrow,

⏹️ ▶️ Casey I would still have a copy of all of these. And I have them on my Synology. Yes, it’s a little bit weird.

⏹️ ▶️ Casey Yes, it’s a little crazy, but just bear with me. And granted, all I’m really talking

⏹️ ▶️ Casey about is going to either of these pages, you know, the analog show page

⏹️ ▶️ Casey or the ATP show page and copying the link that’s on that page. But it was a

⏹️ ▶️ Casey really good example of, hmm, how could I do this using workflow?

⏹️ ▶️ Casey And what I ended up doing was writing two very different workflows to do exactly that.

⏹️ ▶️ Casey So I can jump into workflow and I have a download the latest ATP workflow and I

⏹️ ▶️ Casey can run it and what it does is it goes to the RSS feed gets the most

⏹️ ▶️ Casey recent item figures out what episode number it is. And then because Marco is

⏹️ ▶️ Casey a gentleman and he uses extremely consistent file names for

⏹️ ▶️ Casey every single episode. All I need to do is figure out what number it is, and I build a URL

⏹️ ▶️ Casey out of that, and then I can open it in the Synology DS download

⏹️ ▶️ Casey app, or maybe it’s DS file, it doesn’t matter, one of the Synology apps, and it will download

⏹️ ▶️ Casey it for me. Stupid? Yes. Pretty simple? Yes. Freaking

⏹️ ▶️ Casey cool that you can do that with an iOS device?

⏹️ ▶️ Casey, Marco Yes.

⏹️ ▶️ Casey And so that’s a great example.

⏹️ ▶️ Marco So would you say you’ve been using Workflow for a few days now and you really like it? I would say

⏹️ ▶️ Casey that

⏹️ ▶️ John I like the idea that you can make your own extensions. Yes. People talk about you can make a little icon up here and one of the little

⏹️ ▶️ John sheet type things, because that’s when I was trying to think of things I do that are annoying and repetitive. It’s usually because like I’m in

⏹️ ▶️ John one application and I want to do something, but some piece of information is in some other applications. I got to go back and forth

⏹️ ▶️ John or, you know, like and it’s like, well, in Iowa, say it or a lot of these applications. Now I can

⏹️ ▶️ John bring up that little sheet with a little set of icons. And if I could put an icon there, that would instead of, you know, send in to

⏹️ ▶️ John paper, for example, which is great, that’s everywhere now. I could also, you know, run this workflow on this thing

⏹️ ▶️ John that I’ve selected type of thing. So I’m looking for something like that. Like your, your case where you’re downloading the things, that’s a thing

⏹️ ▶️ John that you can do with workflow, but I wouldn’t do that all server side. I wouldn’t, you know,

⏹️ ▶️ John, Casey your iOS device doesn’t need to be involved in that

⏹️ ▶️ John process at all, except that you just wanted to do, you just wanted to try, try out workflow app. It’s a good thing to play around with

⏹️ ▶️ John it, but like, why is the iOS device involved in that process at

⏹️ ▶️ John, Casey all?

⏹️ ▶️ Casey And that’s a fair point. So let me give you a more concrete example that I think you might be interested in

⏹️ ▶️ Casey is I made one to generate affiliate links for Amazon. So if I’m on Amazon

⏹️ ▶️ Casey and I want to post about something or maybe I just want to send a link to somebody and hope

⏹️ ▶️ Casey I get a small kickback, I have one of the extension style workflows

⏹️ ▶️ Casey that will look at the current URL in Safari because I’m going to run it from Safari

⏹️ ▶️ Casey and it will generate an Amazon affiliate link based on that URL. And

⏹️ ▶️ Casey so it’s like two taps in order to generate an affiliate link. Now, what I’m

⏹️ ▶️ Casey not mentioning is I had a JavaScript bookmarklet that did the same thing. But at least the workflow

⏹️ ▶️ Casey one automatically copies it to my clipboard, rather than me having to do the whole hover and select, or

⏹️ ▶️ Casey the tap and hold and select all and copy dance. And that’s really nice.

⏹️ ▶️ Casey The one thing, though, that I should make clear about what you were talking about, John, is that

⏹️ ▶️ Casey when you have an extension, basically there is only one icon. That is,

⏹️ ▶️ Casey run a workflow. And then you tap that icon in the extension sheet or whatever it

⏹️ ▶️ Casey is. And then workflow pops up and says, OK, of all of the workflows that you have,

⏹️ ▶️ Casey these are the workflows that you’ve specified as extension workflows. So

⏹️ ▶️ Casey the ATP workflow, for example, the analog workflow are not extension workflows. So I don’t see those

⏹️ ▶️ Casey as options. However, the Amazon one is. And so I do see that as an option.

⏹️ ▶️ John That makes sense. But I had it in my head that you could actually put your own icons there. I’m like, how are they getting away with that? I guess the

⏹️ ▶️ John answer is they’re not.

⏹️ ▶️ Casey Right. Now, you can do that with home screen icons. And

⏹️ ▶️ Casey I will say that I thought it was really neat. And I’m probably going to butcher the technical details. But it was something along the lines of

⏹️ ▶️ Casey when you go to create that home screen icon, what it does is it gives you a URL

⏹️ ▶️ Casey with a whole bunch of HTML in a data blob, like you can do in CSS

⏹️ ▶️ Casey to put an image actually within CSS. It was like, you know, it, uh,

⏹️ ▶️ Casey base 64 encoded binary data or something like that, which I thought was kind of neat. But, um, anyway,

⏹️ ▶️ Casey I don’t really have a particular angle here to be honest with you, other than to say, it’s really,

⏹️ ▶️ Casey really cool that you can do this on iOS. And I’ve actually really enjoyed the technical

⏹️ ▶️ Casey challenge of doing something that would probably take me five lines of code in any given programming

⏹️ ▶️ Casey language. It doesn’t matter which one you’re talking about, but doing it with the limited tools

⏹️ ▶️ Casey that workflow gives you. And to be fair, I mean, the tools that workflow gives you is, um,

⏹️ ▶️ Casey are impressive for sure, but they’re still very limited, you know, I think the most

⏹️ ▶️ Casey basically you have a for each block and an if block, and that’s about as complex as it gets

⏹️ ▶️ Casey in terms of control structures, but just being challenging myself to figure out ways

⏹️ ▶️ Casey to do this with these primitive tools, I’ve actually really enjoyed

⏹️ ▶️ Casey it almost like a game. But yeah, I don’t know if it’s, it’s probably one of

⏹️ ▶️ Casey those things where I now have a hammer, so everything looks like a nail, but it’s been fun

⏹️ ▶️ Casey and I definitely encourage everyone to try it out. It’s a really cool app.

⏹️ ▶️ Marco Thanks a lot to our three sponsors this week, Backblaze, Automatic, and Warby Parker, and we will

⏹️ ▶️ Marco see you next week.

⏹️ ▶️ John Now the show is

⏹️ ▶️ Casey over. They didn’t even mean to begin because it was accidental.

⏹️ ▶️ Casey Accidental. Oh, it was accidental. Accidental. John didn’t do any research.

⏹️ ▶️ Casey Marco and Casey wouldn’t let him. Cause it was accidental. Accidental.

⏹️ ▶️ Casey Oh, it was accidental. Accidental. And you can find the show notes at ATP.FM.

⏹️ ▶️ John And if you’re into Twitter, you can follow them at

⏹️ ▶️ John C-A-S-E-Y-L-I-S-S.

⏹️ ▶️ Casey So that’s Casey lis and a rco a rm anti

⏹️ ▶️ Casey Marco Armin SIR AC USA Syracuse

⏹️ ▶️ John a little tiny bit of real-time follow-up from Slade 401 in the chat room that we should have talked about in the

⏹️ ▶️ John People suffering in silence one more thing to add to the list Slade says today I found out that my

⏹️ ▶️ John mother’s white MacBook battery has been bulging for a month without God oh So I add

⏹️ ▶️ John this to the list do do the thing that you do like in driver ed where you walk around the car

⏹️ ▶️ John, Marco Like there

⏹️ ▶️ John is no, you know metal sticking out of the wheels that everything is Okay that there’s no small children

⏹️ ▶️ John or cats under the wheels that you’re going to run over. Like, check the hardware. Is the battery bulging? Like,

⏹️ ▶️ John is there you know, is there water on the keyboard? Does it look like, you know, just give the thing and my parents,

⏹️ ▶️ John because I don’t understand why they can’t keep their laptops clean, but they are filthy. So I clean them, you know, clean the

⏹️ ▶️ John thing from top to bottom, scrub off all this stuff, like check the hardware, check for hardware problems and check for hardware

⏹️ ▶️ John condition. And the second thing that that just came to mind when Casey was talking about

⏹️ ▶️ John the programming thing. What was it, with workflows of being able to do programmery type stuff?

⏹️ ▶️ John This is vaguely tangentially related. There’s an iOS app called Hopscotch that I’ve had

⏹️ ▶️ John on my kid’s iPad for a long time. It’s supposed to be like a teach kids programming

⏹️ ▶️ John type of thing, and they haven’t been into it. I’m like, fine, I’ll just let it sit there. And I launched it recently to try to

⏹️ ▶️ John show my son, who I think maybe he’d be interested in it, whatever. And I was trying to show him something.

⏹️ ▶️ John let me launch this, you know, my first little programming thing. It’s got a little, you can drag out a little loop block and you can drag

⏹️ ▶️ John out a little action thing and you can make variables and the variables will become little draggable things. And you know, like

⏹️ ▶️ John it’s supposed to be really nice. It starts off with like these little sprites of like a little monster. And then, you know, it could say when I hit the play

⏹️ ▶️ John button, the monster should, and you could say like move to X, Y coordinate or, or whatever, save something

⏹️ ▶️ John in a variable. So I tried to make the simplest possible program you could make, which is I

⏹️ ▶️ John wanted to have two monsters chase each other around the screen. Uh, And in

⏹️ ▶️ John the one sitting that I had with this for five minutes, I could not for the life of me figure out how to do this. I’m pretty sure hopscotch

⏹️ ▶️ John is not Turing complete because it doesn’t have a conditional. It has a loop, but it doesn’t have

⏹️ ▶️ John a conditional. And you need if and while I don’t think it’s even freaking Turing complete. You could not I could not get their

⏹️ ▶️ John position and save them into variables. I could not I couldn’t I couldn’t do math as far. I mean, I’m not saying

⏹️ ▶️ John the program doesn’t do this. I’m saying I could not as an actual programmer with like 20 years experience, figure out how to do

⏹️ ▶️ John math on the XY coordinates to say move

⏹️ ▶️ John, Marco toward

⏹️ ▶️ Marco notification center

⏹️ ▶️ John to move towards the right is no calculations or to make one character move towards another

⏹️ ▶️ John right. I can make them chase each other, but they would only they would warp to their positions like I had. I had

⏹️ ▶️ John them sort of chasing, but I couldn’t make it move smoothly because I needed to like, you know, draw a line between where they

⏹️ ▶️ John are now and their destination and move along that line in an increment. So they move smoothly. The best I could do

⏹️ ▶️ John was make them chase each other by sort of like teleporting around the board, you know, like they’re warping.

⏹️ ▶️ John And then I said, you know what, I can’t recommend this. I was talking with my children, like, you know what, screw this program.

⏹️ ▶️ John I’m sorry, the hopscotch people, if conditionals are in there, and I couldn’t figure it out, maybe it’s like a mental block

⏹️ ▶️ John where actual programmers should never use this program. But that was super disappointing.

⏹️ ▶️ Casey Yeah, I’ve never, I’ve never tried that.

⏹️ ▶️ John You should download it. I think it’s free. You should download it anyway, and just try it to see like, can you use a

⏹️ ▶️ John, Casey kid’s programming program to do

⏹️ ▶️ John anything useful? And I failed. I could do it.

⏹️ ▶️ Marco Nice. I would also add, did we mention to the parent tech checklist thing, did we mention

⏹️ ▶️ Marco iCloud backups for on-device photos?

⏹️ ▶️ John That’s a good idea to see what the deal, I mean that falls into the category of backups, but yeah, see what the deal is with their

⏹️ ▶️ John pictures.

⏹️ ▶️ Marco Right, because like don’t assume that your family members ever actually sync their phone to their computer.

⏹️ ▶️ Marco Set up iCloud backup on their device because I’ve known so many friends and family members

⏹️ ▶️ Marco who have lost photos of their kids and stuff because they like lost a phone or a phone broke

⏹️ ▶️ Marco and it was never backed up anywhere. It was never synced to anything. It was never backed up to iCloud. A lot of times this preceded

⏹️ ▶️ Marco iCloud backup being a thing. But really, I mean, that’s an easy one because,

⏹️ ▶️ Marco you know, they can probably get away with the free plan. So that’s an easy one. Like make sure their devices are configured for iCloud

⏹️ ▶️ Marco photo backup. That is a really

⏹️ ▶️ Casey good call.

⏹️ ▶️ John Yeah. Another topic related to a follow up thing. of you had put into the

⏹️ ▶️ John follow up about when we were talking about the spaces in the Google authenticator thing. And so I was like, did we

⏹️ ▶️ John mention that you can copy and paste those numbers? And in last week’s show, that came up, I

⏹️ ▶️ John was talking about having to remember the numbers to transcribe them, which is what I would have to do with that without a copy and paste

⏹️ ▶️ John utility when I’m going between Mac and you know, some other device and my my phone.

⏹️ ▶️ John But when you’re on the iOS device, you can just you know, hold down the thing and copy and paste the thing which I’d forgotten. And so that

⏹️ ▶️ John happened in the show. like I think it was maybe like a minute or half a minute after we discussed that. I

⏹️ ▶️ John relayed that information. So at one point I said, oh, I had to remember the numbers and it was a pain and blah, blah, blah. And then I said, oh, someone in the

⏹️ ▶️ John chat room has just reminded me that you can just copy and paste them for doing it on iOS. Right. The show was out, came

⏹️ ▶️ John out yesterday sometime or was it Thursday? Yesterday, I think. And now I’m just watching

⏹️ ▶️ John the litany of tweets of people telling me, did you know you can copy and paste the numbers into Google Authenticator? Hey, did you know you can just

⏹️ ▶️ John copy them? Hey, dummy, you can copy and paste the numbers in Google Authenticator, right? And every time this happens,

⏹️ ▶️ John I am just so there’s two things here. One, I’m surprised at how many people tweet like in real time.

⏹️ ▶️ John And I know that I know the temptation. I listen to Roderick on the line all the time. And I say, do not

⏹️ ▶️ John tweet anything at them. Wait until you hear the whole show, because you have no idea if they’re going to get to this. You know, I know it’s difficult, but wait

⏹️ ▶️ John for the next hour. Hear the whole show. Then send your snarky tweet because you don’t know.

⏹️ ▶️ John, Marco Right.

⏹️ ▶️ Marco I should put this in as an overcast feature of delayed tweeting.

⏹️ ▶️ John Yeah. Like I mean, you can take it back. Right. So so here’s the thing with that. So I see these tweets, right?

⏹️ ▶️ John Now I’m faced with this decision. Do I send a reply to the tweet that says,

⏹️ ▶️ John just keep listening to the show because I’m a Twitter completionist? I haven’t yet seen the

⏹️ ▶️ John three tweets from now. They’re going to say, oh, I guess you just said that on the show. Sorry. So then I would be replying

⏹️ ▶️ John to their tweet before they before they get. And here’s where I think I came down. I said, I’ve been thinking

⏹️ ▶️ John about it for a while. I think it’s OK. I’m gonna I’m gonna say that

⏹️ ▶️ John it’s okay for me to send that tweet, even though seven tweets up that could be saying that, because Twitter

⏹️ ▶️ John is much more real time than a recorded podcast. Like we’re talking, I’m, you know, I’m only like

⏹️ ▶️ John five minutes from maybe I’m actually literally in real time, like I’m just maybe,

⏹️ ▶️ John as I’m typing the tweet there, you know, thing comes in, because they’re listening in real time, while they’re tweeting to is obvious, they’re not there,

⏹️ ▶️ John pause the program or didn’t pause it as soon as they heard it, they sent the tweet, right? I think

⏹️ ▶️ John that is a real-time medium. It’s a reasonable expectation for me to be able to reply to them.

⏹️ ▶️ John Just because I’m not completely caught up in this five tweets above my timeline, I think it’s okay to reply to that one. Whereas,

⏹️ ▶️ John if you are listening to a thing that was recorded two days ago that’s an hour long, that time

⏹️ ▶️ John gap is too big and you should wait for the program to be complete. Most of the time, I don’t send a reply. I

⏹️ ▶️ John just wait and scroll up and then see if they—I assume they feel an appropriate out of shame when 30 seconds

⏹️ ▶️ John later on the podcast we describe this. But I think it’s two different things there. If I’m super far

⏹️ ▶️ John behind, if I’m catching up from a day, then I should probably hold off until I’m caught up. But the problem with that is my

⏹️ ▶️ John Twitter client doesn’t have a good way to sort of, oh, remember, you’re supposed to reply to this tweet from five

⏹️ ▶️ John hours ago later. Like it doesn’t have a good sort of drafts bin where I can say when I catch up, yes, this tweet is still legitimate,

⏹️ ▶️ John I’ll send it or whatever. Anyway, the moral of the story is the only thing I can say unambiguously is If

⏹️ ▶️ John you are listening to a recorded but not live, an actual prerecorded podcast, wait until you’re

⏹️ ▶️ John done listening to the podcast to send snarky tweets or email to the people because you don’t know what they might

⏹️ ▶️ John have talked about later in the show.

⏹️ ▶️ Casey I am so guilty of doing this. And I agree with you. Nothing you said is wrong, but

⏹️ ▶️ Casey I do this all the time. Like poor Faith and Jason, especially. I feel like they get it the worst. And

⏹️ ▶️ Casey luckily for them, I am really behind on IRL talks. So well, maybe that’s unlucky,

⏹️ ▶️ Casey actually, because I’ve forgotten when they tweet about something relevant to that week’s episode. But

⏹️ ▶️ Casey I do this all the time, and I need to not do

⏹️ ▶️ John it. I think it’s OK if you’re listening to an old episode. Like, if you are three episodes behind and you complete

⏹️ ▶️ John an episode, as long as you say in the tweet, I’m not caught up yet, but I just listened to episode

⏹️ ▶️ John whatever whatever, and so on and so forth. Because that shows them that you listened to a whole

⏹️ ▶️ John episode. You’re not replying in real time. You’re admitting you’re not caught up, so there’s a possibility that this was talked about later. but you really

⏹️ ▶️ John feel like you really, really need to get this out of your system. Like, that’s probably the only way you can do that. But

⏹️ ▶️ John I still feel like that’s different than in the middle of the show, especially if the correction comes like a couple of seconds later,

⏹️ ▶️ John a minute later. Oh, hey, someone sent me a link to something in the URL. It says, hopscotch

⏹️ ▶️ John is now Turing complete. So I guess it wasn’t. I just don’t understand how

⏹️ ▶️ John, Marco you can have

⏹️ ▶️ John a programming thing. I mean, it could have been like Turing complete in the same way that C++ templates are

⏹️ ▶️ John Turing complete, not intentionally

⏹️ ▶️ John, Marco so but

⏹️ ▶️ John like or send them out send mail is starting complete but we’ve added conditional statements

⏹️ ▶️ John good job guys i mean presumably hopscotch is written by programmers i know that’s kind of you know a tautology but

⏹️ ▶️ John like

⏹️ ▶️ John, Casey they

⏹️ ▶️ John, Marco know about programming right

⏹️ ▶️ Marco the question is can you write hopscotch using hopscotch

⏹️ ▶️ Marco, John no

⏹️ ▶️ John no i couldn’t even make two monsters chase each other i don’t know if let’s do math

⏹️ ▶️ John yet so i probably still can’t do motion grab i mean maybe that’s too complicated like once you give something give me something visual i

⏹️ ▶️ John end up up trying to like write a game like I want to off. Yeah, I want to. I’m not trying to give people like velocity vectors

⏹️ ▶️ John and stuff. I’m just trying to, you know, statically move them around a grid, you know, in

⏹️ ▶️ John at some speed so they smoothly animate. But anyway, maybe I’ll run the updater and see if it gets

⏹️ ▶️ John any better. And you want to titles? None of these none of these are particularly holidayish,

⏹️ ▶️ John are they?

⏹️ ▶️ Marco Well, we didn’t really talk. I mean, besides the fact that we said we’re going to be traveling and you should fix your parents

⏹️ ▶️ Marco, John stuff,

⏹️ ▶️ John we talk about things you do when you go to your family. I guess we didn’t say anything family where they were just had a bunch of tech nerd crap

⏹️ ▶️ Marco Yeah, that’s us

⏹️ ▶️ John also tell your family that you love them.

⏹️ ▶️ Marco I guess

⏹️ ▶️ John do that too after you update the raws You

⏹️ ▶️ Marco gotta have priorities.