Transcript

[00:00] Here in Seattle, there’s a little park [00:01] hidden away at the edges of Queen Anne. [00:04] There’s a lookout at the top with one of [00:05] the best views of the city. To get back [00:07] down, there’s a paved switchback path [00:09] that winds gently down the hillside. [00:12] It’s thoughtful, well-designed, people [00:14] use it. [00:15] But I’ve never taken it all the way [00:17] before. If you look to your left, you’ll [00:19] notice something. [00:21] You’ll see a thin dirt path going [00:23] directly down the hill where thousands [00:25] of people decided that this would be an [00:27] easier way. In a lot of ways, it’s [00:30] worse. It’s steeper. It’s more [00:32] dangerous. You’ll get dirt on you. But [00:35] the worst path just keeps on winning. A [00:37] programmer named Dick Gabriel noticed [00:39] that the same thing was happening in the [00:41] field of computer science back in 1989. [00:45] He called it worst is better and then [00:47] spent the next 30 years arguing with [00:49] himself about it. And that’s why, and I [00:51] do mean this literally, C++ won because [00:54] of New Jersey. This is the world’s most [00:57] famous third-rate computer scientist. [01:00] And no, I’m not calling him that myself. [01:02] This is how Dr. Gabriel chooses to [01:04] describe himself. And yes, that is his [01:07] real LinkedIn picture. I really I really [01:09] like it. That’s a mood right there. [01:11] Respect. Anyway, Gabriel was a Lisp guy, [01:15] but like really a Lisp guy. Gabriel [01:17] worked on the Common Lisp standard, and [01:20] he based his entire company on creating [01:22] Lisp IDEs for Sun hardware. So he spent [01:26] the majority of his career betting on [01:28] the fact that Lisp would eventually win [01:31] in the end, but then watching it not [01:33] win. And in the middle of all this, he [01:35] sat down and wrote a talk. Buried inside [01:38] of that paper is a small section that’s [01:40] called worst is better. And he didn’t [01:43] even think that was the main point of [01:44] the paper, and he didn’t even really try [01:46] to get the paper published. The only [01:48] reason that the paper ended up [01:50] resurfacing is because one of his [01:52] employees at Lucid ended up finding the [01:56] paper inside of his files and started [01:58] sharing it around. And fun fact that [02:00] that employee went on to be one of the [02:02] creators of Netscape. Pretty flowers. [02:06] This paper quickly became kind of the [02:08] golden standard in software engineering [02:11] for, you know, {quote} why the right [02:13] thing keeps on losing. And this is a [02:16] point that has been argued for 35 years [02:18] and counting, including by the creator [02:20] himself on two different sides. What’s [02:24] crazy is that just a few months later [02:26] Gabriel actually wrote another paper [02:29] under a fake pseudonym that it was a [02:31] complete rebuttal to his original point. [02:34] For Bucky, I think I’m saying that [02:36] right, computer scientist, author of [02:39] worse is better is worse. Seems a little [02:42] familiar, huh? [02:44] But what’s crazy is that after that, he [02:47] ended up writing a third essay comparing [02:50] which of the two past Gabriels had [02:53] actually been right. And he named this [02:55] is worse really better, and he never [02:57] decided. I’d like to join the debate [03:00] that’s been going on longer than I’ve [03:01] been alive, but honestly at this point, [03:04] even I’m not really sure what the right [03:06] answer is. And it just became such a [03:08] thing with Gabriel that even his own [03:10] employees started to get, and I quote, [03:13] seriously concerned that he might have a [03:15] mental disease. The problem really came [03:17] down to the difference in software [03:19] philosophies between the two coasts of [03:21] the United States. So that’s right, it’s [03:24] an East Coast versus West Coast type [03:26] thing, and weirdly enough a battle [03:29] between MIT and New Jersey. There are [03:31] two philosophies for writing software in [03:34] the United States. And these two [03:35] philosophies are just completely [03:37] incompatible with each other, and they [03:39] can’t even agree on the definition of [03:41] what good actually is. So on one hand [03:44] you have the MIT style, and this is the [03:47] style that Gabriel called the {quote} [03:50] right thing. It’s really simple, Just [03:52] design the perfect program, make the [03:55] interface easy to use and simple to call [03:58] no matter how complicated the underlying [04:00] implementation actually is. And above [04:03] all, every single time, no matter how [04:05] long it takes, make it correct. Just 200 [04:08] mi apart in another building over in New [04:11] Jersey, we have Bell Labs and they had a [04:13] flurry of activity around Unix. Now, the [04:16] Unix philosophy was keep the [04:19] implementation simple. It doesn’t matter [04:21] if the interface is ugly because the [04:23] users basically just going to have to [04:25] deal with it. And as for correctness, [04:28] well, eh, correctness can come later. [04:30] The important part is just get it out. [04:33] Now, I’m not making this up, but Gabriel [04:36] used to say, and I quote, “Well, what do [04:38] you expect from an operating system [04:40] designed and implemented in New Jersey?” [04:42] >> [laughter] [04:45] >> And over the years, this kind of morphed [04:48] into this East Coast versus West Coast [04:50] philosophy. Berkeley ended up choosing [04:53] the New Jersey style of software [04:55] engineering and that combined with the [04:57] kind of ship it fast culture of Silicon [04:59] Valley ended up making the West more [05:02] culturally New Jersey, while the East [05:04] Coast ended up veering more towards an [05:07] academic form of software engineering. [05:09] As much as he hated it, Gabriel argued [05:11] that New Jersey style was better. Not [05:14] the software, the software he thought [05:16] was trash, but trash spreads faster. [05:20] According to him, it’s better to get [05:22] half of the right thing available so [05:24] that it spreads like a virus. That’s [05:26] exactly what Unix did. And just as [05:28] importantly, that’s exactly what C did. [05:31] It was easy to port and could run on [05:34] garbage hardware. And Gabriel said that [05:37] those two were the ultimate computer [05:39] viruses. And keep in mind, he’s saying [05:41] all of this while he’s betting his [05:43] entire company on the MIT philosophy. [05:48] So, why does the worst thing always win? [05:51] Why does everybody end up taking the [05:52] crummy dirt path instead of the nice [05:54] smooth paved switchbacks? Well, there’s [05:57] one specific technical decision, and [05:59] it’s one of the cleanest parts in the [06:01] entire essay. It takes the entire East [06:03] Coast versus West Coast debate and [06:06] summarize it into one single dilemma. [06:08] Programmers call it the PC load sharing [06:10] problem. I know PC doesn’t mean personal [06:13] computer in this context, it means [06:14] program counter. Imagine it’s the 1980s, [06:17] and you write [music] a program and [06:18] you’re waiting for some data, maybe from [06:20] the network or something. But wait, [06:22] something happened. Holy guacamole, the [06:24] user accidentally resized their [06:26] terminal. Interrupt sigwinch, sigwinch. [06:29] I’m actually not joking, by the way, [06:31] because if you were using graphical Unix [06:33] back in the ’80s, then window resizing [06:36] could actually mess you up because the [06:38] processor has to just completely drop [06:40] whatever it’s doing to be able to handle [06:42] the new incoming notification. In the [06:44] lovely MIT way, the OS just handles all [06:47] of this for you. Saves the state of the [06:50] program counter, does what it needs to [06:51] do, then resumes your program, and [06:54] nobody’s the wiser. Meanwhile, in the [06:56] second approach, if you’re working on [06:58] Unix-based systems, you’re absolutely [07:00] screwed. Over in New Jersey, Bell Labs [07:02] was like, [07:03] “Backing up the program counter would [07:05] make the OS like really complicated, so [07:07] I think we’re going to let the [07:08] programmers deal with that one.” [07:12] So, then you would get thrown this error [07:13] code like e enter, and the OS would just [07:16] be like, “I have no idea what to do. You [07:19] need to deal with this one.” [07:21] This is a book on coffee, by the way. [07:24] >> [laughter] [07:25] >> I don’t think we’re going to find our e [07:26] enter signals in here. Espresso signals. [07:30] And if you think this is just some [07:32] ancient 1980s history, it’s not. The [07:35] ghost of New Jersey is still with us [07:37] everywhere we go today. [07:40] For example, if you take a look at the [07:42] Git source code, then you’ll see all of [07:44] these e-enter handlers all over the [07:46] place. Let’s say, for example, you do a [07:49] Git clone, and then in the middle of [07:51] that you decide to resize your terminal [07:53] window. [07:54] We still have this exact same problem in [07:57] 2026. Isn’t it kind of crazy to just [07:59] think if I just go like this? On the [08:02] back end, your system is completely [08:03] freaking out right now. It’s like, [08:06] >> [laughter] [08:07] >> So, you might be thinking like, “Hmm, [08:09] maybe the MIT philosophy has a few [08:11] points to it.” But, none of that [08:13] mattered because the entire point of [08:16] Gabriel’s essay is essentially the best [08:18] way to guarantee your software’s failure [08:22] is to make it 100% correct, which brings [08:25] us to the ultimate contagion, C++. Now, [08:28] just to be clear, I love C++. So much so [08:31] that I’m actually giving a talk coming [08:33] up soon in the UK talking about some [08:35] runtime reflection techniques for C++. [08:39] But, it’s also really clear that a lot [08:40] of people really hate C++. And both the [08:44] success of the language and that hatred [08:47] of the language come from the same [08:50] thing. And this is what Dr. Gabriel [08:52] calls New Jersey. Turns out, Bjarne [08:54] Stroustrup is a pretty smart guy. And [08:57] fun fact, I’ve actually met him in [08:58] person before. But, the question you [09:00] have to ask yourself is, do you want to [09:02] be correct or do you want to win? Now, [09:05] object-oriented languages were this hot [09:06] new concept. For his PhD, Bjarne worked [09:09] with a language called Simula, and [09:12] Simula was the first object-oriented [09:14] language ever created. It was clean, [09:17] elegant, beautiful, also unusably slow. [09:21] So, nobody really used it like out of [09:23] side of academia. And remember, Bjarne [09:25] was literally at Bell Labs in New [09:28] Jersey. And so, he was given a crazy [09:31] open-ended task. Do something [09:33] interesting and give us a presentation [09:35] in a year. What would I do with that [09:37] task? [09:38] >> [laughter] [09:39] >> I don’t know what I would do. It’s [09:40] interesting to think about. [09:43] I think I would uh [09:45] come up with You know those pianos that [09:48] are like on the ground that you like [09:50] move your feet on? [09:52] I do that, but it’s a keyboard, so you [09:54] can program, but you also can get [09:56] exercise at the same time. It’s just [09:58] like [09:59] It’s [laughter] just [10:01] It’s just like really slow. You’re like [10:04] if [10:05] >> [laughter] [10:06] >> bracket [10:08] else [10:11] done. There’s a world-changing decision [10:14] right here, because he could either take [10:16] Simula, redesign it from scratch, and [10:19] create a new beautiful language that [10:22] runs on modern hardware, or he could [10:24] take fast, ugly C, and basically bolt on [10:27] object orientation on top of it, and try [10:30] to maintain as much backwards [10:31] compatibility as possible. In his own [10:33] book, Bjarne wrote that the cleaner [10:35] language he could have built would have [10:37] been an unimportant cult language, and [10:40] he decided that the only way to get a [10:42] really large amount of existing C [10:44] programmers to try out a new [10:46] object-oriented language would be to [10:48] allow them to compile their existing C [10:51] code directly in C++ unchanged. In fact, [10:55] his first compiler, Cfront, wasn’t even [10:57] a full compiler in the traditional [10:59] sense. It didn’t output machine code [11:02] directly. What it did is it took C++ [11:05] code and translated it over to C code so [11:08] that existing C compilers could then [11:10] handle the rest of it. But the absolute [11:13] genius of this is that means that C++ [11:16] could run wherever C could already run [11:19] without any kind of porting, and C ran [11:21] everywhere. What’s funny is that Gabriel [11:24] ends up kind of calling out this point [11:26] inside of his essay, and he says, “Half [11:29] the computers that that at any point are [11:31] worse than the median, smaller or [11:33] slower. Unix and C work fine on them, [11:36] which means Unix and C are easy to port, [11:38] which means that C++ is the ultimate [11:41] virus. Meanwhile, 3,000 mi away in [11:44] California, Gabriel’s working on the [11:46] committee for object-orientation in [11:48] Lisp, and almost nobody ends up using [11:51] it. Now, Gabriel understood the hardware [11:54] problem really well because, if you [11:56] remember with his company Lucid, his job [11:59] was basically to take Lisp and make it [12:02] run on cheap Sun workstations rather [12:04] than, you know, $70,000 [12:06] Lisp machines. But, it wasn’t enough. [12:09] Even cheap Lisp was too much of an ask [12:11] for everybody so far entrenched inside [12:14] of the C mindset. And, in the craziest [12:17] twist of fate ever, his company Lucid [12:20] actually ended up writing an IDE for C++ [12:23] called Energize just to keep the lights [12:25] on. You’ve got the man writing the essay [12:27] on why the worst thing always wins [12:30] working at a company now that is [12:32] shipping out the worst thing just to [12:34] stay afloat. And, this is all because of [12:37] some decision that another guy made at a [12:40] lab in New Jersey. So, yeah. C++ won [12:43] because of New Jersey. If you asked [12:45] Gabriel what his official stance is [12:47] right now in 2026, I’m actually not [12:50] really certain what he would say because [12:52] he never really officially decided on [12:55] his previous stances. You’ve got his [12:57] second essay written under a fake name, [12:59] his third essay arguing the previous two [13:02] essays that he created, and then a [13:04] fourth essay came out in 2000 where he [13:07] decided that maybe the quote-unquote [13:09] right thing was the correct decision all [13:11] along. I also highly encourage you to [13:13] read his papers on dreamsongs.com. [13:16] He’s also a highly accomplished poet and [13:19] writer as well. For what it’s worth, [13:20] Bjarne has said before that there are [13:22] two kinds of programming languages in [13:24] the world, the ones that people complain [13:26] about and the ones that nobody uses, [13:29] which is kind of like the entirety of [13:31] Gabriel’s essay summed up by the man who [13:33] ended up winning. And it is kind of a [13:36] tricky problem. If I think back about [13:38] that dirt path that I cut through on my [13:40] way home, I’m not sure who’s winning [13:43] either. If you like this kind of [13:44] content, don’t forget to subscribe, [13:46] >> [music] [13:46] >> and think about it. Whose side are you [13:48] on? Do you believe that the worst option [13:50] is the better option, or do you think [13:52] that the right option is the best [13:55] decision? [music] [13:56] Thanks so much for watching everyone. [13:57] Lori Wired out.