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

54: goto fail;

Wolfram Language, Apple’s SSL bug and the NSA, warnings as exceptions in production, and that Scriptnotes episode.

Episode Description:

Sponsored by:

  • Picturelife: The one app your photos need. Back up, search, edit, and share on Mac and iOS.
  • Squarespace: Everything you need to create an exceptional website. Use promo code CASEY for 10% off.
  • HelpSpot: Simple, powerful, customizable help-desk software with no monthly fees. Use code ATP14 for $100 off.

MP3 Header

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

Transcript start

⏹️ ▶️ Casey All right, you want to do some follow-up? Okay, sounds great

⏹️ ▶️ John There’s hardly any is there any today

⏹️ ▶️ Marco kind of not really

⏹️ ▶️ Casey yeah I’m lumping something that probably isn’t by the strictest definition follow-up into follow-up

⏹️ ▶️ Casey and that is after our discussion about What comes after objective

⏹️ ▶️ Casey C a lot of people have come out of the woodwork and said hey guys Have you seen this

⏹️ ▶️ Casey wolfram language thing? That’s gonna be the next big thing that will replace objective C and

⏹️ ▶️ Casey it’s not. So anything else? It

⏹️ ▶️ Marco is pretty cool though.

⏹️ ▶️ Casey Oh, it’s

⏹️ ▶️ Marco cool as hell. I have no idea what I would use it for if anything. I think I’m not smart enough to

⏹️ ▶️ Marco use it actually, but it’s really cool.

⏹️ ▶️ Casey I mean all kidding aside, it is very, very cool, but it’s serving a completely different purpose. And

⏹️ ▶️ Casey I don’t see a mechanism by which that’s going to be the way in which we build apps.

⏹️ ▶️ Casey And of course somebody will say to us, oh, well, but didn’t you watch the whole video? they had

⏹️ ▶️ Casey sliders on there and other UI elements and blah, blah, blah. Yeah, but that’s not, that’s not really the point.

⏹️ ▶️ Casey You know, it’s not, it’s not the sort of thing you’d build an app with. It’s the sort of thing that you would do

⏹️ ▶️ Casey some really impressive and very cool data computations

⏹️ ▶️ Casey with, but it’s not something you’d build an app with.

⏹️ ▶️ John Steven McGuire Do either one of you guys have to use Mathematica in school? Jim

⏹️ ▶️ Casey Collison I did, and I’ve long since forgotten all of it. Or no, no, I use MATLAB. I’m sorry.

⏹️ ▶️ John Yeah. Well, Mathematica, it’s the guy, what’s his name? Stephen Wolfram? Yep. Mathematica

⏹️ ▶️ John is to him as Emacs is to Stallman, basically. Like he’s a super genius crazy

⏹️ ▶️ John person who made an environment where he can sort of fulfill

⏹️ ▶️ John his dreams of computation and has just added to it and added to it over the years. Only Wolfram is a

⏹️ ▶️ John little bit more successful and a little bit more determined and not quite as afflicted with RSI and

⏹️ ▶️ John I think hired a bunch of other people to do things. I think the difference is that Wolfram had a business that made money that let him indulge

⏹️ ▶️ John his tastes to do this type of thing. So he’s built this amazing thing for himself that works the way his mind works,

⏹️ ▶️ John that is basically like start with Mathematica and just expand out to fill the universe. But

⏹️ ▶️ John it’s, I’m not going to say something about it that’s like, oh, it’s just a, and insert word here, because

⏹️ ▶️ John it’s not just a anything. What it does is very impressive. And it’s a life’s work, and it is

⏹️ ▶️ John very interesting and impressive. But I think it’s an application

⏹️ ▶️ John, Casey more. More

⏹️ ▶️ John, Marco it’s an

⏹️ ▶️ John application that you can program with more than a programming language, but anyway regardless of

⏹️ ▶️ John what you think it can apply to everything in that demo Shows that it’s good

⏹️ ▶️ John at doing this stuff in that demo, but Apple of course would need a language It’s good at doing the things that Apple needs to

⏹️ ▶️ John do and what does Apple need to do? They need to let developers write applications They need to write applications themselves, and they need to write

⏹️ ▶️ John an OS and for all of those purposes This language is not useful

⏹️ ▶️ Casey Right. And don’t let me, you know, kind of shrugging it off as

⏹️ ▶️ Casey a replacement for Objective-C to take away from the fact that you’re absolutely right. It is unbelievably

⏹️ ▶️ Casey impressive the things that can be done with it, but it is serving an entirely different purpose and that’s the only point I’m trying to make.

⏹️ ▶️ Marco Yeah, like I’m not going to be writing the next, you know, Instapaper killer in Wolfram

⏹️ ▶️ Marco language.

⏹️ ▶️ John Yeah, and one of the aspects that it has going against it is that thus far, computer languages

⏹️ ▶️ John that lean heavily on like that, like in the sort of cloud of what are you closer to that sort of

⏹️ ▶️ John start grouping towards the math side of things. While always very interesting and powerful,

⏹️ ▶️ John tend not to. So thus far, I mean, it doesn’t mean it can never happen, but so far the ones that tend to be more

⏹️ ▶️ John math like have not caught on as much as the ones that are less math like. And you know,

⏹️ ▶️ John I don’t know why that is, but I mean, for example, Haskell is another one of those languages that looks more

⏹️ ▶️ John like you’re doing math or is more math like or even something like Lisp kind of sort

⏹️ ▶️ John of and this definitely is towards the math side I mean

⏹️ ▶️ John you can solve integrals with it as part of like language we did all the symbolic stuff I mean it started from Mathematica

⏹️ ▶️ John how could it not be math based but yeah so far languages like that haven’t caught on with

⏹️ ▶️ John with the masses no matter how cool they are for the people who use them for the things they’re good at

⏹️ ▶️ Marco one problem I think I’d have trying to try to use this for anything is that, and kind of

⏹️ ▶️ Marco similar in this one, only one way to AppleScript, I think

⏹️ ▶️ Marco it would be hard for me to get to start into this and to even know the kinds of things I could

⏹️ ▶️ Marco do. And, you know, cause it can do so much.

⏹️ ▶️ Marco And in that way, it’s pretty unfocused. It’s very broad and

⏹️ ▶️ Marco you’re presented with like, here’s this shell, basically, this command shell and this interactive

⏹️ ▶️ Marco prompt that you can do whatever you want with. And the demos that he was showing off in the video

⏹️ ▶️ Marco look amazingly cool. I don’t know necessarily how useful they would be for me, but they were still amazingly cool.

⏹️ ▶️ Marco But I was looking at the kinds of syntax he was using, the kinds of commands he was using, the kind of structures

⏹️ ▶️ Marco he was using, and I don’t even know where I would begin with something like that. And

⏹️ ▶️ Marco I’ve had that same problem ever using Wolfram Alpha as well, where every time I’ve tried to use WolframAlpha, I’ve

⏹️ ▶️ Marco tried, you know, phrasing things in a certain way, and I never guess the correct syntax, and it

⏹️ ▶️ Marco never does what I want, and I can tell there’s a lot there, but it’s really hard

⏹️ ▶️ Marco to get started. It’s really hard to know, like, okay, what can I do here, and how do I ask it to do that?

⏹️ ▶️ John I think like Lisp, I think the language itself is probably super simple. I think there’s only a few things that exist,

⏹️ ▶️ John you know, they probably have like tuples and some syntax for function calls and a couple other symbolic

⏹️ ▶️ John things to write math and ASCII that get converted into symbol representations. That is the

⏹️ ▶️ John language, but the language is pointless. If you looked at that big, they kept paging through those page

⏹️ ▶️ John after page of those little rectangles. Underneath each one of those is a vocabulary, which is basically like a library.

⏹️ ▶️ John What functions can I call? What things can I type? That’s not part of the language per se. It’s not as if those are keywords

⏹️ ▶️ John like if and loops and function declarations. Like

⏹️ ▶️ John the language syntactically look very simple to its discredit, I think, in that it looks like it would be

⏹️ ▶️ John very cumbersome to do anything remotely complicated. But the power of the thing is,

⏹️ ▶️ John look at all these basically libraries that we have. Look at all the different functions we have. Look at what the options

⏹️ ▶️ John to those functions are. Look at how those functions can be composed with each other. And so it’s

⏹️ ▶️ John kind of weird to call it a language. That’s why, you know, it’s more like an application or a set of libraries.

⏹️ ▶️ John And the set of libraries look huge. Like there, surely there’s some function that does the thing that you want, that has the options that you want.

⏹️ ▶️ John And if you can’t find it exactly, you can build it by composing it out of other really powerful pieces and put it all on a web

⏹️ ▶️ John front end and get it through a web services API, lots of cool stuff in there. But, uh,

⏹️ ▶️ John I think it’s more like an application. It’s more like an API than it

⏹️ ▶️ John is a language and whatever it is, it’s not suited to write GUI applications

⏹️ ▶️ John or operating systems for phones or desktops. So,

⏹️ ▶️ Casey right. I had the same thought that this would be in a potentially extremely powerful add-on

⏹️ ▶️ Casey or, you know, processing, not unit, but I guess like a dynamic library for,

⏹️ ▶️ Casey for something in Objective-C if you could get some sort of interface into it. But I don’t see it

⏹️ ▶️ Casey replacing Objective-C or anything like that. Very cool though. Very, very cool. So

⏹️ ▶️ Casey what else is going on. You want to talk about this SSL bug? Go to fail. All

⏹️ ▶️ Casey right. So moving on. No, I’m just kidding.

⏹️ ▶️ John It was like meme ready. It

⏹️ ▶️ Marco came pre-memed. I love that gotofail.com was actually available.

⏹️ ▶️ John Not for long, but yeah.

⏹️ ▶️ Casey And it was useful. Yeah. Well, once it was, once it became a thing. I don’t know

⏹️ ▶️ Casey if I have all that much to say about this. I’m not sure I concur,

⏹️ ▶️ Casey Marco, with your tinfoil hat reasoning that this was a deliberate act. And I’m

⏹️ ▶️ Casey happy for you to convince me that I am wrong. But I’m not saying it wasn’t deliberate,

⏹️ ▶️ Casey but to me, it didn’t reek of being deliberate like you seem to think. Do you want to kind of recap

⏹️ ▶️ Casey what leads you to believe that?

⏹️ ▶️ Marco Sure. I mean, I think I’m not saying this was

⏹️ ▶️ Marco definitely an NSA security breach where,

⏹️ ▶️ Marco you know, like theory that I think is is potential

⏹️ ▶️ Marco I don’t even know if I would say the most likely but I think it’s reasonable

⏹️ ▶️ Marco to look at these events that this one duplicated line

⏹️ ▶️ Marco was inserted into this SSL it was a certificate verification code

⏹️ ▶️ Marco or a

⏹️ ▶️ John common name checking part wasn’t it it was the step that checks that the common names match and it skips over

⏹️ ▶️ John that step

⏹️ ▶️ Marco I believe so it was some part of the certificate verification step so that

⏹️ ▶️ Marco you can make sure that the certificate, the SSL server that you’re talking to is who they say

⏹️ ▶️ Marco they are and not a man in the middle who, you know, like man in the middle attacks. I’m

⏹️ ▶️ Marco probably not even qualified to explain them in all their, you know, everything properly, but

⏹️ ▶️ Marco somebody who could like intercept your network traffic at an ISP or a wireless

⏹️ ▶️ Marco router in a coffee shop or whatever the case may be, your school, your workplace, somebody who could intercept, or your government,

⏹️ ▶️ Marco somebody who could intercept your network traffic. Normally,

⏹️ ▶️ Marco SSL is designed, if everything’s done right, so that the server and you

⏹️ ▶️ Marco can talk securely, and you know when you connect to the server, you can verify through these series of

⏹️ ▶️ Marco cryptography steps, you can verify that the server you’re talking to really is who they say they are, and nobody else

⏹️ ▶️ Marco in the middle is listening in, in a way that they can decode your data. This

⏹️ ▶️ Marco bug broke that assumption, and so that somebody could have been listening in and

⏹️ ▶️ Marco breaking SSL and watching your traffic and the operating system was just skipping that verification

⏹️ ▶️ Marco step or a part of it. So the way this was inserted in the file,

⏹️ ▶️ Marco and the files are open source, not every revision is open source,

⏹️ ▶️ Marco but you can see like the version that shipped in 10.8 and the version that shipped in 10.9 and you

⏹️ ▶️ Marco can see the diff there. So the diff is not entirely convincing

⏹️ ▶️ Marco because there could have been a lot of intermediate revisions between. You don’t know what happened

⏹️ ▶️ Marco between those two. All you see is beginning point and ending point. But

⏹️ ▶️ Marco if you look at the diff, not a lot in the file has changed between the two releases.

⏹️ ▶️ Marco There’s this context parameter to some of these security calls that was removed,

⏹️ ▶️ Marco basically. It looks like the API just changed minorly so that, you know, this one argument was no longer necessary or something like that.

⏹️ ▶️ Marco So most, not even, some of the calls had this very, this very basic

⏹️ ▶️ Marco change to them that just like removed this argument. There were almost no other changes in the entire

⏹️ ▶️ Marco function. And then this one extra go to fail line

⏹️ ▶️ Marco inserted in the middle. And so if you look at this, If you just look at the diff,

⏹️ ▶️ Marco it looks pretty bad. Like, it looks like, wow, there, like, no edits happened in the surrounding

⏹️ ▶️ Marco lines, uh, between these two releases. Just this one line was inserted kind of in the middle of nowhere.

⏹️ ▶️ Marco And it looks pretty bad. Of course, you know, as I said, though, you can’t rely

⏹️ ▶️ Marco only on that. I think what, what worries me, and what makes me think

⏹️ ▶️ Marco that this could be, this could have been nefarious, and, and, and again, and I want to say it in my tweets, I

⏹️ ▶️ Marco don’t necessarily believe that Apple itself officially knew about

⏹️ ▶️ Marco this or introduced this intentionally or was working with the NSA. I think it’s much more likely, seeing

⏹️ ▶️ Marco how the NSA works, knowing that they have a program where they—New York Times reported this, I’ll have to find the link,

⏹️ ▶️ Marco but I believe it said they had an annual budget of $250 million to go do things exactly

⏹️ ▶️ Marco like this, where basically the NSA will get to

⏹️ ▶️ Marco an engineer who works at one of big tech companies, or they will have

⏹️ ▶️ Marco people sitting on standards bodies trying to argue for different standards

⏹️ ▶️ Marco to be subtly weakened or have these back doors introduced,

⏹️ ▶️ Marco or the people who work at tech companies will become NSA

⏹️ ▶️ Marco supporters, agents, whatever they’re called. So we know that that kind of thing happens.

⏹️ ▶️ Marco We know all that from the Edward Snowden leaks and from the Associated Reporting that’s gone on since then.

⏹️ ▶️ Marco of that, you know, that’s not like an artificial tinfoil hat thing. That kind of thing

⏹️ ▶️ Marco does happen. And so for this bug to be inserted

⏹️ ▶️ Marco in this file at this time, and again, another little piece of circumstantial evidence,

⏹️ ▶️ Marco this bug was inserted in, I believe it was fall of 2012?

⏹️ ▶️ Marco It was the month before one of the NSA slide decks claimed that Apple

⏹️ ▶️ Marco had joined the PRISM program in some way. And that timing is really

⏹️ ▶️ Marco suspect as well. So you can look at this and we don’t know yet at least we don’t know what

⏹️ ▶️ Marco happened we probably will never know what happened. It could have been an innocent mistake an innocent

⏹️ ▶️ Marco you know line paste out of a VI buffer or a weird merge artifact when the files

⏹️ ▶️ Marco were merged who knows right it you don’t we can’t tell exactly but

⏹️ ▶️ Marco normally when you try to rule out a kind of nefarious tinfoil hat conspiracy theory kind of

⏹️ ▶️ Marco thing, you do it by saying, well, the simpler, more likely explanation is honest reason

⏹️ ▶️ Marco X. And I think in this case, looking at the environment we’re in, looking at the kinds

⏹️ ▶️ Marco of things that we now know go on with the NSA and what they do with tech companies,

⏹️ ▶️ Marco and you look at exactly, I mean, for a one line bug like this,

⏹️ ▶️ Marco this is a hell of a line to pick. Like if you like what it did

⏹️ ▶️ Marco in the way it did it was so subtle it was subtle enough if you think about it it’s perfect

⏹️ ▶️ Marco it’s subtle enough that it would it passed a lot of

⏹️ ▶️ Marco any kind of internal review they had and we can talk about that they probably had insufficient review and insufficient tests but

⏹️ ▶️ Marco any kind of internal review it would it might it might skip by because it looks it’s

⏹️ ▶️ Marco it blends in it’s not obvious it’s not even obvious that it is a bug once you even

⏹️ ▶️ Marco once you spot it you kind of have to notice and be like oh wait a minute like you have to think about it for a second

⏹️ ▶️ Marco oh that’s that’s wrong and it could be explained away if somebody was

⏹️ ▶️ Marco caught inserting it it can be explained away by saying oh I must have hit it you know hit paste wrong

⏹️ ▶️ Marco or merged wrong so there’s like a plausible explanation if you get caught and it’s

⏹️ ▶️ Marco And it’s exactly at the right point where it wasn’t breaking all SSL,

⏹️ ▶️ Marco it wasn’t making all SSL validate, but it was making this one particular class of thing validate

⏹️ ▶️ Marco that the NSA has been known to do. So it’s just

⏹️ ▶️ Marco a little too convenient in so many of these ways. The timing, the kind of thing

⏹️ ▶️ Marco it is, the perfection of exactly the right part of the file to cause

⏹️ ▶️ Marco a very convenient backdoor for the NSA, and in a way that looks really subtle

⏹️ ▶️ Marco and hard to find and hard to attribute blame for once you do find it. And they can, I’m

⏹️ ▶️ Marco sure they can look at their version history and they can see which employee inserted that, but again, there’s a plausible reasoning,

⏹️ ▶️ Marco oh, it must have been a mistake during the merge or something like that. So it’s just a little too convenient

⏹️ ▶️ Marco to be a dumb, honest mistake, given the context, given the time

⏹️ ▶️ Marco it happened, what it did, the results it had, and what we now know about what

⏹️ ▶️ Marco our government does. So that’s why I think,

⏹️ ▶️ Marco again, I wouldn’t say that it’s definitely the NSA, but I would say it would be naive

⏹️ ▶️ Marco to brush it off and say, oh, it probably wasn’t them. I think the chances are better than that, that it was them.

⏹️ ▶️ Casey Yeah, you know, I can’t really argue with any of that. And I don’t know, I just,

⏹️ ▶️ Casey I guess I just want to believe that people aren’t jerks like that and that our government doesn’t

⏹️ ▶️ Casey do things like that. But to be honest, that’s me just keeping my head in the sand. So I don’t know, John,

⏹️ ▶️ Casey what do you think about all of it?

⏹️ ▶️ John For the timing thing, I think that’s just as reasonably explained by

⏹️ ▶️ John saying the NSA knew that this bug was in there. And joining

⏹️ ▶️ John the program basically means the NSA now has the capability to intercept traffic to Apple devices because of this bug that it knows

⏹️ ▶️ John about. And how would it know about the bug? Well, through its own testing, through trying to do man-in-the-middle

⏹️ ▶️ John attacks, perhaps having someone working at Apple who looks at the code before it’s released to tell them that this is in there.

⏹️ ▶️ John So that would explain the timing. And that doesn’t require the NSA to have caused the bug to be

⏹️ ▶️ John entered in any way. So the timing, I think, is a wash.

⏹️ ▶️ John If I had to put money on it, I would bet that it’s a merge error and it was accidental.

⏹️ ▶️ John And that doesn’t mean the NSA wasn’t exploiting it to do what they do, because it seems like

⏹️ ▶️ John they knew about it based on the timing, and if they knew about it, I’m sure they would be exploiting it.

⏹️ ▶️ John The reason I think it’s a merger is because I don’t think it’s all that subtle. I think if the NSA

⏹️ ▶️ John were going to intentionally plant something like this, they would do it in a less discoverable way. Because once it’s discovered,

⏹️ ▶️ John it gets patched, and the NSA’s goal is not to be discovered. This

⏹️ ▶️ John is not a, you know, it’s if you glance at it, you might miss it, you know, casually visually inspecting

⏹️ ▶️ John it, but it’s the type of thing that will be found both in terms of the code and in terms of the massive

⏹️ ▶️ John effect it has. Like you, if they planted one, you would hope they would plant one that isn’t

⏹️ ▶️ John so easy to find because this is like, I can spoof a certificate and it just accepts everything.

⏹️ ▶️ John Like it accepts any garbage, it skips that entire, it’s not like if I carefully construct your certificate with a

⏹️ ▶️ John particular thing or like, you know, like it’s not exploiting a subtlety. It’s the type of thing. It’s amazing that it went

⏹️ ▶️ John undiscovered for as long as it did because of apparent Apple’s apparent total lack of testing of their

⏹️ ▶️ John security frameworks. So that I think argues against it being intentional. And

⏹️ ▶️ John the thing about plausible deniability, this is the really creepy part is that I can imagine that Apple

⏹️ ▶️ John has automated merge tools for bringing builds together. So if you were to find the commit that

⏹️ ▶️ John did this, I would imagine there’s a good chance that it could be attributable to an automated merge tool. And

⏹️ ▶️ John then who do you blame, right? Like, Oh, well, someone was really clever and set up the series of dominoes such that they knew

⏹️ ▶️ John when we did this merge with that merge and that merge, it would mess something up. And if the only validation of a merge

⏹️ ▶️ John is a human being visually inspecting it and signing off, well, yes, it’s easy enough to miss. Or if the validation

⏹️ ▶️ John of emerges, it compiles and passes are apparently completely inadequate test suite, then

⏹️ ▶️ John then that will let it go through too. So I think we all agree that it’s it is

⏹️ ▶️ John entirely like entirely possible that the NSA did this, the government does, because like Margo I

⏹️ ▶️ John said, this is something they do, but I think this is a, this would be, this is below the

⏹️ ▶️ John level of competence and sneakiness that I would expect from them. So I give it a less than 50% chance that

⏹️ ▶️ John it was done intentionally, more than 50% chance that it was done unintentionally and almost 100% chance

⏹️ ▶️ John that the NSA both knew about it and exploited it.

⏹️ ▶️ Marco I mean, you know, overall, I agree, John. Like I agree that

⏹️ ▶️ Marco these things, like all of these factors could be explained away in reasonable,

⏹️ ▶️ Marco plausible explanations. It’s just like when you add it all together,

⏹️ ▶️ Marco and again, if this would have happened a year ago before we knew so much about, from the Snowden

⏹️ ▶️ Marco leaks, before we knew all this stuff, a year ago I would have looked at this and thought, oh, well it

⏹️ ▶️ Marco looks like somebody made a stupid mistake. But now that we know that this stuff happens,

⏹️ ▶️ Marco and because of how convenient it would be, Yeah, you’re right that that like, you

⏹️ ▶️ Marco know disabling these entire steps of SSL verification are pretty hamfisted

⏹️ ▶️ Marco however, you know, they got it through and it was there for over a year, right

⏹️ ▶️ Marco so I think I’m sure they don’t just try

⏹️ ▶️ Marco one thing and maybe the other things they tried Got caught or didn’t

⏹️ ▶️ Marco ship or are still there or yes Thanks Sleep well tonight

⏹️ ▶️ Marco Yeah, or are still there and and you know I’m sure they don’t just leave themselves as one option.

⏹️ ▶️ Marco You know so Again I think by by looking at just the

⏹️ ▶️ Marco the fairly you know broad stroke that this bug used I Wouldn’t for

⏹️ ▶️ Marco the same reason that you wouldn’t rule out the timing Because there’s you know there’s

⏹️ ▶️ Marco always like I wouldn’t I wouldn’t rule I wouldn’t rule out the possibility of them doing this just because

⏹️ ▶️ Marco of how fairly hamfisted it is because in many other ways it’s quite elegant in

⏹️ ▶️ Marco in how innocent it looks and and how hard how hard it was to catch

⏹️ ▶️ Marco and you know I’m sure they try many things and some of them are hamfisted on some of them are really clever

⏹️ ▶️ Marco and and the really clever ones maybe they didn’t work or maybe they’re still there but this one we happen to find

⏹️ ▶️ John well none of us are ruling anything I was just a quick you’re over 50% for thinking it was intentional and I’m under but that’s basically

⏹️ ▶️ John it we’re all around the middle you know

⏹️ ▶️ Marco yeah and I’m again like I’m not too far over 50%. I might say 60%, you know,

⏹️ ▶️ Marco but normally conspiracy theories, you’d be like, you gotta be like, well, there’s just too many coincidences

⏹️ ▶️ Marco to believe your conspiracy theory, you know, too many coincidences would have to happen. You know, this, I think it’s,

⏹️ ▶️ Marco I think it’s subtly the other direction. It’s, there’s, you’d have to ignore a lot of a lot

⏹️ ▶️ Marco of coincidences that did that are the case, to believe that this was totally innocent.

⏹️ ▶️ John So do you think Apple will ever say anything publicly about the investigation

⏹️ ▶️ John that undoubtedly is taking place inside the company to determine the cause of this? Oh, I really doubt

⏹️ ▶️ John that. And the second question is, will they use their disclosure canary

⏹️ ▶️ John thing, you know, like where they, the previous disclosure, they said, we have not been contacted by government agencies

⏹️ ▶️ John to blah, blah, blah, blah, blah. And I figure what the word for that is. Someone in the chat room will look it up. But they put

⏹️ ▶️ John that in there so that when you see that message disappear, you will know that they

⏹️ ▶️ John have been contacted by the government and told not to say anything about it.

⏹️ ▶️ John So that’s, I guess, the thing we can actually watch for that’s actionable. The next time they do one of those security disclosure statements,

⏹️ ▶️ John if the whatever canary statement is not there, again, we can’t directly connect it to this incident. But

⏹️ ▶️ John at least, you know, for example, if we see the statement again, we’ll know that Apple it investigated

⏹️ ▶️ John internally and that they like I don’t see if it was the government

⏹️ ▶️ John and they haven’t been forced by the government not to disclose it was the government. I don’t see why they wouldn’t

⏹️ ▶️ John make it that public because they would basically be saying hey in essence you know our

⏹️ ▶️ John government hacked us you know they’d be angry they’d talk to Congress about it all the type stuff like that

⏹️ ▶️ John if that if they determine that to be the case but if it was just an internal error

⏹️ ▶️ John they probably won’t say anything and if the little canary statement is still there, then we also know that NSA

⏹️ ▶️ John is not the one making them not say anything.

⏹️ ▶️ Casey See, but I thought that the canary statement was more about getting it user data.

⏹️ ▶️ Casey I thought that the canary statement was something about how we, you know, we haven’t been, or we haven’t received

⏹️ ▶️ Casey any requests from the NSA to do crap we didn’t want to do.

⏹️ ▶️ John I know, but this would be a request to sit to, you’re not allowed to say anything about the NSA

⏹️ ▶️ John mole that you discovered

⏹️ ▶️ John, Casey in your organization.

⏹️ ▶️ John You know, like that, I get you’re right. It’s different categories thing. Like we’ve never given them

⏹️ ▶️ John user data and blah blah blah, but it was it was fairly wide ranging statement

⏹️ ▶️ John and like they can’t they can’t anticipate what they may be forced not to say anything

⏹️ ▶️ John about but I would imagine they would remove that they would just simply not put that statement

⏹️ ▶️ John in there because it’s not an admission of anything. It’s just that’s the whole point of the canary. You can just remove it and that’s their

⏹️ ▶️ John sort of signal to the outside world that government people have come and told us not to say anything.

⏹️ ▶️ John And we can legally just simply not say anything. And you can interpret that as a sign

⏹️ ▶️ John that we’re being told not to say something about something.

⏹️ ▶️ Marco Yeah, maybe, but it is two different things.

⏹️ ▶️ Casey Yeah, it says I have it here. The very last line. This is a thing from Matthew

⏹️ ▶️ Casey Panzarino. The very last line of Apple’s report today states, quote, Apple has never received an order under

⏹️ ▶️ Casey Section 215 of the USA Patriot Act. And we would expect to challenge such an order if served

⏹️ ▶️ Casey on us, which to me sounds like something separate than what we’re talking

⏹️ ▶️ Casey about.

⏹️ ▶️ John Well, I mean, you’d have to look up what Section 215 of the Patriot Act says. Knowing the Patriot Act, it probably says

⏹️ ▶️ John the government can do whatever the hell it wants and you have no rights and –

⏹️ ▶️ John, Casey Oh, right.

⏹️ ▶️ John In some sort of vague language that’s broad. But I mean, that’s all we’ve got, like because they can’t go back in time and put in a canary

⏹️ ▶️ John about we’ve never been infiltrated by the NSA. They’ve never added bugs to our code intentionally.

⏹️ ▶️ John And honestly, I don’t know how they would ever determine that because like Marco said, if the best case scenario that it actually

⏹️ ▶️ John is an individual developer, what are they going to do waterboard the guy that like, it could have been a legitimate mistake,

⏹️ ▶️ John they can ask him, did you put that there intentionally? But if he did it intentionally, of course, he’s not going to tell you that he

⏹️ ▶️ John did. And you can’t force him to tell you and you’ll just you’ll just never know because it is 100% plausible

⏹️ ▶️ John as a bug like people write bugs all the time, right? It just you know, lines get pasted twice,

⏹️ ▶️ John like Marco said, like, there is no literally no way to force someone to, like, you’ll never know

⏹️ ▶️ John if that guy’s telling truth. You could torture him to death and he dies and he never said that he did it and you

⏹️ ▶️ John still don’t know whether he was lying or not.

⏹️ ▶️ Casey Let me tell you a story and then maybe, Marco, you can tell us about something sweet. In my first job,

⏹️ ▶️ Casey I wrote bingo-based slot machines,

⏹️ ▶️ Casey which is a weird and odd story that’s not worth explaining right now. But this was done

⏹️ ▶️ Casey in DOS using the Wacom C++ compiler. And because it was done in DOS,

⏹️ ▶️ Casey debugging in the traditional sense wasn’t really a thing. So

⏹️ ▶️ Casey you basically had to print out a bunch of log statements and so on and so forth. Well,

⏹️ ▶️ Casey the machines that we built and the software that we built, basically it had

⏹️ ▶️ Casey a menu and then a series of different slot machine games. And what we were noticing

⏹️ ▶️ Casey all of a sudden is that after some arbitrary amount of time of going into

⏹️ ▶️ Casey a game and going to the menu, going to the game, going to the menu, going to the game, going to the menu, after like 30, 40, 50 times,

⏹️ ▶️ Casey all of a sudden we would get a hard crash and we couldn’t figure out what it was. And we had some

⏹️ ▶️ Casey really, really good C++ developers there. The team at that point was only like 20 people.

⏹️ ▶️ Casey But there were some really smart guys there. Now I’m straight out of college so I don’t know what the crap I’m doing. But

⏹️ ▶️ Casey after a while, it was on me to try to figure out, and a coworker

⏹️ ▶️ Casey actually, to try to figure out where is this crash coming from, why is it happening?

⏹️ ▶️ Casey And some of my much more experienced, much better coworkers had looked through diffs, they’d looked through

⏹️ ▶️ Casey check-ins, nobody could figure out what it was. And eventually I figured it out, and I

⏹️ ▶️ Casey can’t recall if I just spotted it or if I looked through the version

⏹️ ▶️ Casey history of all the files that had been changed lately. But what it ended up being was

⏹️ ▶️ Casey a fall through in a switch statement. And in the switch statement,

⏹️ ▶️ Casey in each case, we were instantiating an object that was fairly big. I forget

⏹️ ▶️ Casey exactly what it was, but it was big. So what that means is we would create this new

⏹️ ▶️ Casey object and allocate a bunch of memory for it. And then there was an accidental fall through that we didn’t

⏹️ ▶️ Casey mean to have. And so we would create another one. And that first

⏹️ ▶️ Casey object, all that memory got leaked and it took us forever

⏹️ ▶️ Casey to find it. It took seriously, I believe it was two weeks of myself and a coworker

⏹️ ▶️ Casey just digging through code for two straight weeks, trying to figure out what it was. And I bring this up because it

⏹️ ▶️ Casey looked, aesthetically, it looked very similar to this go to fail issue.

⏹️ ▶️ Casey there was what appeared on the surface to be a Perfectly valid switch statement

⏹️ ▶️ Casey and it just so happened that we had forgotten to put the word break with a semicolon after

⏹️ ▶️ Casey it We were leaking memory and after 30 to 50 times going back out to the menu.

⏹️ ▶️ Casey That’s what caused the error

⏹️ ▶️ John They’ve got instruments You would have known that because you could have run the little graph that shows the memory you would have seen the

⏹️ ▶️ Casey leak No, you’re absolutely right I know you’re slightly being snarky but that is absolutely true. And that’s

⏹️ ▶️ Casey part of the reason why I think none of us are necessarily that excited to get rid of Objective-C. But I

⏹️ ▶️ Casey bring this up because here was a situation where we had a handful of really good C++ developers.

⏹️ ▶️ Casey Now, we didn’t have a lot of process. You could say our methodology was not very good. But

⏹️ ▶️ Casey regardless, we didn’t have a lot of process. But nevertheless, we had some really bright guys and girls going through

⏹️ ▶️ Casey this stuff, and nobody could find it because it wasn’t something that was visually,

⏹️ ▶️ Casey almost aesthetically obvious. And I see this as being a

⏹️ ▶️ Casey very, very, very similar situation. Just food for thought.

⏹️ ▶️ John Paul Moore There’s examples of language misfeatures that lead to bugs. The language misfeature you cited

⏹️ ▶️ John is the fall through where you need the break statement. The language misfeature I think in this bug was that you can have single

⏹️ ▶️ John clause conditionals without the braces

⏹️ ▶️ John, Marco that

⏹️ ▶️ John make it slightly less obvious. And And some people say the language misfeatures, the white space is insignificant, and the Python people

⏹️ ▶️ John will tell you how this will never happen in Python. Yeah. I mean, all the talk about

⏹️ ▶️ John whether this is intentional or not, like bugs happen all the time that aren’t security related,

⏹️ ▶️ John that are just plain bugs and cause things to crash. And language features do lead to more

⏹️ ▶️ John or fewer bugs. And I would love to see some stats on bugs

⏹️ ▶️ John that are attributable to human error that could potentially have been influenced by

⏹️ ▶️ John language features. So the single clause if thing, I bet, is probably pretty

⏹️ ▶️ John high up in any language that allows that type of thing. Because it’s just so easy to accidentally put a line underneath

⏹️ ▶️ John it or to indent things wrong in a misleading way.

⏹️ ▶️ John The fall through for case statements, forgetting the break, I mean, I can’t count how many times I’ve done that.

⏹️ ▶️ John Usually it’s so obvious because nothing works at all. But if you get unlucky enough and things happen to sort of work,

⏹️ ▶️ John you won’t notice it because you just write it out and it looks all indented the way you want it to be. You just forgot to put the word.

⏹️ ▶️ John Who doesn’t forget to put the word? That’s like a rite of passage when you learn the

⏹️ ▶️ John, Marco scene, you learn the case statement.

⏹️ ▶️ John You will forget to put in break. And your thing won’t work right.

⏹️ ▶️ Marco Man, I found a nasty bug this week in my PHP framework. In my sort function,

⏹️ ▶️ Marco so I have my model class and I have a couple of convenient model sort functions to do common things.

⏹️ ▶️ Marco And one of them is if you have your array, and PHP

⏹️ ▶️ Marco arrays are all hashes slash dictionaries, it’s all like, you know, arbitrary key to

⏹️ ▶️ Marco value, it can be strings or numbers. So the idea is if you have an array of numerically indexed models,

⏹️ ▶️ Marco and you want them to instead be indexed by one of the values on each one, like say, go ID

⏹️ ▶️ Marco to object instead of just like zero through n. I had a function to

⏹️ ▶️ Marco assign the key of each object to be that property that you specify

⏹️ ▶️ Marco and I had it work on the array in place. Oops! See the problem?

⏹️ ▶️ John Does PHP have defined semantics for what constructs allow

⏹️ ▶️ John you to modify the thing you’re iterating over in place and which ones don’t?

⏹️ ▶️ Marco not really. In PHP you can generally modify things as you iterate over them most of the time

⏹️ ▶️ Marco and it usually works.

⏹️ ▶️ John Reassuring.

⏹️ ▶️ Marco It’s kind of a problem that I have to save most of the time unusually there. But yeah, so

⏹️ ▶️ Marco as a result I was, as I was going through, you know, going through the numeric indexes

⏹️ ▶️ Marco and I would say alright well I have this property value of this one so unset the numeric index

⏹️ ▶️ Marco that it was at and set it to the string index. Cool. So what happens when the value of

⏹️ ▶️ Marco one of those things is like what happens if the value of the one that was previously at ID 0

⏹️ ▶️ Marco is 2 then you go to ID 1 do that go to ID 2 and then

⏹️ ▶️ Marco that one gets unset and so the resulting array can clobber certain elements

⏹️ ▶️ Marco based on their value and can actually have fewer elements in it than the input of

⏹️ ▶️ John array. What I was getting at was say you pulled off the first one and its

⏹️ ▶️ John ID value of 77 and you shoved it into 77 would you later on find yourself iterating

⏹️ ▶️ John over 77 because the iteration thing now sees a new entry down at 77 I

⏹️ ▶️ Marco think so but I the fact that I can’t that I don’t even know that for sure is a problem

⏹️ ▶️ John self-modifying code I mean you couldn’t theory get yourself into like an infinite loop of footage where you just these things just keep

⏹️ ▶️ John getting shoved to the end and making new entries that you then iterate over that caused them to be shoved to the end again watch

⏹️ ▶️ John what’s their silliness yes

⏹️ ▶️ Marco yeah it’s crazy and so yeah like that was an obvious like if you looked at the code it looked

⏹️ ▶️ Marco reasonable like oh of course that but you know until you thought about it and you’re like oh wait a minute and I this was

⏹️ ▶️ Marco this was a utility function in my framework that’s been there for about seven years

⏹️ ▶️ Marco it’s like hmm I wonder how many bugs that has caused because I

⏹️ ▶️ Marco don’t use this function a lot but when I do use it and maybe all the time I’ve used it so far I

⏹️ ▶️ Marco like most Most of the time, it just never had that situation, so I didn’t notice it.

⏹️ ▶️ Marco But yeah, that was a problem. Anyway, we are sponsored this week. Our first sponsor, 30

⏹️ ▶️ Marco minutes in, our first sponsor is PictureLife. Now, we talked

⏹️ ▶️ Marco a while back, many times, about hosting your pictures online, photo storage, photo backups,

⏹️ ▶️ Marco stuff like that. So, PictureLife is the one app you need for your photos and videos.

⏹️ ▶️ Marco Starting with seamless backup and deep integrations to iPhoto and Aperture. PictureLife

⏹️ ▶️ Marco auto-organizes your photos and gives you the power to view and quickly search through them on any device.

⏹️ ▶️ Marco PictureLife’s private sharing lets you easily control who sees which photos and their

⏹️ ▶️ Marco editor works on the web and iOS. Plans start at just $5 per month and

⏹️ ▶️ Marco ATP listeners get 30% off for life. Sign up at picturelife.com slash

⏹️ ▶️ Marco They’ve never done this before, so really give this a shot, make

⏹️ ▶️ Marco them love their sponsorship with us. You save 30% on the monthly fee

⏹️ ▶️ Marco for life. That’s awesome. And so they have all sorts of cool features. They have a deep

⏹️ ▶️ Marco search, it’s very, very powerful. It uses the face detection, all that other

⏹️ ▶️ Marco stuff that’s really cool these days. They have apps for the Mac, apps for iOS, but they

⏹️ ▶️ Marco also even support Windows and Android. It just launched in December and is very quickly coming up

⏹️ ▶️ Marco to speed. This company was founded by people who really love photos.

⏹️ ▶️ Marco They love creativity and they love technology. Founders of this include Charles Forman, who I actually

⏹️ ▶️ Marco know. Charles Forman of OMGpop, Jacob DeHart of Threadless, and

⏹️ ▶️ Marco Nate Westheimer of the New York Tech Meetup. I know him too. This is backed by our

⏹️ ▶️ Marco VC friends at Spark Capital, and I know them too. They were the main VC behind Tumblr. So I’m very

⏹️ ▶️ Marco familiar with all these people. They’re really good people. Anyway, Picture Life is the one app that your photos

⏹️ ▶️ Marco really needs. So you can back up, search, edit, and share on Mac and iOS. Go

⏹️ ▶️ Marco to picturelife.com slash ATP and you can get 30% off for life. Thanks a lot

⏹️ ▶️ Marco to Picture Life for sponsoring our show.

⏹️ ▶️ John And if you don’t want them to go away like EverPix, sign up. And unlike EverPix, they don’t have a

⏹️ ▶️ John unlimited storage thing. So hopefully they’ll have a more viable business model of where

⏹️ ▶️ John you actually pay for what you use.

⏹️ ▶️ Marco Yeah, it seems that way also Charles Foreman it like that guy is a machine like

⏹️ ▶️ Marco you remember draw something That was the big thing that was like their big thing but he he had a site before that that I was

⏹️ ▶️ Marco I was I Socialized with him a bit while he was working on that through David carpet tumblr we were all we would

⏹️ ▶️ Marco go out to dinner a few times here and there and that guy he’s incredibly smart

⏹️ ▶️ Marco and He he’s just like a coding output machine like I

⏹️ ▶️ Marco I’ve rarely seen anybody be able to produce as much as he does. And he really, really

⏹️ ▶️ Marco knows his stuff. So I would certainly trust this.

⏹️ ▶️ Casey Nice. Now to go back from before the sponsor break, it would be wrong of me not to mention

⏹️ ▶️ Casey that in Objective-C—I’m sorry, not in Objective-C. I’ve

⏹️ ▶️ Casey been writing Objective-C today, which is why I’m all confused. In C-sharp, there are interesting

⏹️ ▶️ Casey language features that prevent both of the bugs that Marco and I are talking about.

⏹️ ▶️ Casey Firstly, you can’t a fall through in a case in a switch statement

⏹️ ▶️ Casey unless that case is completely empty. So you would literally have one line case

⏹️ ▶️ Casey one colon, the next line case two colon. And if there’s anything in between without a break statement, that’s a compiler

⏹️ ▶️ Casey error. And the other thing is if you try to modify pretty much any enumerable collection

⏹️ ▶️ Casey in place, you get a, I believe that’s a runtime error, not a compiler error.

⏹️ ▶️ Casey And so that’s just really nice ways to protect you from yourself and that, that I really appreciate.

⏹️ ▶️ John Do I have to tell you that Pearl would protect you from these things too, or we just assume it now?

⏹️ ▶️ Marco Opera did it. Ding.

⏹️ ▶️ John Yeah, Pearl requires braces on single statement ifs. It doesn’t let you do it without

⏹️ ▶️ John them. And that was intentional to avoid this feature because the people who wrote Pearl were writing Pearl in C

⏹️ ▶️ John and hated that. And there’s no switch statement, so problem solved there. Oh, there is a

⏹️ ▶️ John terrible deprecated one that’s part of a C pen module, but it doesn’t count. It’s not part of the language. And the,

⏹️ ▶️ John what was the other one? Oh, modifying sets. If you iterate over the keys

⏹️ ▶️ John of associative array, you can actually modify the array because it gets the key list ahead of time

⏹️ ▶️ John and doesn’t make reference to the thing. Unfortunately, if you get the keys and values, then it does

⏹️ ▶️ John the good old PHP way where it’s just madness. But there are other reasons not

⏹️ ▶️ John to do it. They should just deprecate getting the keys and values at the same time anyway, because

⏹️ ▶️ John I don’t want to go into Perl details. But suffice it to say that it’s not a,

⏹️ ▶️ John, Casey they have to keep

⏹️ ▶️ John an iterated value on a per variable basis. And that just leads to more madness. So

⏹️ ▶️ John that should be deprecated, but isn’t yet.

⏹️ ▶️ Marco This is one of those things, too, like the go to fail bug. There’s actually a compiler

⏹️ ▶️ Marco warning that warns on unreachable code blocks. And so if you

⏹️ ▶️ Marco have a function that contains return zero, and then a bunch of lines of code below it,

⏹️ ▶️ Marco well, those lines will never be reached. Because that return statement, that unconditional return, execute and then

⏹️ ▶️ Marco everything else in the function will never be reached. The go-to-fail thing, again, it’s if you have this unconditional

⏹️ ▶️ Marco go-to statement, which is what the bug line was, that skips over the big block of the function,

⏹️ ▶️ Marco then that code is unreachable. And so compiler, there’s a warning for that. I don’t know if

⏹️ ▶️ Marco it’s in GCC, but it’s at least in LLVM. And the problem is, it’s not

⏹️ ▶️ Marco part of the wallall option that a lot of nerds use. it’s not part of the all

⏹️ ▶️ Marco warnings default set. Because I think, I was reading a little bit about this, I think the main

⏹️ ▶️ Marco reason why is because there’s a lot of libraries and stuff that it would

⏹️ ▶️ Marco fail on for various reasons and so it’s always a tricky balance with

⏹️ ▶️ Marco warnings when you’re striking that. Like I recently, in my PHP framework

⏹️ ▶️ Marco I always had for the last few years I’ve used what I call strict development mode. Which

⏹️ ▶️ Marco is when you’re in the development environment everything, even the notice, the lightest

⏹️ ▶️ Marco level of PHP warnings, everything became an exception because I don’t want my code to

⏹️ ▶️ Marco ever emit a notice and I don’t care if it’s gonna be literary with is set statements all over the place,

⏹️ ▶️ Marco I don’t care. Everything, there should be no errors in development and I recently, just even a

⏹️ ▶️ Marco couple of weeks ago I think it was, I recently decided, you know, why shouldn’t that also apply to production?

⏹️ ▶️ Marco If I’m throwing exceptions on any minor error in development that

⏹️ ▶️ Marco for I think good reasons. Why should I be more lenient in production? In reality if things are failing

⏹️ ▶️ Marco anywhere I want to know about that so I can stop it so I can fix it so I can do the right thing.

⏹️ ▶️ John There’s a reason it shouldn’t apply in production if you don’t control your own servers which a lot of people don’t like. They’re sort of deploying

⏹️ ▶️ John to… they have some baseline they need to support for their deployments but they don’t control every

⏹️ ▶️ John single detail like they don’t have their own machines basically. They’re not the one who installed PHP for example. They’re not the one controlling Apache

⏹️ ▶️ John and the upgrade cycle and stuff like that. And you don’t want to run with all your warnings turned on, especially with warnings turned into fatal

⏹️ ▶️ John errors in that situation, because someone will do a minor point upgrade to Apache PHP or some other thing,

⏹️ ▶️ John which will suddenly cause warnings where once there were none and then your production is down because of something you didn’t do. But in your

⏹️ ▶️ John case, since you control all of the you control the version of everything, it’s not going to get upgraded behind your back. So it

⏹️ ▶️ John is slightly more reasonable to do that.

⏹️ ▶️ Marco I think I would disagree on that. I think I think I would want that to break, because that’s a problem that

⏹️ ▶️ Marco that you should know about immediately. And if the people who are controlling the servers do any

⏹️ ▶️ Marco kind of testing, like if they maybe deploy it on a development server, or

⏹️ ▶️ Marco if you deploy directly to production with stuff like PHP updates, at least do it on one server first and

⏹️ ▶️ Marco see what happens, at least, if you’re going to be that sloppy. In all those

⏹️ ▶️ Marco cases, I’d rather the app actually crash and burn immediately. It’s like the fail early

⏹️ ▶️ Marco and completely, or often, whatever the statement is. Fail early.

⏹️ ▶️ John The warnings are always going to be something like, this language feature is going to be deprecated sometime in the next two years, so

⏹️ ▶️ John you should stop using it. And it’s like, that should not cause your app to go down in production. If that did,

⏹️ ▶️ John you’d be mad that it went down, because you’d be like, that’s not important enough for production to stop working. And you’d be mad because

⏹️ ▶️ John they upgraded something and it broke your stuff or whatever. But historically, in my working

⏹️ ▶️ John career, the reason warnings get turned off in production is for this reason. Even sometimes when we

⏹️ ▶️ John do control the entire stack, merely because a different department in the same company controls

⏹️ ▶️ John the upgrade cycle and stuff like that. And the other department doesn’t want that department possibly screwing them up

⏹️ ▶️ John by changing something that causes a warning that is totally bogus

⏹️ ▶️ John and immaterial and stupid and really does not have anything to do with the functioning of the application. It’s practically

⏹️ ▶️ John like the developer’s just waving at you and saying, we made a new message here. Look at our message. Hi, how you doing? Message,

⏹️ ▶️ John message. And you’re like, I don’t want my program to stop working because of that. I’ll see it,

⏹️ ▶️ John fine, we go and patch up that thing so it doesn’t emit the warning anymore. It’s not like it’ll be invisible, but turning

⏹️ ▶️ John it into a fatal error in production is usually a bridge too far.

⏹️ ▶️ Marco I still disagree. I see your point. I don’t think that’s a good enough reason.

⏹️ ▶️ John Well, for a one-man shop that controls everything, yeah, that’s fine, but things get much more complicated as

⏹️ ▶️ John the organizations get bigger and things get farther away from the control of the people writing the code.

⏹️ ▶️ Casey Yeah, I completely agree with John.

⏹️ ▶️ Casey, John And

⏹️ ▶️ Casey I think that comes from the fact that John and I have real jobs and it’s just you by yourself.

⏹️ ▶️ Casey So it’s not easy. It’s not easy to deal with those sorts of issues.

⏹️ ▶️ Casey And even in consulting, it’s an even finer line because a lot of times,

⏹️ ▶️ Casey myself and my team will build something, hand it off to the client, and then walk away. And

⏹️ ▶️ Casey so in many cases, the company

⏹️ ▶️ Casey for which we’ve built something may or may not really have the talent in-house to figure

⏹️ ▶️ Casey out when some esoteric warning happens and what to do about it. And we’re not

⏹️ ▶️ Casey necessarily contracted with this client anymore, so they’re on their own. And not to say that

⏹️ ▶️ Casey we silently squash all exceptions or anything like that, but for non-fatal things,

⏹️ ▶️ Casey oftentimes it’s not in our or our client’s best interest to

⏹️ ▶️ Casey cause a ruckus over those sorts of things.

⏹️ ▶️ John The C tool chain is better about doing this, which is basically why minus wall doesn’t print

⏹️ ▶️ John so many errors, because whoever defined wall way back when now no one can change it. Because if you did, you were like, Oh,

⏹️ ▶️ John this compiled cleanly. And now it doesn’t, your compiler is broken, right? That’s why there’s w everything because

⏹️ ▶️ John wall is not historical baggage like that. Whereas in the much looser,

⏹️ ▶️ John uh, higher level languages and the fancier tools that people have no problem throwing out the next

⏹️ ▶️ John version of next minor version of like Ruby or node or something like that, and adding a bunch of warnings

⏹️ ▶️ John because they’re trying to influence the people who are using the language, because they’re trying to warn about deprecating features, because they think

⏹️ ▶️ John they’ve decided that this could potentially be a problem, like, you know, because their warnings are like, we

⏹️ ▶️ John don’t know this is wrong, otherwise we wouldn’t have compiled it. But there might be something you might want to look at here,

⏹️ ▶️ John and this may be a new warning, so you don’t have a statement above it that says, don’t warn me about that thing, like

⏹️ ▶️ John you were saying with the is set, but like there’s lots of other things, you could like put pragmas and lexically scoped warnings, restrictions

⏹️ ▶️ John to say, look, I know normally a warning would be emitted here, but I know what I’m doing, let this thing go past, and you

⏹️ ▶️ John write that right into the code. Well, you can only do that for the warnings you know about. And

⏹️ ▶️ John although your C compiler is not going to suddenly add a bunch of things to minus wall, lots of other languages

⏹️ ▶️ John and open source projects that are newer and moving much faster will have no problem adding crap like that. And eventually,

⏹️ ▶️ John just the fatigue of the organization keeping up with these things is like, you know, politically speaking,

⏹️ ▶️ John they’ll be like, can’t we just not make the warnings into exceptions in production and just look at the logs and when we see

⏹️ ▶️ John new warnings, fix them? will very quickly go through once production is down a few times, and bosses and bosses

⏹️ ▶️ John bosses are yelling down at development asking why production was down. And at that point, Marco will have a much harder

⏹️ ▶️ John time explaining to his boss or his boss’s boss why it actually really is a good thing that production

⏹️ ▶️ John went down because now we know about this failure right away.

⏹️ ▶️ Marco See, I think this is a lot like ending a Lisp program with a bunch of closing parentheses, just, you know, just in case you make a mistake,

⏹️ ▶️ Marco which was actually the recommended thing for in my Comp Sci 201 or whatever class

⏹️ ▶️ Marco when we were learning Lisp, the professor actually instructed us to put a bunch of closing parentheses at the end of the

⏹️ ▶️ Marco file to make it easier while learning.

⏹️ ▶️ John He might have been joking. But basically, from a practical perspective, if your company is a 24-7

⏹️ ▶️ John online company and they lose, let’s say, $5,000 in revenue for every 60

⏹️ ▶️ John seconds your servers are down, it is much harder to make the argument that Marco has made. It

⏹️ ▶️ John really depends on the situation. Some reasons are stupid, like institutional reasons where there’s

⏹️ ▶️ John kingdoms within the company that are fighting each other, and the developers are distant from the code

⏹️ ▶️ John and they don’t control the deployment. Those are sicknesses within the company. But then there are legitimate reasons, like we’ll say it is a company

⏹️ ▶️ John where everybody works together, but you know you lose X amount of dollars for every minute the server is down.

⏹️ ▶️ John It only takes one night of that happening to equal one developer’s salary

⏹️ ▶️ John that they could have had for the thousands of dollars lost for their servers being down during that time. And so yeah,

⏹️ ▶️ John sometimes you just practically speaking don’t have the luxury of turning all warnings into exceptions.

⏹️ ▶️ Marco See, I think this is a, everything you’ve just said, like where it’s really critical that if this

⏹️ ▶️ Marco happens in production it’s really a big problem, that’s all the more reason why you shouldn’t be reckless deploying

⏹️ ▶️ Marco updates in production to your critical code, like your language interpreter. Like,

⏹️ ▶️ Marco if you’re deploying a new version of PHP to your production servers that you’ve never tested code

⏹️ ▶️ Marco on in development, and you have the kind of situation where you’re going to lose tons

⏹️ ▶️ Marco of money every minute that your site is down in the middle of the night because you updated it in the middle of the night and

⏹️ ▶️ Marco you have to wake up your programmers. To me, there’s

⏹️ ▶️ Marco a number of things wrong with that, and it’s not your warning level.

⏹️ ▶️ John Dynamic languages can emit unexpected warnings not just because they upgraded the version of the dynamic language interpreter,

⏹️ ▶️ John but simply because that code path didn’t have coverage. They’re basically runtime warnings.

⏹️ ▶️ John That exists. That’s a thing in dynamic languages, especially for web programming, that

⏹️ ▶️ John if you don’t execute that code path, that warning will never be admitted. But if you have all warnings immediately become fatal

⏹️ ▶️ John exceptions, and in production someone actually hits that code path, no one upgraded anything,

⏹️ ▶️ John but your server still died because that turned into a fatal

⏹️ ▶️ John exception.

⏹️ ▶️ Marco There’s always between with any kind of non-error,

⏹️ ▶️ Marco any kind of warning or notice, there’s this balance that you’re striking between convenience

⏹️ ▶️ Marco and easiness and tolerance of edge cases versus

⏹️ ▶️ Marco trying to be correct all the time. And it’s kind of like security. It’s like there’s a balance you have

⏹️ ▶️ Marco to strike between convenience and ease and the right thing. And

⏹️ ▶️ Marco if you’re to the point where you’re permitting lots of warnings to happen in production unexpectedly.

⏹️ ▶️ Marco I think that’s a sign that something’s wrong. Well,

⏹️ ▶️ John you’re not permitting them. You just don’t want them to be fatal errors. You’ll address them as soon as you see them. Because a lot of them could be data

⏹️ ▶️ John driven. For example, value comes in and it’s undefined. And how is that value undefined? It’s OK for it to be undefined,

⏹️ ▶️ John but there’s some warning that if you use an undefined value and there’s one function that says this is unexpected and you totally thought

⏹️ ▶️ John it should be expected, someone forgot to put, please don’t give me warnings about undefined values when I pass this in because it’s OK for it to be

⏹️ ▶️ John undefined. But you never hit that code in your testing, and it gets emitted. Like warnings aren’t necessarily,

⏹️ ▶️ John I know people like to turn them on development so they can just get things clean because it’s much easier to verify that there’s nothing there because

⏹️ ▶️ John once you let any leak through, then you just it becomes an avalanche and you start ignoring them. But in production,

⏹️ ▶️ John like enabling these things isn’t necessarily saying we are telling you there’s something

⏹️ ▶️ John wrong with your code. In fact, almost all the time, it’s not telling you there’s something wrong with your code. And it’s just really

⏹️ ▶️ John hard to be at the whim of these messages that don’t actually tell you anything useful

⏹️ ▶️ John about your code in production, turning them into fatal errors, leave them on in production, log

⏹️ ▶️ John them, immediately address each one of them so that you get the the volume of those warnings down to zero

⏹️ ▶️ John again, but turn them into fatal exceptions. Like I said, I think that’s too much.

⏹️ ▶️ Marco But you see, I think that and people in the chat have also suggested like, you know, you can, you should just log them and

⏹️ ▶️ Marco then you know, have a policy to deal with them. I think in reality, that’s much more likely

⏹️ ▶️ Marco to just get ignored or to be Oh, well, it only happened. You know, it only happens once a

⏹️ ▶️ Marco week for a few hours. Or we’ve only we’ve only ever seen this message five or six times.

⏹️ ▶️ Marco So we’ll just ignore it. And I think that’s the wrong approach for a lot of situations.

⏹️ ▶️ John But you don’t need to you don’t need to know you’ll know exactly what line it came from, you can get a stack trace with it like you

⏹️ ▶️ John like it’s usually so easy to address because you’ll immediately look at the warning, look at the line of code and say is this

⏹️ ▶️ John an acceptable condition? Not if it’s an acceptable condition, you just put in the pragma that says don’t emit that warning from this line anymore

⏹️ ▶️ John done and done. If it’s not an acceptable condition, then congratulations, you’ve been alerted to a potential bug and you need to change

⏹️ ▶️ John your code. Both of those situations, one is either dispensed in two seconds and so there’s not a barrier to entry

⏹️ ▶️ John to that. And the second one is you found a legitimate bug. And I think developers will want to fix that as well. I

⏹️ ▶️ John don’t think people will ignore them, especially if you’re running all development in the fatal error mode, because that will ensure

⏹️ ▶️ John that your volume is zero in development. It’s just when you get to production that you want to crank it back one notch,

⏹️ ▶️ John basically to make yourself not go down for reasons that you wouldn’t want to be down.

⏹️ ▶️ Marco But again, I think the human behavior, Like the reality

⏹️ ▶️ Marco of human nature is such that if you tolerate those warnings in production,

⏹️ ▶️ Marco even if the policy says you shouldn’t, in practice, that’s gonna lead to a lot of messy code staying

⏹️ ▶️ Marco there indefinitely. Whereas if it actually breaks, it forces you

⏹️ ▶️ Marco to fix it.

⏹️ ▶️ John Big organizations are good at one thing, it’s making policies, annoying policies. So I actually

⏹️ ▶️ John have more faith in a large corporation’s ability to make a stupid

⏹️ ▶️ John policy that it requires zero war, not stupid, and to be able to make a policy that people don’t like following because it’s human nature

⏹️ ▶️ John to not want to deal with those things. And to enforce it. I mean, it goes the other way to like the policy

⏹️ ▶️ John that says you got to have all warnings on when you when you build your application. A lot of individual

⏹️ ▶️ John developers won’t like that because they find it tedious to go trace down all those errors and everything like that. And indie developers tend to

⏹️ ▶️ John have to psych each other up to say I know I should be running with W everything but I’m not. And like

⏹️ ▶️ John they kind of have to encourage each other to do that because they know it’s good for them, but it’s human nature not to want to do that. It’s like flossing.

⏹️ ▶️ John In an organization, you have someone two levels up who doesn’t have to touch the code, who can just force everybody to do that and make it a policy.

⏹️ ▶️ John Like I think as Casey has said this many times in the past, and it’s true of anyone who works in big companies, whenever

⏹️ ▶️ John anything goes wrong, someone wants to make a policy to prevent it from ever happening again, which eventually leads to a gigantic

⏹️ ▶️ John web of policies that paralyzes the company and makes them stupid and dumb. But like I said, that’s the one thing

⏹️ ▶️ John they’re good at is this bad thing happened, make a policy so it doesn’t happen again. And like they

⏹️ ▶️ John would institute the policy. We must have zero warnings by the Tuesday after the build. All warnings must have

⏹️ ▶️ John tasks assigned for them with due dates. And like that is I think something that big organizations are good

⏹️ ▶️ John at.

⏹️ ▶️ Casey Right. And I think Marco what you’re maybe losing sight of is that

⏹️ ▶️ Casey a lot of times going having a production failure. It just isn’t

⏹️ ▶️ Casey an option even for seconds and John was alluding to this earlier, But

⏹️ ▶️ Casey you’re coming from the position, as you should, of someone who is not only the peon

⏹️ ▶️ Casey coder, but is also the boss. And so if Overcast is out in the

⏹️ ▶️ Casey wild and it goes down, who do you have to answer to? Everyone will know why now.

⏹️ ▶️ Casey Yeah, exactly.

⏹️ ▶️ Marco Date default time zone

⏹️ ▶️ John set. Right. You know, you’re modifying another collection while iterating over it.

⏹️ ▶️ Marco Well, now we at least know that you shouldn’t use my framework if you have this situation.

⏹️ ▶️ Casey Right. But you know what I mean? Like you have to answer. Yes, you have to answer your customers. And that is kind of crummy. But your customers can’t

⏹️ ▶️ Casey fire you. They could walk away and, OK, we can go and we can go down that rabbit hole if you really want to. But

⏹️ ▶️ Casey in a direct sense, they can’t fire you. They can’t not give you a bonus that year.

⏹️ ▶️ Casey They can’t empirically hurt you. And it’s very different for –

⏹️ ▶️ Casey I think I speak for John in saying it’s very different for he and I because if we make some sort

⏹️ ▶️ Casey of decision that we think that dying in production is better,

⏹️ ▶️ Casey somebody many, many, many rungs up the ladder from us may not agree with that

⏹️ ▶️ Casey and I guarantee you the bigger the company, the more – well, in my experience,

⏹️ ▶️ Casey the bigger the company, the happier they are to find a head to chop off and let roll.

⏹️ ▶️ John Well, the big thing is you will not be able to convince them, even if you’re 100% right, because there are many situations

⏹️ ▶️ John where you really are right, and this was like, ignore whether we’re talking about warnings, like this was a legitimate reason. It is

⏹️ ▶️ John actually better that this happened than it not happened. Good luck convincing somebody three levels up in the org chart of

⏹️ ▶️ John that. Even if you are just so right, and that everybody who is a sibling to you in the org chart and below you

⏹️ ▶️ John agrees, and they all sign a petition, and they all get out in the parking lot and say we’re right, the

⏹️ ▶️ John COO or the CTO, and certainly the CEO, you will not convince them. And that’s the harsh world

⏹️ ▶️ John that we live in.

⏹️ ▶️ Marco You know, let me challenge our listeners here. I’m honestly curious. I would like to know,

⏹️ ▶️ Marco if you work at a company that has a big, important

⏹️ ▶️ Marco online infrastructure, Amazon, Google, stuff

⏹️ ▶️ Marco like that, big, important companies where you do things well online

⏹️ ▶️ Marco and it’s really important that they stay up, I’m curious. What is your policy? What is your company’s policy? write us

⏹️ ▶️ Marco on the feedback form anonymously. You can use throwaway Twitter accounts. We don’t need this to be on the

⏹️ ▶️ Marco record. I’m just curious to know, what do the big companies do in reality

⏹️ ▶️ Marco where this stuff really does matter and where they are technically, generally, well-run

⏹️ ▶️ Marco companies?

⏹️ ▶️ John I think at that scale, it’s kind of different because I think Google and Amazon and Netflix and stuff like that

⏹️ ▶️ John have to design for expected failure. So they have to have basically instead of an organism that is like

⏹️ ▶️ John clean and running, they have to make one where cell death is expected. And they just have little busy robots going

⏹️ ▶️ John through and cleaning up the dead cells and stuff. So that is, that’s a little bit different. And I’m thinking of like the medium

⏹️ ▶️ John term ones where you’re not that big, every human in the world is not hitting your server, but it has to be

⏹️ ▶️ John up. It just absolutely has to be like stock trading or banking things, whereas only a few computers

⏹️ ▶️ John in this network and they’re directly hacked into my crazy fiber optic wires. And they’re doing high frequency trading or they’re doing something

⏹️ ▶️ John like that. They’re doing bank transfers. But these three or four computers have to always

⏹️ ▶️ John be up. Otherwise, people lose millions of dollars.

⏹️ ▶️ Marco But again, that’s more reason why you should be really careful what code runs on them and why you

⏹️ ▶️ Marco probably shouldn’t ignore a warning.

⏹️ ▶️ John You’re not ignoring it. We’re just going to run circles. It’s the question of, do you want something that doesn’t necessarily have to be

⏹️ ▶️ John fatal to be fatal or to cause a piece of work to be put into someone’s bin to fix that with a deadline because

⏹️ ▶️ John that’s the policy and so on and so forth. But anyway, people can send us feedback on whatever they think the policy is. I think you’ll be horrified to find

⏹️ ▶️ John that people don’t enable warnings, period, even in development. Forget about ignoring them. They’re not

⏹️ ▶️ John even enabled. Like if we actually took a mass survey, what we’d find out is there would be like warnings. No,

⏹️ ▶️ John we turn those off. Those annoy us.

⏹️ ▶️ Casey Yeah, you’re absolutely right. You’re absolutely right. And the other thing I should point out is that you saying, Marco, that

⏹️ ▶️ Casey you only care – well, I shouldn’t say that. The way you phrased the question was if your livelihood,

⏹️ ▶️ Casey your company’s livelihood is based on some sort of online service or website or whatever. But what

⏹️ ▶️ Casey you’re losing sight of is a lot of times my clients at the job in which

⏹️ ▶️ Casey I work, we oftentimes but not always do like a corporate intranet,

⏹️ ▶️ Casey the same sort of thing that Igloo does. And a lot of times we’re told

⏹️ ▶️ Casey this cannot go down when in reality, nothing will go broken if

⏹️ ▶️ Casey the intranet is down. You know what I mean? So a lot of times from on high, they say, this intranet

⏹️ ▶️ Casey, John will be

⏹️ ▶️ Casey up always. But really it doesn’t matter. And so we have to make decisions

⏹️ ▶️ Casey as consultants based on the requirement from the client even if we think it’s bull.

⏹️ ▶️ Casey And I think that John was alluding to that earlier. And so a lot of times, even if you could say,

⏹️ ▶️ Casey well, it doesn’t really matter if this goes down. A lot of times clients will say, well, it better frigging be up or

⏹️ ▶️ Casey we’re coming and calling you guys and we’re going to be pissed. On a happier note, you want to tell me

⏹️ ▶️ Casey about something cool?

⏹️ ▶️ Marco Yeah, and before, one final thing, sorry. That I think

⏹️ ▶️ Marco that you’re right that for your situation where, you know, if it’s a consulting

⏹️ ▶️ Marco gig where you have to build some system for somebody and then effectively it’s going to have zero maintenance

⏹️ ▶️ Marco for a while, whether that’s weeks or years or decades, like then I think

⏹️ ▶️ Marco that’s a different environment where you expect the software to just tolerate existing

⏹️ ▶️ Marco and whatever upgrades happen on its server, which probably won’t even be a whole lot, honestly, but in

⏹️ ▶️ Marco reality, let’s be realistic here, but, you know, this thing has to operate with no programmer

⏹️ ▶️ Marco intervention indefinitely. Then it’s a different story, right? Then I completely agree that,

⏹️ ▶️ Marco you know, you’re already doing something that’s, by software development standards, pretty bad.

⏹️ ▶️ Marco In that, like, you’re going to have unmaintained software in production use for a long time, right?

⏹️ ▶️ Marco But in reality, that happens all the time. And so you’re right that like, you know, in practice in a lot of places,

⏹️ ▶️ Marco you have to accommodate for that. But that’s typically not the kind of place, as you just said, it’s not the

⏹️ ▶️ Marco kind of place where it’s super important that there be no technical errors,

⏹️ ▶️ Marco you know, all the time. So anyway, all right. We are sponsored. Sorry.

⏹️ ▶️ Marco We are sponsored this week also, once again, by our friends at HelpSpot. Are you still using email clients

⏹️ ▶️ Marco for customer support, Casey?

⏹️ ▶️ Casey I do customer support. I mean, yes,

⏹️ ▶️ Marco yes I am. You’re probably losing track of important tickets. I bet I am. Trying to use Mark as

⏹️ ▶️ Marco on Red as an organizational tool, and I am in coworkers to see who’s working on what. That’s

⏹️ ▶️ Marco ridiculous. It’s time to get organized. Most help desk software tries to be all things to

⏹️ ▶️ Marco all people. Infinite feature creep, these huge complex messes. HelpSpot

⏹️ ▶️ Marco is focused. It deals only with customer inquiries and self-serve knowledge bases.

⏹️ ▶️ Marco There’s no built-in asset management or password resetting or other unnecessary features to get in your way or

⏹️ ▶️ Marco require complex integration work with your application or your infrastructure. Helpdesk software

⏹️ ▶️ Marco is also usually really expensive. A lot of them are like around $600 per user per year, which

⏹️ ▶️ Marco is really high. HelpSpot is just $299 per user once.

⏹️ ▶️ Marco You own it for life. It’s not per month. It is $299 per user one time. You own it for life.

⏹️ ▶️ Marco And there’s no lock-in, you can download the software and host it yourself, or you can have it hosted for you.

⏹️ ▶️ Marco Either way, even if they host it for you, you always have access to the database that you can directly

⏹️ ▶️ Marco query, export, and take elsewhere. HelpSpot is not some new startup. They’ve been available

⏹️ ▶️ Marco for nearly a decade, and they’ve been adopted by thousands of companies and organizations. Customers

⏹️ ▶️ Marco from single-person startups to Fortune 500 companies all use HelpSpot to manage their support teams.

⏹️ ▶️ Marco So you can start a free trial today. Go to helpspot.com slash ATP. And then

⏹️ ▶️ Marco when you’re ready to buy it, if you use coupon code ATP14 for the year of 14, code

⏹️ ▶️ Marco ATP14, we’ll save you $100 off your already very well-priced purchase.

⏹️ ▶️ Marco So thanks a lot to HelpSpot for sponsoring our show once again. Remember, go to helpspot.com slash ATP

⏹️ ▶️ Marco and use coupon code ATP14 for $100 off. So

⏹️ ▶️ Casey here’s the thing that we’re kind of dancing around, and I think it might be time to pull

⏹️ ▶️ Casey the bandaid off.

⏹️ ▶️ John No, I wanted you to do the script notes thing.

⏹️ ▶️ Marco That was I thought that’s what you’re talking about, because it’s perfect. It’s exactly what you’re just talking about.

⏹️ ▶️ John I know what he wants. He wants to solve our methodologies. He always does. We kind of touched on it a little bit, but we don’t

⏹️ ▶️ John have time for script notes. You don’t want to save it to F for F, the second sponsor.

⏹️ ▶️ Casey John, it’s happening. I hate to break it to you. It’s happening.

⏹️ ▶️ John I listened to that Script Notes podcast for nothing.

⏹️ ▶️ Marco Matt, well, so did I. I even listened to the follow-up today, just to make sure I had it done for this episode. Gentlemen,

⏹️ ▶️ Casey relax. This is the way it’s gonna have to be. Daddy Casey has spoken.

⏹️ ▶️ Casey, Marco We are also sponsored this week by Squarespace. You have

⏹️ ▶️ Casey such a shirt.

⏹️ ▶️ Marco Don’t even start. The all-in-one platform that makes it fast and easy to create your own professional website or online portfolio.

⏹️ ▶️ Marco For a free trial and 10% off, go to squarespace.com and use offer code Casey.

⏹️ ▶️ Marco Yay. Squarespace is always improving their platform with new features, new designs, and even better

⏹️ ▶️ Marco support. They have beautiful designs for you to start with, and all the style options you need to create a unique

⏹️ ▶️ Marco website for you or your business. They have over 20 highly customizable templates

⏹️ ▶️ Marco for you to choose from. They’ve won numerous design awards from prestigious institutions, and it’s incredibly

⏹️ ▶️ Marco easy to use and customize. If you want some help, Squarespace has an amazing support team that

⏹️ ▶️ Marco works 24 hours a seven days a week with over 70 employees right here in New York City.

⏹️ ▶️ Marco All of this starts at just $8 a month and includes a free domain if you sign up for a year.

⏹️ ▶️ Marco And you can start a free trial today with no credit card required. It’s a real free trial, no credit

⏹️ ▶️ Marco card. And when you do sign up, use offer code KC for 10%

⏹️ ▶️ Marco off to show your support for our show as well. And one more cool thing, two more cool things actually.

⏹️ ▶️ Marco You know what? I’m going to go all out. Three more cool things. Squarespace has introduced this new thing called

⏹️ ▶️ Marco Squarespace Logo. In addition to building your website, you can now build your own logo for your site, business card,

⏹️ ▶️ Marco shirt, or whatever you want. Also all Squarespace plans now include the

⏹️ ▶️ Marco commerce functionality. You can have a store where you sell physical or digital goods. They have all sorts of great integration

⏹️ ▶️ Marco there. It’s so easy to set up. You can finally have your own online store with very, very

⏹️ ▶️ Marco little effort. It’s really amazing. every Squarespace plan now includes the Commerce functionality at no additional

⏹️ ▶️ Marco charge. And finally, Squarespace is hiring. If you

⏹️ ▶️ Marco interview for an engineering or design position before March 15th, they will invite

⏹️ ▶️ Marco you and your partner to be New Yorkers for a weekend. They will fly you out to New York, put you up in one of the

⏹️ ▶️ Marco city’s best hotels, and give you a long weekend of checking out some of their favorite attractions, cultural

⏹️ ▶️ Marco icons, and restaurants in the city. Squarespace will pick up the entire tab for this awesome trip to New

⏹️ ▶️ Marco York. They’ve been voted one of New York City’s greatest places to work for two years running, so really put them on your shortlist.

⏹️ ▶️ Marco They’re looking to hire 30 engineers and designers by March 15th. So go to beapartofit.squarespace.com.

⏹️ ▶️ Marco That’s beapartofit.squarespace.com to learn more about this cool offer. Thanks a lot to Squarespace

⏹️ ▶️ Marco for sponsoring our show once again. So about the Script Notes episode.

⏹️ ▶️ Casey Don’t even start with me. Are you really going to be that? If you really want me to abandon

⏹️ ▶️ Casey software methodologies, even though it perfectly fits the thread of this episode, you fing b*, then

⏹️ ▶️ Casey we can move on.

⏹️ ▶️ Marco John, what do you think about this episode? God, I hate you

⏹️ ▶️ Casey so much, Marco.

⏹️ ▶️ John Casey, you’ve got to assert yourself. If you want to talk about software methodologies, you can. I would say, though, with the time left in

⏹️ ▶️ John the episode, don’t you think it deserves to be kind of like in the prime spot with more time? I leave it up to—I’m

⏹️ ▶️ John abstaining from this vote. So it’s Casey versus Marco. Decide what

⏹️ ▶️ John we’re going to talk about next. I’m prepared for both. I kind of feel like saw her methodologies is a big enough topic that we wouldn’t

⏹️ ▶️ John want to try to jam into at the end of the show. But I’ll go either way.

⏹️ ▶️ Marco I actually am going to agree with John’s non-vote, which actually is a vote. But I’m going to agree with John’s non-vote

⏹️ ▶️ Marco and say that I I’m not trying to avoid it. I do think it deserves more time than

⏹️ ▶️ Marco this.

⏹️ ▶️ Casey You know, you’re probably right. And God help you trying to edit this episode, because now I’ve

⏹️ ▶️ Casey turned it into a complete cluster.

⏹️ ▶️ Casey, Marco But oh, this

⏹️ ▶️ Marco, Casey is

⏹️ ▶️ Marco all in.

⏹️ ▶️ Marco, Casey Just

⏹️ ▶️ Marco one horn needed. That’s it.

⏹️ ▶️ Marco, Casey It’s all

⏹️ ▶️ Casey in I’m excited about that.

⏹️ ▶️ Casey, Marco This

⏹️ ▶️ Marco is what people tune in for Casey.

⏹️ ▶️ Casey Oh, this is this the show All right So we should probably catch people up on script

⏹️ ▶️ Casey notes as I curse this topic internally Even though it actually is very interesting so

⏹️ ▶️ Casey a lot of people came and told us oh you should really listen to this script notes episode and script notes is a

⏹️ ▶️ Casey Podcast by two screenwriters and I couldn’t even tell you who they are off top my head

⏹️ ▶️ John John August and some other guy

⏹️ ▶️ Marco Thank you. That’s what I knew too, but I wasn’t gonna say that.

⏹️ ▶️ John Yeah, and I only know who John August is because he was on other podcasts that I listened to him. And once

⏹️ ▶️ John I’ve seen his movies, and I like them, and I’m like, oh, he’s the guy who did that. But yeah, I don’t know the other

⏹️ ▶️ John guy. Sorry, other guy.

⏹️ ▶️ Casey Now that other guy knows exactly how I feel. Anyway, so there’s this podcast about screenwriting,

⏹️ ▶️ Casey And apparently the de facto industry standard for screenwriting

⏹️ ▶️ Casey is called – what? What is it called again?

⏹️ ▶️ John Trevor Burrus Final Draft.

⏹️ ▶️ Casey Michael Mishkoff Thank you. I wanted to say Final Cut. Final Draft. And so it’s a screenwriting application and it

⏹️ ▶️ Casey is, like I said, the industry standard. So from what I gather, the screenwriters,

⏹️ ▶️ Casey John August and Casey, we’ll call him, they don’t particularly care for Final Draft.

⏹️ ▶️ Casey Trevor Burrus His name is Craig Mazin. Michael Mishkoff Thank you. So John and Craig don’t really care for Final Draft.

⏹️ ▶️ Casey And they actually – I guess I complained about it in prior episodes, but this past episode at the time

⏹️ ▶️ Casey we record this, they had actually had the CEO of the

⏹️ ▶️ Casey company that makes Final Draft as well as what, a product manager? Is that right?

⏹️ ▶️ Marco Lyle Troxell Product or project, I don’t know the difference. I live in my own little world here with one. Steven Connelly

⏹️ ▶️ Casey Fair

⏹️ ▶️ John, Casey enough.

⏹️ ▶️ John So some other guy. John Green We’ll just call that person long-suffering employee. Right, so that

⏹️ ▶️ Casey other guy. So the

⏹️ ▶️ Casey two of them came on the show, which I really respect, because it was clear from the get-go that this wasn’t going

⏹️ ▶️ Casey to go well for them. And so John and Craig had these

⏹️ ▶️ Casey two other guys on the show and started telling them all the things that they don’t really like

⏹️ ▶️ Casey about Final Draft and why they feel like they’ve been wronged by

⏹️ ▶️ Casey not only the high purchase price of what, $250? Is that right? Something like that. Something like that.

⏹️ ▶️ Casey $250 or so for final draft, but also the slow updates. And it was a really

⏹️ ▶️ Casey fascinating view of both sides of the coin of

⏹️ ▶️ Casey software development, both as the company and the people who create software

⏹️ ▶️ Casey and the people who consume it and how they don’t entirely understand what we go through,

⏹️ ▶️ Casey in the same way that the CEO and the long-suffering employee don’t really understand

⏹️ ▶️ Casey what their customers go through either. And I have some takeaways from this, but let me open the floor

⏹️ ▶️ Casey to you guys and see. Marco, what did you think about all this?

⏹️ ▶️ Marco Well, first, I think, so I listened to the podcast. I

⏹️ ▶️ Marco made my own opinions of it, and I even made a whole post about it. And all that was

⏹️ ▶️ Marco before I had read this follow-up article from,

⏹️ ▶️ Marco there’s a guy named Kent Tessman who writes a competing product

⏹️ ▶️ Marco called, I believe, called Fade In, here we go, and he’s been

⏹️ ▶️ Marco a long-time critic, I gather, of Final Draft, and that’s one of the reasons why he started writing

⏹️ ▶️ Marco his own, because he hated Final Draft so much, so he started writing his own. he’s

⏹️ ▶️ Marco clearly a programmer tech guy but also a film guy and he

⏹️ ▶️ Marco broke down here I’ll put the link in the show notes here he broke down exactly some of the problems

⏹️ ▶️ Marco with with Final Draft technically like for instance that it still

⏹️ ▶️ Marco doesn’t support Unicode like really like major major shortcomings

⏹️ ▶️ Marco and that one of the reasons why why they had so much trouble going Retina

⏹️ ▶️ Marco was not necessarily because it was using carbon because you can do retina with carbon it’s because they were using

⏹️ ▶️ Marco Quickdraw which was deprecated what 20 years ago

⏹️ ▶️ Marco 10 years ago a long time ago at any rate they they’ve built up quite some technical debt

⏹️ ▶️ Marco and and so there’s there’s some problems there it basically seems like

⏹️ ▶️ Marco they wrote this application you know in the 80s and 90s and have not and

⏹️ ▶️ Marco have been kind of sitting on it and not doing the really hard migrations and not

⏹️ ▶️ Marco modernizing all this time and then all of a sudden they were forced to by

⏹️ ▶️ Marco their customers with things like retina and they were forced to suddenly do this quickly and it became a really big thing

⏹️ ▶️ Marco and so it’s a pretty typical story of pretty

⏹️ ▶️ Marco severe technical debt being ignored for way too long. I think what I What

⏹️ ▶️ Marco I got out of the CEO’s comments and attitude was that

⏹️ ▶️ Marco he wants to make all of his problems your problems. And this is something, the reason why

⏹️ ▶️ Marco I think it’s important for developers to hear this is because you can see

⏹️ ▶️ Marco both sides of it. You can see the CEO arguing the business side and the difficulties

⏹️ ▶️ Marco of the business side, and then you can see the customers arguing that, well, your

⏹️ ▶️ Marco business stuff is your problem and it’s not serving us at all, and you’re kind of treating us badly,

⏹️ ▶️ Marco and your product needs a lot of work, and is really stagnant and outdated. So you can see both sides of it, and you

⏹️ ▶️ Marco can kind of see, like, as a programmer, or especially as

⏹️ ▶️ Marco a company owner, if you own your own company or make your own products, you can see how

⏹️ ▶️ Marco you could become that CEO. And it should scare the crap out of you, because that’s a plausible

⏹️ ▶️ Marco outcome for so many software developers.

⏹️ ▶️ John I think developers should listen to this, because people with technical knowledge of both sides

⏹️ ▶️ John of the software industry, or people who like listen to this podcast, or just Mac nerds, or are into

⏹️ ▶️ John the indie development scene, will have the unique experience of listening to a podcast with two

⏹️ ▶️ John camps of angry people, both of whom are just massively wrong at the

⏹️ ▶️ John, Marco fundamental

⏹️ ▶️ John level about the major points of their arguments. Like, the customers are wrong about like, your product should be

⏹️ ▶️ John free, and how hard is it to do this? And like, you know, from the outside, they think everything is easy, and they think everything

⏹️ ▶️ John should be free, and Apple gives away the OS for free, why can’t you give away Final Draft for free? Like, they’re just

⏹️ ▶️ John so out of left field. Like, you know where they’re coming from, but it’s like, man, they have no idea whether your app is your software.

⏹️ ▶️ John And as Markle pointed out, the CEO is being defensive in ways that are

⏹️ ▶️ John not appropriate for his job as a software, like it’s his job to figure out a way to keep your software

⏹️ ▶️ John up to date, to sell it, you know, those are all your problems. You have to figure out a way, that’s called

⏹️ ▶️ John being a software entrepreneur. Like, you have to figure that stuff out. You can’t throw it back in customers’ faces and say,

⏹️ ▶️ John you don’t realize it’s really hard to do this. And it’s clear that the CEO doesn’t have a lot of technical knowledge, so he doesn’t even know

⏹️ ▶️ John the detail things. Like, I felt like I wanted to jump into the podcast and explain to each one of them why they’re

⏹️ ▶️ John positioned, why they’re both wrong. You customers, look, things can’t be free and you’re crazy, and let me explain

⏹️ ▶️ John why your reasoning is wrong. And you CEO, you don’t even know why this is hard, but it is really hard. And if you had a clue how hard it

⏹️ ▶️ John was, you would have started on these transitions years and years ago. And yes, they might have destroyed your company, but

⏹️ ▶️ John look how many other companies have been left in the wake of not being able to keep up with the changes in OS X and iOS.

⏹️ ▶️ John Like, that’s your job. But you want to be a big boy in the software world? It’s not easy. Like, the best

⏹️ ▶️ John example is something like BBEdit, which started on classic Mac OS. And it has had to go through. It’s so similar, because it’s a text editor.

⏹️ ▶️ John It had to go through all these things. They had QuickDraw. They had to get rid of that. They were carbon. They had to find a way

⏹️ ▶️ John to go on modern OS X. They had to adopt Unicode. They went through, like, they

⏹️ ▶️ John used to do, like, AtSuite and Core Text and whatever the hell. They’ve gone through multiple different

⏹️ ▶️ John underlying text engines. You have to do that, otherwise you’re dead. And if some other nimble

⏹️ ▶️ John competitor who doesn’t have your legacy concerns makes a new application, and the only reason you’re staying successful is because you’re

⏹️ ▶️ John an entrenched interest or whatever, we’ve all seen this play out a million times. So those

⏹️ ▶️ John two camps of people were just both angry, both talking past each other, and just both fundamentally

⏹️ ▶️ John wrong about their complaints about the other person.

⏹️ ▶️ Marco Oh yeah, and you can’t have an app that has a code base. You can’t

⏹️ ▶️ Marco write an app in 1990 and still be around in 2014

⏹️ ▶️ Marco and not have to have gone through a few really painful transitions in that time.

⏹️ ▶️ John Unless you coast on like, well, we’re just so entrenched, we’re the big gorilla, we can afford to, like, even if you do that, your time,

⏹️ ▶️ John you have a longer timer, but it’s still a timer because like, eventually your app doesn’t launch anymore. And you’re like, well, now

⏹️ ▶️ John I guess it’s the time we have to move away from Quick Draw. It’s like, nope, sorry, too late, now you’re dead. Like, I don’t think Final Draft is in that

⏹️ ▶️ John situation yet because they are such an entrenched interest. Hell, look at Adobe, look how long it took them. we mentioned this last

⏹️ ▶️ John show, look how long it took them to go cocoa. The only reason they can get away with that is because they’re photoshop. You know, we are

⏹️ ▶️ John photoshop. We are the image editor. We ate up all the other ones. You know, we bought Macromedia or whatever, like,

⏹️ ▶️ John and even then, like, eventually the OS is like, no, seriously, you gotta be 64 bit. You gotta be cocoa,

⏹️ ▶️ John right? Like, even then they’re forced to upgrade. But yeah, the final cut,

⏹️ ▶️ John the CEO didn’t understand, doesn’t seem to understand what his what his company does or should

⏹️ ▶️ John be doing. Like what is, how does, what does your company do? We sell and maintain a

⏹️ ▶️ John software application. Like that’s a dynamic business. You can’t just keep making the same thing

⏹️ ▶️ John and like expect. I don’t know, expect everyone else to do your job for you and

⏹️ ▶️ John to make it so that you don’t have to, your company doesn’t have to do the hard things. I don’t know.

⏹️ ▶️ Casey Yeah. And there were some quotes in this that the only a handful that I’d like to quickly go

⏹️ ▶️ Casey over that just really stuck out to me. So

⏹️ ▶️ Casey one of them – and actually, John, you already quoted it – was, well – and this is John

⏹️ ▶️ Casey and Craig – well, Apple gives an entire operating system away for free.

⏹️ ▶️ Marco No, that wasn’t them. That was the CEO citing that as a problem that they have. Yeah.

⏹️ ▶️ John No, I think it was – I think it was the CEO pointed out to them that they make money from selling the phones. I think

⏹️ ▶️ John it was the the the complaining customers who say but if it wasn’t the OS it was something

⏹️ ▶️ John about like look how cheap Software is like software has been devalued therefore your thing

⏹️ ▶️ John should be $1 or free It’s like selling it telling Adobe that Photoshop should be free or like 10 cents because

⏹️ ▶️ John Angry Birds is 10 cents

⏹️ ▶️ Marco well to be fair They they were not complaining that final draft is

⏹️ ▶️ Marco not free They from what I gather they were complaining twofold both that it

⏹️ ▶️ Marco is not a high enough quality product to be worth the high price anymore and that

⏹️ ▶️ Marco the upgrades are not worth the upgrade price because of how little progress is made

⏹️ ▶️ Marco relatively speaking in each upgrade. That would that seem like their bigger complaint not that the app should be free or very

⏹️ ▶️ Marco very cheap. It seems like they’d be very happy to pay the $250 for the app if it was

⏹️ ▶️ Marco a better

⏹️ ▶️ John app. Well but even then they want to pay $250 ten years ago and never pay again and just

⏹️ ▶️ John continually have the app updated. I didn’t get that impression. I don’t- I definitely got that impression that that’s like- Yeah,

⏹️ ▶️ John I did not. I think that I got the impression that they would have hated to spend $250 way back when,

⏹️ ▶️ John and then they just want that app to work forever and to continue to be updated with the OS and to get

⏹️ ▶️ John Retina and to get Unicode support and everything all for free. They seem to have an entitlement

⏹️ ▶️ John complex that was not proportional to the value that they’re

⏹️ ▶️ John deriving from the software. And it was kind of like compounded by the fact that this is crappy software that hasn’t been updated, so

⏹️ ▶️ John they feel burned by any amount of money they put towards it. Like, it’s mostly because they have resentment.

⏹️ ▶️ John Like they feel like they have to have this program because like everybody uses it. I think that’s the that’s the core of their dissatisfaction

⏹️ ▶️ John is like, it’s like an abusive relationship with like, well, you have to get final draft because everybody uses

⏹️ ▶️ John final draft. And then you’re already bitter at this thing. And if it’s not the most amazing program that you that does everything

⏹️ ▶️ John perfectly, then you’re just gonna be pissed when anything is wrong with it. there seems to be a lot wrong with this program.

⏹️ ▶️ Casey Yeah, I think Marco is right though that I don’t think they were embittered necessarily about paying

⏹️ ▶️ Casey for it. It just seems that they thought that it was an order of magnitude too expensive.

⏹️ ▶️ Casey And I’m making numbers up, I’m putting words in their mouth, but instead of $250, it should be $100 upfront for

⏹️ ▶️ Casey the first release and like 20 bucks for every supplementary release. And additionally, I think they were extremely

⏹️ ▶️ Casey embittered that these upgrades or updates, they called them, were a heck

⏹️ ▶️ Casey of a lot of money. And even I would probably agree to this a heck of a lot of money for really not that much update

⏹️ ▶️ Casey and retina was cited several times. I think they said it was like $100 for the retina

⏹️ ▶️ Casey upgrade update, whatever it was,

⏹️ ▶️ John it was like 80 bucks or something. And like, maybe I’m crazy. But if it was it was an application that I use

⏹️ ▶️ John for my livelihood, I would pay $2 for an upgrade. Like I wouldn’t blink at that. Because

⏹️ ▶️ John like, say you are use Photoshop to do your work, you’re a graphic artist, and a Photoshop update comes

⏹️ ▶️ John out and And the only upgrade in it is that the UI is retina and a couple of bug fixes. And it’s $80 for the upgrade.

⏹️ ▶️ John I mean, I would pay it. Wouldn’t any of you pay it?

⏹️ ▶️ Casey Yeah. I mean, I suppose I would.

⏹️ ▶️ John Like, maybe we have different, I guess we probably value software differently because we kind of know what goes into it.

⏹️ ▶️ John But it’s not like it’s like $50,000. I mean, it’s not a site license to some

⏹️ ▶️ John CAD program. Like, they just don’t know. That’s

⏹️ ▶️ John why I think they’re getting used to the world where everything is like cheaper free. And, but it’s like, but this is part of your livelihood.

⏹️ ▶️ John This is how you make money. And I think it all gets back to, it’s because they don’t like this tool. They feel like they’re forced to use it. If they had

⏹️ ▶️ John their choice, they would use something different and better. And it’s like, if you’re going to force me to buy

⏹️ ▶️ John it, and then now suddenly I’m not happy. But like, say you hated Photoshop and you needed it for your work.

⏹️ ▶️ John Like, it’s like, say you hate Microsoft Word and you have to get it because you deal with stupid people all day who insist that you send them everything in doc format,

⏹️ ▶️ John right? Then you’d be pissed that the only, You’ve got to do like an $80 upgrade to

⏹️ ▶️ John Office for, and the only change was that it was Retina and compatible with Mavericks. Then you’d be pissed, but

⏹️ ▶️ John you’re mostly pissed because you hate Word so much that any money you put towards continuing this charade of having to

⏹️ ▶️ John use this program on behalf of other people, like that’s where I feel like they’re coming from.

⏹️ ▶️ Casey I think it’s that, but it’s also that what was once a decent product has stagnated.

⏹️ ▶️ Casey The impression I got, and I’ve never used Final Draft, but the impression I got was that it was

⏹️ ▶️ Casey at one point a good thing. Like what they were saying about how based on the length of the PDF

⏹️ ▶️ Casey or the printed document, you could take a guess at about how long the script was. That was very cool and apparently

⏹️ ▶️ Casey something that at least the CEO seemed to think that was unique to them. Well, anyways,

⏹️ ▶️ Casey the product started pretty solid and pretty good but kind of never really went anywhere.

⏹️ ▶️ Casey And these two guys, John and Craig, were, for example, really embittered that it took so long

⏹️ ▶️ Casey to get retina support in there. And then on top of that, they got charged for it. And so they were saying to the

⏹️ ▶️ Casey CEO, you knew this was coming. You knew this was coming. How did you not figure this out? How did you not do it? And

⏹️ ▶️ Casey at first, I was like, well, you know, it’s hard. I still don’t have my fast text

⏹️ ▶️ Casey update out for iOS 7 because I’m a slacker and I have better things to do with my time. But you know, I can understand that.

⏹️ ▶️ Casey Well, then the CEO says, and this is another one of my quotes, you know, well, we’re 40 people. And I think

⏹️ ▶️ Casey to myself, OK, so how did you not get Retina done with 40 people?

⏹️ ▶️ Casey But then later on, he says, well, but 10 to 15% of us are programmers. What the hell is

⏹️ ▶️ Casey everyone else doing?

⏹️ ▶️ John Sales and marketing. The best part was when he said, well, you know how we learned about RedNet? Someone

⏹️ ▶️ John brought a computer into the office and showed it to us. If that’s how you learned about RedNet, it shows you’re not engaged

⏹️ ▶️ John with the platform on which you deploy your software. Like in even trivial, you don’t even subscribe to

⏹️ ▶️ John Macworld. Like you do nothing. You know, forget about going to WWC, which of course you should do if

⏹️ ▶️ John your job is that you write a software product for the Mac for crying out loud, right?

⏹️ ▶️ John Yeah, this was kind of depressing. Like the CEO, like he did himself and his company a disservice

⏹️ ▶️ John by coming on this program and saying all these things. Because every word out of his mouth was, like Marco said, it’s like

⏹️ ▶️ John the answer to every single one of his comebacks was like, that’s your problem. That’s not my problem. Like, you

⏹️ ▶️ John know what I mean? It may be that the natural way of things is that you’ve now painted yourself into a technical corner, and you must

⏹️ ▶️ John go out of business. And it will be a blessing for the industry because we can all give our money to these other hungrier developers

⏹️ ▶️ John who, if they’re unlucky, will go through the exact same cycle as you. Get big, become popular, not update their software

⏹️ ▶️ John for a decade, crumble under their own weight, and the cycle will continue. But that’s not your customers’

⏹️ ▶️ John problems in any way, shape, or form. And so, I guess he doesn’t have people telling him,

⏹️ ▶️ John don’t go onto a program and tell… Even when your customers are actually wrong about everything should be free,

⏹️ ▶️ John and all this stuff, you can’t go onto a program and tell them about all your woes,

⏹️ ▶️ John And they’re gonna go, oh, well now, I guess maybe he was hoping for empathy, like

⏹️ ▶️ John that they would put themselves into his shoe as the non-technical CEO of a company that

⏹️ ▶️ John made terrible strategic decisions for the past decade and go, oh, well now I feel bad for you, it’s all right, I feel better about

⏹️ ▶️ John buying

⏹️ ▶️ John, Marco your software.

⏹️ ▶️ Marco I mean, and one thing, I noticed, Casey, you have this in the notes, and so I might as well bring it up now.

⏹️ ▶️ Marco One of the more interesting parts of this dynamic, I thought was that

⏹️ ▶️ Marco the CEO opened the conversation basically by saying that they’ve

⏹️ ▶️ Marco done surveys and I believe it was 92% of the of the people

⏹️ ▶️ Marco said that they are very happy with Final Draft and therefore they think they’re doing great and and like that’s so

⏹️ ▶️ Marco flawed on so many levels and and they and and and John and Craig briefly

⏹️ ▶️ Marco mentioned like well you know that’s like that’s only people who responded to the survey, which is

⏹️ ▶️ Marco obviously going to be mostly people who like you, or you know, like, it’s that’s so

⏹️ ▶️ Marco not a random sample of what people think of your product. And the CEO’s entire

⏹️ ▶️ Marco attitude seemed to just be that, well, we keep hearing from people

⏹️ ▶️ Marco who like it, and therefore, everything’s fine. And we don’t have like, his attitude from the very beginning was,

⏹️ ▶️ Marco we’re fine, because some people like us, and therefore, we don’t need to make any changes at all. And it’s so

⏹️ ▶️ Marco easy for people to fall into that trap if you know if you select what you’re listening

⏹️ ▶️ Marco to and and I’ve I’ve never seen this app and even I know

⏹️ ▶️ Marco everyone hates it. Like I’ve know I’ve heard about this app for four years now

⏹️ ▶️ Marco of about how much people hate this in random you know edge conversations here and there. And

⏹️ ▶️ Marco not even being the business I know people hate it that obviously that’s a pretty widespread problem.

⏹️ ▶️ Marco And it’s so easy to surround yourself only by the inputs

⏹️ ▶️ Marco that you want to believe. I’m sure there’s a term for that. It’s so easy to fall

⏹️ ▶️ Marco into that, that this guy honestly, I think he honestly thinks that

⏹️ ▶️ Marco everything’s fine, that he’s in complete denial of any major problems, and therefore that’s,

⏹️ ▶️ Marco I think, why he was so weirdly defensive and aggressive in his responses.

⏹️ ▶️ John I don’t know if I really believe that he was sincere that he really believed that but like it’s possible because the denial is

⏹️ ▶️ John pretty strong but I think the reason you’ve heard about it and I have as well even though we’re not screenwriters is because we travel in software

⏹️ ▶️ John development circles and anybody who knows anything about software can look at this application and you can you can smell like the

⏹️ ▶️ John death on it or you know like even if even if you don’t know it’s using quickdraw you’re like oh geez

⏹️ ▶️ John this program has not been updated for a while like you see old I haven’t again I have no idea how this looks but I bet we could pick up like

⏹️ ▶️ John it’s using older controls when it should be using newer ones Like maybe for a long time, the text wasn’t properly

⏹️ ▶️ John anti alias or looks like it was rendered differently because it’s quick draw and like, you know, just, we could tell that there are

⏹️ ▶️ John problems with it. Uh, and the reason I think he may be right. If you took

⏹️ ▶️ John a random sampling of their customer basis, because their customer base are not technical people. And they view this as kind

⏹️ ▶️ John of like, especially if you, since it’s such an institution, they view it as if you want to become a screenwriter,

⏹️ ▶️ John this is what you get, and this is the tool you deal with and everyone complains about it. But like,

⏹️ ▶️ John you know, you might as well complain about the weather because to do your job, you have to use final draft in the same way that you might say you have to use

⏹️ ▶️ John Photoshop. If you’re a graphic designer, you just you know, there’s no no other choice out there.

⏹️ ▶️ John But they’re non technical people. So they’re not equipped to, to understand what’s wrong with this program

⏹️ ▶️ John and why and they’re more willing to accept that like whatever’s wrong with it, like what, that’s just the way it is, what can you do?

⏹️ ▶️ John So in that respect, they may have good server responses. But the thing that makes me think of in the worst

⏹️ ▶️ John case scenario is I will bet you in 2007, 2008, 2009, maybe even 2010, if you were to survey

⏹️ ▶️ John all BlackBerry users, they would say they love their BlackBerrys. It doesn’t matter. BlackBerry rim is still doomed,

⏹️ ▶️ John right? You could think, oh, the people who have BlackBerrys love it. It’s like, yes, but the time has passed it by

⏹️ ▶️ John and customers may have it and may love it and maybe Stockholm syndrome or they maybe not know better, but like from

⏹️ ▶️ John the outside, we all can see bye-bye BlackBerry.

⏹️ ▶️ Casey Yeah, and the other thing that I found interesting about this and it’s the only other quote that I

⏹️ ▶️ Casey that I want to bring up is apparently there was a feature called they called a collaborator,

⏹️ ▶️ Casey which I guess was some sort of collaborative writing thing where you can work on a

⏹️ ▶️ Casey screenplay. Two people can work on screenplay at the same time.

⏹️ ▶️ Marco So I’ll be that. Yes, it sounded a lot like that.

⏹️ ▶️ Casey Yeah, that’s a very, that’s a very good analogy. analogy. And so they said, and this should be pretty much verbatim,

⏹️ ▶️ Casey collaborator was built when it was on a peer to peer technology with no security. It would

⏹️ ▶️ Casey still work like that today. What they were saying was when they built this feature

⏹️ ▶️ Casey that was designed to be used between two people, probably not co-located,

⏹️ ▶️ Casey they did it without even thinking about firewalls. And

⏹️ ▶️ Casey I, unless they wrote it in 96, are you kidding me? Like, how is that okay?

⏹️ ▶️ Casey And that just completely sealed the deal in my mind that-

⏹️ ▶️ John Screenwriters don’t have firewalls, Casey. You think they have IT departments? They’re lonely people in their apartments with

⏹️ ▶️ John dial-up internet connection, slaving away on the next great script.

⏹️ ▶️ Casey And every router since 2001 hasn’t included a firewall in it. But- Yeah,

⏹️ ▶️ John he wouldn’t know about this stuff anyway, if he was talking about it. But yeah, but yeah.

⏹️ ▶️ Casey And that’s the thing is, I mean, that is such an obvious technical hurdle that you you would have

⏹️ ▶️ Casey to get over to do that kind of feature. And they shipped it, at least

⏹️ ▶️ Casey for a little while, and I guess they’ve pulled it since, they shipped it without even thinking about that. Like, how

⏹️ ▶️ Casey is that possible? It just reminds me that there are terrible software developers

⏹️ ▶️ Casey out there. Or if these developers are good, just unbelievably, indescribably out of touch

⏹️ ▶️ Casey management, or both.

⏹️ ▶️ John If I was on that podcast, I would have also brought up the meta point, which is that the screenwriting format

⏹️ ▶️ John is ridiculous and anachronistic and really deserves

⏹️ ▶️ John to be destroyed and torn down. And it is held aloft by the collective, you know, by tradition.

⏹️ ▶️ John Basically, this is the way it’s always done. This is what a screenplay looks like. Let me tell you about all the great qualities of it.

⏹️ ▶️ John Oh, you can always tell exactly how long a thing will be in minutes by looking at the number of pages. It’s always a certain number of pages every day.

⏹️ ▶️ John Everyone knows that like it can continue to be held aloft by that, like sort of oral tradition

⏹️ ▶️ John and indoctrination of new people into the industry that this is what a screenplay looks like, but the format is dumb.

⏹️ ▶️ John It is not like it’s a it’s a monospace font. It’s formatted crazily. Lots of things are in all caps.

⏹️ ▶️ John And everyone who enters the industry and everybody gets used to it comes to like it and will not accept any other format.

⏹️ ▶️ John But bottom line, objectively, wipe out all the people who have ever seen a screenplay, show them this

⏹️ ▶️ John for show the new people this format, they’ll be like, like it is it is not of this time, it is of a different

⏹️ ▶️ John time of a time of typewriters and monospace fonts and all caps and not, you know, it’s dumb.

⏹️ ▶️ John And so what the best, the ideal thing to happen for the entire industry would be to not

⏹️ ▶️ John only for final draft to be disrupted, but for the entire screenplay format to be replaced by something

⏹️ ▶️ John better. I have dim hopes of that ever happening because if there’s any group of people who is not, not raring for,

⏹️ ▶️ John you know, amazing disruption innovation, it’s, it’s screenwriters in the entertainment industry. They just want their format.

⏹️ ▶️ John They do want it to be the way it is. They just want slightly better tools to work on it and they will consider that a victory but

⏹️ ▶️ John from the outside It’s clear that the screenplay format is stupid

⏹️ ▶️ Marco well and to be fair in the follow-up episode of their podcast John and Craig did address

⏹️ ▶️ Marco that a little bit and talking about things like how the one page per minute thing is this kind of

⏹️ ▶️ Marco Elementary assumption that you know, it’s like it’s like three paragraph essay. You’re taught in middle school It’s you know, it’s like

⏹️ ▶️ Marco it’s a very basic thing that you know in in practice once you get once you’re a real professional

⏹️ ▶️ Marco It doesn’t really, it’s not that simple or it’s not necessary to rely on things, you know,

⏹️ ▶️ Marco assumptions like that or these tenets like that. And there’s also this thing called Fountain, which from what I

⏹️ ▶️ Marco gather is like a Markdown like or Markdown based plain text format

⏹️ ▶️ Marco that does away with manual pagination and stuff like that. And so it does sound like they are actually moving forward.

⏹️ ▶️ Marco And the problem really seems to be that Final Draft

⏹️ ▶️ Marco is not. because Final Draft has this position of power right now,

⏹️ ▶️ Marco where, or at least they have to date, where they were

⏹️ ▶️ Marco the standard, and they have their own file format, and they’re relying

⏹️ ▶️ Marco on these invariants that, okay, well, pagination matters above all else and

⏹️ ▶️ Marco all this other stuff, and the reality is that industry is being disrupted

⏹️ ▶️ Marco just like so many other technical industries, where now there’s

⏹️ ▶️ Marco a whole lot of other apps coming out, some of them cheap and terrible, but some of them good,

⏹️ ▶️ Marco that are doing things in a more modern way. And that’s the problem.

⏹️ ▶️ Marco Just like so many other industries, I don’t think Final Draft

⏹️ ▶️ Marco is going to be disrupted and replaced by one thing. I think it’s going to end up being

⏹️ ▶️ Marco disrupted and replaced by a few standards, and then a few different apps that read and write those standards.

⏹️ ▶️ Marco And it seems like this fountain format is probably going to be that standard. But again,

⏹️ ▶️ Marco I think it’s funny now all three of us are talking about something we all know nothing about.

⏹️ ▶️ John Yeah, we’re going to get all the email people explaining the various features of the screenplay format that were created intentionally

⏹️ ▶️ John for a specific reason. And I’m sure the formatting and the layout and everything had a purpose originally,

⏹️ ▶️ John but some aspects of it are clearly just artifacts of the technology that was available at the time, specifically,

⏹️ ▶️ John the all caps, the monophase spot, the layout being done basically by a a series of spaces with the monospace

⏹️ ▶️ John font. All those things are done because that’s what you had. That’s how you weren’t going to typeset it like a book because

⏹️ ▶️ John that’s not efficient for the production process. You need people to be able to type these things up. It’s kind of the same way that you see

⏹️ ▶️ John the opening parentheses used to make ASCII art, to make the little boxes on the front of legal documents. Marco

⏹️ ▶️ John must be familiar with this phenomenon. The fact that that’s still… It doesn’t really matter as much in legal documents. It’s like, whatever,

⏹️ ▶️ John lawyers, everything they do is all made up and crazy with their legal language and everything. plays could benefit

⏹️ ▶️ John from a format that took advantage from of modern technology. Keep all the good stuff about the old format in terms of

⏹️ ▶️ John visually blocking out things with white space and making it easy for actors to read and all you know, all I don’t I’m just making

⏹️ ▶️ John up what the features may be of the format. There are probably good things about the format, but the bad things are just being

⏹️ ▶️ John carried along like those parentheses on legal documents and they just they’re just ridiculous at this point.

⏹️ ▶️ Casey All right.

⏹️ ▶️ Marco Thanks a lot to our three sponsors this week picture life, help spot, and Squarespace

⏹️ ▶️ Marco and we will see you next week.

⏹️ ▶️ John And if you’re into Twitter, you can follow them at

⏹️ ▶️ Marco C-A-S-E-Y-L-I-S-S. So that’s Casey Liss, M-A-R-C-O-A-R-M,

⏹️ ▶️ Marco and T. Marco Armin, S-I-R-A-C-U-S-A

⏹️ ▶️ Marco Syracuse.

⏹️ ▶️ John It’s accidental. They didn’t mean to. Accidental. They didn’t mean

⏹️ ▶️ John to, accidental, take my cast so long.

⏹️ ▶️ John Someday Casey,

⏹️ ▶️ John, Casey someday. I cannot

⏹️ ▶️ Casey believe I let you railroad me.

⏹️ ▶️ John Well, the script notes is timely, but no, I abstained. So it was you and Marco could have worked that

⏹️ ▶️ John amongst yourselves. If Casey had insisted, I would have gone along with it.

⏹️ ▶️ Marco He didn’t really abstain.

⏹️ ▶️ John I did. I gave my opinion, but I am abstaining from the vote. What I was trying to convince

⏹️ ▶️ John Casey was that not getting it done today does not mean it will never get done. And in fact, it may be

⏹️ ▶️ John done better in the future. But he still could have insisted, and I would not have opposed him.

⏹️ ▶️ Marco Why don’t we just do it next week? We’ll say right now, next week will be software methodologies. And nothing will

⏹️ ▶️ Marco happen. Bold statement.

⏹️ ▶️ John Nothing, yeah. When Apple buys Nintendo, we won’t talk about it at all.

⏹️ ▶️ Casey Oh, God. Now you’ve jinxed it, and we’ll never talk about it ever. This podcast will end.

⏹️ ▶️ John If it results in Apple buying Nintendo, your sacrifice will have been noble.

⏹️ ▶️ Casey You saying that we will do it next week, whether or not you’re serious, has pretty

⏹️ ▶️ Casey much absolutely prevented that from happening ever. That’s

⏹️ ▶️ Casey the equivalent of saying, oh, this will be a short show.

⏹️ ▶️ Marco If Apple buys Nintendo and there’s no John Syracuse podcast to talk about it, did it really happen?

⏹️ ▶️ John Yeah, this is my third podcast in like three days. I did an incomparable,

⏹️ ▶️ John I did Command Space, now we’re doing this. I’ll have to just take a rest to get ready for

⏹️ ▶️ John the big Nintendo announcement.

⏹️ ▶️ Marco I hate you two. I know.

⏹️ ▶️ John And we didn’t even talk about driving with glass. That was another Remarco topic.

⏹️ ▶️ Marco Yeah, I mean, is there that much more to say on it?

⏹️ ▶️ John I just wanted to say that I have looked into this zero amount as is my way for this show, But

⏹️ ▶️ John what I assumed when I saw the headline of that story flying by on Twitter was that they were only lobbying to allow

⏹️ ▶️ John you to wear it in the car. Like for example, if you get it with prescription lenses and you need them to see you to drive, they didn’t want it. They

⏹️ ▶️ John wanted to make it illegal. So you didn’t want it to be illegal for you to merely wear them.

⏹️ ▶️ John I didn’t think they were lobbying for it to be legal for you to have it turned on and using it. But since I

⏹️ ▶️ John didn’t read any of these articles, I have to say, I don’t know. Did you did you read them and you can tell me?

⏹️ ▶️ Marco I don’t think we know to that much detail. Hell, might as well address this here.

⏹️ ▶️ Marco I’ve mainly heard mostly support of my position, and briefly

⏹️ ▶️ Marco my position is that for Google to actively lobby against

⏹️ ▶️ Marco states that want to prohibit glass use while driving,

⏹️ ▶️ Marco I think that’s incredibly irresponsible by Google. And I

⏹️ ▶️ Marco think it’s pretty much all reasonable people agree that texting while driving is

⏹️ ▶️ Marco dangerous and should be prohibited and certainly avoided.

⏹️ ▶️ Marco People will do it anyway, but I think even the people who do it know that it’s unsafe and wouldn’t really

⏹️ ▶️ Marco argue that strongly that it was safe. And I think texting while driving

⏹️ ▶️ Marco and using Google Glass are pretty close. I don’t think there’s a huge difference

⏹️ ▶️ Marco in safety in a car between doing those two things. I don’t think one is dramatically more

⏹️ ▶️ Marco safe than the other. It’s both like it’s engaging your visual attention

⏹️ ▶️ Marco in a way that you have to interact with a multi-step process with a computer system

⏹️ ▶️ Marco where you’re not looking at the road.

⏹️ ▶️ John Well, actually, now that I’ve thought about it for the five minutes that you’ve talked, what about if

⏹️ ▶️ John they are envisioning something like the HUD on your M5?

⏹️ ▶️ Marco There are arguments that people have made that say things like, well, this is just like looking at a nav screen,

⏹️ ▶️ Marco or it’s just like looking at a heads-up display. And I think the difference is that,

⏹️ ▶️ Marco you know, first of all, nav screens and heads-up displays are designed very, very carefully and conservatively

⏹️ ▶️ Marco to be, like, maximally safe, and also to minimize how long

⏹️ ▶️ Marco you have to look at them in ideal cases. Some of them go as far to be like, you can’t

⏹️ ▶️ Marco even, like, some of them won’t even let you enter an address in navigation if you’re moving, for instance. Like there’s all

⏹️ ▶️ Marco sorts of safety things that car systems use to either prevent or discourage you

⏹️ ▶️ Marco from using it very irresponsibly. Things like how DVD players, like sometimes there’ll be

⏹️ ▶️ Marco these DVD players that can play video in the front seat, but you can only technically play it while you’re parked. And yeah,

⏹️ ▶️ Marco some people will hack that and disable it, but there’s all these things in place for things that are

⏹️ ▶️ Marco installed in cars, especially things that come stock from the manufacturers. all these safeties in place

⏹️ ▶️ Marco to to try to make them as non-distracting as possible and

⏹️ ▶️ Marco like a heads-up display displaying your speed well that’s you know that’s no

⏹️ ▶️ Marco more distracting than a speedometer you don’t have a lot of reasons to like stare at that for a while

⏹️ ▶️ John well what if the heads-up display in your glass was showing nav overlaid on the street in front of you

⏹️ ▶️ Marco if that is what it’s showing that’s fine but I think again this is like a human

⏹️ ▶️ Marco nature human behavioral kind of thing, the reality is like we’ve banned

⏹️ ▶️ Marco in most places we’ve banned handheld use of cell phones. Now you could also say

⏹️ ▶️ Marco well what if you’re using the cell phone in your hand looking at a navigation screen and

⏹️ ▶️ Marco that’s in places where handheld cell phone use is banned that’s banned. And I think this is one of those

⏹️ ▶️ Marco cases where you know the reason why that’s banned is that yeah maybe you might be doing that

⏹️ ▶️ Marco but there’s also a very good chance that a lot of people who do that are also going to like, you know,

⏹️ ▶️ Marco send a quick text. It’ll just take a second. You know, like, and there’s all this potential for these

⏹️ ▶️ Marco multi-purpose general computing systems, like smartphones, like Glass. There’s all this potential

⏹️ ▶️ Marco for misuse. And misuse is so easy and so common that

⏹️ ▶️ Marco they should probably ban it outright because they know that, like, yeah, you might be using it for navigation,

⏹️ ▶️ Marco but there’s a pretty good chance you’re not. Or there’s so many other things to do with it that aren’t navigation that,

⏹️ ▶️ Marco you know, in reality people would like be reading a text message or dictating a message

⏹️ ▶️ Marco or reading Twitter or reading an email that just came in or like there’s so many potential abuses

⏹️ ▶️ Marco there and it is so much more distracting than the in-car systems because

⏹️ ▶️ Marco you’re like interacting with a computer at that point. It’s a multi-step interaction. You’re like

⏹️ ▶️ Marco visually engaging it in a way that it’s non-trivial and takes more than a split second of your attention

⏹️ ▶️ Marco And so I do think there’s a significant difference there. And

⏹️ ▶️ Marco some people have also said, oh, well, what if glass is, what if you can wear it, but you have to keep it

⏹️ ▶️ Marco off? Again, same thing. You can’t tell from the outside whether

⏹️ ▶️ Marco it’s on or off. So a lot of people would just sneak by and say, oh, well, you know what? I’m just going to leave it on because I’m

⏹️ ▶️ Marco responsible. I’ll be OK. And that’s a problem, too.

⏹️ ▶️ John That’s why I would like to know what Google was lobbying for. Basically, were they lobbying for you are allowed to wear it, but it has to be off versus

⏹️ ▶️ John you’re allowed to wear it and use it

⏹️ ▶️ John, Marco like

⏹️ ▶️ Marco I’m pretty sure it was the latter I’m pretty sure they didn’t distinguish between on and off that they just wanted you to be able to wear

⏹️ ▶️ John it yeah well like I think Google’s bet and I think they’re right on this bet is that augmented reality as they call it

⏹️ ▶️ John is probably the future of more or less everything but I think you’re right that if that is the future everything

⏹️ ▶️ John we are unfortunately going to have to wait for it to be built into cars because then it will be more

⏹️ ▶️ John or less single-purpose and even if it’s the exact same technology the exact same kind of display where

⏹️ ▶️ John like overlays the nav on top of the street in front of you and shows you where you should turn with a little arrow. Like you can imagine lots of really

⏹️ ▶️ John cool features, like, because I think that is actually safer than looking down at an app screen, like to see the little arrow in your

⏹️ ▶️ John little picture of your car going. If you could just continue to look out the window and it just looked like a little red line was painted

⏹️ ▶️ John on the road turning to the right, that’s safer. And I think that is definitely coming. If that comes from your glasses

⏹️ ▶️ John though, chances are good, even if you have like a driving mode and if the glasses have to be certified

⏹️ ▶️ John by like the Highway Association, like it’s so much safer when it’s built into the car,

⏹️ ▶️ John A, because car technology moves so slowly that they’re super conservative or everything sucks there anyway. And B, if it’s built

⏹️ ▶️ John into the car, the car maker is extremely motivated to make sure that you can’t read texts on it. Right.

⏹️ ▶️ John The car maker could not ship

⏹️ ▶️ Marco that. And they’re more reliable with that kind of stuff. You could plausibly

⏹️ ▶️ Marco sue the car maker for designing a very distracting system a lot more easily than you could sue Google for

⏹️ ▶️ Marco making a, you know. Right. Because

⏹️ ▶️ John it’s built into the car. Google is going to say, you shouldn’t have been doing that while you’re driving. But you’re like, if it’s built into the car,

⏹️ ▶️ John You’re gonna say but you put it in the car exactly and that’s why that that’s why you can’t enter the address when you’re moving Because the car

⏹️ ▶️ John makers like if we allow them to do this, they will they’ll crash and they’ll sue us

⏹️ ▶️ Casey What it’s worth I can actually read text messages on my iDrive in my BMW

⏹️ ▶️ John like on the screen

⏹️ ▶️ John, Casey Mm-hmm.

⏹️ ▶️ John Well, you should crash into something and sue BMW and get a better car. I

⏹️ ▶️ Casey Just wanted to point that out real quick, I’m sorry Marco go

⏹️ ▶️ Marco Alright, so part of my position on this was a pretty severe condemnation,

⏹️ ▶️ Marco saying like, you know, if Google is actively lobbying for

⏹️ ▶️ Marco something that I believe is pretty clearly very unsafe for driving, and

⏹️ ▶️ Marco car accidents are no joke. Car accidents are a serious

⏹️ ▶️ Marco problem. So many people get injured or die in car accidents. And

⏹️ ▶️ Marco for the most part, and you know, things that we pay a lot of attention to, like plane crashes and terrorism,

⏹️ ▶️ Marco like that end up killing way fewer people than car crashes. Car crashes are a big problem.

⏹️ ▶️ Marco It’s a really big deal. And car safety should really be taken very, very seriously

⏹️ ▶️ Marco and not at all lightly and not at all recklessly. And so for Google to actively

⏹️ ▶️ Marco lobby against car safety, basically, to actively lobby for

⏹️ ▶️ Marco their own self-interest in a way that’s pretty clearly unsafe in general

⏹️ ▶️ Marco use for cars. People are probably going to die as a result of that.

⏹️ ▶️ Marco And if Google Glass becomes really popular, which it probably won’t in all

⏹️ ▶️ Marco honesty, but suppose it does. Imagine how big of a problem that will be

⏹️ ▶️ Marco and how many people might unnecessarily die because Google fought safety legislation.

⏹️ ▶️ Marco That’s a really serious, that’s serious. You know, that’s not a joking matter at all. So a lot of people

⏹️ ▶️ Marco said, well, isn’t Apple at fault for people texting while

⏹️ ▶️ Marco using their phones and crashing? And no, that’s a completely different situation because

⏹️ ▶️ Marco Apple has not, to my knowledge, actively fought against anti-texting laws.

⏹️ ▶️ Marco And if they have, let me know. I would love to know that. But that is not at all the same thing

⏹️ ▶️ Marco and it’s not comparable. You know, it’s obviously

⏹️ ▶️ Marco manufacturers on both sides of this weirdly political debate, manufacturers

⏹️ ▶️ Marco on both sides can potentially do more to prevent people from using their phones while driving.

⏹️ ▶️ Marco You know, now you can think, okay, well, Apple has this new M7 processor that can supposedly detect

⏹️ ▶️ Marco when you’re in a car. It probably can’t detect whether you’re driving or a passenger, but it can detect

⏹️ ▶️ Marco when you’re in a car, maybe show some kind of warning or something. there are things they could do, but

⏹️ ▶️ Marco they’re not actively fighting against safety legislation. And that,

⏹️ ▶️ Marco I think, puts a very different type of action on it. What Google is doing, I think, is

⏹️ ▶️ Marco actively harmful, whereas the inability to try to prevent people

⏹️ ▶️ Marco from texting in a car is… Inaction is not

⏹️ ▶️ Marco as bad as actively harming safety actions, I think.

⏹️ ▶️ John Well, Google’s also in the position to potentially bring the largest safety increase in car

⏹️ ▶️ John transportation ever, which was through their self-driving cars. Assuming that continues the pace and does not

⏹️ ▶️ John fade away and they continue to be successful with it, I’m not saying that balances out, like therefore

⏹️ ▶️ John you’re allowed to do something that’s going to kill more people now. That’s a bad idea. But like historically

⏹️ ▶️ John speaking, if history goes out, everyone will forget that briefly they killed a bunch

⏹️ ▶️ John of people with Google Glass. I think what they’re thinking is in the Google Glass is

⏹️ ▶️ John that they also believe that augmented reality is the future. Just look at that crazy whatever that was, that thing with the phone

⏹️ ▶️ John thing that maps out the rooms and everything like the tech for doing that augmented reality stuff is getting better and better all the time. It’s going to be everywhere.

⏹️ ▶️ John And Google was like, if we wait for the car makers to do this, it will take forever to get here and it will be crappy. And all of that is true.

⏹️ ▶️ John But I think they just have to like, the alternative is they should either make their own car with this

⏹️ ▶️ John built in, hey, buy Tesla, go nuts, like have a go at it. But trying to put it

⏹️ ▶️ John into a general purpose computing device that you wear on your face, A, you have to get everyone to wear that stuff on your face, and B,

⏹️ ▶️ John like, they would have to sign up for all of the sort of liability type concerns that the car

⏹️ ▶️ John makers do in terms of regulation and everything, and like, they’re not prepared to do that.

⏹️ ▶️ John They want the freedom to do whatever the hell they want, and just don’t bother us, because eventually we’re

⏹️ ▶️ John going to get to this awesome augmented reality that’s coming eventually anyway, and we’re going to get there first because we can move faster.

⏹️ ▶️ John And that’s playing a little bit fast and loose with people’s lives, I agree.

⏹️ ▶️ Marco And that also seems like almost a childish and naive…

⏹️ ▶️ Marco That’s Google for you. Exactly. Exactly.

⏹️ ▶️ John That’s the problem. It’s like… Well, that’s what we love about… That’s what I love about Google. Like, the self-driving cars

⏹️ ▶️ John is the same type of thing. That’s what we love about it, but at the same time, it gets them into that. That’s why

⏹️ ▶️ John I always think of Google’s corporate mindset not as evil, more as like

⏹️ ▶️ John a naive hacker type of, you know, like denizen of Reddit, like technology is cool.

⏹️ ▶️ John We can do cool things with technology. And let’s just go do that cool things because it’s cool. And let’s not think too

⏹️ ▶️ John much about the consequences or whether it will make money or anything like that. You know, that’s what we love, both love

⏹️ ▶️ John and hate about Google.

⏹️ ▶️ Casey All right. Titles.

⏹️ ▶️ Marco Go to fail.

⏹️ ▶️ John How’s the title not go to fail? Someone put it in all caps. This isn’t basic.

⏹️ ▶️ Marco Haven’t you seen the code?

⏹️ ▶️ John Oh, yeah, that’s one point. We didn’t address about the go to thing that I wanted to address. All the people who have never seen a C program

⏹️ ▶️ John or a Unix C program are like, GoTo, who uses that? If you are a C programmer,

⏹️ ▶️ John and you’ve come from the old, like, just look at the source code, your favorite units, look at BSD, look at Linux

⏹️ ▶️ John or whatever, you’ll find GoTo everywhere because they didn’t really have exceptions. And they,

⏹️ ▶️ John if the control flow necessary with lots of nested ifs, to get you out of

⏹️ ▶️ John an if you end up having to make like flag variables and really contorted logic, GoTo is actually

⏹️ ▶️ John the cleanest solution in those situations where you want to get out of the normal flow of the program and go

⏹️ ▶️ John down to it, you know, or you could do set jump or whatever you want. But goto is the idiom, believe it

⏹️ ▶️ John or not. I know the only thing you’ve heard about programming is that goto is evil because there’s a paper that you never read that

⏹️ ▶️ John got passed around the internet 10 years ago. But

⏹️ ▶️ John, Marco look at any

⏹️ ▶️ John real C source code and goto is there and it’s used for exactly this purpose and it has all

⏹️ ▶️ John these same problems. This is not what the paper about goto was against really, but you can see

⏹️ ▶️ John goto does contribute to this anti-pattern. But that’s why newer, better languages

⏹️ ▶️ John have

⏹️ ▶️ Marco exceptions. Yeah, and the go-to is there’s things like break and continue in a loop that

⏹️ ▶️ Marco I would argue break and continue, especially break, that’s really not

⏹️ ▶️ Marco a whole lot cleaner than go-to if you think about it. What?

⏹️ ▶️ John But if you have very contorted logic, you have a condition and then a condition and a condition and you want to break

⏹️ ▶️ John all the way out of it, then even break doesn’t save then you just end up with flag variables, and it makes the code incomprehensible.

⏹️ ▶️ Marco The people who read up the function a little bit and saw the type of the variable, OSStatus,

⏹️ ▶️ Marco pretty sure if you knew what that was, you were not surprised to see the go-to. I think that’s like if you’ve

⏹️ ▶️ Marco been around old C APIs long enough, you’ve probably seen that. And

⏹️ ▶️ Marco it’s a typical thing where it’s like you call a bunch of API calls, and if they return 0, everything’s

⏹️ ▶️ Marco cool. And if they return non-zero, something bad happened. And so if you want to do this

⏹️ ▶️ Marco eight-step process, where you have to call these eight different API functions, and you have to have error check and code around

⏹️ ▶️ Marco every single one of them, and say if any of these return non-zero, fail. That’s what this was. That’s

⏹️ ▶️ Marco exactly what this was. And fail, in this case, like the fail

⏹️ ▶️ Marco label didn’t mean it has failed. The fail label was the destination of where

⏹️ ▶️ Marco to jump to if it had failed, which is basically like, go to the end. Like,

⏹️ ▶️ Marco go to the end of this logic block. That’s what it was.

⏹️ ▶️ John That’s another Objective-C thing that we could have talked about in the Copeland 2010 show, is that it’s a convention

⏹️ ▶️ John in basically Cocoa, not so much Objective-C, but Cocoa, to not use exceptions for control flow. Is that correct?

⏹️ ▶️ John Yeah. Yeah.

⏹️ ▶️ Marco I mean, in Objective-C, objections by policy and

⏹️ ▶️ Marco the API norm, exceptions are not meant to happen

⏹️ ▶️ Marco in running code most of the time. It’s not meant to be control flow. They’re meant,

⏹️ ▶️ Marco like, you’re probably not meant to catch an exception in Objective-C. Right.

⏹️ ▶️ John And it’s not like so much a language feature as it is an API convention, but still, that type

⏹️ ▶️ John of thing leads you to these, like, the tedium of, you know,

⏹️ ▶️ John write param error conditions, you know, where you pass an address to some error thing that’s going to fill that, or return

⏹️ ▶️ John values where it’s some status, whether it’s OS status or any other type of thing. That type of thing

⏹️ ▶️ John is seen as slightly barbaric in languages that

⏹️ ▶️ John do expect you to use exceptions for flow control, and then of course there’s the pathological

⏹️ ▶️ John case of checked exceptions and all the Java crap, and it can go too far in the other direction as well. I

⏹️ ▶️ John would put that on the list of things that Objective-C, that other languages do differently, that people

⏹️ ▶️ John find cumbersome and tedious and error-prone, and lead to these type of situations where you

⏹️ ▶️ John find yourself needing a go-to

⏹️ ▶️ Marco as far as I know in my objective C code I’ve written so far insta paper bug

⏹️ ▶️ Marco shot the magazine and overcast I don’t think I’ve ever written a try-catch block I think I’ve

⏹️ ▶️ Marco always made exceptions blow up the whole thing

⏹️ ▶️ John yeah cuz in cocoa they’re not you’re not you’re not supposed to like exception is supposed to be exceptional like that that’s the

⏹️ ▶️ John policy is that it’s not for control flow it’s not just to get me out of this nested block it’s like something has

⏹️ ▶️ John gone wrong and maybe the but you can put a dialogue and exit your app or do something like that, but you’re not supposed

⏹️ ▶️ John to use it as a form of flow control, even though I assume you can if you wanted to.

⏹️ ▶️ Marco It’s more like an assertion failure in

⏹️ ▶️ Marco, John Objective-C.

⏹️ ▶️ Marco That’s how you’re more supposed to use it. In fact, I think assertion failures might even throw exceptions. I don’t remember

⏹️ ▶️ Marco exactly, but anyway.

⏹️ ▶️ Marco, John All right,

⏹️ ▶️ Marco, Casey titles.

⏹️ ▶️ Marco Titles.

⏹️ ▶️ Casey GoToFail is obvious. I’m not against it.

⏹️ ▶️ John A lot of podcasts, I think, are going to have that title this week, though, so we might to avoid it so we can be cool

⏹️ ▶️ John so we can be cool I added ish everything is relative.