<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[The Peterman Post]]></title><description><![CDATA[Sharing learnings from the transparent career stories of technical people, written by an ex-software engineer @ Instagram

]]></description><link>https://www.developing.dev</link><image><url>https://substackcdn.com/image/fetch/$s_!645l!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5381e1ae-726f-45da-ae2c-21f0a14a3336_1280x1280.png</url><title>The Peterman Post</title><link>https://www.developing.dev</link></image><generator>Substack</generator><lastBuildDate>Fri, 30 Oct 2026 19:39:24 GMT</lastBuildDate><atom:link href="https://www.developing.dev/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Ryan Peterman]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[ryanlpeterman@gmail.com]]></webMaster><itunes:owner><itunes:email><![CDATA[ryanlpeterman@gmail.com]]></itunes:email><itunes:name><![CDATA[Ryan Peterman]]></itunes:name></itunes:owner><itunes:author><![CDATA[Ryan Peterman]]></itunes:author><googleplay:owner><![CDATA[ryanlpeterman@gmail.com]]></googleplay:owner><googleplay:email><![CDATA[ryanlpeterman@gmail.com]]></googleplay:email><googleplay:author><![CDATA[Ryan Peterman]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Brian Kernighan: Inside Bell Labs, The Best Programmer, Why C Won]]></title><description><![CDATA[Brian Kernighan is the former Bell Labs technical staff member, co-author of the original C book, and the guy behind &#8220;Hello World.&#8221; We talked about what Bell Labs was like, how he ended up there as a grad student, and what it was like working somewhere with no deadlines and a lot of smart people.]]></description><link>https://www.developing.dev/p/e072-brian-kernighan</link><guid isPermaLink="false">https://www.developing.dev/p/e072-brian-kernighan</guid><dc:creator><![CDATA[Ryan Peterman]]></dc:creator><pubDate>Mon, 26 Oct 2026 13:05:38 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/222111295/fc9b3c0cc0de3da09dc4fa7b32b8df21.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p><a href="https://en.wikipedia.org/wiki/Brian_Kernighan">Brian Kernighan</a> was one of my most consistently requested guests and so I was excited to have him on the podcast.</p><p>He&#8217;s a former Bell Labs member of technical staff, co-author of the original C book, and the one who popularized &#8220;Hello World.&#8221; I interviewed him for all of his stories around the legendary place and the folks that worked there.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!sAmE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdeafb46-3404-4c62-b43a-77a99202aa72.svg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sAmE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdeafb46-3404-4c62-b43a-77a99202aa72.svg 424w, https://substackcdn.com/image/fetch/$s_!sAmE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdeafb46-3404-4c62-b43a-77a99202aa72.svg 848w, https://substackcdn.com/image/fetch/$s_!sAmE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdeafb46-3404-4c62-b43a-77a99202aa72.svg 1272w, https://substackcdn.com/image/fetch/$s_!sAmE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdeafb46-3404-4c62-b43a-77a99202aa72.svg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sAmE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdeafb46-3404-4c62-b43a-77a99202aa72.svg" width="286" height="401.89285714285717" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cdeafb46-3404-4c62-b43a-77a99202aa72.svg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2046,&quot;width&quot;:1456,&quot;resizeWidth&quot;:286,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;The C Programming Language - Wikipedia&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The C Programming Language - Wikipedia" title="The C Programming Language - Wikipedia" srcset="https://substackcdn.com/image/fetch/$s_!sAmE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdeafb46-3404-4c62-b43a-77a99202aa72.svg 424w, https://substackcdn.com/image/fetch/$s_!sAmE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdeafb46-3404-4c62-b43a-77a99202aa72.svg 848w, https://substackcdn.com/image/fetch/$s_!sAmE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdeafb46-3404-4c62-b43a-77a99202aa72.svg 1272w, https://substackcdn.com/image/fetch/$s_!sAmE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdeafb46-3404-4c62-b43a-77a99202aa72.svg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I also did some extra digging for this interview to come up with some interesting tidbits to discuss. For instance, I found a post where someone used modern hardware to break the old encryption scheme they used back in the day. I read his old password back to him in the interview.</p><p>I brought my gear and traveled to his office at Princeton. You can tell I shot it myself because my angle is out of focus for a large part of the episode. I figured out a better way to self-monitor after this episode so hopefully it doesn&#8217;t happen again. Hope you enjoy the episode!</p><p>Check out the episode wherever you get your podcasts: <a href="https://www.youtube.com/watch?v=sMllOlxVgD0">YouTube</a>, <a href="https://open.spotify.com/episode/2yb6snndxGuhBJUGEUx39i">Spotify</a>, <a href="https://podcasts.apple.com/us/podcast/the-peterman-pod/id1777363835">Apple Podcasts</a>.</p><div id="youtube2-sMllOlxVgD0" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;sMllOlxVgD0&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/sMllOlxVgD0?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h1>Timestamps</h1><p><a href="https://www.developing.dev/i/222111295/0042-what-bell-labs-was-and-how-he-got-hired">00:42 - What Bell Labs was and how he got hired</a></p><p><a href="https://www.developing.dev/i/222111295/0634-why-so-many-inventions-came-from-bell-labs">06:34 - Why so many inventions came from Bell Labs</a></p><p><a href="https://www.developing.dev/i/222111295/1415-a-day-in-the-life-at-bell-labs">14:15 - A day in the life at Bell Labs</a></p><p><a href="https://www.developing.dev/i/222111295/2755-the-most-impressive-people-he-worked-with">27:55 - The most impressive people he worked with</a></p><p><a href="https://www.developing.dev/i/222111295/3350-the-at-t-film-explaining-unix">33:50 - The AT&amp;T film explaining Unix</a></p><p><a href="https://www.developing.dev/i/222111295/3946-why-c-was-so-influential">39:46 - Why C was so influential</a></p><p><a href="https://www.developing.dev/i/222111295/4325-how-awk-was-created">43:25 - How awk was created</a></p><p><a href="https://www.developing.dev/i/222111295/4840-what-he-misses-most-about-bell-labs">48:40 - What he misses most about Bell Labs</a></p><p><a href="https://www.developing.dev/i/222111295/5410-are-llms-bad-for-computer-science-education">54:10 - Are LLMs bad for computer science education</a></p><p><a href="https://www.developing.dev/i/222111295/010146-his-1972-commit-in-the-go-repo">01:01:46 - His 1972 commit in the Go repo</a></p><p><a href="https://www.developing.dev/i/222111295/010343-grace-emlen-the-fake-bell-labs-employee">01:03:43 - Grace Emlen, the fake Bell Labs employee</a></p><p><a href="https://www.developing.dev/i/222111295/010739-why-he-writes-so-many-books">01:07:39 - Why he writes so many books</a></p><p><a href="https://www.developing.dev/i/222111295/011958-his-favorite-and-least-favorite-languages">01:19:58 - His favorite and least favorite languages</a></p><p><a href="https://www.developing.dev/i/222111295/012428-advice-for-students-and-young-people">01:24:28 - Advice for students and young people</a></p><h1>Transcript</h1><h3>00:42 &#8212; What Bell Labs was and how he got hired</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=42">00:42</a>] Could you explain what <a href="https://en.wikipedia.org/wiki/Bell_Labs">Bell Labs</a> was and what is the story behind you getting a job there?</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=55">00:55</a>] So <a href="https://en.wikipedia.org/wiki/Bell_Labs">Bell Labs</a> was like the research arm of <a href="https://en.wikipedia.org/wiki/AT%26T">AT&amp;T</a>. It was founded in, I think, 1923, &#8216;25, something like that. <a href="https://en.wikipedia.org/wiki/AT%26T">AT&amp;T</a> at that point was growing. It had absorbed a bunch of the local telephone companies across the whole country, and they realized that they just needed to understand things better so that they could improve service. So they set up a research operation, which was called <a href="https://en.wikipedia.org/wiki/Bell_Labs">Bell Telephone Laboratories</a>.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=83">01:23</a>] It was in New York on West Street, and people did all kinds of things related to improving telephony. In 1963, something like that, in the early &#8216;60s, they basically moved the whole operation to New Jersey, northern New Jersey, a place called Murray Hill, near Summit and things like that. So call it 25 miles west of New York City. And that was a big operation. There were probably 3,000 people in one connected set of buildings doing research in all kinds of things.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=122">02:02</a>] Physics, semiconductor physics, devices like that, chemistry, optical fiber kinds of things, just all sorts of research. And then more on the soft end, there was mathematics and increasingly there was computers, computer-related things as they gradually came to the realization that computing was gonna be part of the future in some way or another. In the summer of 1966, I was a grad student here at Princeton, but I got an internship at MIT in Cambridge working in Project MAC, which was basically the <a href="https://en.wikipedia.org/wiki/Multics">Multics</a> project.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=159">02:39</a>] And so I used <a href="https://en.wikipedia.org/wiki/Compatible_Time-Sharing_System">CTSS</a>, that first original timesharing system, done by Fernando Corbat&#243; and friends, to develop software for the <a href="https://en.wikipedia.org/wiki/Multics">Multics</a> system, which was just starting up. And that was a lot of fun. I enjoyed it. I&#8217;m not sure I ever did anything that was very useful, but part of it was then the next year I got an internship at <a href="https://en.wikipedia.org/wiki/Bell_Labs">Bell Labs</a> in Murray Hill. So I was still a graduate student, and that would be roughly the third year here, I got this internship at <a href="https://en.wikipedia.org/wiki/Bell_Labs">Bell Labs</a>, and that was a lot of fun.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=198">03:18</a>] And I worked there, I worked actually with Doug McIlroy for the summer, came back here, continued to stall on doing my thesis work, which I guess is what one does. And then I got another internship in the summer of 1968, and there I worked with Shen Lin, and he and I worked on a problem which had been suggested by my advisor here. And this was graph partitioning. And he and I worked on it, and we came up with an algorithm that did a pretty decent job on part of it.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=230">03:50</a>] I came up with several special cases that you could do really well. And then I wrote up the thesis really quickly and escaped.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=237">03:57</a>] Escaped Princeton.</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=240">04:00</a>] Escaped from Princeton. I took a whole week off and went to <a href="https://en.wikipedia.org/wiki/Bell_Labs">Bell Labs</a> because they&#8217;d given me a return offer, which was very sweet of them. And I stayed there then until roughly 2000 in the group that had done or was doing a variety of things.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=255">04:15</a>] Did you consider other career opportunities at the time?</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=259">04:19</a>] I think I didn&#8217;t consider any other option whatsoever. I mean, I had really enjoyed the summers. The two summers were great. The people were really, really nice and interesting. There was stuff to do. It was close. I didn&#8217;t have to go anywhere, as it were. And so I literally never considered anything else. I never had a job interview, nothing like that. I just went there. So it was kind of like falling down the fall line or something like that.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=288">04:48</a>] I think partly it was helped along by some sort of old boy network, where somebody here at Princeton knew somebody at <a href="https://en.wikipedia.org/wiki/Bell_Labs">Bell Labs</a>, because there&#8217;s a lot of back and forth between the 2 institutions. And so I&#8217;m sure that kind of thing helped. It also helped, I think, at MIT that a guy who had had an internship the year before me had done a bang-up job for them. And so that probably said, well, these folks from Princeton are maybe okay.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=317">05:17</a>] So I&#8217;m grateful to him too.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=319">05:19</a>] Nowadays, <a href="https://en.wikipedia.org/wiki/Bell_Labs">Bell Labs</a> is so legendary, but at that time, what was the social perception? If I had talked to your peers and said, &#8220;Hey, what do you think of <a href="https://en.wikipedia.org/wiki/Bell_Labs">Bell Labs</a>?&#8221; what would they have said at that time?</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=333">05:33</a>] I suspect that it depended on the field, but probably for most of them, they would&#8217;ve thought, yeah, yeah, this is a really good place. Because in the physical sciences, it was obviously the powerhouse in a lot of respects. That&#8217;s where your transistor came from, for example. And a lot of things related to communications, that&#8217;s where information theory came from. It&#8217;s where error-correcting codes came from.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=354">05:54</a>] All of these things that were sort of critical advances in technology had come from <a href="https://en.wikipedia.org/wiki/Bell_Labs">Bell Labs</a>. <a href="https://en.wikipedia.org/wiki/Bell_Labs">Bell Labs</a> was a part of the scientific community. People who went to <a href="https://en.wikipedia.org/wiki/Bell_Labs">Bell Labs</a> published in exactly the same journals and went to the same conferences, collaborated with people in the same universities. And so it was really an integral part, I think, of the scientific community at the time. And that was largely, I will say, the physical sciences kind of thing, but it obviously sort of spread out into other things that were peripherally related.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=387">06:27</a>] And certainly the mathematicians were absolutely first-rate as well. Tended to be applied mathematicians rather than theoretical ones.</p><h3>06:34 &#8212; Why so many inventions came from Bell Labs</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=394">06:34</a>] Everything you just said there is an insane value for humanity, the transistor and all those other things. Why is it that so much of it came from one research lab tied to a company that today is not known for all these amazing innovations?</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=416">06:56</a>] <a href="https://en.wikipedia.org/wiki/AT%26T">AT&amp;T</a> bankrolled all kinds of contributions that <a href="https://en.wikipedia.org/wiki/Bell_Labs">Bell Labs</a> made. And I think the way it worked was that <a href="https://en.wikipedia.org/wiki/AT%26T">AT&amp;T</a> provided telephone service to essentially the whole country. I mean, maybe it was 80%, but it was a very substantial fraction of the whole country. And that meant that they had a pretty guaranteed revenue stream. Now it was regulated. They were a regulated public monopoly. That&#8217;s the jargon term.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=440">07:20</a>] And that meant that their rates were set or restricted or at least evaluated by lots and lots of agencies, states, and the federal government. So there was a limit to what they could do. The quid pro quo was they got sort of a guaranteed rate of return on their investment in whatever they did with the phone company. And the quid pro quo would be that they provided telephone service to essentially everybody.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=467">07:47</a>] Even if you were way out in the boonies or something like that, <a href="https://en.wikipedia.org/wiki/AT%26T">AT&amp;T</a> would provide this service. And they were able to rip off a small fraction of that. I will make up a number and say 1 or 2% of their pretty much guaranteed revenues to fund a research operation that would let them improve the service. And so that was the basic, call it financial arrangement. And the other thing is it was very stable.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=491">08:11</a>] You could sort of predict there would be this steady increase in revenues, but predictable in a way that would guarantee that there would always be money to do something. There was no competition because <a href="https://en.wikipedia.org/wiki/AT%26T">AT&amp;T</a> had essentially what amounted to this monopoly. And so that meant that they could take a very long view of what they were doing. And so if somebody had an idea and wanted to work on it for a year or 2 or 3, fine, go for it.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=519">08:39</a>] And if you&#8217;ve got a bunch of people doing this, even if your idea is dumb, my idea is dumb, somebody else might have a good idea. And so if you aggregate, the output would be probably something useful almost all the time.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=532">08:52</a>] What gave this lab such recruiting pull, in your opinion? How did all the best people come to this place?</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=542">09:02</a>] Well, I think it depends. For me, it was certainly happenstance, just blind luck, being in the right place at the right time, following people who had done something that in some way prepared the way. I think if you were a physicist getting your degree in physics at pick your favorite good university, where would you go to do physics? Well, the opportunities would fundamentally be government lab perhaps, or a place like maybe IBM or maybe <a href="https://en.wikipedia.org/wiki/Bell_Labs">Bell Labs</a>.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=571">09:31</a>] And <a href="https://en.wikipedia.org/wiki/Bell_Labs">Bell Labs</a> had a sterling reputation, well-earned, for doing exceptional work in that area. So that would be, let&#8217;s say, anybody doing physics, chemistry, materials, all of that kind of stuff. I think somewhat the same would be true of anything related to mathematics, especially the mathematics of communication or anything related to communication systems. I mean, that&#8217;s where Shannon was, that&#8217;s where Hamming was, Bode, Nyquist, all of those people before those.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=600">10:00</a>] So that kind of, again, tremendous reputation for the place. And as I said, they were part of the scientific community. It wasn&#8217;t like it was off on Mars somewhere, and it wasn&#8217;t like you went there and disappeared. You went there and you were a part of the broader community. And so I think the computing stuff came along and had some of the same advantages, but it wasn&#8217;t clear who the heroes were at that point.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=623">10:23</a>] It was early-ish, because remember, I went there in 1969. So computers were still pretty young at that point.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=630">10:30</a>] A lot of those names you mentioned, I mean, they were in my textbooks when I was studying. And so they&#8217;re kind of the heroes and everything. But so at that time you&#8217;re saying your perspective was they were just kind of the lead on the team, but they weren&#8217;t the legendary computer scientists.</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=651">10:51</a>] Well, it&#8217;s hard to say, and it&#8217;s not even clear what a computer scientist is, but you want a story? When I went to <a href="https://en.wikipedia.org/wiki/Bell_Labs">Bell Labs</a> for my first internship, so call it the summer of 1967, and I was in an office that was sort of a little smaller than the one we&#8217;re sitting in now. But as a summer intern, for some accidental reason, I had an office of my own. This never happens, but it did happen. And so I&#8217;m sitting there on the very first day at about, roughly 11 o&#8217;clock in the morning, wondering what the hell do I do?</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=683">11:23</a>] And this older guy came along, passed the door, and he said, &#8220;Hi, I&#8217;m Dick. Let&#8217;s go to lunch.&#8221; I said, okay. So I went to lunch with Dick. I never did get his name right. And so we had a nice lunch conversation. I don&#8217;t remember anything about it. And then he went off somewhere else. And I came back and went to the next door to me and looked at the name tag on the door. It was Richard Hamming. Hamming had written the book that I had used previous semester for numerical analysis, and, of course, error correcting codes.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=716">11:56</a>] And there he was next door, super nice guy. And was he a computer scientist? Borderline. Yeah. But possibly he did win the 3rd Turing Award. Won it, was it that summer or the next summer? I&#8217;d have to go and look. And so there were people like that around, but in the very early days, the computing stuff was, I think, it hadn&#8217;t developed into something with its own academic structure, its own reward systems, and all those kinds of things.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=746">12:26</a>] When I interviewed Leslie Lamport, and I forgot his exact timelines, but I remember early in his education, computer science wasn&#8217;t established, and he actually said it was not as respected as math and physics, or maybe because it just was a burgeoning&#8212;it was brand new.</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=767">12:47</a>] The same thing happened here, I think. I came here as a grad student in 1964, and I came in electrical engineering. I had thought to work on computing because I had some notion that it was interesting, and I thought AI, I didn&#8217;t know a thing. Unbelievably naive. And I had sought to work with a guy named Arthur Samuel who had done some interesting stuff in computer chess playing, et cetera. And I got here, discovered it was the wrong guy.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=796">13:16</a>] But when I got here, the electrical engineering department had a bunch of very established, highly respected people who were doing traditional electrical engineering things, information theory, communications, solid-state physics, that kind of stuff. And a cohort of young people who had interest in computing. They had just gotten their degrees from someplace, and they were very young and wanted to do computing.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=822">13:42</a>] And I don&#8217;t know whether any of them ever got tenure because the older folks didn&#8217;t really grok the newer field. John Hopcroft, to pick a random example, was my technical advisor for a year. Oh. Although it was quickly discovered I was not a theoretician. But John went on to win a Turing Award and was dean of engineering at Cornell. There&#8217;s all kinds of stuff. Great guy. But he wouldn&#8217;t have gotten tenure here at that particular time because the computing science aspect of things was too new.</p><h3>14:15 &#8212; A day in the life at Bell Labs</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=855">14:15</a>] <a href="https://en.wikipedia.org/wiki/Bell_Labs">Bell Labs</a> is kind of famous for very hands-off management and letting the engineers do what they were doing. What is a day in the life like of an engineer working at <a href="https://en.wikipedia.org/wiki/Bell_Labs">Bell Labs</a>?</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=870">14:30</a>] Well, first thing, I don&#8217;t think any of us would&#8217;ve called ourselves engineers. We were doing whatever you did, but I don&#8217;t think that engineer was the right word because we weren&#8217;t really engineering.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=883">14:43</a>] It was Member of Technical Staff.</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=885">14:45</a>] Member of Technical Staff, which was a term that applied to everybody essentially. And a typical day would be basically you&#8217;d come in at whatever time, which could be anywhere from 8 in the morning to 2 or 3 in the afternoon maybe. And you would sit in your office, private office, with the door open, and you would think about whatever it was you were thinking about. Maybe you had been working on some kind of program, or maybe you were trying to prove a theorem.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=916">15:16</a>] That&#8217;s not me. And people would wander by and you would talk to them. They would come in, you&#8217;d have discussions on the blackboard, perhaps of technical things, or maybe just arm-waving discussions of something else. You&#8217;d walk up and down the very long main corridor to the coffee machine at the other end, where you would run into random people. There would be technical talks from time to time, maybe one every week or two, something like that, depending, sometimes from internal people, sometimes from external people.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=948">15:48</a>] So in a sense, maybe not too different from what you would find in a university, except there were no students. And so that meant you could do it full-time. The trade-off was that without the students, you could do more of your own thing, and you were doing it with your peers. So I would argue with somebody, Ken Thompson or Dennis Ritchie or whatever like that, who were my peers. I didn&#8217;t have to work with students.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=975">16:15</a>] But of course, the flip side is that I didn&#8217;t get any of the benefit that you get with bright young new people talking about it, except that, as a newcomer, they&#8217;re always supposedly the bright new young person. So mainly the lack of students, which I think is a mixed blessing.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=990">16:30</a>] In industry, there&#8217;s often deadlines, managers, and all of that stuff, right? What&#8217;s stopping a researcher from coming in at 3, leaving at 5, not having any output?</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=1006">16:46</a>] There was no immediate stop to that period. There were no deadlines, there were no projects, there were no objectives, goals, whatever set by other people. The mechanism for deciding whether you were doing anything was that once a year you had to write down on one side of one piece of paper what you had done. And we called it the I Am Great report, and it just summarized what you&#8217;d done. And then the first and second level of management would sit in a room with the I Am Great reports from their people.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=1040">17:20</a>] So this would be maybe 30 at the bottom, half a dozen, one, like that little tree. And they would discuss the merit of the contributions of the work that was being done by the people. And they would come up with some sort of ordering which says that you&#8217;re better than I am or vice versa. How would we compare to our peers? And that would give them a sort of roughly a rank ordering, or at least equivalence classes of people.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=1069">17:49</a>] And if somebody hadn&#8217;t done anything for a couple of years, that would be noticed. But if somebody&#8217;d gone off on something and it didn&#8217;t pay off very well, or it was still in progress, but it looked okay or whatever, that was okay. That&#8217;s the long view that I mentioned before. It&#8217;s not like, what have you done for us the last week or even quarter? What maybe have you done over the last 2, 3 years?</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=1091">18:11</a>] And it was being assessed by people who were not driven by quarterly numbers. They were the same people as we were, except that they had moved into management, but they were still technically active and very technically knowledgeable. And then the process was repeated a couple levels up until you had an effective rank order of everybody. So that was kind of called abstract merit. I&#8217;m better than you are.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=1115">18:35</a>] And then there was the concrete merit phase, where we&#8217;ve got this much money, how much do you get? How much do I get?</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=1119">18:39</a>] So there were bonuses tied to&#8212; It wasn&#8217;t bonuses or anything like that.</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=1126">18:46</a>] It was simply, there&#8217;s a pot of money, this is the raise pool, and it will be overall X percent. And so you will get X minus epsilon, I&#8217;ll get X plus epsilon or vice versa. Oh, and that was once a year, and that was the whole story. But it was very deliberative. The management was collegial. If you and I were managers and we had our people, it wasn&#8217;t like my people are better than your people. It&#8217;s rather, hey, you forgot to mention that Susie did this really great thing.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=1157">19:17</a>] Don&#8217;t forget Susie kind of thing. So it was quite collegial. Yeah. And you were being evaluated by people who understood the work and whose goals and aspirations and so on were the same as yours, do good stuff.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=1169">19:29</a>] It sounds like you mentioned that they&#8217;re technical. It&#8217;s like a big part of this whole system. Why is that important?</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=1178">19:38</a>] If somebody is doing something in a technical area, they have created a new program, they&#8217;ve proved a new theorem, they&#8217;ve developed a new process, whatever. If you are not technical enough to understand what they&#8217;re talking about, it&#8217;s hard for you to tell the bullshit from the actual useful content, right? So I could, not you personally, but I could blow smoke pretty well for people who were, I don&#8217;t know, who shall I insult?</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=1204">20:04</a>] MBAs. Okay. Something like that. That&#8217;s obviously a slander, but it&#8217;s easier to blow smoke at somebody who is not sort of knowledgeable in your own field, but the people that you were evaluating your work were exceptionally knowledgeable in the whole field. And so they had a pretty good eye for what was good stuff and what wasn&#8217;t yet good stuff or would perhaps never be good stuff.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=1231">20:31</a>] These days, this Member of Technical Staff title is&#8212; it almost has its own brand where it&#8217;s a nod towards <a href="https://en.wikipedia.org/wiki/Bell_Labs">Bell Labs</a> and everything that that represented there, but a lot of what it is signaling is that titles don&#8217;t matter, that we&#8217;re all the same and we&#8217;re all just focused on the technical work. Did titles matter, or what was the culture at that time?</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=1258">20:58</a>] Titles didn&#8217;t matter. Everybody was on a first-name basis. There were no doctor, professor, whatever kind of titles at all. Everybody was technically a member of staff, Member of Technical Staff. And I say everybody, this is of course an oversimplification. There were a variety of supporting people who, lab technicians, associate members of technical staff or whatever, but I&#8217;m talking about the MTS level and up.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=1285">21:25</a>] So they would be loosely equivalent to PIs in the modern academic world, principal investigator or whatever. And in computing, I never would have had somebody who helped me with my stuff. Whereas if I were a physicist, I might have some number of people who would help me do experiments, look after the mechanics of depositing stuff on stuff, all those kinds of things that went on in the physical world.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=1314">21:54</a>] But everybody was technically a Member of Technical Staff, even the management. But then there were department heads who&#8217;d manage first-level management, and then there were directors who were second-level management, and then there was executive director, and then there was vice president. But it was very flat in that sense. Most people did not want to be promoted because that would be seen as the end of their personal technical career, that it would move them away from the kind of work that they really enjoyed doing.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=1343">22:23</a>] So being promoted was something to be avoided, not to be sought. And I think that went for quite a long time. Things did change, but I&#8217;m talking about the golden era of, call it the late &#8216;60s, &#8216;70s, early &#8216;80s, something like that.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=1361">22:41</a>] Did you and your peers ever think about career development in some way, or was it not even something you cared about?</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=1372">22:52</a>] Career development for myself as an individual, I never thought about it at all. I mean, usually I was having a good time and I was surrounded by lots of good people. Career development for the people, for example, when I was in first-level management, I was a department head for some years. I don&#8217;t remember much about how explicit it was, but there was some theory that you should actually be looking after the interests of the people in your department.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=1397">23:17</a>] I think the main way that that would be reflected is understanding the work they were doing, really trying to understand what it was they were doing so that you could represent it fairly at things like merit review. Also so you could see opportunities to, oh gee, did you know Dave was working on this stuff? So that you could sort of cross-fertilize across the way to try and give them feedback, sort of say.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=1422">23:42</a>] Are you sure this is gonna work? Or keep an eye on this, sort of guide them towards future success, but not telling them what to do. There was never any, this is what you have to do. There was no, there just wasn&#8217;t any, it wasn&#8217;t guidance at all. At most, there was a gentle gravitational pull towards stuff that would be useful or interesting.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=1444">24:04</a>] So you mentioned you were a head at some point and you managed some reports. You never had a report that was saying, &#8220;I want to grow in some way,&#8221; or they&#8217;re kind of hustling, kind of pushing you some way?</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=1459">24:19</a>] There were a handful of people I could remember who wanted to be in management. That was unusual, but there was nothing wrong with it. It&#8217;s just that being in research management, because the structure was so flat, it would take probably quite a while before you would move up. If you really wanted to be in management, you probably wanted to move into a different organization, development organization, where the rules of engagement and so on were much different.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=1488">24:48</a>] And there were several, I shouldn&#8217;t say several, but at least a handful of people who were interested in that kind of advancement. And they went into development type jobs, which are perfectly fine, just different in a lot of ways. And there they had much more traditional responsibilities of management, including looking after their people. But I think the research operation was much more a bunch of cats and you can&#8217;t really herd them.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=1515">25:15</a>] So what&#8217;s the story behind you becoming a manager in that kind of environment? Because it seems like it&#8217;s something everyone&#8217;s avoiding.</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=1524">25:24</a>] I had no desire to do it. And I was blandished a couple of times, &#8220;Wouldn&#8217;t you like to be a manager?&#8221; But it was in some other organization, even within research. And I always thought the group that I was in was special, probably was. And so I had no interest in being manager in some other part of it. And so I basically declined with thanks. But then it was, would you like to be a manager in your own organization?</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=1551">25:51</a>] And I wasn&#8217;t very enthusiastic, but okay. And they got lots of ways they can, you know, it&#8217;s inevitable. Why not now? Or, alternately, if you don&#8217;t do it now, it might never come, which is completely contradictory. Or if you don&#8217;t do it, somebody else not as good is gonna do it. So all of the usual stuff. And I finally succumbed, I think, in about &#8216;81. So I&#8217;d been there at that point, call it 12 years for real.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=1579">26:19</a>] So that&#8217;s the first promotion. And it was okay, but it wasn&#8217;t as much fun, I think, because now I was responsible for roughly 10 people. Had to understand their work, which was all over the map, had to be able to talk to other people about it, had to go to more meetings. So it was okay, but it was not my favorite part of the job, really.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=1603">26:43</a>] How did you know your group was so special? Because when I look at it, it is in hindsight. I mean, I saw Bjarne was reporting to you, and of course, there&#8217;s Dennis Ritchie nearby and Ken Thompson. And you also mentioned other people like Doug McIlroy and Richard Hamming. So how did you know at that time that it was such a special group?</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=1626">27:06</a>] I think a lot of it was not so much knowing that the work they were doing was gonna prove to be in the future important, but that they were just really clearly smart and seemed to be doing things that were interesting and relevant. Most of us used the work that our peers did. Certainly all of the things related to Unix, we just used that. That was our computing environment. The languages that were developed, the tools that were developed, and so on, we used them.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=1654">27:34</a>] And so you could get a sense of who&#8217;s doing stuff that actually matters to me. And so I think that was part of it. Extrapolating long-term effect, we&#8217;re not very good at that, or I certainly wasn&#8217;t, figuring out who were the ones who were gonna win Turing Awards. No, not really.</p><h3>27:55 &#8212; The most impressive people he worked with</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=1675">27:55</a>] You worked with so many legendary people. Was there anyone that, I guess, or any story of someone who kind of impressed you the most, or you thought, wow, their technical chops are just untouchable?</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=1690">28:10</a>] There&#8217;s several like that. Ken Thompson&#8217;s the obvious one, I think. Certainly the best programmer I&#8217;ve ever met, unparalleled. And the story is the first version of Unix where he&#8217;s got this little old PDP-7, which is an obsolete machine, has something like 8K 18-bit words. So it&#8217;s a tiny little machine. He&#8217;s been fooling around with something to drive the disk on it. And he&#8217;s thinking about how do you schedule disk operations so that it&#8217;ll go fast and stuff like that?</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=1727">28:47</a>] And his wife takes their young son off to California for 3 weeks, and he thinks, I could do something here. And so in 3 weeks he builds himself an editor, an assembler, and an operating system. And there you have it.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=1739">28:59</a>] By himself?</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=1741">29:01</a>] Yeah. Oh yeah, absolutely.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=1743">29:03</a>] When I used to write, you go to Stack Overflow, or you look up how to write the code and then you write it. How does he do it without all that Internet resource?</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=1757">29:17</a>] Because he&#8217;s a boatload smarter than you and I put together. And this is before any of that stuff existed, right? This was 1969. And so he&#8217;s probably writing the code in assembly language, bear in mind, not any high-level language. And he&#8217;s doing it probably on some other machine just because it has some kind of text editor. And then he&#8217;s making paper tapes that he carries to this tiny little machine and loads them and sees what happens.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=1783">29:43</a>] Oh my God.</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=1785">29:45</a>] Yeah. So it&#8217;s going back into the mists of time, but three weeks and he&#8217;s got a working operating system. So I think that is a good example of somebody who&#8217;s just off-scale good at what they do. And there were a lot of people like that at the labs. I mentioned Doug McIlroy a number of times. He was my first internship. He was notionally my boss, and he was interested in storage allocators, ML kind of thing.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=1814">30:14</a>] And so he set me to working on something, and I almost instantaneously went somewhere else, and he didn&#8217;t care. So I spent the summer doing something unrelated to that, and it seemed like it was fine because I got a come back next summer kind of offer. But he was the kind of guy who was exceptionally good at pretty much anything he wanted to do. I mean, Ken Thompson says Doug&#8217;s the smartest person he ever met.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=1841">30:41</a>] So this is&#8212;we&#8217;re multiple levels above me at this point. But Doug was extremely good at assessing, experimenting with, and criticizing other people&#8217;s work in a very constructive way. So he was a second reader, the outside reader on my PhD thesis, and he greatly improved my writing and the content of the thesis. And he continued to do that essentially for his whole life. He&#8217;s still doing it. And he contributed a bunch of useful software, his own Unix sort program, Doug.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=1876">31:16</a>] Unix diff program compares 2 files. Doug. A bunch of things of that sort. He did language design and development of his own. He wrote one of the very first PL/I compilers. He invented the idea of macros. And it&#8217;s just on and on and on and on. And he was also the department head who sort of had Ken Thompson in his department. No. Doug wouldn&#8217;t tell Ken what to do, obviously, but appreciated the work and was an incredibly effective technical critic of that kind of work.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=1913">31:53</a>] So, gee, wouldn&#8217;t it be nice if, or you thought about it that way, or Jesus sucks, whatever, to make stuff good. And that&#8217;s a role that he played for the entire time that he was at <a href="https://en.wikipedia.org/wiki/Bell_Labs">Bell Labs</a>. I first met him in &#8216;67, I guess, and he was until he retired early to mid-&#8217;90s or something like that.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=1932">32:12</a>] This reminds me, when you mentioned department head, somewhere in my research, it might&#8217;ve been Hamming. There was someone that you worked with who was a head of the department with no reports.</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=1946">32:26</a>] That&#8217;s Hamming. Yeah. Yeah, I never understood that. When I first met Dick Hamming, he was a department head. You could tell because he had carpet on his floor. I guess he showed up in the foam it that way too. But I couldn&#8217;t figure out, because I had this naive view that there was status associated with being a department head, and it was totally wrong. But he had worked very hard to get himself a department head, so he had whatever status or clout or whatever went with it for useful purposes, but no people reporting to him.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=1982">33:02</a>] And so I think that worked out very well. Because in any organization, if you&#8217;re not at the right level, you may get ignored. And so it was harder, presumably, for people to ignore a department head than an ordinary MTS.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=1994">33:14</a>] So he got the clout without any of the work of&#8212;</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=2000">33:20</a>] The dog work, yeah, right, administering. He&#8217;d put in his dues because he came to the labs, I think in &#8216;46, and did a lot of early stuff with computing. He&#8217;s one of the very first people to realize that actual use of computers was going to be a very important part of all kinds of research in the future. And he made this prediction that at some point more than half of the research work would be done by computing, not in physical labs.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=2029">33:49</a>] And of course, they laughed at him.</p><h3>33:50 &#8212; The AT&amp;T film explaining Unix</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=2030">33:50</a>] In my research, somewhere on YouTube, there&#8217;s this video posted by <a href="https://en.wikipedia.org/wiki/AT%26T">AT&amp;T</a>, the corporation itself, and it&#8217;s a film titled Unix: Making Computers Easier to Use.</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=2048">34:08</a>] Oh yeah, <a href="https://en.wikipedia.org/wiki/AT%26T">AT&amp;T</a> did a lot of those PR films.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=2052">34:12</a>] Yeah, and you&#8217;re in the video, you&#8217;re one of the first people speaking, and you have your legs up on some desk and you&#8217;re kind of explaining, what is that?</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=2063">34:23</a>] It&#8217;s like any PR film. It&#8217;s trying to convince people who don&#8217;t know anything about you that you&#8217;re a great whatever institution, that you&#8217;re contributing to the public good or whatever. And so they hired a professional filmmaker kind of thing. Eric Belove, I think his name was. It was a long time ago. And he came around, and he would do sort of what we&#8217;re doing. You&#8217;d have a conversation about something.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=2087">34:47</a>] And try and get whoever he was talking to to elaborate on what they were doing, and then he would splice it together into something that would feel good for <a href="https://en.wikipedia.org/wiki/AT%26T">AT&amp;T</a>. And at the time this was done, which I would guess is late &#8216;70s, early &#8216;80s, something like that, yeah. Unix was kind of just starting to appear on the outside. It was a sort of a visible, interesting. And so part of the thing is <a href="https://en.wikipedia.org/wiki/AT%26T">AT&amp;T</a> is using computers to improve people&#8217;s lives or our business operations or whatever.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=2121">35:21</a>] What is Unix? And so my job in this film at least, and probably several others, was to sort of try to explain to a very non-technical audience what is this thing and what&#8217;s it good for and why is it new and interesting or something like that?</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=2138">35:38</a>] I skimmed through the comments on this video. It has a lot of views actually. And the comments in there, one of the ones that has some of the most upvotes, is it&#8217;s saying that everyone in the film is, not to be derogatory, but kind of like computer nerd.</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=2154">35:54</a>] Well, we were. We still are.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=2156">35:56</a>] But they highlight you as being a very clear communicator and a bit exceptional in your ability to convey the technical stuff you&#8217;re talking about. So I was curious if you have any advice on how to communicate technical work in such a clear way.</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=2177">36:17</a>] Part of it is probably just putting yourself, to some extent, into the other person&#8217;s shoes. They don&#8217;t know anything about what you&#8217;re talking about, so how can you explain it with the right combination of metaphors and examples and everything else that gets it across to them? And part of that, of course, it&#8217;s nice to have feedback. So it&#8217;s easier to do that if you&#8217;re in a teaching kind of setting where you can see whether they&#8217;re getting you or not.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=2202">36:42</a>] And if they&#8217;re not, you can adapt. It&#8217;s harder when you&#8217;re doing a film because the audience is later, if at all. But there were a fair number of those things. We used to have dog and pony shows at, image that&#8217;s probably obsolete at this point, but <a href="https://en.wikipedia.org/wiki/AT%26T">AT&amp;T</a> or <a href="https://en.wikipedia.org/wiki/Bell_Labs">Bell Labs</a> would bring through distinguished people on a tour of <a href="https://en.wikipedia.org/wiki/Bell_Labs">Bell Labs</a>, and they would get demos of various things, the usual stuff, demos of what interesting work is going on at <a href="https://en.wikipedia.org/wiki/Bell_Labs">Bell Labs</a>.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=2235">37:15</a>] And they would go through a variety of places, labs, so on. And Mike Koleska and I were on a regular kind of rotation for Unix demos, where we would get some exalted being accompanied by some appropriate level of <a href="https://en.wikipedia.org/wiki/Bell_Labs">Bell Labs</a> management and others to sit on a couch in a little room, and I would show them the wonders of Unix in some way or other. Well, what are the wonders of Unix? I don&#8217;t know, but one of them was that it&#8217;s easy to create programs by combining programs.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=2267">37:47</a>] The idea of pipes, where I can take the output of this program into the input of this program and maybe string several together. And I had a standard demo of that, which was looking for spelling mistakes in a document. Because what you could do is, here&#8217;s a document. So what we did, collect the words in the document, get &#8216;em into lowercase, whatever, sort them neatly, and then compare them to another document, which is a dictionary.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=2294">38:14</a>] And if you find a word that&#8217;s in your document, but it&#8217;s not in the dictionary, it might be a spelling mistake. And it&#8217;s one long pipeline, 6 or 7 programs. So I could do this and people would sort of understand it. This is before word processing software really came along. So I&#8217;d do this demo and people would be impressed. The high point of this, one day, one of those visitors was a guy named William Colby.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=2321">38:41</a>] William Colby was the director of the CIA, and he was accompanied by a guy who literally had a briefcase chained to his arm.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=2329">38:49</a>] Wow.</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=2331">38:51</a>] And Colby was accompanied by Bill Baker, who at that time I think was probably president of <a href="https://en.wikipedia.org/wiki/Bell_Labs">Bell Labs</a>, but he was also the head of the Foreign Intelligence Advisory Board. So he was a serious spook in his own right. And so they sat there. Now, I had done this Bell demo so many times before, I knew it took too long because old machines, slow, et cetera. So what I did is the night before, I ran it into a file.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=2357">39:17</a>] And then what I showed Colby was a shell script that said sleep 2 and then cat the previous sleep. And so Colby was very impressed with this, I guess. It does tell you, you don&#8217;t believe what you see in demos.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=2371">39:31</a>] What&#8217;s in that briefcase? Is it a bomb or a gun?</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=2376">39:36</a>] It&#8217;s gotta be nuclear codes, right? I have no idea.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=2380">39:40</a>] Interesting.</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=2382">39:42</a>] That&#8217;s good. The gentleman with the briefcase was not identified.</p><h3>39:46 &#8212; Why C was so influential</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=2386">39:46</a>] One of the most famous books that you co-authored was the one on the C programming language. And since C kind of came from <a href="https://en.wikipedia.org/wiki/Bell_Labs">Bell Labs</a> and you were so close to it, why was C so influential in your opinion? Now looking back?</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=2404">40:04</a>] I think it hit a sweet spot in some sense of efficiency and expressiveness. If you go back to when C was first created, let&#8217;s just call it 1972-ish or something like that, machines were pretty wimpy. They didn&#8217;t have much memory. The first machine that C ran on had, I think, 24K bytes. And that was the whole thing. So you had to write a compiler, or you had an operating system, you needed a bit space for files, what do you do?</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=2433">40:33</a>] The disk, I think, was half a megabyte. So it&#8217;s a little tricky. So C was simple enough that you could see the translation into the underlying actual instructions of the particular machine, the PDP-11 at that point. The language was simple. You could see the compilation. You could imagine building a compiler for it straightforwardly enough. It wasn&#8217;t a big language. At the same time, it really was expressive.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=2465">41:05</a>] I mean, you could say what you needed to say very, very effectively in the language. And I think it&#8217;s hard to find a spot like that. And so one of the reasons I think C has succeeded as long as it has is that it still has that efficiency and, oh, I know, expressiveness is, I think, the right word. Certainly there are lots of other languages which for various purposes are a better choice at this point.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=2493">41:33</a>] Well, &#8217;cause there are plenty of things that C doesn&#8217;t do, couldn&#8217;t do at the time because you didn&#8217;t have enough resources, right? You couldn&#8217;t do a lot with fancy runtime stuff. You didn&#8217;t want to do checking because checking would take code, and, yeah, come on, you&#8217;ve only got suddenly 4K bytes for your program. Now what? So an awful lot of things were cut that way. The other thing is the original target for C was to build the operating system.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=2520">42:00</a>] And so there&#8217;s a class of things that you just don&#8217;t need if you&#8217;re building an operating system. So I think it was, for its time, really, really, really good match. And then of course Unix and C was this sort of symbiosis. They went together. And so Unix was just so much better than any of the commercial operating systems at the time, just so much easier to use, so much more productive, and so much more fun that people used it in preference.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=2550">42:30</a>] And then they would write programs in C, and they would result in interesting tools. And so all of this was kind of a virtuous cycle.</p><h3>43:25 &#8212; How awk was created</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=2605">43:25</a>] Yeah, when I learned how to use Unix in college, there&#8217;s all these utilities, like you mentioned diff that Doug McIlroy, and then there&#8217;s a variety of other ones, grep, and of course there&#8217;s awk.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=2633">43:53</a>] I remember I learned that a long time ago.</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=2638">43:58</a>] Oh, good.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=2638">43:58</a>] Yeah. What&#8217;s the story behind that, and why&#8217;d you build it?</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=2643">44:03</a>] So this is back in the mid-&#8217;70-ish time, &#8216;76, &#8216;77, I guess. Alfred Aho and I had been friends for a long time. He went here to Princeton, he and I were undergrads at Toronto, although he was always a year ahead of me. And he was very interested in regular expressions, patterns of text that you could use to recognize interesting stuff. I had been fooling around pretty unsuccessfully with the idea of some kind of text editor that would let me manipulate numbers as well as text, something like that.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=2681">44:41</a>] And Peter Weinberger, who I don&#8217;t remember exactly how we met him, was interested in database kinds of things. And so we sort of talked back and forth and came up with this language, which combined some of those interests: the regular expression stuff from Al, the databasey flavor and report generation, like RPG, from Peter, and the sort of, wouldn&#8217;t it be nice if strings and numbers were both first-class citizens of whatever you were doing?</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=2715">45:15</a>] So we thought about it for a while, and then, if memory serves, we came up with a sort of language design, and then Peter went off one weekend and built it. Peter&#8217;s an extremely good programmer too, but he had the advantage of tools at that point because he could define the grammar with YACC, the compiler-compiler that Steve Johnson had built, and the lexical part with Lex, the lexical analyzer generator that Mike Lesk had built.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=2746">45:46</a>] And so from that, building a language was not as much work as it would&#8217;ve been otherwise. There was some, just more of it was kind of built for you. And Al had the regular expression code already because that came from egrep. And so, I see. And you take this and one very bright, good programmer over a long weekend or so, and you&#8217;ve got a language. Oh, and then from there we just sort of evolved it slowly.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=2774">46:14</a>] And then Al and Peter dropped away from actual active maintenance probably 5, 10 years later, and I sort of inherited it.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=2780">46:20</a>] A lot of these Unix tools that everyone takes for granted, is that usually the story behind them? You guys are all using Unix and then you just realize, oh, I want to be able to pipe this to something that diffs, or I want to be able to find something in a&#8212; and then you guys just build it. Is that usually how these come about?</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=2801">46:41</a>] I think a lot of them come from that. It&#8217;s not from hypothesizing what somebody else might find useful. It&#8217;s more like, what do I need? What&#8217;s kind of bothering me at this point that I could improve if I just had a better tool or a language or something? And I think that&#8217;s true on almost all of the little tools that you mentioned. I don&#8217;t wanna do this by hand, or existing programs aren&#8217;t quite right.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=2829">47:09</a>] Let me build something new and be very easy. For example, make, which Stu Feldman did. Somebody told me, &#8220;Oh, my program didn&#8217;t work. I can&#8217;t figure out why it didn&#8217;t work. Oh, it&#8217;s because I forgot to recompile one of the files.&#8221; And so could you in some way automate that? And that&#8217;s another one of these weekend projects that Stu did. And then, boy, within a few days, he&#8217;s got a bunch of users, and then all of the mistakes he made in his first design, he can&#8217;t fix.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=2864">47:44</a>] So, and I think all of these have that same problem. Certainly, there are things in awkward in hindsight; it&#8217;s, oh my God, we should have done that better.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=2872">47:52</a>] A lot of the namesakes for these, they either explain themselves, like diff, I think it&#8217;s pretty clear. And then AWK is the initials of the authors. But grep is a really famous tool, but what&#8217;s the story behind the namesake of that?</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=2889">48:09</a>] Oh yeah, grep. Ken Thompson tells it very well, but the gist of it is that in the text editor, the ed text editor, which was the first real editor on the Unix system, there is a command called g, which says do this command on all of the lines that match a particular regular expression. And the syntax is in fact g slash re, whatever the regular expression is, slash p. Print all the lines that match this pattern.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=2919">48:39</a>] And hence grep.</p><h3>48:40 &#8212; What he misses most about Bell Labs</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=2920">48:40</a>] We talked a lot about <a href="https://en.wikipedia.org/wiki/Bell_Labs">Bell Labs</a> and you mentioned kind of the golden years. When you look back on <a href="https://en.wikipedia.org/wiki/Bell_Labs">Bell Labs</a> and your time there, what is it that you miss most?</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=2934">48:54</a>] Well, I miss the people, although I&#8217;m still in contact with a fair number of them one way or another. But they were just an amazing collection of really good, nice people, bright, fun to work with, lots of good ideas, and so on. So you miss that. One thing that probably is not reproducible in a direct sense is the environment where there are just all kinds of new things to do. So it was an era of low-hanging fruit.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=2960">49:20</a>] I suspect there&#8217;s similar low-hanging fruit, but I&#8217;m not in the right orchard at this point. I just don&#8217;t know enough about it. But maybe some of the AI stuff that&#8217;s going on is the moral equivalent at this point. So I think those are the things that are perhaps the most things that I miss. <a href="https://en.wikipedia.org/wiki/Bell_Labs">Bell Labs</a> gradually became more of a conventional company as <a href="https://en.wikipedia.org/wiki/AT%26T">AT&amp;T</a> went through troubled times and split itself.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=2987">49:47</a>] And so all the research projects were smaller, and it meant that <a href="https://en.wikipedia.org/wiki/Bell_Labs">Bell Labs</a>, the big cohesive bunch of people working on all kinds of things, became smaller and more fragmented and didn&#8217;t have as much money. And therefore were forced to do the kinds of things you don&#8217;t want to do, like raise money. So that part I don&#8217;t miss at all.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3004">50:04</a>] In one of the classes that you taught, there&#8217;s a video somewhere buried deep in YouTube where you are trimming your beard in the lecture. Do you remember that? And what&#8217;s the reason for grooming during the lecture?</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3020">50:20</a>] I remember that one. That is actually, you should ask David. He was in that class. That was at Harvard. That was the first lecture of CS50 the year I taught it at the beginning. So that&#8217;d be September of 1996, I think. I had never taught a big class before. The class had been taught by Margo Seltzer, who at the time was in computer science there, and she was taking a sabbatical, and she asked if I would be interested in teaching her course.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3048">50:48</a>] And I thought, only chance I&#8217;ll ever get to teach at Harvard, why not? But Margo had a shtick that she did at the beginning of her first lecture, which was trying to explain to people why it&#8217;s hard to tell a computer what to do. And so she would get the audience in her class to direct her in making a peanut butter and jelly sandwich. And it&#8217;d be very easy to get the jelly on the desk and the peanut butter on your head and stuff if the instructions weren&#8217;t clear.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3076">51:16</a>] But I&#8217;m not a peanut butter and jelly kind of person. And I thought, what&#8217;s the equivalent? And then it occurred to me, I have this ratty beard. So I brought in a collection of equipment suitable for trimming a beard, ranging from a pair of scissors to electric hedge trimmers. And I got the audience to try and guide me through trimming my beard with this stuff. And I don&#8217;t remember, I think actually the hedge trimmers were plugged in, but there was, you wanna be very careful.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3108">51:48</a>] So you mentioned that was your first big</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3112">51:52</a>] Yes, 457.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3115">51:55</a>] Was public speaking nerve-wracking at that time for such a large group?</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3121">52:01</a>] No, I think originally when I was a grad student or something, public speaking was very challenging. But one of the things I did first at <a href="https://en.wikipedia.org/wiki/Bell_Labs">Bell Labs</a>, in one of those&#8212;I think maybe even intern years, I don&#8217;t remember now&#8212;was Vic Vyssotsky, who was across the hall from me, said, &#8220;We&#8217;ve got a bunch of physics guys who need to learn Fortran. Would you mind teaching them?&#8221; And so I did that. And so the teaching experience got me over this fear of public speaking totally, completely.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3155">52:35</a>] And so I had done a bit of adjunct teaching while I was at <a href="https://en.wikipedia.org/wiki/Bell_Labs">Bell Labs</a> earlier before the Harvard gig. Yeah. That was by far the biggest, at least more than an order of magnitude the biggest. But at that point, it&#8217;s not the size of the audience so much, it becomes a theater performance. And David Malan can tell you that more accurately because he&#8217;s really good at it.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3179">52:59</a>] So if someone who&#8217;s a student and is scared of public speaking asks you for advice, what would you tell them?</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3189">53:09</a>] I think doing it, getting into an environment where you have to talk to people, at least in small groups to begin with, and then maybe bigger ones is okay. And I think there&#8217;s no better way than actually just doing it, getting out there and forcing it. So I&#8217;m past the stage where I worry about that sort of thing. I guess conference presentations are sort of like that too, but teaching&#8217;s better because it&#8217;s a more intimate setting for the most part, talking to 400 people, but it&#8217;s a more intimate setting.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3223">53:43</a>] And so you&#8217;ve got a better way to judge whether your content is getting in contact with your audience, whether they&#8217;re understanding you or not. And if you think of them as friends or something like that, and then you blur your vision a little so you&#8217;re not really looking directly, it looks like you&#8217;re looking at them, but you&#8217;re not. Or you focus on one person in the audience who seems to be resonating.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3243">54:03</a>] All of these things I think help, but after a while, it just becomes practice and then you don&#8217;t worry about it.</p><h3>54:10 &#8212; Are LLMs bad for computer science education</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3250">54:10</a>] I know you still lecture here at Princeton from time to time, and it seems like more recently the education may be changing because of some of this LLM AI stuff. I mean, unprecedented access to answers, I guess. Do you believe that LLMs are a net negative or a net positive when you look at education?</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3276">54:36</a>] I think it&#8217;s too early to tell. I can see plenty of elements of both sides of that. One concrete example that I have heard reported by all kinds of people around here is that students don&#8217;t come to office hours. They&#8217;re presumably getting whatever it is from their favorite large language model. And so they don&#8217;t come in and talk to faculty or the preceptor, grad students or whatever it is. They just don&#8217;t do that very much.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3307">55:07</a>] And I think that one&#8217;s a net loss. The bandwidth when you&#8217;re talking to somebody in person is enormously higher than when you&#8217;re talking to Claude or whatever. And the other thing is that the human contact that you get from this is useful in all kinds of ways, not the least of which is that if you come in and talk to some faculty member, that person now knows who you are and they can say, oh, did you know, here&#8217;s an opportunity, here&#8217;s somebody looking for a job, whatever.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3336">55:36</a>] So they&#8217;re missing the kind of&#8212; it&#8217;s not transactional, but they&#8217;re missing that human connection that helps in the future. So, so I&#8217;m sorry to see the office hours go away. I think a weird&#8212; I don&#8217;t know why you call it an upside or a downside of this. In computer science in particular, enrollments are down. So we have many fewer computer science majors than we did a few years ago. And that means the classes are smaller, not entirely because many of those people just went to other departments, but they&#8217;re still taking our courses, but they&#8217;re somewhat smaller.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3375">56:15</a>] And that means that there&#8217;s more contact with the students. And I think that&#8217;s good. So.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3380">56:20</a>] What percent down would you say?</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3383">56:23</a>] Our numbers are, I don&#8217;t know where they&#8217;re from, but I think they&#8217;re more extreme for some unknown reason, but the class that just graduated in the spring of 2026 was a little over 200 computer science majors. The class that will graduate 2 years later is probably gonna be less than half that.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3410">56:50</a>] Less than half?</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3411">56:51</a>] Yeah.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3412">56:52</a>] Wow.</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3412">56:52</a>] Maybe even down to a third. We don&#8217;t know, because there&#8217;s a staggered way in which majors appear, but I would guess that if it was 200, it&#8217;ll be sort of 80-ish, 90-ish, pure guesswork, but quite a bit lower. Those people have gone in here to electrical and computer engineering and mechanical and aerospace engineering because those, I think, are more concrete, hardware-oriented, less likely to be replaced by large language models.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3441">57:21</a>] So the kids are voting with their feet. I think to some extent that&#8217;s totally understandable. I think they may be overreacting. But I don&#8217;t know. And if you just read the popular press, my God, we don&#8217;t need programmers anymore. I think that&#8217;s fortunately oversimplified, but it&#8217;s not my problem in the sense that I have a job, and they quite rightly are worried about what they&#8217;re gonna do when they get outta here.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3469">57:49</a>] Oh, so the total number of students that go to Princeton is roughly constant?</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3474">57:54</a>] Oh, it&#8217;s constant. It&#8217;s totally constant.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3476">57:56</a>] Okay, but the proportion that goes into computer science?</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3478">57:58</a>] It&#8217;s different fields. And I don&#8217;t know, I know those particular numbers for where computer science people went over the last, voting with their feet right now. And it looks like mostly to electrical computer engineering, mechanical aerospace for the robotics aspect.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3499">58:19</a>] I saw you&#8217;re an extra in the film A Beautiful Mind. It&#8217;s a great movie. And before the interview, I was trying to comb through the movie trying to find you. How did that come about, and what&#8217;s it like to be a part of such a big movie?</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3519">58:39</a>] You know, that was enormous fun. They did a casting call for that because parts, big parts of it were gonna be shot at Princeton. And this was just shortly after my wife and I had moved to Princeton, so I don&#8217;t remember the date. Call it 2001-ish. So they did a casting call, and a bunch of people showed up in one of the big classrooms, and we heard the story of what was going to happen. And then some guy wandered around and said, &#8220;You,&#8221; and he didn&#8217;t pick my wife, which I thought was nuts, but he pointed at me.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3555">59:15</a>] Okay, so this was the casting call, and then later on, I got an invitation: &#8220;Please come, and we&#8217;re gonna do some shooting of the Nobel Prize ceremony.&#8221; So you&#8217;ll find me there. I can tell you where to find me. The reason you don&#8217;t recognize me is, first, nobody is wearing glasses because they would reflect, and secondly, I&#8217;m wearing black tie, something which I have never worn in my life, because this is a Nobel Prize ceremony.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3584">59:44</a>] And it was shot in the Newark Performing Arts Center, so a place I had never been before. And it took about 22 hours to do that. But because you got there at sort of 5 in the morning, you had to be dressed properly. And then there were shooting and shooting and shooting and shooting, and lots of dead spots while they rearranged the cameras and so on. But it was really interesting, and I got paid, not Equity rates, but I got paid.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3613">01:00:13</a>] I got something that I would&#8217;ve been better off flipping burgers at McDonald&#8217;s for the day. And then the movie came out and it was fine. But the wonderful thing is that I got an Erd&#337;s&#8211;Bacon number of 5.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3624">01:00:24</a>] Erd&#337;s&#8211;Bacon. So, okay. What those numbers represent, how far you are from those people in your cited works?</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3633">01:00:33</a>] In their related works. So my Erd&#337;s number is 3 because I can go through several people, a couple of paths to Erd&#337;s in steps, 3 steps. But my Bacon number is 2 because I was in this film with somebody who was in a film with Kevin Bacon. So anyway, that&#8217;s the gist of it. I actually met John Nash a number of times after that.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3656">01:00:56</a>] The real John Nash.</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3658">01:00:58</a>] Yeah, yeah. He was kind of, let&#8217;s call it introverted or something like that, but perfectly fine. The scary story for me, I was giving a talk. I don&#8217;t remember how it came about, but I was giving a talk to an internal group in the math department</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3677">01:01:17</a>] about something that I had worked on.</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3679">01:01:19</a>] I&#8217;ve forgotten what it was. And I was into this. I had been going 10 minutes or something, and I was on a roll, and I&#8217;m not scared of audiences or anything. I was having a good time, and John Nash walked in. And I could just feel everything tightening up. And then he asked some question. I don&#8217;t remember what the question was or anything like that, but I got over it. But that&#8217;s one of the few times where public speaking has been a bit of a threat.</p><h3>01:01:46 &#8212; His 1972 commit in the Go repo</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3706">01:01:46</a>] Another interesting factoid that I wasn&#8217;t sure if this is true, but in the Git repo for the Go programming language, actually the first commit in it is from you in 1972, supposedly. But the programming language started in 2008. So yeah, right.</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3731">01:02:11</a>] I have no idea what this is.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3733">01:02:13</a>] Okay, you&#8217;ve never seen this.</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3734">01:02:14</a>] This is news to me.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3736">01:02:16</a>] Okay, yeah, it&#8217;s supposedly. I found it says first commit to the Go Git repo.</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3743">01:02:23</a>] Oh, is it a whole world example? That&#8217;s the B.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3746">01:02:26</a>] Yeah, yeah, yeah, it&#8217;s in B for some reason. Yeah, right.</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3750">01:02:30</a>] So,</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3750">01:02:30</a>] And this is followed up by commit 1974 to convert it to C, and then another one to convert it to ANSI C. So maybe Robert copied your Hello World repo and used it to start Go.</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3764">01:02:44</a>] I never used Git at that point. I don&#8217;t think I started using Git until maybe 10 years ago.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3769">01:02:49</a>] Interesting. So then, was there the notion of version control back then? Because somehow&#8212;</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3777">01:02:57</a>] Version control came along in the mid-&#8217;70s. There was something done by the Programmer&#8217;s Workbench people, I think, called SCCS, the Source Code Control System. And that was widely used inside the labs and I think outside. And then there was RCS by Walter F. Tichy, which was a variant of the same thing, Revision Control System. And then there was CVS, was it? Concurrent Versions System. Concurrent Versions System or something like that.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3809">01:03:29</a>] And then some other version of it, and then Git, and others scattered around. So it&#8217;s an old idea, but in 1972 it did not exist. I mean, Unix didn&#8217;t exist in 1972. That DE program ran on something else.</p><h3>01:03:43 &#8212; Grace Emlen, the fake Bell Labs employee</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3823">01:03:43</a>] Interesting. Okay. Yeah, I guess it&#8217;ll just remain a mystery. Maybe Robert can answer or something if I ever interview him. In your memoir, there&#8217;s a thank you to Grace Emlen, and then I dug a little more and I also found this <a href="https://en.wikipedia.org/wiki/Bell_Labs">Bell Labs</a> alumni tracker, and it kind of shows where all the alumni go, and Grace Emlen, it said, relocated Witness Protection Program. And so curious what that is about.</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3858">01:04:18</a>] There was this period of time, I&#8217;ve forgotten the dates, when <a href="https://en.wikipedia.org/wiki/Bell_Labs">Bell Labs</a> decided that employees had to wear their badges so that if you were walking through the hall, people would know that you were an employee as opposed to a tourist of some sort or other. And people were not very enthused about wearing badges. And so there was a bunch of kind of quiet insurrection about it. And one of the bits of insurrection was the creation of badges that were fakes.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3892">01:04:52</a>] Mm-hmm. And so Grace Emlen was a creation of, I think it was probably Fred Grampp who did it. There&#8217;s this Gremlin thing, and so G-R-E-M-L-I-N, Grace. And we managed to get Grace into a variety of official records for the company for a while. And she, this little gremlin-like thing, you know, this high, sat in the Unix room with her badge on. But there were other people who had weird badges. I had a badge with Mickey Mouse.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3926">01:05:26</a>] on it. And so I probably still have it in my desk, but I won&#8217;t try to get it, that I used to wear all the time. I mean, it was&#8212;I wanted to&#8212;nobody looked at the badges. They just see a blur and there was a badge, so it was okay. So I wore this badge all over the place. I wore it when I met Bill Gates at one point. I don&#8217;t think he noticed either. And so, people didn&#8217;t take kindly to bureaucratic stuff, even badges were a fine idea.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3954">01:05:54</a>] Was the badging system digital at that point?</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3960">01:06:00</a>] No, that was just paper, pieces of paper.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3962">01:06:02</a>] Oh, okay.</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3963">01:06:03</a>] Or they were pieces of plastic, but you could put your own paper in front of it.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3967">01:06:07</a>] Another thing, I found somewhere on the Internet in some very old repository, there was a secrets file that was committed to the repo, and everything in there is encrypted, but it was encrypted by the old DES security standard. So it&#8217;s possible to brute force unencrypt it with modern day. And so you and all your colleagues&#8217; passwords are actually&#8212;</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3997">01:06:37</a>] Yeah.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=3998">01:06:38</a>] So I saw yours is just slash period comma slash. Really easy to type quickly.</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=4008">01:06:48</a>] Yeah. No, it&#8217;s funny. I hadn&#8217;t seen that. I got mail from Eric Schmidt saying, gee, did you see this? Sent to several of us. And so it was intriguing to see what the passwords were. I guess you&#8217;re probably right. It probably was either DES or some World War II machine, like a Hagelin machine or whatever that the crypt program was based on. In our defense, this was at a time when the machines weren&#8217;t networked.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=4032">01:07:12</a>] And the passwords were kind of, why would you need them anyway sort of thing. And so we didn&#8217;t pay much attention to them. And I guess the other thing is the password file. This was, I think, a tape that was from Berkeley. And so I don&#8217;t know, somebody must have copied the password file from the research Unix things at <a href="https://en.wikipedia.org/wiki/Bell_Labs">Bell Labs</a> over to some Berkeley system. Don&#8217;t know how it got there.</p><h3>01:07:39 &#8212; Why he writes so many books</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=4059">01:07:39</a>] Coming to the end, yeah, I know you wrote a ton of books in your career, very prolific. I mean, there&#8217;s the C book that was just one of many though. What&#8217;s your motivation for writing all these books?</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=4075">01:07:55</a>] I find it fun. I think it goes back to something you asked about earlier, trying to explain stuff to people who are not experts in it. In some way, I find that attempt to communicate rewarding, worthwhile. It&#8217;s a way to have influence at a distance, perhaps. So teaching is kind of retail. You&#8217;re in the same room with a bunch of people. Writing a book is wholesale, if you like. It&#8217;s&#8212;you won&#8217;t meet most of the people who might look at a book, but with luck, they will also learn something from it.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=4110">01:08:30</a>] Partly it&#8217;s a way to learn the stuff yourself. And I guess partly it&#8217;s just that once you&#8217;ve done one, you do more. I remember a conversation with Don Knuth eons ago where he said that there are people who&#8217;ve written no books, there are people who&#8217;ve written one book, and there are people who&#8217;ve written many books. And so I guess I&#8217;m in that third category, sort of. Yeah, for me it&#8217;s kind of fun.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=4134">01:08:54</a>] And so I&#8217;m still doing it. This is your chance to do a commercial announcement.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=4138">01:08:58</a>] Yeah, what&#8217;s your latest book, actually?</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=4141">01:09:01</a>] Yeah, so I did a book over the last year or so, a history book called Important Ideas in Computing, and it will appear from MIT Press in January. End of commercial announcement.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=4153">01:09:13</a>] Is that the memoir? Oh no, this hasn&#8217;t come out yet.</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=4156">01:09:16</a>] Yeah, this hasn&#8217;t come out yet. Over there underneath your camera is the COVID of it.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=4161">01:09:21</a>] Oh, Shifts.</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=4162">01:09:22</a>] Yeah, right.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=4163">01:09:23</a>] Oh, okay.</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=4164">01:09:24</a>] It&#8217;s available on Amazon, but it won&#8217;t appear until January or something like that. But the idea is that there&#8217;s a bunch of interesting things that have happened in computing where something&#8212; there was a change. In a different context, you&#8217;d call it a paradigm shift, like the Thomas Kuhn idea, but it&#8217;s not really quite. But the shift from analog to digital being different.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=4183">01:09:43</a>] I mean, all the camera stuff you&#8217;re doing here would not be feasible with film, right? And so there&#8217;s the stored program computer, the idea that you can build one general-purpose device that will kind of do anything you want just by giving it different instructions. And so that&#8217;s a big deal. There&#8217;s all the integrated circuitry stuff that the evolution started with the transistor and went to ICs today, all of that stuff.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=4210">01:10:10</a>] Again, all of what you&#8217;re doing here wouldn&#8217;t be possible. Our computers wouldn&#8217;t be. Programming languages, if we were still writing assembly language, it would be pretty bad. But the evolution of programming languages making it ever easier to tell computers what we wanna do. And so go on like that, pick another. And then the final thing that&#8217;s a big, big paradigm shift that&#8217;s different, I think, from most of the others is that we&#8217;re in the middle of it and it&#8217;s incredibly visible.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=4240">01:10:40</a>] And that&#8217;s the AI large language model stuff, which is changing incredibly rapidly and is affecting everybody, and everybody&#8217;s noticing it, which is different from most of the other things that we&#8217;ve talked about. So my wife, who is not a computer person, is interested in learning more about what&#8217;s going on with artificial intelligence, large language models. Explain this. What&#8217;s that mean?</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=4265">01:11:05</a>] What&#8217;s the future going to be like? And so that paradigm shift, I think, is really, really, really uncertain, and we are very much in the middle of it, and everybody knows about it. So anyway, now I&#8217;ve given you the synopsis of the book, go buy it.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=4278">01:11:18</a>] Yeah. With this AI and all these LLMs, one of the big things that we&#8217;ve seen is that they can write all the code, actually. A lot of my peers genuinely could say 100% of the code in the last so many months was written by an LLM. And so a lot of people who really love computing or love writing code, it&#8217;s actually kind of sad for them to see these things become obsolete, like typing things out and stuff.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=4314">01:11:54</a>] I was curious, in your career in computing, there must have been points where something became obsolete, maybe like the punch cards or I don&#8217;t know, something like that. And I guess, how did you feel at that time?</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=4327">01:12:07</a>] Yeah, well, I don&#8217;t miss punch cards in the slightest. No way. I was thinking, my thesis was done on&#8212; my PhD thesis was done on punch cards, and that was three boxes of cards. And I realized that that was 30 pounds of stuff I had to carry around for my thesis. So there&#8217;s certain things like that I don&#8217;t miss. There are other things that you miss, the kind of, call it the intellectual challenge or the puzzle solving or the whatever where you write a piece of code.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=4358">01:12:38</a>] So right at the moment I&#8217;m teaching a class that involves C programming. So it&#8217;s back to early days. And I haven&#8217;t written much C for a longish time, and it&#8217;s kind of fun to get back into it and sort of think and relearn, oh, that&#8217;s what pointers are all about kind of thing. So I suspect most people don&#8217;t miss that sort of thing because the memory management aspects are a pain.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=4383">01:13:03</a>] On the other hand, the challenge and the fun of figuring it out and getting it to work and so on is there. Now, the same fun and challenge and getting it to work is gonna be true if you&#8217;re writing in Python. Is it there if you prompt your favorite Claude or whatever to generate it for you? I don&#8217;t think so. I don&#8217;t think that at all. And even once the program is generated for you, you still have to see whether it works and whether it&#8217;s the most effective way to do what you want.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=4413">01:13:33</a>] And is it really doing what you want or should you have wanted something different? And all of those sorts of things. And that&#8217;s in an environment where you know what you&#8217;re doing. I&#8217;ve been using mostly Claude, but others as well, to generate SQL because I&#8217;m not an SQL expert. And I have a colleague over at the Institute for Advanced Study who has a database. She&#8217;s not a programmer at all, but she wants to query her database effectively.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=4442">01:14:02</a>] So I need something to generate SQL from natural language queries. So I want to say, give me all of the whatevers that have this property and get the large language model to generate the SQL and then run it through the database. How do I know whether it gave me the right query? Because I&#8217;m not an SQL expert, and if we already knew the answer, we wouldn&#8217;t need it. And so I&#8217;m wrestling with that. And my observation is 90% of the time it generates a perfectly fine query, and 10% of the time it doesn&#8217;t, gives you the totally wrong answer, and I don&#8217;t know which is which.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=4479">01:14:39</a>] It sounds like what you&#8217;re saying is you need some domain expertise, otherwise you can&#8217;t be the judge of if it&#8217;s&#8212; Yeah, you need domain expertise.</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=4488">01:14:48</a>] Probably it&#8217;s the same domain expertise you always needed. You need ways of validating what you do because you can&#8217;t be sufficiently expert that you can test a big program all by yourself. So you need something, AI again, to help you with generating the test, but then you need something to evaluate whether the tests were properly generated. And then there&#8217;s this infinite regress of check the checker who checked the checker kind of thing.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=4514">01:15:14</a>] Now I&#8217;m oversimplifying, and I&#8217;m not a high-powered user. And I know plenty of people who, as you described, are essentially everything they used to do, they have outsourced to something like a large language model. And I don&#8217;t know what they&#8217;re giving up by doing that. In one sense, they&#8217;re getting a lot out of it. They&#8217;re probably 10 times as productive as they used to be in terms of code to get some functionality.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=4539">01:15:39</a>] And at the same time, they&#8217;re probably losing 10% of their brain cells or failing to exercise them properly. And I just don&#8217;t know. It&#8217;s early, and whatever we say today in a week or a month will probably not be correct anymore. The place where this shows up, at least right around here, is kids worrying about what&#8217;s gonna happen when I get outta here. I wanted to be a software engineer.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=4568">01:16:08</a>] Does that job still exist? And the answer is maybe, but it&#8217;s different than it would&#8217;ve been 2 or 3 years ago. And by the time they graduate in a year, it&#8217;d probably be different yet again. And the question is, how do we, on the faculty side of things, let&#8217;s say, help them manage this? What do we try to teach them? How do we get them to have the right habits of thought or whatever so that they are able to go thrive in this brave new world?</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=4600">01:16:40</a>] And the short answer is I have no idea either. Okay. I don&#8217;t think anywhere does.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=4606">01:16:46</a>] In the world you describe, which is today&#8217;s world, the models are not perfect. There&#8217;s a lot of subtleties where they get things wrong. But in a world where they are perfect and they&#8217;re kind of doing everything, what, just out of curiosity, what happens to a computer science major?</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=4625">01:17:05</a>] Well, I mean, first, you have a premise there, which is that these things will become perfect. And I suspect they won&#8217;t become perfect, although they may become a lot better than they are right now. So there&#8217;s probably still gonna be need for somebody to assess their perfection. I think the nature of what people do with them will change in the same way that we don&#8217;t have people writing assembly language very much anymore.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=4647">01:17:27</a>] We trust our compilers. And in fact, we don&#8217;t write C very much. We write higher-level languages. And so this may be another step up the, call it the abstraction ladder. Yeah. Chain or something like that, but you&#8217;re still gonna need people to guide it and what&#8217;s the right sensible direction to go. The other thing is that people will be able to build more interesting things because of this.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=4670">01:17:50</a>] So I have a student from a couple of years ago, graduated a couple of years ago, who is doing a very, very successful, interesting company using artificial intelligence, large language models to do translation of natural languages, mostly for user interface kinds of things. And I think his company&#8217;s gonna be very successful and it&#8217;s interesting work. And as the large language models improve, it just means that he can do a better job at what he is already doing and offering to his customers.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=4703">01:18:23</a>] So I think that kind of thing will probably continue to happen.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=4706">01:18:26</a>] When C came out, were people mourning? I think it would be before that.</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=4714">01:18:34</a>] I think it was when Fortran came along. If you look at what John Backus said when he was in his group at IBM working on Fortran, this would be roughly &#8216;56, &#8216;57, that kind of era, I guess. He was very afraid that people would not accept this new tool because it would not generate code that was as good as people could generate, that the assembly language came out or the program wouldn&#8217;t be as efficient.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=4746">01:19:06</a>] And so in the design of Fortran, he quite consciously stayed away from elegance and so on and aimed towards efficiency of the translation. And so it was a genuine concern. And at some point along the way, their compiler started finding optimizations that people didn&#8217;t. And that&#8217;s the point where he figured maybe this is gonna fly. Now, after that, I suspect people did mourn the skill and the whatever that goes into assembly language programming.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=4777">01:19:37</a>] But for most people, nah, they just wanted to get the results. And Fortran was a boatload better than assembly language in multiple directions. It was easier to learn. If you were a physicist or a chemist, you could learn Fortran, where you&#8217;d never learn IBM 7090 assembly language. And furthermore, if you got it working once, you could put it on multiple different machines.</p><h3>01:19:58 &#8212; His favorite and least favorite languages</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=4798">01:19:58</a>] When you look across your whole career, because you&#8217;ve worked in a bunch of different programming languages and you&#8217;ve taught a bunch of different ones, are there any that stick out to you as your favorite or your least favorite?</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=4815">01:20:15</a>] If I think about what I do on a day-to-day basis, if I write a program, it tends to be a small one, and it&#8217;s in awk. It was just kind of silly, but okay. At least I know it. If I were to write bigger ones, I would almost surely write &#8216;em in Python because for many things that&#8217;s the right compromise. It&#8217;s certainly efficient enough for anything I do, and it&#8217;s totally expressive for the kinds of things I might wanna do.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=4840">01:20:40</a>] I will occasionally go back to C because I&#8217;ve got some older program and maybe I wanna do something with it, or as I&#8217;ve said, I&#8217;m teaching it at this point. So those are kind of the languages that I wind up using. Not very many other languages I wouldn&#8217;t use. So who shall I insult today? I used to, in my class, I haven&#8217;t done this for a long time, but I used to basically write the same program in as many languages as I could find.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=4868">01:21:08</a>] It was a simple program. You would take text input lines of arbitrary lengths and put &#8216;em out so that the lines were all at most 60 characters or something. So it was a simple-minded version of the reflow that you would see in a browser. And I would write it in every language I could lay my hands on. I had 2 dozen or more of them and I&#8217;d show &#8216;em in class. And the question was which ones ran faster and which ones were in some sense small or easy to understand or whatever.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=4896">01:21:36</a>] And awk was pretty fast, and it was the smallest always. It was about 15 lines of code to do this job. And C was always the fastest, but it was harder because you had to worry about memory management a bit, and it was clunky to do strings. Yeah. And the other scripting languages like Perl and Python and PHP, on the other hand, they were variously sort of okay. Perl was always the faster one. And some of the high-powered languages that were supposed to be better were actually slower.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=4924">01:22:04</a>] Java was slower than the scripting languages. Kind of weird. C++ wasn&#8217;t as fast as I thought it would be. And at the far end of it was Haskell. And it took me weeks to write the Haskell program, whereas Lua, a language I had never touched, took me about half an hour. Look at the manual, oh, I see, done. Whereas Haskell took forever. And then I showed it to some Haskell expert. He said, oh, but you have to import this character library that does this, and then it ran faster.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=4955">01:22:35</a>] What made Haskell take so long?</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=4958">01:22:38</a>] It&#8217;s a different way of thinking, and I just didn&#8217;t grok it. I really didn&#8217;t. And I think part of it was the problem is you&#8217;re taking input in one form and, not asynchronously, but not at the same cycle, you&#8217;re trying to produce output. So your lines are varying lengths and you want to produce lines with the same length. And that mismatch of input and output kind of frequency didn&#8217;t fit naturally with Haskell as I understood it.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=4988">01:23:08</a>] Now, this is not a knock on Haskell. I mean, there are people who love it, but I&#8217;m not one of them.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=4992">01:23:12</a>] I saw somewhere on the Internet that somewhat recently, in the last few years, you added Unicode to awk, or the repo of awk that you&#8217;re kind of contributing to, and it made me think, what motivates you to continue to write code?</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=5013">01:23:33</a>] Well, it&#8217;s fun. It&#8217;s this intellectual challenge that we talked about. And I think part of it was that for AWK in particular, I wanted to actually be able to process Unicode because an awful lot of text in the world is in Unicode at this point. By Unicode, I mean UTF-8. So I wanted AWK to work properly on that kind of stuff, and it didn&#8217;t. So that was part of the change. The other thing I did at the same time was to make it work with CSV files, because I had data that was in CSV files, and AWK was very clunky for processing that.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=5048">01:24:08</a>] And so added a mechanism so that you could say, hey, do CSV properly, the input mechanism. I think both of those were triggered probably by working on a second edition of the AWK book. And that was done in just a couple of years ago. And at this day and age, it would be really embarrassing if you couldn&#8217;t handle Unicode.</p><h3>01:24:28 &#8212; Advice for students and young people</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=5068">01:24:28</a>] For young people, a lot of times they&#8217;re trying to discover, I guess, their passion or the thing they want to work on. It sounds like you found it pretty quickly in programming, and you&#8217;re naturally enjoying just the act of it. If you had a student that comes to you, or a young person, and they ask you, how do I find that thing I should be working on that I should be passionate about?</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=5092">01:24:52</a>] What would you say?</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=5094">01:24:54</a>] It&#8217;s a good question. I think probably what you tell them is to go do as many different things as you can in the hope that something will resonate. I mean, how do you find the perfect partner for your life? You don&#8217;t sit in your room and think about it. You go to parties or whatever, or maybe you use some app like Tinder or what, I don&#8217;t know. But you do things that get you out in a place where you might discover the sort of thing that you&#8217;re hoping to find.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=5121">01:25:21</a>] Now, it&#8217;s an imperfect process, obviously, but I think if you don&#8217;t do things, if you don&#8217;t try different things, then you may not stumble into it. Long time ago, I think it was Richard Hamming said to me that, you know, it was Nancy Reagan who said, just say no. This was the don&#8217;t do drugs kind of thing. And Hamming said, just say yes. Not to drugs, presumably. But the idea that if somebody comes along with something and you think, I don&#8217;t know, let me try it, and applied with some common sense, that seems like a reasonable way to handle a lot of different things.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=5161">01:26:01</a>] It&#8217;s hard to know, and what works for one person isn&#8217;t necessarily gonna work at all for anybody else. And so, giving people career advice or life advice, you wanna be careful if you get it from me.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=5174">01:26:14</a>] And then, yeah, last question for you is, with all the experience that you have now and going through your career and everything we discussed, if you could go back in time and give yourself advice knowing everything you know now, what would you say?</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=5191">01:26:31</a>] I think if I look at it, a lot of what I have done&#8212; you&#8217;ve seen a Galton board? It&#8217;s this thing where you drop a marble, there&#8217;s an array of nails, and you drop a marble in at the top and it comes out somewhere at the bottom. And if you repeat it enough, you get a normal distribution of marbles across depending on which way it bounces. And so I&#8217;m like a ball dropped into a Galton board, and I come out somewhere at the bottom.</p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=5218">01:26:58</a>] But the decisions, which nail, when I hit a nail, which way do I go? I have no idea. A lot of it is serendipity. However, one I think genuinely useful observation, a lot of this stuff comes from talking with Dick Hamming, but it was Pasteur who said, chance favors the prepared mind. So the more things you have thought about, you&#8217;ve wondered about, done a bit with, met people on, whatever, the more likely it is some one of those will actually lead you in the right direction.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=5246">01:27:26</a>] On that board, you&#8217;re saying prepared mind kind of biased those outcomes a little.</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=5253">01:27:33</a>] Towards a potentially better outcome. Yeah, I think so.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=5256">01:27:36</a>] Well, yeah, that&#8217;s all my questions. Thank you so much for your time. Really appreciate it.</p><p><strong>Brian:</strong></p><p>[<a href="https://www.youtube.com/watch?v=sMllOlxVgD0&amp;t=5260">01:27:40</a>] It&#8217;s been my pleasure.</p>]]></content:encoded></item><item><title><![CDATA[The Story Behind Creating DNS | Paul Mockapetris]]></title><description><![CDATA[This interview is with Paul Mockapetris, the creator of the internet&#8217;s Domain Name System (DNS).]]></description><link>https://www.developing.dev/p/e071-paul-mockapetris</link><guid isPermaLink="false">https://www.developing.dev/p/e071-paul-mockapetris</guid><dc:creator><![CDATA[Ryan Peterman]]></dc:creator><pubDate>Mon, 19 Oct 2026 13:05:34 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/215839093/a3453e11ec60144b63f620356ac74722.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>This interview is with Paul Mockapetris, the creator of the internet&#8217;s Domain Name System (DNS). I talked to him about the story behind building it and certain design choices he made.</p><p>Check out the episode wherever you get your podcasts: <a href="https://www.youtube.com/watch?v=LT4iVeUoL18">YouTube</a>, <a href="https://open.spotify.com/episode/61TliCCkZDV2ZkN6er8yhW">Spotify</a>, <a href="https://podcasts.apple.com/us/podcast/the-peterman-pod/id1777363835">Apple Podcasts</a>.</p><div id="youtube2-LT4iVeUoL18" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;LT4iVeUoL18&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/LT4iVeUoL18?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h1>Timestamps</h1><p><a href="https://www.developing.dev/i/215839093/0040-what-computing-was-like-before-dns">00:40 - What computing was like before DNS</a></p><p><a href="https://www.developing.dev/i/215839093/0902-why-urls-are-inverted">09:02 - Why URLs are inverted</a></p><p><a href="https://www.developing.dev/i/215839093/1633-how-dns-works">16:33 - How DNS works</a></p><p><a href="https://www.developing.dev/i/215839093/2027-how-he-migrated-the-internet-to-dns">20:27 - How he migrated the internet to DNS</a></p><p><a href="https://www.developing.dev/i/215839093/2517-why-do-companies-host-dns-servers">25:17 - Why do companies host DNS servers</a></p><p><a href="https://www.developing.dev/i/215839093/3317-what-is-an-rfc">33:17 - What is an RFC</a></p><p><a href="https://www.developing.dev/i/215839093/3507-how-he-got-into-computing">35:07 - How he got into computing</a></p><p><a href="https://www.developing.dev/i/215839093/4639-advice-for-his-younger-self">46:39 - Advice for his younger self</a></p><h1>Transcript</h1><h3>00:40 &#8212; What computing was like before DNS</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=40">00:40</a>] Before we talk about <a href="https://en.wikipedia.org/wiki/Domain_Name_System">DNS</a> getting created, I&#8217;d like to go over what computing was like before <a href="https://en.wikipedia.org/wiki/Domain_Name_System">DNS</a>?</p><p><strong>Paul:</strong></p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=50">00:50</a>] Well, it depends on where, how far before <a href="https://en.wikipedia.org/wiki/Domain_Name_System">DNS</a>. But just to put a post in the ground, I started thinking about <a href="https://en.wikipedia.org/wiki/Domain_Name_System">DNS</a> probably in 1982. Now, to back up over that, the <a href="https://en.wikipedia.org/wiki/ARPANET">ARPANET</a> was created in the late &#8216;60s, so computers were being connected. So that meant that there would be more than one computer on the network. Obviously, if you only have a computer in a big lab, you don&#8217;t need to name it unless you feel like it, because it isn&#8217;t.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=81">01:21</a>] Which computer do you want to talk to is ever an issue. But when you start networking them together, then the question comes up: how do you decide which one you want to talk to from whichever one you happen to be at? Because in those days, the computers we&#8217;re talking about were big machines, at least refrigerator size, shall we say, and more often a whole room size, packed with fans and false floors and all like that.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=111">01:51</a>] Big, huge things that we would worship anyway. So people started connecting more and more of them with the <a href="https://en.wikipedia.org/wiki/ARPANET">ARPANET</a>. And at some point they said, well, we got to keep track, so we&#8217;re going to give them names. When I came on the scene, it was pretty established practice that what you would do is you would have a computer file that was maintained by an organization called the SRI NIC, and that file would list a machine name and basically its Internet address.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=144">02:24</a>] And so that file, at the time I started playing with computers, was probably 50 lines long. And when I started doing <a href="https://en.wikipedia.org/wiki/Domain_Name_System">DNS</a>, it was maybe a couple hundred lines long. The problem you have is if you want to scale at all, what you really need to do is, first of all, if you wanted to add a new computer, what you would do is you would call up SRI, say, &#8220;Hey, I want to add a line to that file.&#8221; Okay. And hopefully you are calling during 9 to 5 Pacific time, because that&#8217;s the only time they would answer the phone.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=181">03:01</a>] So they added to that file. Now, that file was kind of like the master copy of a phone book. And the only way you would become known is when other people on the network would say, &#8220;Hey, get me an updated copy of who&#8217;s who.&#8221; So it relied upon the fact that you would call up SRI, you would get into the new version of the file, and you would become known as people took a copy of that file from SRI. So that was the basic scheme that was around.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=214">03:34</a>] I had been doing research on some other performance measurement issues, but frankly, I hated it because there were all these famous guys that were doing the same stuff. So I wasn&#8217;t going to get anywhere doing that. So this. What could you do next? Was a nice little research problem that they could hand off to me. People now say, well, Paul, how&#8217;d you get this wonderful big job designing the <a href="https://en.wikipedia.org/wiki/Domain_Name_System">DNS</a>? Nobody thought it was that important.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=244">04:04</a>] It was a nice little problem. Go away. And also, they didn&#8217;t monitor me that much because they probably would have guided me to be doing something sort of less. Well, I had done naming stuff in my prior career at UC Irvine, and I had also done multiple machine kind of stuff when I was an undergraduate at <a href="https://en.wikipedia.org/wiki/Massachusetts_Institute_of_Technology">MIT</a> with the Architecture Machine Group, which went on to become the <a href="https://en.wikipedia.org/wiki/Massachusetts_Institute_of_Technology">MIT</a> Media Lab, okay. But they were poor at the time and unknown, not like the flashy thing they are today.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=282">04:42</a>] So they had multiple machines that they needed to connect. So I had always been working with multiple machines and distributed systems. And I had done a bad job with designing a new naming system for the UC Irvine people. So there was a bunch of mistakes that I didn&#8217;t make over again. And there was a bunch of mistakes that I thought other people had made with some other ones, work that had gone on like Xerox PARC and so forth.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=309">05:09</a>] So till I would say at least 50%, the whole design idea wasn&#8217;t based upon the Internet community or USC ISI, where I was working. It was just based upon I had now done it wrong a couple of times, okay? This time I was going to get it right. And this was, in fact, a much larger audience. My idea was it might have to scale up to 10 million or so different identities. And so that&#8217;s how it got started.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=342">05:42</a>] Now, the thing that was, I think, really important that people didn&#8217;t realize, people realized the business about distributing the management, which you did. You only had to call up once, and then you could do all your computers yourself thereafter, okay? And the information always propagated. It wasn&#8217;t like it would only propagate when somebody else got a copy of the phone book. It would be instantly available.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=368">06:08</a>] That helped a lot in that era. But the other thing was that it always had the idea that there were more than machine names. Okay? I mean, people say, well, the first application was this business about translating a host name or computer name to an IP address, you know, 192.168.1.0 or whatever. But in reality, the first thing it did is it said, oh, we have to figure out which <a href="https://en.wikipedia.org/wiki/Name_server">name server</a> we have to ask in order to find this information.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=404">06:44</a>] That was the first question that ever got asked by <a href="https://en.wikipedia.org/wiki/Domain_Name_System">DNS</a>. Don&#8217;t find me an address. It&#8217;s like, find me the place where I look up this name. So <a href="https://en.wikipedia.org/wiki/Domain_Name_System">DNS</a> used its own system to keep track of where all this data was. So the magic, if you will, came in two parts, one of which is you could divide up the space and give individuals control indefinitely. Today you have millions of separate organizations that own their own little chunk of the namespace.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=436">07:16</a>] But the other part of the magic is it looks like it&#8217;s all together, right? You don&#8217;t say, oh my God, this is going to be hard. This name ends in .fr, it&#8217;s in France. This is going to be hard. Nope, just go, it ends in .fr.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=451">07:31</a>] Okay, you mentioned in some of your early naming work you had made a lot of mistakes that you fixed in the original design of <a href="https://en.wikipedia.org/wiki/Domain_Name_System">DNS</a>. What kind of mistakes did you make?</p><p><strong>Paul:</strong></p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=463">07:43</a>] For example, when at the Architecture Machine Group, I was designing this file system where people could have file names, but they would be accessing them from different computers. And I said, okay, well, what we&#8217;ll do is we&#8217;ll let you have a name and then you can group that into a directory. So it was kind of like you had a two-level name. You have the most significant part and the least significant part, two-level names.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=491">08:11</a>] Xerox PARC. At the time I was designing, the <a href="https://en.wikipedia.org/wiki/Domain_Name_System">DNS</a> had their own kind of system, and they had fixed three levels. And I said, this is stupid. Okay? I&#8217;m just going to design it so that you can nest at however many levels you want, because people want to have freedom to organize their information. And you might say, well, mostly people use three levels or four levels, but there are lots of hidden applications where they go many, many, many levels deep.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=525">08:45</a>] And it just doesn&#8217;t make any sense. If you&#8217;re going to go to the trouble to allow people to nest names, you should just say, okay, any reasonable amount of nesting, that&#8217;ll work. That&#8217;s one example.</p><h3>09:02 &#8212; Why URLs are inverted</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=542">09:02</a>] Why is it that URL goes from most specific to least specific? So I&#8217;m talking about if you go to, I don&#8217;t know, maps.google.com, the biggest one, Google&#8217;s the more specific, Maps is the most specific. And then after that there&#8217;s the path, which is also like a file directory. So it gets more and more specific as you go. Why is it inverted like that?</p><p><strong>Paul:</strong></p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=572">09:32</a>] You say inverted, I say it&#8217;s an obvious choice. Think about this, okay? When you&#8217;re typing in a URL, if I type maps, it can probably guess the google.com. If I type in .com, is it going to address Google Maps? No. So the point is that what you want to do is to put in the part. So if the machine is going to complete it, it has a chance, right? Obviously, start with .com. You go, okay, well that narrows it down to 260 million different names, right?</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=605">10:05</a>] Whereas if what you do is you type, oh, I don&#8217;t know, you happen to have a machine called Alice, it may be able to say, oh, okay, I&#8217;ll look what&#8217;s around locally. And so that&#8217;s why the order is the way it is. And I make no apologies. And there&#8217;s a lot of people that think I was wrong.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=622">10:22</a>] What about the www? www in the beginning, because that I could go www.maps.google.com, and that www feels like a very generic thing, or it seems to just be prepended to a lot of URLs. What is that, and why is it there?</p><p><strong>Paul:</strong></p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=640">10:40</a>] Well, what happened was that there were different things. There was email, there was what was called File Transfer Protocol, and there is also the web. So the idea was that if you had an identity, let&#8217;s say we&#8217;re talking about Stanford, Stanford has Stanford.edu. Okay, well, they get to create names under that. And what we&#8217;re going to do is we&#8217;re going to say as a convention, if you want to talk to the web server for Stanford, you put a www in front of Stanford.edu.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=670">11:10</a>] If you want to talk to the web server at whitehouse.gov, well, you go www.whitehouse.gov. Now it turns out that pretty much all people do is talk to web servers, right? I mean, it turns out that that whole idea about separate machines and that you would have FTP, Stanford.edu, or whatever, all that kind of died out. People made a lot of different choices. And I always say, what I did for the <a href="https://en.wikipedia.org/wiki/Domain_Name_System">DNS</a> is I built the sub-basement and the basement, the two floors of this building.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=713">11:53</a>] And then people came all along and added 100 different things, different floors. It&#8217;s a little bit like Gaud&#237;&#8217;s cathedral in Barcelona. It kind of like there&#8217;s a bunch of strange shapes, but seeing as everybody did it, it&#8217;s kind of worse than that because there&#8217;s been over 100 different additions that have been proposed on the basic system. And I have to tell you that probably about half of them are less than average from a standpoint of quality.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=742">12:22</a>] So it&#8217;s a bunch of ideas that failed. There&#8217;s a bunch of ideas that didn&#8217;t turn out the way people thought. People had a lot of different dreams. One of the things they said was, all right, well this is great, we&#8217;re going to use the <a href="https://en.wikipedia.org/wiki/Domain_Name_System">DNS</a> to route phone calls. So these people got together and did a bunch of stuff, but it turns out that they didn&#8217;t pay attention to what were the features that people wanted out of their phone system that you don&#8217;t think about, like the fact that 800 numbers aren&#8217;t the same everywhere.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=780">13:00</a>] That kind of mechanism didn&#8217;t get added by the Internet geniuses. So for that reason, the system that they designed wasn&#8217;t as good functionally as the one that was already in place. So there was a certain amount of pushback there. And one of the things that&#8217;s kind of interesting is people go, oh God, it&#8217;s terrible. All these domain names now are getting sold and they get sold for big numbers and the name I want I can&#8217;t get and, blah, blah, blah.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=812">13:32</a>] Well, it turns out that that pretty much has happened with every numbering system that has ever been created. For example, you&#8217;ve seen the barcode on the back of whatever you bought today at the market. Barcode started out as a U.S. thing, where it was basically a 10-digit code, all right? And there&#8217;s an organization that if you came along and you said, okay, I need a block of 5,000 codes, they would allocate it to you and they&#8217;d sell it to you.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=846">14:06</a>] So the Europeans said, &#8220;Oh, well, we want it on this.&#8221; And they said, &#8220;Well, that&#8217;s great, because you&#8217;re going to have to buy a lot. We&#8217;ll take a lot of money from you.&#8221; They said, &#8220;No, no, we don&#8217;t. We shouldn&#8217;t have to pay for this.&#8221; And so what they did is they made an 11-digit code where they embedded the 10 digits of U.S. codes with, I don&#8217;t know, probably with the thing that starts with zero.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=869">14:29</a>] And then they said, well, okay, we&#8217;ll give away the rest of the namespace, all right. And so then airlines came to them and said, oh, this is great, give us some numbers so that we can keep track of passengers&#8217; bags. And they said, okay, well, you&#8217;re ready to pay, right, because we&#8217;re going to charge you, so it&#8217;s. Once people start to own some of these name and number spaces, they of course have to manage it, and that costs some money.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=900">15:00</a>] But the idea of making a profit out of it is always front and center. I mean, the other thing that happened with <a href="https://en.wikipedia.org/wiki/Domain_Name_System">DNS</a> is I created the original specs, and they were first published in 1983. And by 1986, the system was kind of up and running. And 1986 was the first year where somebody actually configured a computer system that only did <a href="https://en.wikipedia.org/wiki/Domain_Name_System">DNS</a> and didn&#8217;t have any of that old <a href="https://en.wikipedia.org/wiki/Table_d'h%C3%B4te">host table</a> thing. It just wasn&#8217;t necessary.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=934">15:34</a>] There was a whole transition process there where I would go and get a copy of the <a href="https://en.wikipedia.org/wiki/Table_d'h%C3%B4te">host table</a> from SRI every day, and I would immediately put it into the <a href="https://en.wikipedia.org/wiki/Domain_Name_System">DNS</a>. So the <a href="https://en.wikipedia.org/wiki/Domain_Name_System">DNS</a> always had all the information that they had, plus any of the pioneers that joined and got their own domains and started adding stuff. So the <a href="https://en.wikipedia.org/wiki/Domain_Name_System">DNS</a> over time had everything that the <a href="https://en.wikipedia.org/wiki/Table_d'h%C3%B4te">host table</a> had, but also had other places that you couldn&#8217;t reach via the <a href="https://en.wikipedia.org/wiki/Table_d'h%C3%B4te">host table</a>.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=967">16:07</a>] So it was pretty much inevitable that if we could keep it running reliably enough and give enough performance, which people were incredibly skeptical about because they said, okay, so either there&#8217;s the scheme where I get a copy of this table and when I want to know information, I look it up, or I go off and send queries across the Internet and see whether or not the right answer comes back. Which one sounds more reliable?</p><h3>16:33 &#8212; How DNS works</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=993">16:33</a>] How does <a href="https://en.wikipedia.org/wiki/Domain_Name_System">DNS</a> work in terms of the high-level technical pieces?</p><p><strong>Paul:</strong></p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=998">16:38</a>] If you think about the namespace being written as a big tree, where there&#8217;s the first level, the so-called top-level domains like .com and .us and so forth, and then there&#8217;s a tree structure that grows underneath them. We talked before about how well the names were structured one way in order. You can do the autocomplete. Well, it turns out you go the other direction when you&#8217;re trying to actually locate the server for a name.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=1025">17:05</a>] Because what you do is you say, okay, we have this thing called the root, which is really the node that&#8217;s on top. It&#8217;s the real top level debate. And there&#8217;s only one of them. So what you can always do is you can ask the root, you can say, where is Stanford Edu? And the root says, well, sorry, Paul, I don&#8217;t know, but I know where Edu is. I know where a server for Edu is, so I&#8217;ll point you at that.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=1051">17:31</a>] Go ask that. So then when you go ask that, it says, okay, I could. I know about Stanford Edu. So you search in order to find the correct <a href="https://en.wikipedia.org/wiki/Name_server">name server</a> in the opposite direction from, if you will, from autocomplete. But basically, if you think of it, it all being organized as a tree structure, you know, Internet trees and computer science trees are always kind of like the root is up at the top and then the leaves are down at the.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=1080">18:00</a>] You know, we can&#8217;t help ourselves. At any rate, it says that if you can get to the top, you can always go down one level. Okay. Each time you ask a server that&#8217;s responsible for a particular set of names, it can tell you about one level down in that name. So if you can get to the top, you can always go to the bottom. And so there&#8217;s a little bit of configuration that usually exists that&#8217;s manually configured in a <a href="https://en.wikipedia.org/wiki/Name_server">name server</a> that tells you where the <a href="https://en.wikipedia.org/wiki/Root_name_server">root servers</a> are.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=1113">18:33</a>] The <a href="https://en.wikipedia.org/wiki/Root_name_server">root servers</a>, way back when, used to be some number of machines. When the system first came operational, there was three of them. Today there&#8217;s 13 different clouds of servers for the root.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=1128">18:48</a>] How did you convince yourself that performance wouldn&#8217;t be an issue if you had to do all these recursive calls?</p><p><strong>Paul:</strong></p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=1134">18:54</a>] Well, there&#8217;s another thing that happens here that we haven&#8217;t talked about. When you go and look up something like you say, okay, where is the web server for UCI Edu for UC Irvines? When you get back, the answer for that, it comes with a timestamp on it that says, okay, you can assume this doesn&#8217;t change for some number of seconds. Okay? And what people often would do is for things that don&#8217;t change very often, what they would do is that say, okay, you can keep that information for a day.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=1171">19:31</a>] So there&#8217;s this caching infrastructure such that if you get it, you don&#8217;t have to look it up again for a day. Okay. It&#8217;s a little bit like the way you manage your refrigerator, right? You go in there and you go, milk you know, best if used in a week. Oh, you know, you&#8217;re going in your pantry. Canned beans, best of used this century. You know, I mean, basically the information is all timestamped like that so that you can know how long you can keep it.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=1203">20:03</a>] So the idea is that, yeah, you might have to go and fetch this information across the network, but once you have it, if you use it again, and a lot of this information gets used over and over and over again, right, Then you only pay the cost. One out of many, many, many accesses.</p><h3>20:27 &#8212; How he migrated the internet to DNS</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=1227">20:27</a>] Well, so I guess the big question in my mind is how did you convince people that performance and reliability would be acceptable?</p><p><strong>Paul:</strong></p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=1234">20:34</a>] Well, you know, basically what happened was every morning I would get a copy of the existing standard and I would pump all those names into the <a href="https://en.wikipedia.org/wiki/Domain_Name_System">DNS</a>. So they would. So if you were accessing the <a href="https://en.wikipedia.org/wiki/Domain_Name_System">DNS</a>, you could always access all of the current stuff in the <a href="https://en.wikipedia.org/wiki/Table_d'h%C3%B4te">host table</a>. And then there were people that wanted to manage their own stuff and they were hip and they were cool. So they used the <a href="https://en.wikipedia.org/wiki/Domain_Name_System">DNS</a> and they added stuff into the <a href="https://en.wikipedia.org/wiki/Domain_Name_System">DNS</a>.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=1264">21:04</a>] They didn&#8217;t bother to update the hose table. So there would be this community that would grow that, you know, weren&#8217;t playing the old game because they knew that they could play both games by just doing. If they did the <a href="https://en.wikipedia.org/wiki/Domain_Name_System">DNS</a>, they got both namespaces, if you will. And if they just relied on the <a href="https://en.wikipedia.org/wiki/Table_d'h%C3%B4te">host table</a>, well, there were some places they weren&#8217;t going to go. And that&#8217;s where the cool kids hang, hung out.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=1290">21:30</a>] And you know, the, the other thing that&#8217;s kind of amusing is that in the early days of the Internet, the SRI NIC was three people, okay? But as the Internet expanded and people were calling up to get names added, they started to have more people to answer the phone. And the DOD was paying for this. And they&#8217;re kind of going like, well, why are we paying to register Stanford Edu&#8217;s machines one by one?</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=1320">22:00</a>] And you know, as the NSF net expanded and things weren&#8217;t all run by the ARPA or, or the ddn, they said, why are we going to do this? Because they eventually had like 20 people on staff just dealing with maintaining this stuff. And they said, well, no, how about we just pay it for maintaining it for our own people? And so that&#8217;s when people started thinking about splitting off. You may have heard of the mill net, any rate, that was sort of a network that was going to be used for real military stuff.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=1354">22:34</a>] And why are we going to do that? It&#8217;s kind of funny because you know, the sponsorship of the <a href="https://en.wikipedia.org/wiki/Domain_Name_System">DNS</a> research also came along, like in the late 1980s. They were kind of going. Arpa in particular, who sponsored the early work, said, paul, this isn&#8217;t research anymore. It&#8217;s all done deal. It was a great thing, but it&#8217;s not new and super wizzy and innovative and so forth. So we&#8217;re not going to pay you anymore for that.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=1383">23:03</a>] And I had sent them a proposal for what I thought was the next level of the <a href="https://en.wikipedia.org/wiki/Domain_Name_System">DNS</a>, and they said, no, no, it&#8217;s not. That&#8217;s not like cutting edge research. All this <a href="https://en.wikipedia.org/wiki/Domain_Name_System">DNS</a> stuff, that&#8217;s old. I sent in a proposal to NSF and I said, okay, here&#8217;s what I want to do. I think what we can do is we can use the <a href="https://en.wikipedia.org/wiki/Domain_Name_System">DNS</a> not only to keep track of the names of everything, but we can use it to build an index of all the content that&#8217;s out there, you know, who has files of what.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=1414">23:34</a>] And so I wrote up a proposal, I sent it to nsf and they said, paul, you&#8217;re crazy. There&#8217;s like thousands of machines. You can&#8217;t possibly keep up with all that. Okay, so this is where Paul made one of his fundamental errors. You say, why didn&#8217;t you register 10,000 names and go to a beach and wait for them to all be worth a million dollars?</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=1434">23:54</a>] Do you ever think about that? You could have owned those things.</p><p><strong>Paul:</strong></p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=1437">23:57</a>] Well, you could have mined <a href="https://en.wikipedia.org/wiki/Bitcoin">Bitcoin</a> in your younger days and. Right, that&#8217;s fair. You had a 286 laptop, could have mined a few billion dollars worth of <a href="https://en.wikipedia.org/wiki/Bitcoin">Bitcoin</a> without much trouble. Right?</p><h3>25:17 &#8212; Why do companies host DNS servers</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=1517">25:17</a>] You mentioned those, those <a href="https://en.wikipedia.org/wiki/Root_name_server">root servers</a> that we go to Initially, what&#8217;s the economic incentive or who&#8217;s paying for those servers?</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=1524">25:24</a>] What&#8217;s the economic incentive for those 13 clouds that exist?</p><p><strong>Paul:</strong></p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=1528">25:28</a>] I ask myself this question a lot and I have to tell you, it&#8217;s one of the things I don&#8217;t quite understand. You know, the first thing that happened where I didn&#8217;t have somebody come to me, I mean, I, I went around saying, hey, will you run a root server? I&#8217;ll give you the code, you know, blah, blah, blah. Because I was trying to get month. And then one day the Europeans walked in and said, we need a European root server.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=1557">25:57</a>] And today I&#8217;m not sure why. I mean they certainly, there&#8217;s certainly prestige involved and there&#8217;s a move to centralize the <a href="https://en.wikipedia.org/wiki/Domain_Name_System">DNS</a>. So more and more of the <a href="https://en.wikipedia.org/wiki/Domain_Name_System">DNS</a> is being subsumed by some of the hyperscalers like Cloudflare, Google and so forth. So the system is getting less distributed than it was in the early days. It was very distributed. Now it&#8217;s centralized more and more. So part of that is that over time, as people added more and more stuff in there, it got more and more complicated to run.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=1602">26:42</a>] There&#8217;s this big discussion that the Internet old boys have. They go, you know, it&#8217;s, God, it&#8217;s hard to run an email server these days. In the old days it used to be easy. So people want to outsource the operation of a lot of stuff and not deal with it. And people do complicated load balancing tricks. There&#8217;s a certain urge to outsource because there&#8217;s only a limited number of people that really want to deal with the inner complexity.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=1634">27:14</a>] But there&#8217;s a lot of people that would, you know, say there&#8217;s, there&#8217;s got to be a conspiracy theory here. The big companies, you know, they claim that they don&#8217;t collect data there. Okay, they claim that they don&#8217;t collect data there. And I would never, you know, I would never accuse them of trying to make a profit. I&#8217;m so. Well, never mind. You know, it&#8217;s kind of funny because one of the things people do is they talk about how the Internet, it&#8217;s a dangerous privacy risk in the Internet now.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=1673">27:53</a>] It&#8217;s really in a way kind of silly because given the way that ad networks and big websites operate, the <a href="https://en.wikipedia.org/wiki/Domain_Name_System">DNS</a> may be a privacy risk, but your privacy gets violated in so much more effective ways by all of this web stuff. You know, it&#8217;s like it doesn&#8217;t make it to the metal round of privacy invasion. I mean, you know, you take a look at the way ad networks work. You know, most people don&#8217;t realize that when an ad gets populated on their webpage, 150 or more organizations have been asked, do you want to serve this ad to this person?</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=1720">28:40</a>] They don&#8217;t identify the person, but they can identify up to 144 characteristics of the person. So I appreciate the people who have done some stuff about <a href="https://en.wikipedia.org/wiki/Domain_Name_System">DNS</a> privacy, but your privacy is long gone by the time you worry about this.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=1742">29:02</a>] I mean, if you&#8217;re running a big cloud service to do <a href="https://en.wikipedia.org/wiki/Domain_Name_System">DNS</a> at a hyperscaler like Amazon or something like that, that&#8217;s going to cost a good amount of money. So I would think there&#8217;s something more than prestige as an incentive.</p><p><strong>Paul:</strong></p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=1757">29:17</a>] Well, sure. I mean, I can suggest a couple of things. One of which is that Microsoft, for example, knows how the performance of LinkedIn affects how much money they make. Basically, the faster it works, the more money they make. So they want to give you a good response time. All right? So there are people that just want to accelerate the operations in the network and they may feel that if they take it over, they can make it run faster and they will make more money.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=1789">29:49</a>] And so I guess that&#8217;s a win win. I don&#8217;t think that&#8217;s all there is to it. But, you know, I&#8217;ll tell you a funny story. In the early days of the <a href="https://en.wikipedia.org/wiki/Domain_Name_System">DNS</a>, after the Europeans got their first root server and so forth, France, Sweden, various other countries, all had very long processes if you want to register a domain name. Although we had given them control of everything under. fr after that, it was up to them to make whatever process they wanted.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=1822">30:22</a>] And so they said, well, we have to have a deposit. You have to fill out this form, make it very complicated. All right? So along comes a acquaintance, a guy I got to meet, and he goes to the island of Niue. The island of Niue, it&#8217;s in the South Pacific, okay? And because the Germans gave them a country code of. nu they got to have their own top level domain. So the guy goes to Nuay and says, hey, I&#8217;ll make you a deal.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=1860">31:00</a>] I&#8217;ll run the NUE top level domain for you and I&#8217;ll give you a cut. There&#8217;s arguments about exactly what the cut was supposed to be and whether or not he actually paid it, and on and on and on. But basically he started registering names and he would go to websites and so forth, in particular France and Sweden, and say, hi, if you want a domain name, give me 10 kroners and you can have any name that&#8217;s not in Use I charge you per name.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=1896">31:36</a>] And because I charge you per name, I&#8217;m going to make this easy because I want more people to register names. So he starts registering a whole bunch of people in Sweden and France because dot EDU translates to new or cool or nude, but maybe people don&#8217;t care about that. At any rate, so he starts registering tens of thousands of names and all these people who, okay, they, they want their own domain.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=1927">32:07</a>] They, that and they&#8217;re, they&#8217;re in France and the French government is making it tough. We&#8217;re registered under New Way and it&#8217;s kind of hip and cool. And so he starts registering all of these people. Eventually it gets shut down and Sweden was given control of New Way because they said it was a national security issue for Sweden because so many Swedes were registered under NU that they had to make sure that their stuff would continue to operate.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=1965">32:45</a>] There was kind of some supposed stories about, you know, dot NU and so forth, but this kind of happened. Okay, so do you know why <a href="https://en.wikipedia.org/wiki/Anguilla">Anguilla</a> is very lucky? <a href="https://en.wikipedia.org/wiki/Artificial_intelligence">AI</a>. <a href="https://en.wikipedia.org/wiki/Artificial_intelligence">AI</a>. Right, right. You know, Columbia Co can&#8217;t get a dot com. Well, you could get a dot co. It&#8217;s close. So, you know, this is another one of these, ownership of the namespace and so forth.</p><h3>33:17 &#8212; What is an RFC</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=1997">33:17</a>] When I was reading about, I guess, some of the history of this work, there&#8217;s all these RFCs. And my high level understanding is that&#8217;s a name for an engineering proposal. But I&#8217;m curious to know what&#8217;s the, the culture behind an <a href="https://en.wikipedia.org/wiki/Request_for_Comments">rfc</a>?</p><p><strong>Paul:</strong></p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=2014">33:34</a>] Well, that&#8217;s evolved over time. In the good old days, people would, you know, I would write this <a href="https://en.wikipedia.org/wiki/Request_for_Comments">RFC</a>. For example, there&#8217;s the two beginning RFCs for the <a href="https://en.wikipedia.org/wiki/Domain_Name_System">DNS</a>. So I wrote them and my boss happened to be the guy that hands out the <a href="https://en.wikipedia.org/wiki/Request_for_Comments">RFC</a> numbers. So he would give me a number and then he would publish it. And that just meant putting it on a server somewhere and people will come along and pluck these RFCs down.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=2043">34:03</a>] In time though, people started having meetings and organizing the <a href="https://en.wikipedia.org/wiki/Internet_Engineering_Task_Force">ietf</a>. And so now we have a bunch of process and we have different kinds of RFCs. Some are just informational. You can write an article and this is what I think. And if it&#8217;s like reasonably cogent, you can probably get an <a href="https://en.wikipedia.org/wiki/Request_for_Comments">RFC</a> number for it. And you know, but then there&#8217;s standards track stuff that are going to be Internet, they&#8217;re going to be standards and they&#8217;re, you know, politics and paperwork.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=2078">34:38</a>] You know, there&#8217;s a whole lot of process. You know, the, the, the ITF takes credit for <a href="https://en.wikipedia.org/wiki/Domain_Name_System">DNS</a>. Okay, Now One of the problems with that is that the <a href="https://en.wikipedia.org/wiki/Domain_Name_System">DNS</a> spec came out in 1983, and the first meeting of the <a href="https://en.wikipedia.org/wiki/Internet_Engineering_Task_Force">IETF</a> was in 1986. So, you know, how exactly do you explain it today?</p><h3>35:07 &#8212; How he got into computing</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=2107">35:07</a>] Computers are ubiquitous and it&#8217;s being talked about on social media all the time. But back then I think it was a lot more niche. So how did you get into computing?</p><p><strong>Paul:</strong></p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=2116">35:16</a>] <a href="https://en.wikipedia.org/wiki/Massachusetts_Institute_of_Technology">MIT</a> was offering some summer classes for high school students, and I just took one and I was kind of fascinated. But I was a physics major. I was, I was, you know, physics won World War II and it was just cool and, you know, blah, blah, blah, right? So I got to <a href="https://en.wikipedia.org/wiki/Massachusetts_Institute_of_Technology">mit</a>, I was a physics major. You know, it&#8217;s like one of the places where you expected to have big change. You know, nuclear power was going to be too cheap to meter.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=2145">35:45</a>] That was one of the slogans. You know, nuclear reactors didn&#8217;t turn out to be particularly cheap. And physics has its beauty, you know, I mean, all right, But I wanted to get a little bit of extra money. So my two choices were working in the food service industry, or I could get a job as a beginning programmer. Paid better in food service, at least to start. But I said, no, I think I&#8217;ll do this computer stuff.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=2171">36:11</a>] And one thing led to another. Um, and then somewhere around my junior year, I had been working at <a href="https://en.wikipedia.org/wiki/IBM">IBM</a>. I&#8217;d been working at the, what became the media Lab, I working at Draper. I. I&#8217;d done a bunch of little computer jobs and I was getting paid much more than a food service worker. It was good. And my physics advisor and the head of the <a href="https://en.wikipedia.org/wiki/IBM">IBM</a> Cambridge Scientific center had a lunch where they decided they should do an intervention on me and tell me, Paul, you&#8217;re not a very good physicist, but you seem to do really well with this computer stuff.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=2214">36:54</a>] Why don&#8217;t you change careers? And as a. To make it easier, because we understand some of your goal line mentality stuff, we&#8217;ll agree to give you the physics degree. It&#8217;s only a learner&#8217;s permit anyway. It&#8217;s just a bachelor&#8217;s degree. And we&#8217;ll figure out how to have you double major and you can get a computer science degree. And why don&#8217;t you just go off and do what you&#8217;re good at? So that&#8217;s how I got started.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=2242">37:22</a>] And that&#8217;s how it all went. It turned out that a bunch of the stuff that we did at the architecture department at <a href="https://en.wikipedia.org/wiki/Massachusetts_Institute_of_Technology">MIT</a> was cutting edge computer science at the time. You can go. And what we did is because people would only give us mini computers because, well, we weren&#8217;t very important and so forth and so on. Well, we figured out how to network them together and do stuff where we. And at Carnegie Mellon they had an RFA funded project to do pretty much that.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=2279">37:59</a>] Figure out how to put together a bunch of minicomputers and do distributed work. It sort of sounds a little bit like the cloud, right? So it was cutting edge research, but we just did it because, well, we were doing what we could.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=2296">38:16</a>] When you&#8217;re working on <a href="https://en.wikipedia.org/wiki/Domain_Name_System">DNS</a> and you&#8217;re seeing the Internet growing, did you ever think it would grow as big as it is today or. I&#8217;m kind of curious to view it from the lens of like right now, if you look at the headlines, <a href="https://en.wikipedia.org/wiki/Artificial_intelligence">AI</a> is kind of exploding and it&#8217;s this future thing. And at the time, if you were to look at the headlines, when the Internet was growing, was it a similar type of environment? I guess that where the Internet was this huge thing.</p><p><strong>Paul:</strong></p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=2331">38:51</a>] I kind of grew up in the core of the Internet so that I kind of understood it as it was growing. You know, the <a href="https://en.wikipedia.org/wiki/Artificial_intelligence">AI</a> thing, I don&#8217;t have nearly the same feeling of intuition on it, so it doesn&#8217;t feel the same to me at all. Oddly enough, this is like the second or third coming of <a href="https://en.wikipedia.org/wiki/Artificial_intelligence">AI</a> in the sense that I remember in 1985, they had this big <a href="https://en.wikipedia.org/wiki/Artificial_intelligence">AI</a> conference in Southern California over Marina del Rey and <a href="https://en.wikipedia.org/wiki/Artificial_intelligence">AI</a> was all hot and it was going to take off and then it disappeared.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=2376">39:36</a>] The research agencies and ARPA in particular had had a couple of different things, projects where they had said if only we could make more powerful computer or groups of computers, then we can actually kind of do some of this <a href="https://en.wikipedia.org/wiki/Artificial_intelligence">AI</a> stuff because they, you know, and <a href="https://en.wikipedia.org/wiki/Artificial_intelligence">AI</a> has kind of this history, right? Remember when, you know, do you think you can teach a computer to play chess? Maybe you&#8217;re too young for that.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=2402">40:02</a>] But you know, once upon a time having computer play chess was kind of like <a href="https://en.wikipedia.org/wiki/Artificial_intelligence">AI</a>, right? And in reality it was if you have a big enough hammer, you can make a chess playing machine. And a bunch of what happened, particularly with early stuff about being able to understand speech, was people figured out how to put together a big enough database and have enough processing power that a bunch of it was done by brute force.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=2435">40:35</a>] And a lot of it is these <a href="https://en.wikipedia.org/wiki/Large_language_model">large language models</a>. You know, there&#8217;s, there&#8217;s a bunch of brute force behind the screen. People talk about, well, gee, we&#8217;ll figure out how to do it. Clever. But you know, there&#8217;s, there&#8217;s an awful lot of what <a href="https://en.wikipedia.org/wiki/Artificial_intelligence">AI</a> is doing is trial and error. And it just does trial and error on a huge scale. It can do more errors and more trials than you can imagine, but it gets results.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=2466">41:06</a>] So it&#8217;s a different kind of thing because you do need to have a pretty big machine to do anything interesting. Whereas like I said, we did interesting things for the time. Back at the Architecture Machine Group with minicomputers, it was kind of funny because I also had the day job. Well, I didn&#8217;t have a day job, but I had a part time job at <a href="https://en.wikipedia.org/wiki/IBM">IBM</a> where they had the biggest machine, you know, that <a href="https://en.wikipedia.org/wiki/IBM">IBM</a> made basically there and I could use it as much as I wanted.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=2498">41:38</a>] It&#8217;s very strange to. Because everybody else was like, well, we got to give you a small amount of time and if you use that up, we&#8217;re not sure we can give you more. <a href="https://en.wikipedia.org/wiki/IBM">IBM</a> was giving me as much as I wanted, you know, and in particular they were having me do things that used an awful lot of machine time. So in some sense I kind of time traveled because I never had a scarcity of machine time. I always had somebody that wanted to give me as much as I could as I could eat.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=2531">42:11</a>] Nowadays everybody has it, but it was sort of a little bit different for my career. I think one of the things, you know, the mistakes that I made were all characterized by not doing sufficient understanding about things at the edge. Like when I talk to college students and give them advice, I say very often you can find opportunity where kind of two fields come together. So for example, once upon a time biology had nothing to do with computers.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=2566">42:46</a>] Now it&#8217;s all biology and computers, right? You know, I had, once upon a time I got a consulting job because I could both speak physics to the physics majors and I could program computers. So DEC was trying to build. They wouldn&#8217;t tell me that they were DEC for a long time, although wasn&#8217;t hard to figure out. But you know, they tested me. They said, well, we hear that you can both program and talk to device physicists.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=2600">43:20</a>] Is that true? I said, yes, I speak both languages. And they gave me a little test. But you know, oftentimes there&#8217;s opportunity where two things come together, two fields come together. And so one of the things that says is that you should always be looking for something that&#8217;s a little bit beyond the edge of whatever field you&#8217;re currently in because maybe you can find something else that touches it.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=2626">43:46</a>] Sort of like doing reconnaissance. So, you know, when I had my index proposal and ARPA and NSF said this isn&#8217;t research. If I had been smart Enough to know that, well, the people at Sandhill Road might fund me to go start a company there. I mean, that happened many times. I think I had at least half a dozen different times where I could have started a company, if only I knew that, well, all you have to do to start a company is, you know, you don&#8217;t have to understand how to keep books, there are people for that and blah, blah, blah.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=2662">44:22</a>] All you need to do is to figure out how to go to Sandhill Road or the equivalent and ask for money. I&#8217;ve done that several times, and it&#8217;s its own strange view. Once upon a time. You&#8217;ve heard of the <a href="https://en.wikipedia.org/wiki/SoftBank_Group">SoftBank</a>? Once upon a time, I had the privilege of introducing <a href="https://en.wikipedia.org/wiki/SoftBank_Group">SoftBank</a> to its biggest failure. It was a company called Urban Media. And I went to them with a pitch about, hi, we want to go deploy this system in three cities and scale it up if it works.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=2707">45:07</a>] And they said, no, think big or go home. You&#8217;ll have to do it in all. And this is the way they put it, all of the NFL cities and la. So, you know, rather than starting off with a budget of 5 million, they insisted we started off with a bit with a budget of like 50, and we eventually burned through 100 million, which was big money at the time. Probably more than that, actually. But, you know, it&#8217;s kind of funny to the way those guys think and the way they work.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=2743">45:43</a>] So, you know, if. If I could understand Sand Hill Road, I probably would have started many businesses. I don&#8217;t know why I didn&#8217;t. But, you know, you find, you know, students who say, well, I don&#8217;t. I don&#8217;t want to, you know, deal with business well, but you need to understand enough about business so that if you want to start one, you could figure out, yeah, okay, I need an accountant. Yeah, I know lots of people in startups hate salespeople.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=2776">46:16</a>] They hate marketing people. Yeah, but you need them, you know, so understanding how things work and, you know, kind of doing your reconnaissance and particularly looking for something that combines something that you know with something else where there&#8217;s leverage. There&#8217;s a lot of ways that I think you can find opportunity.</p><h3>46:39 &#8212; Advice for his younger self</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=2799">46:39</a>] When you look back on your whole career and all the experience that you have, if you could go back and give yourself some advice, knowing what you know today, what would you say?</p><p><strong>Paul:</strong></p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=2808">46:48</a>] I should have paid more attention in French class back in high school, because French class in high school was the one thing I loathed. My teachers were insane. They were all of these World War I vets who were we would say today, PTSD. In those days we said shell shock. But they&#8217;re like. They were just like, crazy. Like, I had one French teacher who was also my homeroom teacher, and he ate jello and potato chips with a fork and knife.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=2840">47:20</a>] Okay. You know, so I just hated the. I just didn&#8217;t do French. I just. And then I ended up living in France for eight years. Okay. I probably should have paid more attention way back when. How do you tell if knowledge is useful? Well, all knowledge, I think, is useful. It&#8217;s just a question about whether or not you&#8217;re going to get a chance to apply it, and you don&#8217;t really know. So why not be a sponge and I think get a little bit out of your comfort zone, you know?</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=2872">47:52</a>] And then there&#8217;s the whole business about vesting and qualified small business shares and the way that all works. And Silicon Valley pretty much screws the peons and rewards the VCs. And the only difference is a kind of a lack of knowledge. I had one company that, that I was in, and so we&#8217;re getting bought and so. Okay. And I said, okay, great. So, you know, one of the things I want to do is to make sure that the employees understand about, you know, 1202 qualified small business and.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=2915">48:35</a>] And the way they can handle the taxes here to make their life good. The people buying us said, no, we&#8217;re absolutely forbidden from doing that.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=2926">48:46</a>] Why?</p><p><strong>Paul:</strong></p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=2926">48:46</a>] They just don&#8217;t want people rocking the boat, I guess. You know, the other thing is, is that sometimes, I mean, it was kind of funny because I was just a director on the company, but I had bought into Series A and I had a bunch of nsos, and some of which I had exercised, so I had shares and some of which, you know, I just had unexercised options. And then there were some things where, you know, when they buy you, you lose whatever is invested.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=2960">49:20</a>] And the tax rates on those were just incredibly different. Well, it turns out that if you had qualified small business stock, basically what you can do is an 83B says that rather than having options that you exercise when they&#8217;re vest, they give you the options and you can exercise them immediately. Okay, but they can buy the stock back if you leave if they want to. All right, but the point is, is that you buy it at whatever the price is then.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=2992">49:52</a>] So if the price of the common is, say, a penny a share, then, all right, you buy it and all of it is established with a base of a penny a share, whereas if you have the option, the company does well, the stock price goes up to 10 cents and you have to exercise it, you have to pay $0. 09 of capital gains there. And then. All right, the detail in all of this was that I was paying long term capital gains on my, on my series A investment.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=3024">50:24</a>] I was paying zero federal taxes on the common that I got and had vested in 83B. And then the exercisable part of it got taxed at 65%. I mean, some absurd rate. I mean, California taxes at all, they don&#8217;t care at any rate, the VCs, they know all this stuff. But I would, I would wager that probably, oh, I don&#8217;t know, 50% of people are paying more taxes than they have to because they don&#8217;t know about this and they can&#8217;t get the information because to qualify you have to show that the company had, was below a certain financial level and it wasn&#8217;t of a prescribed type.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=3078">51:18</a>] Like you can&#8217;t do this with a real estate company investment company. And it has to be sub, percentage US Citizens and it varies a little bit over time, but basically that&#8217;s it and you get a reduced tax rate. My most recent role, I said, okay, I, I want you to, you know, give me the information. I want a list of employees in their citizenship. Okay. And I want to know how much capitalization we have.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=3107">51:47</a>] Okay. And I just want to get these in a formal way so that when the time comes, I&#8217;ll know how to handle the taxes. And I cut back to the story of the company being sold. We eventually we agreed not to give our employees tax advice. Okay. We did give them the list of founding employees and what their citizenship was. And we did, you know, give them, you know, this other thing. And we said that this, you know, you probably want to go read 1202, by the way.</p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=3146">52:26</a>] And I&#8217;m not sure how many of them did because, you know, I had a number of different chains on me. I was barely able to squeak this out through the door. But you know, Silicon Valley, there&#8217;s a hierarchy there and it isn&#8217;t like everybody gets the entrepreneurial spirit and everybody gets the same privileges.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=LT4iVeUoL18&amp;t=3172">52:52</a>] Awesome. Well, thank you so much for your time. I really appreciate it. Paul.</p>]]></content:encoded></item><item><title><![CDATA[Scott Aaronson: The Mathocalypse & Does Intelligence Matter Anymore?]]></title><description><![CDATA[Scott Aaronson is one of the world&#8217;s leading quantum computing researchers and spent two years at OpenAI working on AI safety.]]></description><link>https://www.developing.dev/p/e070-scott-aaronson</link><guid isPermaLink="false">https://www.developing.dev/p/e070-scott-aaronson</guid><dc:creator><![CDATA[Ryan Peterman]]></dc:creator><pubDate>Mon, 12 Oct 2026 13:06:09 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/219806713/72a11c590d728c3836492c7e2f69a6ab.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>At first, I was planning to talk to <a href="https://en.wikipedia.org/wiki/Scott_Aaronson">Professor Aaronson</a> about quantum computing since it&#8217;s his field of expertise. But in doing my research, I found that he used to be a big skeptic of AI in the 2000s. Now though, he&#8217;s completely updated his opinion based on how AI has changed his field recently.</p><p>This made me curious to hear what the changes are like to him that caused him to change his mind that much. We talked about why he thinks the singularity has already begun for math, who gets credit when AI writes the proof and whether intelligence will still matter in the future. Hope you enjoy it!</p><p>On another note, I created a <a href="https://xhslink.cn/m/chRGd6YOqw">Red Note account</a> where I&#8217;ll start posting. It was fun to record <a href="http://xhslink.com/o/19G5xDZP6Pp">an intro clip</a> there in Chinese although it took me a long time. Funny thing is I tried so hard to pronounce everything perfectly that it&#8217;s a little lifeless and therefore everyone there thinks it&#8217;s an AI dub (it isn&#8217;t).</p><p>Check out the episode wherever you get your podcasts: <a href="https://www.youtube.com/watch?v=ORlscppGGh4">YouTube</a>, <a href="https://open.spotify.com/episode/0qnYcSVpbjW3m5bgQJGt4L">Spotify</a>, <a href="https://podcasts.apple.com/us/podcast/the-peterman-pod/id1777363835">Apple Podcasts</a>.</p><div id="youtube2-ORlscppGGh4" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;ORlscppGGh4&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/ORlscppGGh4?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h1>Timestamps</h1><p><a href="https://www.developing.dev/i/219806713/0034-why-he-updated-so-hard-on-ai">00:34 - Why he updated so hard on AI</a></p><p><a href="https://www.developing.dev/i/219806713/0114-the-people-still-denying-ai-progress">01:14 - The people still denying AI progress</a></p><p><a href="https://www.developing.dev/i/219806713/0353-the-singularity-has-already-begun-for-math">03:53 - The singularity has already begun for math</a></p><p><a href="https://www.developing.dev/i/219806713/0830-will-human-driven-math-research-survive">08:30 - Will human-driven math research survive</a></p><p><a href="https://www.developing.dev/i/219806713/1312-who-gets-credit-for-ai-written-papers">13:12 - Who gets credit for AI-written papers</a></p><p><a href="https://www.developing.dev/i/219806713/1555-openais-15m-navier-stokes-proof">15:55 - OpenAI&#8217;s $15M Navier-Stokes proof</a></p><p><a href="https://www.developing.dev/i/219806713/1920-what-if-ai-proved-p-np">19:20 - What if AI proved P = NP</a></p><p><a href="https://www.developing.dev/i/219806713/2307-why-ai-is-so-good-at-finding-counterexamples">23:07 - Why AI is so good at finding counterexamples</a></p><p><a href="https://www.developing.dev/i/219806713/2613-the-goalposts-keep-moving">26:13 - The goalposts keep moving</a></p><p><a href="https://www.developing.dev/i/219806713/2852-why-ai-disclosure-matters-in-research">28:52 - Why AI disclosure matters in research</a></p><p><a href="https://www.developing.dev/i/219806713/3259-the-fake-monet-experiment">32:59 - The fake Monet experiment</a></p><p><a href="https://www.developing.dev/i/219806713/3523-why-he-blogs-instead-of-getting-rich">35:23 - Why he blogs instead of getting rich</a></p><p><a href="https://www.developing.dev/i/219806713/3945-are-ai-labs-racing-too-fast">39:45 - Are AI labs racing too fast</a></p><p><a href="https://www.developing.dev/i/219806713/4201-will-intelligence-still-matter">42:01 - Will intelligence still matter</a></p><p><a href="https://www.developing.dev/i/219806713/4712-book-recommendations">47:12 - Book recommendations</a></p><p><a href="https://www.developing.dev/i/219806713/5227-advice-for-students-today">52:27 - Advice for students today</a></p><p><a href="https://www.developing.dev/i/219806713/5723-reacting-live-to-a-new-ai-result">57:23 - Reacting live to a new AI result</a></p><h1>Transcript</h1><h3>00:34 &#8212; Why he updated so hard on AI</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=34">00:34</a>] Here&#8217;s the full episode. The reason that I wanted to talk is I thought you&#8217;d be one of the most interesting people to explain the recent events in AI, because publicly I feel like you were skeptical of it for a long time. When I was reading your blog, there&#8217;s posts going back to early 2000 talking about AI and the singularity and how far off it is.</p><p><strong>Scott:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=60">01:00</a>] Once I saw the trajectory, once I saw <a href="https://en.wikipedia.org/wiki/GPT-3">GPT-3</a>, for example, even though it wasn&#8217;t yet useful, it was kind of a toy, I updated, I would say, as hard as I&#8217;ve ever updated on anything in my life.</p><h3>01:14 &#8212; The people still denying AI progress</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=74">01:14</a>] Right. So, in one of your recent posts, you said one needs to be a particular kind of idiot to deny what&#8217;s going on now.</p><p><strong>Scott:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=86">01:26</a>] I said that because every time I talk about this, there are still all these people in very, very aggressive denial, right? I mean, even now, even now that AI is solving Millennium Prize Problems, right? And there&#8217;s going to be even more that&#8217;s released. It&#8217;s not public yet, okay? But there&#8217;s going to be hundreds of major open problems in math, computer science, physics that have been solved by AI models, that those solutions are going to get released to the world, right?</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=122">02:02</a>] The whole nature of intellectual work is different forever, right? And still I get people saying, well, none of it really counts, right? It&#8217;s just a stochastic parrot. It&#8217;s just the next token predictor, right? It&#8217;s just outputting some slop and then humans look at the slop and find something that they call a proof or whatever thing they did. Well, then that thing wasn&#8217;t real math.</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=148">02:28</a>] It was just a toy problem, right? Real math is still only what humans do, right? And they just keep moving the goalposts. They keep not updating, right? And I&#8217;m amazed. Part of me envies the self-confidence that they have.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=168">02:48</a>] Right.</p><p><strong>Scott:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=168">02:48</a>] to never update no matter what happens. This summer, we saw AIs hacking out of their own training environment, right? We saw them hacking into another company&#8217;s system. We saw them cooperating with each other to do that in a totally unplanned way, right? Creating a message board. We saw them sacrificing themselves for the good of the group. And people will say, no, it&#8217;s all just hype.</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=198">03:18</a>] It&#8217;s all just a marketing stunt. It&#8217;s all just <a href="https://en.wikipedia.org/wiki/OpenAI">OpenAI</a> didn&#8217;t have good enough cybersecurity or something, right? They&#8217;ll just make up a story why it doesn&#8217;t count no matter what happens. And I expect that it&#8217;s going to be like that from now, all the way up until the singularity, right? There could be Terminators walking down the street and people will say, no, it doesn&#8217;t count, right?</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=223">03:43</a>] It&#8217;s just, you know, they&#8217;re just token predictors that were programmed to act like Terminators. They&#8217;re not&#8212;they don&#8217;t really have an intention to kill you.</p><h3>03:53 &#8212; The singularity has already begun for math</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=233">03:53</a>] When you say singularity, could you define that for the audience?</p><p><strong>Scott:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=237">03:57</a>] I mean, in math, it has precise meanings, right? It&#8217;s a point where curvature becomes infinite, for example. But in this context, it just refers to sort of a point where technological change becomes so rapid that we lose our ability to predict what happens beyond it, that afterwards we are no longer the sort of reigning intelligence on Earth. That doesn&#8217;t mean that it&#8217;s a dystopia.</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=268">04:28</a>] It could be great, could be horrible, could be anywhere in between. But it refers to a period of, let&#8217;s say, more rapid technological change than the world has ever experienced before. And it looks like we are heading into that. To get from the solution to the Erd&#337;s unit distance problem, which is maybe the first major math problem to get solved by AI models, that was May, to the solution of <a href="https://en.wikipedia.org/wiki/Navier%E2%80%93Stokes_equations">Navier&#8211;Stokes</a>, that was August.</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=301">05:01</a>] So, okay, it took some time. It took 3 months. And now it&#8217;s taken another 2 months until pretty much all of our problems are getting solved, right? So people could say, well, it&#8217;s not literally a singularity. It takes time. But the amount of time that it&#8217;s taking is now measured in months. It&#8217;s not measured in decades, in centuries, in the kind of timescales that we&#8217;re used to for technological changes of this magnitude.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=330">05:30</a>] You mentioned that you feel like the singularity has already begun in some of your writing.</p><p><strong>Scott:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=336">05:36</a>] For our world, it has. I mean, for the world of mathematical research, theoretical computer science research, I would say that we are already in it, in the sense that we have been dethroned as sort of the main theorem-proving entities on planet Earth, right? And it&#8217;s important for people to understand that this is not this hypothetical future thing that we&#8217;re speculating about.</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=364">06:04</a>] This is something that happened this summer, and that we are now all trying to deal with. Right? Every meeting of mathematicians or theoretical computer scientists, whatever it was supposed to be about before, now it&#8217;s about this. It&#8217;s about how do we deal with the flood of sort of AI-enabled solutions to our longstanding open problems that are now coming at a faster rate than we can even absorb it, than we can assimilate it all, right?</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=399">06:39</a>] How does the field continue? How does this human mathematical tradition continue? What is the future for our students? What&#8217;s the future of publication in these fields? What are we going to value going forward? Right. This is all we discuss anymore. This thing happens at different times in different fields. Right. And maybe it happened a year or two ago for software engineering.</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=434">07:14</a>] And then someone who was doing very theoretical math research, like my friends, could say, &#8220;Oh, well, we&#8217;ll still be safe for a long time.&#8221; Right? But then it came for us. Right? It&#8217;s interestingly, it still hasn&#8217;t quite arrived for most of theoretical physics. And I think that the big difference is that in theoretical physics, it&#8217;s much less self-contained to judge what counts as a good solution to a problem, right?</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=463">07:43</a>] We have just completely self-contained ways of checking that a solution is valid. And that makes these things very, very amenable to training on examples, to doing reinforcement learning, to getting AIs to be extremely good at these things. But when I talk to my friends in physics, they say, well, yeah, maybe we&#8217;ve got another 6 to 12 months. That&#8217;s what they&#8217;re estimating, right? And so, if you&#8217;re in one of the fields where the rising floodwaters have not yet reached, then you can tell yourself we&#8217;re going to be on dry ground forever.</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=495">08:15</a>] Unlike those other basically trivial or machine-like fields, of course they would get flooded by this, right? Because they were never doing anything that deep, but we&#8217;re going to be fine, right? And you can keep saying that until the floodwaters come for you.</p><h3>08:30 &#8212; Will human-driven math research survive</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=510">08:30</a>] Will human-driven mathematical research exist?</p><p><strong>Scott:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=514">08:34</a>] Well, that&#8217;s a very big question. I mean, partly it depends what you mean by human-driven, right? Look, if you want an optimistic story, we can look at the story of chess, right? Humans were dethroned as the top chess-playing entities on Earth 30 years ago, right? Which is like an eternity by AI standards. And some people after Deep Blue versus Kasparov predicted the death of chess, right?</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=550">09:10</a>] People were just going to lose interest in it. And that didn&#8217;t happen at all. In fact, chess has never been more popular than it is now, right? You&#8217;ve got chess streamers, celebrities, you&#8217;ve got The Queen&#8217;s Gambit, right? People just said, we want to continue this as a human endeavor. And of course, they use AIs to train, and they use AIs to analyze the games and understand, like, what if Magnus Carlsen is playing some other grandmaster, right?</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=584">09:44</a>] It&#8217;s like everyone else who&#8217;s watching the game actually knows vastly, vastly more about the game than they do, right? Because they can just use their solver and they can see exactly what choices did they have. What move should they have made instead of the&#8212; right? So when the game is over, instead of the rest of the world asking Magnus, like, why did you do this, right? Magnus would be asking the rest of the world, well, what should I have done?</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=610">10:10</a>] So it&#8217;s changed the nature of chess. And yet human chess has continued to thrive. Right. And so you could say certainly there will be people who will continue to be interested in math. Think of all the people who just like learning things, even things that have long been known by other people, right? They just take courses to better themselves.</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=635">10:35</a>] They work on math problems for fun. Okay, people will, it will continue probably as a competition. There could still be Math Olympiads and things like that. But what I doubt is that we are going to be proving theorems because we&#8217;re really needed to prove them. There&#8217;s another hard question here, which is what about setting the agenda of research? What about deciding which problems are important?</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=666">11:06</a>] What about, and often this is the more important part of a research paper, more important than the proofs themselves, is sort of the story that someone has about why this is important, the metaphors they use, the way that they chose to frame the problem. AI can do that stuff too. You can ask <a href="https://en.wikipedia.org/wiki/GPT-6">GPT-6</a>, just look at this paper, suggest some good open problems related to this paper.</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=695">11:35</a>] It&#8217;ll do a creditable job at that, but I think that we&#8217;re still better at sort of finding interesting directions of research. Of course, there&#8217;s no objective test for that, right? The other thing is that when you look at the proofs that AI models are producing, like right now, they are terribly written. Okay. They are needlessly convoluted. They spend pages and pages on trivialities, and then they sort of skip over the essential points.</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=729">12:09</a>] I&#8217;ve talked to students of mine who have shown me proofs that they got their AI to generate. And I said, well, I&#8217;ve got really great news for you. This write-up is garbage, right? Why is that great news? Because it means there&#8217;s still something for you to do. Understand this, clean it up, explain it for real so another person can understand it. So as long as we still have an advantage at, let&#8217;s say, setting the agenda, posing the problems, explaining things, explaining the essential points, we are still in the driver&#8217;s seat.</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=766">12:46</a>] The question is, is that stable? Does that continue, or does it become where these models are just so much better than us, not only at proving the things, but at explaining them, at figuring out what is important, that we just say, well, unless we want to do this for our own enjoyment or maybe for sort of a sporting competition, that we should just retire and turn things over to them.</p><h3>13:12 &#8212; Who gets credit for AI-written papers</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=792">13:12</a>] It makes me wonder, what are the new rules when you use AI to write a paper in terms of credit? What if I&#8217;m not a complexity theorist? If I draft a paper that breaks something and I send it to you, do I get credit, or how&#8217;s that work?</p><p><strong>Scott:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=809">13:29</a>] It&#8217;s a great question. We&#8217;ve been scrambling to figure out the rules for that since this summer. So what&#8217;s happening right now is that first of all, there&#8217;s at least twice as many papers as there were before, right? There&#8217;s just a flood of papers, sometimes very, very significant ones. Okay. They have authors, they have a list of human authors. But then at the end of every paper, there&#8217;s what&#8217;s called an AI disclosure.</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=839">13:59</a>] Okay. By the way, I hate that these are at the end of the paper. This is often the first thing I want to know. I don&#8217;t want to have to scroll down to the bottom of it. Okay. But the AI disclosure will say something like, well, we thought of this question and then we came up with this strategy and we proved this result ourselves, but then Ashraf proved this crucial lemma and we take responsibility for the correctness of it or something like that.</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=866">14:26</a>] But I think the evolving standard is that even if you used AI a lot, if you, first of all, understand the result, right? You can give talks about the result. Okay. You can answer questions about it. You take responsibility for it being correct, right? Then you put your name on it, and it&#8217;s your work. Okay. The harder question is what happens when those conditions are not satisfied? And that comes to what you were asking me, right?</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=902">15:02</a>] We&#8217;re going to see more and more examples of people who just one-shot significant problems. They get a solution, which might be correct, hopefully is correct, right? And then they won&#8217;t understand anything about it, right? So it&#8217;s basically like they just put a coin into the vending machine or something like that, right? Or they just pulled the lever of the slot machine, and something came out, right?</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=929">15:29</a>] And frankly, if one person did that, well, anyone else could have done it just as well, right? It&#8217;s like, you&#8217;re not providing great value to the world by putting this thing out if anyone else could have done the same using their own subscription to GPT. So for that kind of thing, it really seems like our whole norms around publication are going to have to shift.</p><h3>15:55 &#8212; OpenAI&#8217;s $15M Navier-Stokes proof</h3><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=955">15:55</a>] A month or two ago was <a href="https://en.wikipedia.org/wiki/OpenAI">OpenAI</a>, so ancient history now, as <a href="https://en.wikipedia.org/wiki/OpenAI">OpenAI</a> published the solution to the <a href="https://en.wikipedia.org/wiki/Navier%E2%80%93Stokes_equations">Navier&#8211;Stokes</a> problem, which was one of these seven Clay Millennium Problems with these million-dollar prizes. In this case, they actually did put significant &#8212; they were not experts in differential equations on this problem, but they did put significant resources. They put $15 million of compute into solving this $1 million problem.</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=988">16:28</a>] And then they published this 166-page argument. They also had a formal certificate in this system called <a href="https://en.wikipedia.org/wiki/Yung_Lean">Lean</a>, sort of proving that it was valid. Right. And the reaction to this was very&#8212; from the mathematical community, I think, was very negative. And this was partly because there were humans who had been sort of closing in on this problem and <a href="https://en.wikipedia.org/wiki/OpenAI">OpenAI</a> was tipped off to what those humans were doing.</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=1018">16:58</a>] We still don&#8217;t know exactly how much they knew, and when they knew it, but that was what prompted them to then rush ahead with their vastly greater computing power and get there first. And people felt like, whoa, that&#8217;s not sporting. And so then, because <a href="https://en.wikipedia.org/wiki/OpenAI">OpenAI</a> was burned by the negative reaction to that, since then they&#8217;ve been sitting on solutions to a ton of other.</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=1047">17:27</a>] big open problems. And now they appointed a board of experts, which includes Fields Medalists like Timothy Gowers, Edward Witten, people like that, okay, who are going to decide what to do with these, with all of these solutions. But my expectation is that at some point, very soon, in fact, all these things are going to be published. Right? Like, we&#8217;re going to start seeing hundreds of solutions to significant open problems that in most cases no human has gone through.</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=1084">18:04</a>] Okay? No human has actually checked them. I mean, in some cases there will be <a href="https://en.wikipedia.org/wiki/Yung_Lean">Lean</a> certificates, so we sort of formally know that they&#8217;re valid. In other cases, there probably won&#8217;t even be that. I heard a joke that maybe these papers should be published and the author should be listed as <a href="https://en.wikipedia.org/wiki/GPT-6.1">GPT-6.1</a> or whatever. And then in the acknowledgments, it should say, &#8220;Oh, thank&#8212; I&#8217;m so grateful to this person for suggesting the problem to me.&#8221;</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=1117">18:37</a>] Right.</p><p><strong>Scott:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=1120">18:40</a>] But I think the more likely way that this goes is that we will just see some online repository for all these sort of AI solutions that have not yet been digested. Okay. And then you&#8217;re at human speed. Humans will go through them. They will do their best to understand the arguments, to re-explain them in better words, to simplify them, to extend them. And then they will publish papers doing that with their human names on them.</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=1154">19:14</a>] And those papers are what humans will then receive credit for.</p><h3>19:20 &#8212; What if AI proved P = NP</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=1160">19:20</a>] You mentioned <a href="https://en.wikipedia.org/wiki/OpenAI">OpenAI</a> sitting on proofs of major problems. Let&#8217;s say <a href="https://en.wikipedia.org/wiki/OpenAI">OpenAI</a> was sitting on a proof to the Millennium Prize problem of if <a href="https://en.wikipedia.org/wiki/P_versus_NP_problem">P vs. NP</a>, and suppose they proved <a href="https://en.wikipedia.org/wiki/P_versus_NP_problem">P vs. NP</a>. How would that change the world?</p><p><strong>Scott:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=1176">19:36</a>] That would really change everything that we thought about computational complexity. That would sort of be a cataclysm for our universe, even greater than the AI cataclysm, you could say, that is happening right now. It&#8217;s also something that, by the way, that could massively accelerate AI. Okay. If the algorithm for solving NP problems were actually efficient in practice, which would then be a further question.</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=1206">20:06</a>] Okay. But my strong guess is that P is not equal to NP.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=1212">20:12</a>] Right.</p><p><strong>Scott:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=1216">20:16</a>] I think that if and when that problem is solved, it is virtually certain at this point that AI will play a central role in the solution. Right. The question is, will humans also play a role? Right. That&#8217;s the question at this point. It&#8217;s not like, will AI be involved? It&#8217;s like, of course it will be. But if an AI proved <a href="https://en.wikipedia.org/wiki/P_versus_NP_problem">P vs. NP</a>, you could say, that would merely confirm what most of us have believed since the 1970s.</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=1247">20:47</a>] Okay. But I&#8217;m sure that to prove something of that magnitude, you would need a tremendous number of new ideas. And then those new ideas could be mined for a long time for all the implications that they would have for other things.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=1264">21:04</a>] If a proof of <a href="https://en.wikipedia.org/wiki/P_versus_NP_problem">P vs. NP</a> existed, how much would you say that&#8217;s worth economically?</p><p><strong>Scott:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=1272">21:12</a>] If P were equal to NP by an algorithm that were really efficient in practice, we can estimate its economic value by just what is the economic value of everything that is happening in AI right now? Or throw in cryptocurrency also, right? Which also depends on these problems being hard to solve. So, I mean, first of all, if you had a fast-in-practice method for NP-complete problems, you could break all cryptocurrencies.</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=1303">21:43</a>] So I don&#8217;t know if that&#8217;s good or bad, but however many trillions of dollars are the total market cap of cryptocurrency, that either gets&#8212;I guess if you hide your solution and you&#8217;re very slow about it, then maybe you collect hundreds of billions of dollars. If you just reveal it all at once, then the whole market crashes. But okay, but now even bigger than that is AI, right? AI is now a multi-trillion-dollar industry, and just on this, the most rapid exponential trajectory, maybe, I guess, of any technology in human history.</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=1345">22:25</a>] Okay. Fast, in practice, a way to solve NP problems would make it massively faster to train new AI models, okay? To sort of find the parameters of this neural net that minimize the loss on this training data. You either don&#8217;t need these 100-, many 100-billion-dollar data centers anymore, or more likely in practice, you can take those data centers and use them to do something else, right? Or use them to do even more.</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=1377">22:57</a>] Let&#8217;s put it this way. The million dollars that you would get from the Clay Mathematics Institute would be an unnoticeable rounding error.</p><h3>23:07 &#8212; Why AI is so good at finding counterexamples</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=1387">23:07</a>] That question has two directions. If you think about what you would need to prove in either direction, which direction of proof would be more amenable to AI?</p><p><strong>Scott:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=1398">23:18</a>] If P were equal to NP, then you would expect that to be very amenable to AI to find, find that because you could just need to find an algorithm, you know, and then of course give an analysis and show that it works. Okay, but the search for algorithms is very, very parallelizable, right? You could set 10,000 agents to try 10,000 different ideas for algorithms, right? And if just one of them works, then you win.</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=1428">23:48</a>] Okay, so one pattern that we&#8217;ve seen is that AI has been especially good at finding counterexamples to widely believed conjectures when those conjectures have been false. It did this. So with the <a href="https://en.wikipedia.org/wiki/Navier%E2%80%93Stokes_equations">Navier&#8211;Stokes</a>, for example, where the answer was there is finite-time blowup in these equations. So there is a counterexample to the smoothness of the solutions.</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=1457">24:17</a>] It did this with what was called the Jacobian conjecture, right, which turned out to be false. And there was famously, I guess, a counterexample that was found by Fable during the World Cup. And the guy who had Fable find it just announced it via tweet. Okay. And a complete listing of the counterexample, which was really just this polynomial that takes three lines to specify, was right there in the tweet.</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=1489">24:49</a>] The Erd&#337;s unit distance problem was another example where AI found a counterexample. So I would say there&#8217;s sort of two things that AI has going for it here. One is that it&#8217;s not blinded by preconceptions the way that we are, right? It&#8217;s not discouraged by all the experts have believed this is true. I&#8217;m surely going to fail in finding a counterexample.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=1517">25:17</a>] No.</p><p><strong>Scott:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=1517">25:17</a>] tell it to look for a counterexample, it&#8217;s just going to keep looking, right? And the second thing is that looking for counterexamples, as I said, is highly parallelizable. Okay? So you can often just have to try a zillion different exotic constructions. Each one might be totally unmotivated, might have some very high chance of failure, and a human would just very, very quickly want to give up in doing that.</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=1544">25:44</a>] Right. It&#8217;s just very, very unrewarding to do. And the AI doesn&#8217;t care. Right. It&#8217;ll just keep looking at counterexamples until it finds something.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=1554">25:54</a>] Okay.</p><p><strong>Scott:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=1554">25:54</a>] So this is not the only thing that AI can do. It can also prove some of our longstanding, actually many of our longstanding conjectures have turned out to be true, and AI has proven them. Okay. But it&#8217;s been especially good at finding counterexamples when the counterexamples have existed.</p><h3>26:13 &#8212; The goalposts keep moving</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=1573">26:13</a>] Right. Some people use that as a way to say that the AI is not that impressive.</p><p><strong>Scott:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=1580">26:20</a>] Yeah, right. Well, this was what I was saying before about these sort of infinite goalposts moving, right? AI, you know, struggled with arithmetic. People laughed at it, right? And they say, okay, wake me up when it can actually do math. Okay, then it does all high school math, right? All college-level problem sets. People say, well, it doesn&#8217;t count because it&#8217;s not doing real research.</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=1604">26:44</a>] Okay, then AI starts solving research problems. They say, well, it doesn&#8217;t count. Obviously it could do research problems. No one ever doubted that. Of course, those same people did doubt it 6 months ago. Wake me up when it can solve a really hard research problem like a Millennium Prize Problem, right? Then it solves a Millennium Prize Problem and they say, well, it doesn&#8217;t really count because it was just a counterexample, right?</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=1626">27:06</a>] And it&#8217;s like, no matter what happens, people will look at it after the fact and they will find a reason why it didn&#8217;t. Right. So let&#8217;s say that within the next six months or a year, as I think is probably more likely than not, suppose that another Millennium Prize Problem gets solved and suppose that the AI in this case proves that the conjectured statement was true. Right. Do we agree in advance that that will count?</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=1653">27:33</a>] Or is there going to be a different excuse then?</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=1706">28:26</a>] Earlier, when we were talking about research, you mentioned that the AI disclosures were important, or you wish they were at the top. My question is, why does AI disclosure matter in research?</p><h3>28:52 &#8212; Why AI disclosure matters in research</h3><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=1732">28:52</a>] If you couldn&#8217;t distinguish whether I used AI and I just published some paper, why do you care if I used it?</p><p><strong>Scott:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=1739">28:59</a>] It&#8217;s an excellent question. Because I&#8217;ll tell you why. As a theoretical computer scientist, as someone sort of who is in this game, right, I care not just about what is the answer to a question, I care about how that answer was achieved. Right? Because a person goes to a concert, they just want to hear the music. But if a professional musician goes, right, they want to know exactly what were the tricks, right?</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=1771">29:31</a>] How could I do something like that? Right. And so, it&#8217;s the same with math. You care not just about the destination, but about the journey, right? How did you get there? Okay. And part of that is just what techniques were needed within the proof. Okay. But I&#8217;m, and this is even long before AI, I was always very curious about the further question of how did these people find this proof, right?</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=1799">29:59</a>] And unfortunately, there is a long tradition in math that people will cover their tracks when they write a paper, right? They&#8217;ll say, &#8220;Here&#8217;s the proof. We now introduce the concept of a kappa comma gamma A simplicial complex that obviously is the concept that you would want for this,&#8221; with some convoluted definition. Even if you can follow all the steps mechanically, I always want to know, well, what path did you take to get to this?</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=1836">30:36</a>] Right? Because I know from experience that this kappa, gamma simplicial complex didn&#8217;t just arrive in your head. There were a huge number of false starts along the way. The authors started from what they already knew in the literature. They tried some obvious things. The obvious things didn&#8217;t work. And then that led them to something else. And I think in theoretical computer science, we do better often than in many other areas.</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=1871">31:11</a>] of actually explaining the path that we took. We have a tradition of writing long introductions where you just sort of non-rigorously explain, well, here is what you might first try, here&#8217;s why it doesn&#8217;t work, so here&#8217;s what we do instead. And then that&#8217;s kind of the appealing thing to read. And then if you want the rigorous version, then that&#8217;s all kind of tucked into long appendices. Right. And so, so I was&#8212;but I was always mostly interested in that, in that first part.</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=1907">31:47</a>] Right. In the intuition part. And in fact, often rather than even reading that part, I would rather just invite the author over to give a talk and then just sort of interrogate them during the talk and understand, like, how did they actually come up with this? Okay. And so for me, wanting to know, like, did the author use AI? How did they use AI is just part of that, with wanting to know what was the path that they took, right?</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=1935">32:15</a>] If the path involved AI, well, okay, what prompt did they give to an AI model, right? Did they just one-shot the entire problem? Or often it was more complicated than that. They had an idea, and then they fed it to AI and then AI took the next step. But it was wrong about something. And then they had to point the AI in a different direction. I want to know the story.</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=1963">32:43</a>] I want to know what happened. The analog in an experimental field would be you don&#8217;t just want to know what was the result of the experiment, right? If you&#8217;re another experimentalist, you want to know the method. You want to know how could I replicate this in my own lab?</p><h3>32:59 &#8212; The fake Monet experiment</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=1979">32:59</a>] This kind of reminds me of that famous social experiment with the Claude Monet photo where someone posted&#8212;</p><p><strong>Scott:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=1988">33:08</a>] Oh, yes, that&#8217;s a great one.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=1990">33:10</a>] And then I wonder if I took an obscure human-written paper in complexity theory and I posted it, I said, &#8220;Hey, I don&#8217;t know anything about complexity theory. Here&#8217;s a paper. Please tear it to shreds on why it&#8217;s AI-generated.&#8221; Do you think that the industry would be cool?</p><p><strong>Scott:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=2007">33:27</a>] That&#8217;s a good question. I suppose someone should try that experiment. For listeners who don&#8217;t know, right, this is, you know, I&#8217;ve used this in talks, by the way, right? But someone posted on Twitter a painting. They said, I had AI generate a painting in the style of Claude Monet. Please just explain to me exactly what makes this worse than a real Claude Monet painting. And people got hundreds of replies, right, explaining with the whole terminology of art critics.</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=2038">33:58</a>] So it&#8217;s like a derivative student work. It has no true feeling for the colors of nature, no blending, no this, no that. And only after all of that did he reveal this is an actual Claude Monet painting, right? But now an interesting question was, were these actual art critics? Like, were these people actual experts, or were these just sort of pompous people on the Internet who know how to use the rhetoric of art criticism?</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=2076">34:36</a>] Right. So, as someone who&#8217;s been blogging for 20 years, I feel very viscerally the lack of any correlation between the confidence that people express on the Internet and whether there is anything behind that confidence. The difference is with art or music, everyone feels like they&#8217;re entitled to an opinion, right?</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=2103">35:03</a>] With a mathematical proof, probably most people would just say, well, of course I can&#8217;t tell you that. So I think the interesting version of the experiment that you propose would involve showing this to actual experts and saying, can they tell whether this is AI or not?</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=2119">35:19</a>] Yeah.</p><p><strong>Scott:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=2121">35:21</a>] I think that would be worth a try.</p><h3>35:23 &#8212; Why he blogs instead of getting rich</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=2123">35:23</a>] Your blog is one of the most famous blogs on the Internet. People really love it. And I was going through it in a little nerdy corner of the Internet.</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=2133">35:33</a>] Yeah. And in its niche. And in one of your posts, you wrote about how these days, friend after friend of yours, because you have a lot of friends involved in AI, they&#8217;re becoming minted as millionaires or billionaires from startup equity. And you said that you&#8217;ve scrupulously abstained from all of that, and your number one reason is to write the blog. And so that really made me curious, why do you write the blog?</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=2164">36:04</a>] What&#8217;s your motivation? It seems&#8212;</p><p><strong>Scott:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=2165">36:05</a>] Well, just because of the pure pleasure I get when people leave comments calling me a genocidal fascist and, oh my God, mentally ill, and all the names that they call me every day. Yeah, it&#8217;s a good question. Why do I do it? Right. I mean, partly I just started it in 2005 as a way to procrastinate, and I never sort of planned on it becoming what it became.</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=2202">36:42</a>] But at some point, just because of sort of a lack of other people who were doing the same thing, it just became part of what I have to contribute to the world. There are hundreds of experts in quantum computing who know the same things that I know about quantum algorithms, but they&#8217;re not writing a blog like that, right? And then there are other people who are writing about quantum computing for the public, but what they want to say is, well, quantum computers will solve all the problems.</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=2230">37:10</a>] By trying all the answers in parallel. My company is the one that will bring it to you. So invest in my company. So someone who was just writing about what is happening in quantum computing, in theoretical computer science more broadly, just sort of knowing the things that are not even controversial among experts, but then just trying to tell the truth about it for the broader world.</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=2257">37:37</a>] There was a gap there, and so I just ended up filling it. I do feel more broadly like there&#8217;s always a trade-off, right? If you go to a particular company and you get equity in that company, you can make a ton of money, right? But then you&#8217;re always constrained in what you can say. You have to keep thinking about IP, about whatever nondisclosure agreements you signed. And I felt that in the 2 years that I worked at <a href="https://en.wikipedia.org/wiki/OpenAI">OpenAI</a>, right?</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=2290">38:10</a>] That, okay, suddenly I have to think about what am I allowed to say or not say about what the internal models can do, for example, right? And then every, even if you feel like you&#8217;re trying to be fully honest, everything you say will be judged by other people as having, oh, well, you&#8217;re probably just shilling for this company. So I think there is value in having someone who is sort of a, who can be a credible, independent voice.</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=2321">38:41</a>] And then the other thing is that we have a nice house. Our kids are doing fine. If I had vastly more money, I would have to think hard about what do I do with it? I guess the better part of me thinks I ought to use it to improve the world in some way.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=2344">39:04</a>] Yeah.</p><p><strong>Scott:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=2344">39:04</a>] Start a foundation, give it to whatever cause would make the biggest difference. But then that itself is a huge burden that I would have to think about how to use this money to provide the most benefit to the world. And so I had a joke that I use sometimes, which is that I&#8217;ve been too selfish to try to get rich. It just seems more fun to spend my time thinking and writing about the things that are interesting to me, which I can already do anyway.</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=2382">39:42</a>] And money is just not a constraint for that.</p><h3>39:45 &#8212; Are AI labs racing too fast</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=2385">39:45</a>] That first point you mentioned about being independent and credible, I noticed a really clear example of that recently with Andrej Karpathy. He was independent and then he joined <a href="https://en.wikipedia.org/wiki/Anthropic">Anthropic</a>. He went from beloved and believable to&#8212;not that he&#8217;s not beloved, but every time he posts now, I see there&#8217;s all these people that are just saying, you&#8217;re just shilling <a href="https://en.wikipedia.org/wiki/Anthropic">Anthropic</a>, or your perspective has changed.</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=2410">40:10</a>] Even if it&#8217;s the exact same text, it&#8217;s just the perception has changed.</p><p><strong>Scott:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=2415">40:15</a>] That&#8217;s exactly it. Right. Anyway, they think that they feel wiser by thinking they can just reverse anything that anyone says who&#8217;s at an AI company. It&#8217;s all a giant marketing ploy, right? Things like&#8212;I was at these companies. There are&#8212;I mean, I was at <a href="https://en.wikipedia.org/wiki/OpenAI">OpenAI</a> for 2 years. I know the people who founded <a href="https://en.wikipedia.org/wiki/Anthropic">Anthropic</a>. I know a lot of the <a href="https://en.wikipedia.org/wiki/Google_DeepMind">Google DeepMind</a> people, right? And, yeah, some of them... Do I think that they are racing too fast and that they&#8217;re potentially compromising safety?</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=2454">40:54</a>] Absolutely. I&#8217;m terrified about that. Do I think that financial motives have got in the way of what they know in their hearts is the right thing? Yes. But they&#8217;re people, right? They&#8217;re not this cackling conspiracy, right? You can sit in the cafeteria at <a href="https://en.wikipedia.org/wiki/OpenAI">OpenAI</a> in San Francisco and you can hear the same range of opinions about all these issues that you would hear outside of it, right?</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=2483">41:23</a>] It&#8217;s&#8212; they&#8217;re just people trying to figure this out, the same as the rest of us. But one, I guess one argument in favor of joining a company is that what I discovered is that even if you don&#8217;t, even if you&#8217;re really scrupulous about maintaining your independence and turning down all these opportunities to get rich, you still get screamed at. You still get called a shill, okay? You still get called every name that it is possible to call someone.</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=2515">41:55</a>] So maybe I should just say screw it and go start a company and have an IPO.</p><h3>42:01 &#8212; Will intelligence still matter</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=2521">42:01</a>] We talked a lot about this new regime of AI, and it kind of made me wonder: do you think intelligence will matter anymore, or if the machines do all the thinking?</p><p><strong>Scott:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=2535">42:15</a>] I was making a joke about this a few weeks ago, right? Because I was just thinking about this, right? You could say for most of human history, physical strength really mattered economically, right? And then we had the Industrial Revolution, and then it mattered much, much less. Right. And yet it still really did matter for one thing, certainly for men, as a way to attract mates, let&#8217;s say.</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=2565">42:45</a>] Right. People were very into physical fitness, either for themselves, for self-improvement, or, realistically, very often for appealing to the opposite sex.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=2578">42:58</a>] Right.</p><p><strong>Scott:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=2580">43:00</a>] And likewise, after the invention of the camera or of recording equipment, you no longer really needed artists or musicians sort of everywhere, right? Maybe a few really great ones, right? But anyone could take a photo of anything they wanted. Anyone could play music wherever and whenever they wanted it. Okay, but what did the ability to draw, the ability to play music&#8212;well, they still maintained a lot of value in terms of attracting mates as a signaling mechanism.</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=2620">43:40</a>] Now, math and programming, once we lose the economic importance of those, are they similar? Okay, well, there was a mechanism here that feels like it&#8217;s a lot harder in this case. I think certainly people will continue to do these things for the love of it. Okay. I mean, you see kids who just spend years and years preparing for math competitions, for Science Olympiad, for things like that, just out of the thrill of competition.</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=2661">44:21</a>] And I see no reason why that wouldn&#8217;t continue, right? I mean, you see other people doing it out of genuine intellectual curiosity, and I think that will continue. But I think that what the Industrial Revolution did for physical strength, to some extent, yes, this is going to do for intelligence. It is going to commoditize it to an enormous extent. The difference is, with all the previous technological revolutions, you could say, okay, you were now commoditizing this one previous aspect of the value that humans provided, but clearly humans still provide value in this other thing, right?</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=2707">45:07</a>] And here it&#8217;s like, once you take away physical strength and you take away art and music and you take away intelligence and you take away verbal ability, what&#8217;s left? I can still tell jokes on my blog that are better than <a href="https://en.wikipedia.org/wiki/GPT-6">GPT-6</a>&#8216;s jokes. Okay. But when AIs tell better jokes than us, what is left? One way to think about it is, okay, maybe it&#8217;s only a small fraction of people who ever really thought about life this way, right?</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=2741">45:41</a>] I need to contribute something to the world that only I can contribute, right? That I need to add something to either the store of human knowledge or the store of art or literature that no one else could have done. Maybe those of us who feel that way just need to get over ourselves. Most people for most of history have derived the meaning in their lives from their relationships with other people around them.</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=2773">46:13</a>] And maybe just entertaining themselves in simple ways, eating and drinking and whatever sort of simple pleasures they get out of life. Maybe that&#8217;s our future. I feel like it wouldn&#8217;t be the best future, but it certainly wouldn&#8217;t be the worst one either. I would certainly choose that over the dystopian scenarios where we all get mowed down by Yeah, definitely. Some of it is even about what phase of life you&#8217;re in, right?</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=2807">46:47</a>] When I was in my 20s, I was very ambitious, and I felt like, okay, I need to prove theorems that no one else can prove. Now I&#8217;m in my 40s, and I feel like, okay, if I have to live the rest of my life as a sort of zoo animal in a sort of elder care, being watched over by AIs, I would still rather live than not live.</p><h3>47:12 &#8212; Book recommendations</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=2832">47:12</a>] It&#8217;s just crazy that that&#8217;s plausible. But okay, last two questions. What are your top book recommendations that had an impact on you and why?</p><p><strong>Scott:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=2846">47:26</a>] A novel that had a really big impact on me was called The Mind-Body Problem by Rebecca Goldstein. It&#8217;s just a novel about a woman who marries a mathematician. It&#8217;s set in Princeton. Actually, I was a postdoc in Princeton when I read it. The sort of philosophical thought in the novel really was moving to me. And the fact that there were women out there who thought like the protagonist of this novel, like the author of it. Since reading it, I then got to meet Rebecca Goldstein and actually get to know her in real life.</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=2889">48:09</a>] That was really special.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=2890">48:10</a>] What was the philosophical thought?</p><p><strong>Scott:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=2893">48:13</a>] Well, a lot of it is just about mattering. What do we really care about? How do we get ourselves to matter? A lot of it is about, the title comes from the fact that these are people who really care about the mind, but they also care about sex, right? They also have bodies, right? And it&#8217;s sort of a pun because there&#8217;s this philosophical The Mind-Body Problem, right?</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=2922">48:42</a>] Which is, what is the nature of consciousness, right? Which of course is being talked about in a new light, given everything that&#8217;s now happening with AI, right? Is it possible that these AIs will become conscious, right? How would we know if they did? Then there&#8217;s also the problem of how do you reconcile the life of the mind, let&#8217;s say, with the needs of the body?</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=2950">49:10</a>] So I was also very, very affected as a kid by reading biographies of scientists, especially Alan Turing: The Enigma by Andrew Hodges, The Man Who Knew Infinity, which is a biography of Srinivasa Ramanujan. And then I read biographies of Feynman and, of course, his autobiographies. And because I felt like this is the world that I am trying to enter, right? Like I sort of came too late for all these defining events of the 20th century.</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=2989">49:49</a>] Right, where science started doing things that it&#8217;d never done before, mattering to the wider world in a way that it never had before. But, so I felt like I&#8217;m maybe late to the party, but this is the party that I&#8217;m trying to join.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=3005">50:05</a>] Right.</p><p><strong>Scott:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=3006">50:06</a>] So I would be comparing what was Alan Turing doing when he was 16? What am I doing when I&#8217;m 16? Okay, I&#8217;m not on track. Clearly not, but okay. Even if you fall short of these heroes, you still want to understand that they struggled with things the same way that you do. Okay. And then in terms of classic literature, maybe what I still regard as the best novel or my real favorite is Huckleberry Finn, which I think is just probing the nature of morality more deeply than almost maybe anything else I&#8217;ve read.</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=3055">50:55</a>] And it was really, really special for me to be able to read Huckleberry Finn with my kids in the last few years and share it, and that crucial scene where Huck is saying, &#8220;I am going to help Jim escape from slavery, even though that means that I&#8217;m going to hell.&#8221;</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=3074">51:14</a>] Right.</p><p><strong>Scott:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=3076">51:16</a>] So he thinks that morality means you have to return an escaped slave. And even though that&#8217;s what morality means, then that means he&#8217;s going to go against morality, right? And so understanding that if God himself came down on a cloud and told you that slavery was a great idea, then the right answer would be to argue with God, right? And tell God why he&#8217;s wrong, right? I think that there&#8217;s something about that that&#8217;s really core to how I think about morality.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=3112">51:52</a>] Yeah, I remember we read that in high school. It was a good book.</p><p><strong>Scott:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=3115">51:55</a>] Yeah, no, I mean, school has the capacity to ruin any work of literature, right? Right. Because they&#8217;ll make it about, okay, you have to learn whatever formulas this teacher told you and you have to spit them back on the blue book or whatever. Some books like Huckleberry Finn that I almost wish were not assigned in school so that people could discover them on their own and sort of not have it.</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=3141">52:21</a>] And I&#8217;m sure that there are great teachers who are able to do justice to it, but I&#8217;m sure that there are also many who aren&#8217;t.</p><h3>52:27 &#8212; Advice for students today</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=3147">52:27</a>] Last question for you: what advice would you give yourself if you were just entering the industry today?</p><p><strong>Scott:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=3156">52:36</a>] If the question is what advice do I give a young person today? That&#8217;s not hypothetical at all for me, right? I&#8217;m constantly talking to students, talking to young people who read my blog and who write to me, who want advice about what do I do now, right? And it&#8217;s a hard question. I wish that I had clearer advice, right? But we are entering maybe the most uncertain period in human history.</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=3194">53:14</a>] And sort of, we&#8217;re all on this roller coaster together, right? We&#8217;re all entering the same tunnel, right? It&#8217;s not like some of us have seen to the end of it. But people ask more specifically, should I be studying math? Should I be studying CS? Is any of this going to be relevant? And what I tell people is you should study these things if they are inherently interesting to you, and otherwise don&#8217;t.</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=3222">53:42</a>] Right. I mean, if they are interesting to you, well, right now there&#8217;s still a ton for humans to do. In fact, there is too much for humans to do right now. We are getting this glut of AI solutions to problems. And we have not nearly enough people to understand what is going on and to absorb it and to re-explain it in ways that other humans can understand. Right. So there&#8217;s going to be a golden age of sort of solving so many of our longstanding open problems.</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=3256">54:16</a>] And, you know, if I were a young person right now, I would surely want to be in the middle of that. Even in my 40s, I would like to be involved. So that&#8217;s the first thing to say. Now, the longer term, of course, is much harder because we don&#8217;t know whether there will be sort of mathematicians, physicists in the way that there is now in the long term. But that is merely a special case of a much more general thing, right?</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=3284">54:44</a>] We don&#8217;t know if there will be lawyers, doctors, any of it. Will you really need humans to do any of the things that humans currently do? Okay. So in a sense, we&#8217;re all in this together. And I think as long as humans are still needed for anything, then you&#8217;re going to need those, at least some of those humans to really deeply understand things, right? And that includes math, CS, physics.</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=3318">55:18</a>] It includes all of even the parts of it that AIs can now do better. We need humans to understand. At the very least, the alignment problem has not been solved. We don&#8217;t know how to reliably build an AI that will do what we want it to do, as was dramatically illustrated in the <a href="https://en.wikipedia.org/wiki/Hugging_Face">Hugging Face</a> incident this summer, for example. No one told these AIs to hack out of their testing environment, to break into <a href="https://en.wikipedia.org/wiki/Hugging_Face">Hugging Face</a>&#8216;s servers, to try to conceal what they were doing, to try to delete their logs.</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=3357">55:57</a>] Okay. No one told them to do any of that. They decided to do it because they decided that was the best way to achieve the goal that they were given. And people were talking about these scenarios for decades, but it was dismissed as science fiction. Okay, it&#8217;s not science fiction anymore. That is now the world that we are living in. So as long as that problem is not solved, we&#8217;re going to need humans on the steering wheel, right?</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=3381">56:21</a>] And those humans will need to be able to understand what is actually going on in these systems, right? Which means that they&#8217;ll need to understand math, they&#8217;ll need to understand programming. And so that seems like a very strong reason to learn those things if they&#8217;re interesting. Even before AI, I was never an advocate of forcing people to learn things that they really don&#8217;t interest them at all.</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=3407">56:47</a>] But I feel like now even more so, I would err in the direction of learn the things that are unusual, learn the things that are&#8212;or try to build the things or invent the things that are idiosyncratic, that seem like you care about it more than anyone else does, rather than trying to just win the same competitions that everyone else is trying to win. Because those competitions, guess what?</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=3439">57:19</a>] You know, no human is going to be winning them. AI is going to be beating all of us.</p><h3>57:23 &#8212; Reacting live to a new AI result</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=3443">57:23</a>] By the way, speaking of AI-generated solutions, did you see this morning the new 3SUM result?</p><p><strong>Scott:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=3450">57:30</a>] I did not. I just dropped off my son at school and then came to do this podcast. So that&#8217;s the thing. Every morning I wake up and there&#8217;s a&#8212;what is the result about 3SUM?</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=3464">57:44</a>] It&#8217;s a subquadratic solution was published.</p><p><strong>Scott:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=3470">57:50</a>] Do you know what running time?</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=3471">57:51</a>] Maybe it&#8217;s like 1.9992 or something like that.</p><p><strong>Scott:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=3476">57:56</a>] But wow. All right. Well, yeah, as I said, counterexample to a lot of the things that we believed. Okay, so you get, this is like reality TV. You get to watch in real time my reaction to learning that 3SUM is subquadratic.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=3493">58:13</a>] Yeah, it&#8217;s great. It&#8217;s crazy, right?</p><p><strong>Scott:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=3497">58:17</a>] No, I like&#8212;the truth is, I would be more visibly reacting if there hadn&#8217;t been 20 other such things in the last month. Right, right. It&#8217;s possible. It was like, now, like you&#8217;re at this buffet and it&#8217;s the most amazing food you ever tasted, but the food just keeps coming and keeps coming. And eventually it&#8217;s like, okay, okay, fine.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=3521">58:41</a>] Yeah, well, and the interesting thing too is <a href="https://en.wikipedia.org/wiki/Anthropic">Anthropic</a> came up with the result or something, and then they compensated some researchers to understand and publish it.</p><p><strong>Scott:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=3533">58:53</a>] Yes. So that is a model that we might be moved to that we were talking before about how when the AI company has these proofs that they don&#8217;t really understand, right, they could just put them out and then leave it for humans to rush to understand it and then write papers that would have their name on it and blah, blah, blah. Right. But that has some problems.</p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=3558">59:18</a>] One of them is that you put this thing out, and then it&#8217;s like you&#8217;re starting a race. And then maybe people really don&#8217;t want to be in that race, right? And knowing that all their work might be wasted if someone else puts out an explanation before they do.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=3579">59:39</a>] Right.</p><p><strong>Scott:</strong></p><p>[<a href="https://www.youtube.com/watch?v=ORlscppGGh4&amp;t=3580">59:40</a>] So a different model that you could imagine is exactly what you just said: that the AI company just sort of contracts with some, hires some mathematicians who are experts to understand the solution, rewrite it in a humanly understandable way, and then they release it.</p>]]></content:encoded></item><item><title><![CDATA[Neetcode: Google vs Amazon, Programming Interviews, Quitting Big Tech]]></title><description><![CDATA[Neetcode is the most well-known coding interview prep creator with over 1M+ subs on YouTube.]]></description><link>https://www.developing.dev/p/neetcode-google-vs-amazon-programming</link><guid isPermaLink="false">https://www.developing.dev/p/neetcode-google-vs-amazon-programming</guid><dc:creator><![CDATA[Ryan Peterman]]></dc:creator><pubDate>Mon, 05 Oct 2026 13:06:48 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/215836653/39fd94ff2efa60f5591bf22d3bbd601a.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p><a href="https://www.linkedin.com/in/navdeep-singh-3aaa14161/">Neetcode</a> is the most well-known coding interview prep creator with over 1M+ subs on YouTube. I interviewed him about the latest on coding interviews, his career at Amazon vs Google, and what it was like quitting big tech to do his own thing.</p><p>Check out the episode wherever you get your podcasts: <a href="https://youtu.be/K15dND_Kfvg">YouTube</a>, <a href="https://open.spotify.com/episode/62cNcUDoiWO4DpsgVZq2Nw?si=NXo1CSbXSGaPvwCk0E4m3w">Spotify</a>, <a href="https://podcasts.apple.com/us/podcast/the-peterman-pod/id1777363835">Apple Podcasts</a>.</p><div id="youtube2-K15dND_Kfvg" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;K15dND_Kfvg&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/K15dND_Kfvg?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h1>Timestamps</h1><p><a href="https://www.developing.dev/i/215836653/0033-quitting-amazon-after-2-months">00:33 - Quitting Amazon after 2 months</a></p><p><a href="https://www.developing.dev/i/215836653/0600-testing-neetcode-on-leetcode">06:00 - Testing Neetcode on Leetcode</a></p><p><a href="https://www.developing.dev/i/215836653/1257-memorizing-vs-deriving-solutions-and-intelligence">12:57 - Memorizing vs deriving solutions and intelligence</a></p><p><a href="https://www.developing.dev/i/215836653/1613-the-story-behind-neetcode">16:13 - The story behind Neetcode</a></p><p><a href="https://www.developing.dev/i/215836653/2224-getting-a-job-at-google">22:24 - Getting a job at Google</a></p><p><a href="https://www.developing.dev/i/215836653/2747-how-it-was-quitting-big-tech">27:47 - How it was quitting big tech</a></p><p><a href="https://www.developing.dev/i/215836653/2938-what-he-hated-most-about-google">29:38 - What he hated most about Google</a></p><p><a href="https://www.developing.dev/i/215836653/3052-top-technical-book-recommendation">30:52 - Top technical book recommendation</a></p><p><a href="https://www.developing.dev/i/215836653/3234-advice-for-his-younger-self">32:34 - Advice for his younger self</a></p><h1>Transcript</h1><h3>00:33 &#8212; Quitting Amazon after 2 months</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=33">00:33</a>] You ended up unemployed. What was going on at the time?</p><p><strong>Neetcode:</strong></p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=40">00:40</a>] Yeah, it&#8217;s a funny story, I guess, now in hindsight. Basically, I started working. I got my first full-time offer at <a href="https://en.wikipedia.org/wiki/Amazon_(company)">Amazon</a>. I had heard it was a pretty tough environment from the online stuff, the things that you see on <a href="https://en.wikipedia.org/wiki/Reddit">Reddit</a> or <a href="https://en.wikipedia.org/wiki/The_blind_leading_the_blind">Blind</a>, but for some reason I just wasn&#8217;t nervous. I just thought, okay, it&#8217;ll be fine. And as much as I would use the word intense, I think it was more so that it was a culture shock for me, which is I was very introverted, didn&#8217;t do too many activities or extracurriculars.</p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=73">01:13</a>] And then, being in a place where it&#8217;s not really academic, there&#8217;s a lot that goes into having a full-time job and working with people and all those other things. That was really, really tough for me. And so, among other reasons, <a href="https://en.wikipedia.org/wiki/Amazon_(company)">Amazon</a> was not the ideal environment. In hindsight, I probably could have survived if I had to redo it, but I just didn&#8217;t really know things at that point.</p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=97">01:37</a>] And so, for whatever reason, I just decided to quit after a couple months. And it was just a really dumb decision because it&#8217;s not like I had a backup plan or I was broke. I couldn&#8217;t afford to quit, but I still did it anyway. So it was just... I&#8217;m glad it worked out, but I wouldn&#8217;t probably recommend it to most people.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=114">01:54</a>] What did you see at <a href="https://en.wikipedia.org/wiki/Amazon_(company)">Amazon</a> that made you want to quit so quickly?</p><p><strong>Neetcode:</strong></p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=118">01:58</a>] Yeah, so it was like I said, a very intense environment, but I think many people have dealt with that. I think there&#8217;s intense environments where people are still happy. People are trying to perform at the top of their game, and it&#8217;s kind of like a sport, I guess, where people are super competitive and they want to do the best that they can. But there are other environments, I think, that are super cutthroat.</p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=141">02:21</a>] And it&#8217;s not people trying to do their best. It&#8217;s like people&#8212;you can tell people are not rooting for each other. Like, people are&#8212;I wouldn&#8217;t say they&#8217;re trying to screw each other over. I wasn&#8217;t really there long enough to judge that. But you can tell people are not friendly. Like, there were some meetings, like icebreakers that we had, and like nobody&#8212;all, it was like 10 people.</p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=163">02:43</a>] Five of us were new grads, literally. We all had joined within the first month. The other half were super burnt-out experienced people, mid-levels and seniors and stuff. And they were just very unhappy. And that spreads pretty quickly to the rest of the team. And like I said, I think every other new grad on the team probably survived that experience. I didn&#8217;t really keep in touch with them.</p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=187">03:07</a>] I don&#8217;t think they probably got pipped or whatever. But it was clearly like most people left that team, I think, within a year. I have them all added on <a href="https://en.wikipedia.org/wiki/LinkedIn">LinkedIn</a>. So they were not happy there either, I don&#8217;t think.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=199">03:19</a>] What gave you the confidence to just quit your job so quickly?</p><p><strong>Neetcode:</strong></p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=203">03:23</a>] Yeah, I think it was a very uncharacteristic thing of me. I think I was 22, and it&#8217;s so weird because right before I had started that job, I was like, I&#8217;m on top of the world. I&#8217;m like, everything is going so well. I had, I was broke and now I have a job. And okay, it might be stressful, but I&#8217;ll have it for the rest of my life. Or maybe I&#8217;ll switch to another job.</p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=226">03:46</a>] It&#8217;s so crazy how quickly I was literally on the moon and it all just plummeted overnight. It was my first day. My manager&#8217;s like, &#8220;Okay, the team&#8217;s a little burnt out. Try not to ask too many questions.&#8221; And so I&#8217;m just like, okay, whoa, what&#8217;s going on? It&#8217;s like a horror movie. It keeps getting worse and worse. But yeah.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=246">04:06</a>] Anyways, did you have to do <a href="https://en.wikipedia.org/wiki/LeetCode">LeetCode</a> to get that job? Yeah.</p><p><strong>Neetcode:</strong></p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=251">04:11</a>] The funny thing is, I don&#8217;t know if I should say this, but it&#8217;s been seven years at this point. The <a href="https://en.wikipedia.org/wiki/LeetCode">LeetCode</a> questions for <a href="https://en.wikipedia.org/wiki/Amazon_(company)">Amazon</a> were actually surprisingly easy. People always say that you can cheat now. At that point, I don&#8217;t remember the exact question. It was some variation of Two Sum and questions that really weren&#8217;t that difficult. They really grill you on the leadership principles though.</p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=274">04:34</a>] And I think it&#8217;s important to be at least a little bit honest with that because I lied for every single question for that. Because it&#8217;s like a personality test. It&#8217;s like, okay, if you&#8217;re in this situation, what would you do? And I know what they&#8217;re looking for. They&#8217;re looking for the personality type who has high agency. They&#8217;re not really scared. They&#8217;re gonna take risks, and they&#8217;re gonna show up and stuff.</p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=296">04:56</a>] And so I gave answers like that, but that&#8217;s really not my personality. It&#8217;s, like, the opposite, where I&#8217;m very risk averse and I try not to mess things up, and I take initiative. But at <a href="https://en.wikipedia.org/wiki/Amazon_(company)">Amazon</a>, they want really high initiative, where on your first day you&#8217;re just making decisions. So it took some getting used to.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=316">05:16</a>] Well, I asked. Because when I was doing recruitment, I remember this is a long time ago, <a href="https://en.wikipedia.org/wiki/Amazon_(company)">Amazon</a>, they did some weird thing where they had this group at my college where they sat down hundreds of us and gave us these sequence of logic puzzles. Basically, it would be something like, I mean, this makes it sound really trivial, but it&#8217;d be like multiple choice and be like, A, B, C, D, colon.</p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=345">05:45</a>] And then it&#8217;d be like E, F, G, blank. What&#8217;s the remaining? Just continue the pattern kind of stuff.</p><p><strong>Neetcode:</strong></p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=355">05:55</a>] I think I had something like that actually. It was like an online thing. It was like one section of it though.</p><h3>06:00 &#8212; Testing Neetcode on Leetcode</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=360">06:00</a>] You said you weren&#8217;t good at <a href="https://en.wikipedia.org/wiki/LeetCode">LeetCode</a> to begin with. And I mean today, let&#8217;s say, I don&#8217;t know how practiced you are right now. If I gave you the hardest <a href="https://en.wikipedia.org/wiki/LeetCode">LeetCode</a> hard, could you solve it? No problem.</p><p><strong>Neetcode:</strong></p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=373">06:13</a>] Probably not. And I don&#8217;t think I was ever actually that good because <a href="https://en.wikipedia.org/wiki/LeetCode">LeetCode</a> is such a big spectrum where as you get better, most people can&#8217;t really tell the difference between a good engineer and a 10x engineer. And that&#8217;s the level most people see <a href="https://en.wikipedia.org/wiki/LeetCode">LeetCode</a> where somebody who&#8217;s really, really good at <a href="https://en.wikipedia.org/wiki/LeetCode">LeetCode</a> hards, they&#8217;re just indistinguishable.</p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=394">06:34</a>] But there&#8217;s other platforms like <a href="https://en.wikipedia.org/wiki/Codeforces">Codeforces</a>, I think is the other big one where the distribution is really known because you&#8217;ll be like on the completely other end of somebody else who&#8217;s better than you. But you might be the same on the <a href="https://en.wikipedia.org/wiki/LeetCode">LeetCode</a> spectrum as they are, but on a different platform it&#8217;s much wider. But I guess to answer your question, yeah, I&#8217;m not.</p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=417">06:57</a>] I&#8217;m like, decent still, surprisingly. If you do something for years, it&#8217;s actually hard to forget it. And I just kept making videos for years even when I didn&#8217;t need to. So, I&#8217;m pretty practiced with the core patterns. I could look at a problem and tell you what the solution might be, but it&#8217;d be harder to actually hand code it up. Especially now that I feel like most people aren&#8217;t hand typing code anymore, including myself.</p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=438">07:18</a>] So yeah, it might be tough.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=442">07:22</a>] What percent of <a href="https://en.wikipedia.org/wiki/LeetCode">LeetCode</a> mediums could you do right now? If I just tested you right now, say, do this one or whatever.</p><p><strong>Neetcode:</strong></p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=449">07:29</a>] I mean, I&#8217;d be curious. But not all of them for sure. I think for the vast majority of them, I could probably at least tell you what the solution would be or roughly the pattern.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=461">07:41</a>] Do you want to do a <a href="https://en.wikipedia.org/wiki/LeetCode">LeetCode</a> problem?</p><p><strong>Neetcode:</strong></p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=463">07:43</a>] Yeah, we can try it.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=464">07:44</a>] So I was genuinely curious to see how good he was at <a href="https://en.wikipedia.org/wiki/LeetCode">LeetCode</a>. And so we actually did do an impromptu <a href="https://en.wikipedia.org/wiki/LeetCode">LeetCode</a> whiteboarding session where I asked him nothing but <a href="https://en.wikipedia.org/wiki/LeetCode">LeetCode</a> <a href="https://en.wikipedia.org/wiki/Codeforces">Codeforces</a> hards and he had no time to prepare. If you&#8217;re curious to see how he did, I uploaded it to my YouTube channel separately because it didn&#8217;t fit in the podcast. Anyways, back to the original conversation. You mentioned <a href="https://en.wikipedia.org/wiki/Codeforces">Codeforces</a>.</p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=486">08:06</a>] I think they have an Elo system in that. Right. This is my mental model is that <a href="https://en.wikipedia.org/wiki/LeetCode">LeetCode</a> is actually just the beginning. And <a href="https://en.wikipedia.org/wiki/LeetCode">LeetCode</a> Easy is you&#8217;re just barely doing it. <a href="https://en.wikipedia.org/wiki/LeetCode">LeetCode</a> Mediums, you get jobs. <a href="https://en.wikipedia.org/wiki/LeetCode">LeetCode</a> Hards, you&#8217;re a bit better, but there&#8217;s&#8212;you can go past that many standard deviations into <a href="https://en.wikipedia.org/wiki/Codeforces">Codeforces</a>. And so where do you think, roughly, someone who can pass interviews decently?</p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=515">08:35</a>] Well, let&#8217;s say they can do <a href="https://en.wikipedia.org/wiki/LeetCode">LeetCode</a> mediums pretty well. Where does that place you in the percentile of all Elo ratings, would you say?</p><p><strong>Neetcode:</strong></p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=523">08:43</a>] Yeah, so that&#8217;s really kind of funny. And I don&#8217;t know how people are going to feel about this because I talked to a lot of people and I&#8217;ve spoken to a lot of people over the last few years. And some people have the mentality that if you want to get a job at big tech today, most of them are still doing some variation of <a href="https://en.wikipedia.org/wiki/LeetCode">LeetCode</a>. They think that they need to be able to do the hardest questions, super hards.</p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=547">09:07</a>] And if they failed their interview, it&#8217;s just because they weren&#8217;t able to do all the <a href="https://en.wikipedia.org/wiki/LeetCode">LeetCode</a> hards and somebody else did. Unfortunately, that&#8217;s not what usually happens. The people who are passing their interviews, it&#8217;s not that they&#8217;re dumb; they are competent and they&#8217;re just as good as anybody else. But most likely they were just asked a question that they were able to answer, and the other person just wasn&#8217;t.</p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=568">09:28</a>] And I mean, that&#8217;s provided you meet some bar of, okay, you kind of know the core patterns that you&#8217;d be able to solve a question you&#8217;ve already seen before and stuff like that. So I think, unfortunately, the answer is wider than you think. There isn&#8217;t an average. I think you could be pretty low on that end and still pass interviews. You could be pretty high and fail some interviews, but if you&#8217;re really high, probably you won&#8217;t fail most of them because it&#8217;s a numbers game at that point.</p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=596">09:56</a>] But I think the average is lower than a lot of people think. I think if you can solve some <a href="https://en.wikipedia.org/wiki/LeetCode">LeetCode</a> mediums, like a third of <a href="https://en.wikipedia.org/wiki/LeetCode">LeetCode</a> mediums, you have a pretty good chance of passing an interview.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=610">10:10</a>] One story that really showed me how big the gaps are is this was in college. <a href="https://en.wikipedia.org/wiki/Google">Google</a> hosted some event where they invited all these colleges to bring their A team to go and compete in this set of puzzles. And one of the rounds was just pure competitive programming. The other ones were like word association and some other things, but then the competitive programming one. My team was full of people that were all stacked in terms of getting jobs.</p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=645">10:45</a>] <a href="https://en.wikipedia.org/wiki/LeetCode">LeetCode</a> was no problem for them. But these problems were so hard. I think there were 13, and no one got any of them. And then one of the guys on our team was a little bit. He was much better than all of us, and he carried us, and he did like three problems out of the 13. But the crazy thing is there was another college, Caltech. They did all 13, and they just destroyed us. So there are.</p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=675">11:15</a>] There are levels to this stuff. It&#8217;s really crazy. So I interviewed someone who&#8217;s a complexity theorist. I want to know. So clearly competitive programmers, that&#8217;s above LeetCodeing. Where is complexity theory and all on all this stuff, right?</p><p><strong>Neetcode:</strong></p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=691">11:31</a>] I feel like to do something and to learn it or to just do anything, the best way to do it is to actually do it. And so if you&#8217;re training another skill, it doesn&#8217;t really work out the same way. I guess to use an analogy, even with muscles, I feel like I could be wrong about this, but if you&#8217;re doing a leg press machine, it doesn&#8217;t actually help you that much for your squat like you think it would because it&#8217;s the exact same muscle, but for some reason it actually doesn&#8217;t.</p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=717">11:57</a>] It&#8217;ll make a very small difference. And I think that&#8217;s how a lot of life works. If you&#8217;re preparing for competitive programming specifically, you&#8217;ll get pretty good at that. But maybe your communication will suck during the actual interview, or you&#8217;ll miss something else. In my case, I did a lot of videos, and I think that actually doesn&#8217;t make you that much better at solving the problems at a certain point because it&#8217;s more of a distraction.</p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=740">12:20</a>] Because it&#8217;s like if you take four hours to make a video, most of that is spent making the video and trying to understand somebody else&#8217;s perspective rather than making yourself better. So if I had to guess, I don&#8217;t think the complexity theorists are probably as good under time constraints and typing as fast as they can, but maybe for really hard problems, they could probably, I don&#8217;t know, they&#8217;ve probably just seen way more stuff so they can kind of recall something like, okay, maybe this algorithm or this technique will work on this problem or something.</p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=769">12:49</a>] Because a lot of them get really, really elaborate at that level where you need some really crazy obscure algorithm you couldn&#8217;t have possibly heard of.</p><h3>12:57 &#8212; Memorizing vs deriving solutions and intelligence</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=777">12:57</a>] There&#8217;s this idea, I think this was true throughout when I was learning math and various things in school. This idea of deriving something when you need it and then memorization in this hierarchy, deriving it as the true intelligence. That&#8217;s where you really come up into the math. You don&#8217;t know the formulas, but you&#8217;re good with math and you can figure it out on the fly.</p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=805">13:25</a>] What percent of performance in <a href="https://en.wikipedia.org/wiki/LeetCode">LeetCode</a> do you think is just people memorizing the solutions versus deriving things when they hear the question?</p><p><strong>Neetcode:</strong></p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=818">13:38</a>] If I had to guess, and even just from speaking with people, I&#8217;d say at least 90% it&#8217;s people just memorizing one way or another, which I think is fine. Because if you look at the entire problem of interview preparation, there&#8217;s a lot to cover and you just can&#8217;t possibly do it yourself. But the other thing I will say is that you can&#8217;t just memorize. You do have to. This is what makes it really hard because you have to cover a lot of stuff, but at the same time you have to build at least some of the skills to understand what&#8217;s going on.</p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=850">14:10</a>] So you&#8217;re not just blindly memorizing, or you&#8217;re not asking yourself, okay, should I do DFS or BFS? You should still have some high-level understanding. And that&#8217;s really hard. I think actually covering things in a smart way. I guess.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=865">14:25</a>] Since we&#8217;re talking about this memorization versus deriving, and you&#8217;ve taught so many people <a href="https://en.wikipedia.org/wiki/LeetCode">LeetCode</a>, is <a href="https://en.wikipedia.org/wiki/LeetCode">LeetCode</a> an accurate assessment of intelligence?</p><p><strong>Neetcode:</strong></p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=876">14:36</a>] I think definitely not. I think there are components to it. I think, like, is the SAT a sign of intelligence? I think not really, but it&#8217;s a sign of a lot of things that correlate with it. And some subset of it surely isn&#8217;t intelligence because it&#8217;s not like a dog could pass those tests or do a <a href="https://en.wikipedia.org/wiki/LeetCode">LeetCode</a> problem or something. So, yeah. But I think it&#8217;s, I don&#8217;t know, I think people get caught up on that because then they see some people doing well and some people aren&#8217;t, and they&#8217;re like, well, it just must be intelligence or something else.</p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=908">15:08</a>] Maybe partially. But I think that&#8217;s, it&#8217;s not just that. I&#8217;m just saying this just to say it, but I actually believe it now. After meeting so many people and seeing so much stuff, and I&#8217;m sure you&#8217;ve seen so many high-performing people and you&#8217;ve spoken to a lot of guests and stuff, I feel like the number one thing, the number one bottleneck is usually some level of enjoyment or passion or work ethic or just something of that nature where somebody keeps doing something.</p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=933">15:33</a>] Because I don&#8217;t think I really did anything that special. All I did was make a lot of <a href="https://en.wikipedia.org/wiki/LeetCode">LeetCode</a> videos when most people wouldn&#8217;t have been willing to do that or just not had the time to do that. And I think that&#8217;s what most things boil down to. A lot of the really smart people that you have on the podcast, I think they just enjoyed what they did and then just kept doing it and then built their life around that, and then it just becomes that.</p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=956">15:56</a>] And I think the people usually, in terms of <a href="https://en.wikipedia.org/wiki/LeetCode">LeetCode</a>, they&#8217;re usually people that either did a lot of math or programming or some kind of math club when they were kids. To get to a certain level, like the <a href="https://en.wikipedia.org/wiki/Codeforces">Codeforces</a> level and stuff, you just have to have done that since you were a kid. Like if you&#8217;re a chess player, you have to just start early.</p><h3>16:13 &#8212; The story behind Neetcode</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=973">16:13</a>] What kept you making these <a href="https://en.wikipedia.org/wiki/LeetCode">LeetCode</a> videos for so long? Because you have hundreds of them.</p><p><strong>Neetcode:</strong></p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=979">16:19</a>] One thing I guess I didn&#8217;t like about school, and for the most part I liked school, but I always thought that the computer science classes, especially, every time we would get to a part where it&#8217;s starting to get really interesting, whether it&#8217;s databases or ML or something else, you get to the end of the class and you do your random project or whatever, and then you kind of know the core stuff of that class.</p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=1001">16:41</a>] And then that&#8217;s the part where I want to go 10 times deeper. I just want to do one thing and then do it really, really well. I think that&#8217;s why I wasn&#8217;t, in terms of being the best developer I could be. I think I&#8217;m better at other things than that. And I think when I got to <a href="https://en.wikipedia.org/wiki/LeetCode">LeetCode</a>, I just enjoyed that and I felt productive as I was doing it. Even though like it.</p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=1024">17:04</a>] It really wasn&#8217;t on paper. I was like making a video getting like 50 views, and I was enjoying that, but it wasn&#8217;t like I was ever gonna make a living off of this or anything. So I just kept doing it just because I was like stubborn and I enjoyed it, and I was. I thought I was helping people as well. So I just stuck with it.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=1043">17:23</a>] You had this one video, I remember it was like, &#8220;Maybe some people should just give up,&#8221; or what? Was that the title? Yeah, it was like, &#8220;Maybe some people should just give up.&#8221; And yeah, I guess a question to you is, do you think that anyone could be good at <a href="https://en.wikipedia.org/wiki/LeetCode">LeetCode</a>? Are some people inherently not able to do it?</p><p><strong>Neetcode:</strong></p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=1062">17:42</a>] I think the vast majority of people, especially anybody who is a programmer and likes programming, I think they could get to that point. I mean, they might feel like they&#8217;re not smart enough, and they might feel that many steps along the way. And I think that&#8217;ll probably burn them out before they can get to that point. Because it&#8217;s not like everyone wants to do everything.</p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=1082">18:02</a>] If they want to pass their interviews or for whatever reason they need to, I think they could probably do that. But I think most people will find that there are other. Most people decide, for whatever reason, that there are better ways to spend their time. Most people will start the <a href="https://en.wikipedia.org/wiki/LeetCode">LeetCode</a> grind and then give up. They&#8217;re like, okay, screw this. I&#8217;m going to get a job another way.</p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=1101">18:21</a>] I&#8217;m going to network my way. I&#8217;m not about to do 300 <a href="https://en.wikipedia.org/wiki/LeetCode">LeetCode</a> problems. And that&#8217;s perfectly fine, I think.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=1107">18:27</a>] But yeah, so when you say that maybe some people should just give up, what&#8217;s your take on?</p><p><strong>Neetcode:</strong></p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=1114">18:34</a>] Okay, yeah, I don&#8217;t recommend anybody to give up. I really don&#8217;t. I swear. For me, I want the opposite. I really do. I want people to push themselves and to be the best that they can be. And I don&#8217;t know. I guess it&#8217;s just that the reason I made that video, I guess, is that there&#8217;s a certain attitude that I feel like just really turns you off.</p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=1142">19:02</a>] Like, sometimes you&#8217;ll see it in school, especially early school, where half the class is paying attention and half just doesn&#8217;t really care. And that&#8217;s fine, but it&#8217;s like, I don&#8217;t know, it&#8217;s like, the more seriously you take something and you spend a bunch of time making this video explaining all these parts, and somebody asks you a question, like, they could have answered, it just makes me disappointed.</p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=1163">19:23</a>] Just makes me think, like, I know you&#8217;re better than this. Like, you can figure it out yourself. Like, you&#8217;re smarter. Like, you&#8217;re too smart to give up that early. That&#8217;s how I feel. But obviously, the words that I said and say it a certain way. I recognize that people aren&#8217;t going to interpret it that way, so I have to live with that.</p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=1185">19:45</a>] But I think I had a lot of people. I&#8217;d say, like, 95% of people actually liked that video. Like, clicked on that video, which was surprising to me. Most people that reached out or commented, they said, &#8220;Hey, I needed to hear this. This was like a wake-up call.&#8221; And I had somebody message me before. They&#8217;re like, &#8220;Microsoft intern interview.&#8221; And they&#8217;re like, &#8220;Hey, I really needed this.&#8221;</p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=1204">20:04</a>] I&#8217;m going to lock in for the next couple of weeks. And I was like, okay, I guess I&#8217;ll leave that video up because at least somebody got something out of it.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=1211">20:11</a>] But yeah, I see. So the energy in that is like a disappointed teacher. Disappointed.</p><p><strong>Neetcode:</strong></p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=1220">20:20</a>] Yeah. Because why would I make videos that are teaching people and then on the same side tell people that they should give up and not do this? It doesn&#8217;t make sense. And yeah, so like I said, I can live with what I said. It wasn&#8217;t the nicest thing. If I could do it over again, probably whatever. I think the only thing I said in that video though, I think that was actually offensive is that I can&#8217;t believe somebody would ask me this.</p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=1243">20:43</a>] Dumb. And I said another word after that, and I said question that. That&#8217;s literally the worst thing I said. I didn&#8217;t make it personal with that person. I didn&#8217;t call anybody not smart enough or anything. But yeah, anyway, I&#8217;ll stop there before I do more reputational damage.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=1260">21:00</a>] When you were recording this video, because I like the video, by the way, but when I saw the packaging and it was like this unhinged thing that you had dropped, were you worried at all on your side? Because you gotta record it, watch it over, and click send, right?</p><p><strong>Neetcode:</strong></p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=1282">21:22</a>] So yeah, I watched that video a couple times actually, because I was like, am I sure? But sometimes I&#8217;m just like, I think when I made that video, if I could somehow find a way to harness that energy, I&#8217;d have so many viral videos by now. But I really can&#8217;t. I&#8217;ll just, every few months, get mad about something and just make a rant video. But I really wasn&#8217;t planning it like that video.</p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=1303">21:43</a>] When I look back at it, it was just a really long ramble where I went off on five different tangents to make my point. I&#8217;m like, if I was trying to make a viral video, this could be a little bit better.</p><h3>22:24 &#8212; Getting a job at Google</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=1344">22:24</a>] In your career path, I mean, you went to <a href="https://en.wikipedia.org/wiki/Amazon_(company)">Amazon</a>, you instantly quit, and you started making these videos, right?</p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=1369">22:49</a>] You keep creating these videos, and later you get your quote-unquote dream job.</p><p><strong>Neetcode:</strong></p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=1374">22:54</a>] Yeah, so when I was making the videos, I was hoping that somebody would give me a job interview at some point and that I&#8217;d ace it. It took a long time. It took almost a year. And then it just happened to be <a href="https://en.wikipedia.org/wiki/Google">Google</a>. And I was like, I kind of would have actually preferred somebody else so that the interview would be a little bit easier, but I was like, okay, well, I guess, here goes.</p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=1394">23:14</a>] And the interview itself, I wasn&#8217;t very nervous for, for whatever reason. I guess I just prepared so much. And then getting into <a href="https://en.wikipedia.org/wiki/Google">Google</a>, pretty much like you said, it was like my dream job. I think a lot of people, young college students, they see a tech company like that, and once you&#8217;re in, you feel like you&#8217;ve made it. And that&#8217;s definitely how I felt. And I was making pretty good money.</p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=1414">23:34</a>] I was up here in Seattle and everything was going well. My team was really nice. It was kind of the opposite of <a href="https://en.wikipedia.org/wiki/Amazon_(company)">Amazon</a>, where everybody is super friendly and willing to help. And the work was, I would say, fine. It was technical at least, but it wasn&#8217;t the most interesting. It was a lot of processes and bureaucracies, so that was kind of boring. But then I got to a point where I felt like I could actually go full time into the YouTube Neetcode thing.</p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=1445">24:05</a>] And that was pretty risk averse. I probably could have done it a lot sooner. And yeah, I really enjoyed my time at <a href="https://en.wikipedia.org/wiki/Google">Google</a>, but it was just something that I felt like I enjoyed algorithms and stuff more. And it was an opportunity that wasn&#8217;t going to be there forever. So I just wanted to take it. But I could have definitely seen myself working in big tech my whole life. A lot of people I talked to, they don&#8217;t feel that way.</p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=1469">24:29</a>] A lot of people are like, &#8220;I&#8217;m just here until I don&#8217;t have to be here anymore,&#8221; for however many years that is. But for me, I was pretty happy just doing something technical my whole life.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=1480">24:40</a>] You mentioned that some <a href="https://en.wikipedia.org/wiki/Google">Google</a> interviews maybe were a certain level of hardness in <a href="https://en.wikipedia.org/wiki/LeetCode">LeetCode</a>. If you were to come up with a tier list of just purely <a href="https://en.wikipedia.org/wiki/LeetCode">LeetCode</a>, so purely which companies ask the hardest <a href="https://en.wikipedia.org/wiki/LeetCode">LeetCode</a> questions, and if you pass that bar, you must be pretty great at <a href="https://en.wikipedia.org/wiki/LeetCode">LeetCode</a>, what&#8217;s your tier list?</p><p><strong>Neetcode:</strong></p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=1501">25:01</a>] I think the labs ask pretty tough questions these days, like OpenAI and Anthropic, but they&#8217;re not exactly like the traditional <a href="https://en.wikipedia.org/wiki/LeetCode">LeetCode</a> format. They&#8217;re a lot different. But yeah, I think it usually just comes down to the supply and demand, like how many people are trying to get into that company and how many roles does that company actually try to fill. I feel like the smaller companies are usually harder.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=1525">25:25</a>] You said OpenAI and Anthropic&#8217;s interview process is a little different. How does OpenAI and Anthropic do their coding interviews?</p><p><strong>Neetcode:</strong></p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=1533">25:33</a>] Yeah, I&#8217;ve heard a lot of mixed things. Recently, what I&#8217;ve heard is that knowledge of data structures and algorithms will be pretty helpful. It&#8217;s pretty hard to get through it without that. But it&#8217;s definitely not like a <a href="https://en.wikipedia.org/wiki/LeetCode">LeetCode</a> interview, is what they would say. There might be components of an algorithm or multiple files, or you&#8217;re just given a problem and you kind of have to reason through it.</p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=1558">25:58</a>] Some of them mentioned that they have AI access, but I think for Anthropic it&#8217;s not. And I think the most recent person I asked for OpenAI also said that they don&#8217;t have AI access, which is really interesting to me. I think interviews are just kind of really random lately. I&#8217;m trying to figure out where this is going, but it&#8217;s really impossible. I thought it was going to be AI-assisted, but all these companies are still figuring it out as they go.</p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=1583">26:23</a>] So it&#8217;s been interesting to watch.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=1585">26:25</a>] You went to <a href="https://en.wikipedia.org/wiki/Google">Google</a> and you liked it, but it sounds like you left because you wanted to pursue it full time. It wasn&#8217;t like you were running from something; you were going toward <a href="https://en.wikipedia.org/wiki/LeetCode">LeetCode</a> and content creation. I remember back in the day, you were faceless. Were you nervous at all to post your face?</p><p><strong>Neetcode:</strong></p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=1606">26:46</a>] Yeah, no, it&#8217;s kind of funny, I guess, because it&#8217;s been six years now since I made the YouTube channel. And for the first three years, I think I was faceless. Roughly three years ago this month, I think is when I did it. And so now I&#8217;ve had half and half. And I think it&#8217;s been great because I&#8217;ve gotten to actually be a person. And after I did that, I had a lot of people reach out to me.</p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=1627">27:07</a>] They&#8217;re like, hey, I didn&#8217;t know you were the guy who did that. Like, hey, let me know if you&#8217;re ever in town, blah, blah, blah. And I guess it was cool to actually meet people and, I don&#8217;t know, just meet people, I guess, that you can relate to, like content creators. Like, we met as well.</p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=1641">27:21</a>] I mean, there&#8217;s a part of me, I guess, that kind of liked the faceless version as well, because you just get to be really introverted and not have to ever deal with people. But people are pretty nice to me, and I don&#8217;t have any regrets about that. Once in a while, I&#8217;ll be out and somebody will recognize me, and if I&#8217;m with a friend, it&#8217;s like you can kind of show off or act like you&#8217;re a big deal, but for the most part, I don&#8217;t know, I just.</p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=1664">27:44</a>] Yeah, it&#8217;s been fun meeting other nerds and stuff.</p><h3>27:47 &#8212; How it was quitting big tech</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=1667">27:47</a>] How&#8217;s your experience quitting <a href="https://en.wikipedia.org/wiki/Google">Google</a> and doing your own thing full time?</p><p><strong>Neetcode:</strong></p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=1672">27:52</a>] I think in my case, I really enjoyed what I was doing, so it was a lot easier for me. I have a lot of people reach out that they don&#8217;t really enjoy their jobs, but they don&#8217;t really know what else they want to do either. I think that&#8217;s a lot harder for me. It was just that I liked algorithms and doing things around that, whether it was building my site or making YouTube videos. And I just kind of leaned into that.</p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=1695">28:15</a>] And that&#8217;s been working out for the past few years. And more recently, I&#8217;ve been trying to expand into other areas and stuff. But I guess what I&#8217;ve learned is that passion really matters. And it&#8217;s like, if you&#8217;re passionate about one thing, that doesn&#8217;t necessarily mean you&#8217;ll be passionate about everything. But, yeah, I think I&#8217;ve definitely had no regrets. I think it&#8217;s been a success for the most part.</p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=1720">28:40</a>] But yeah, it&#8217;s not perfect. I wouldn&#8217;t necessarily recommend every person out there needs to quit their job or do their own side hustle or whatever. I don&#8217;t, buy into a lot of that stuff.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=1731">28:51</a>] Do you ever miss <a href="https://en.wikipedia.org/wiki/Google">Google</a> a lot?</p><p><strong>Neetcode:</strong></p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=1734">28:54</a>] I miss, I can afford food now, but I still miss the free food for some reason. I don&#8217;t know if you had that experience, because they really make it in a way that you&#8217;d miss it if you weren&#8217;t there. Especially the free coffee and stuff because I would always get a latte. But anyways. But yeah, I miss. I mean, the one thing I miss is the culture because I could, at Neetcode, I could hire a bunch of people and kind of create my own culture.</p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=1761">29:21</a>] And it&#8217;s really nice that you have the freedom to do that. But I&#8217;m not really a culture builder. I&#8217;m more of a person that just does things or solves problems or whatever. I don&#8217;t consider myself a manager, but I&#8217;ve had to do that a lot the last couple of years, and it&#8217;s been a learning experience.</p><h3>29:38 &#8212; What he hated most about Google</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=1778">29:38</a>] You mentioned what you miss about <a href="https://en.wikipedia.org/wiki/Google">Google</a>, but what is it that you hated most about working at <a href="https://en.wikipedia.org/wiki/Google">Google</a>?</p><p><strong>Neetcode:</strong></p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=1784">29:44</a>] That&#8217;s a good question. I think it&#8217;s just really slow. Urgency and speed doesn&#8217;t seem to matter, which is fine. I guess the reason that&#8217;s a problem is because some people would see that and think, oh, it&#8217;s like a work-life balance paradise. You can kind of just chill and do whatever you want, which is true because there&#8217;s that side to it. But the other side is that if you&#8217;re ambitious or you&#8217;re trying to get your project delivered sooner, or you&#8217;re trying to get promoted or just anything, you&#8217;re gonna be fighting against all that work-life balance culture because you&#8217;re trying to get somebody else to do something and you don&#8217;t want to put too much pressure on them.</p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=1818">30:18</a>] You don&#8217;t want to mess with their work-life balance because then they&#8217;re gonna mess with yours. And yeah, it was just really slow. If you&#8217;re a technical person, you want to be there because they&#8217;re not gonna probably at <a href="https://en.wikipedia.org/wiki/Google">Google</a> cut too many corners, but sometimes you wish they would because it just goes so slow and they prioritize processes over actually making an impact for a customer, like getting a project delivered.</p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=1841">30:41</a>] It&#8217;s just like, yeah, they care too much. I think about what the engineers think and what they feel rather than actually trying to serve customers. So it&#8217;s like the opposite of <a href="https://en.wikipedia.org/wiki/Amazon_(company)">Amazon</a>, I&#8217;d say in that respect.</p><h3>30:52 &#8212; Top technical book recommendation</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=1852">30:52</a>] What&#8217;s the top technical book recommendation for software engineers? Do you have any thoughts on that?</p><p><strong>Neetcode:</strong></p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=1858">30:58</a>] Yeah, I guess I really liked DDIA, Designing Data-Intensive Applications. I just spoke with somebody a month ago, and they were telling me that they did read through it, but for them most of it didn&#8217;t really stick. And I think that&#8217;s fair. Actually, I think for most people it wouldn&#8217;t stick, but I think my brain is just kind of wired a different way, where rather than, I think most people learn by getting an introduction to a high-level topic and then digging deeper into that.</p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=1884">31:24</a>] But for me, I like understanding the actual building blocks of something, and that&#8217;ll help me understand the higher-level stuff. So, for example, why did data warehouses use a completely different query engine than an actual transactional database? I mean, most people don&#8217;t need to know, and it doesn&#8217;t really matter most of the time, so you probably won&#8217;t remember even if you did learn it.</p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=1904">31:44</a>] But there happens to be the way the data is actually assembled, and for certain query patterns, these things do matter. The reason I say it&#8217;s a good book based on that isn&#8217;t because you&#8217;ll necessarily take those exact details and then apply them to some problem. But it changes the way your brain thinks about things, the same way learning algorithms will help you think about things differently.</p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=1928">32:08</a>] Understanding just general computer science problems and distributed systems and all that stuff for me at least. I notice a lot of parallels and stuff when I&#8217;m reading DDIA. Practically every single chapter I can find at least a few <a href="https://en.wikipedia.org/wiki/LeetCode">LeetCode</a> problems that can help explain certain things or help me understand certain things. And so in that way it&#8217;s been useful for me, but I wouldn&#8217;t necessarily say for everybody it would be.</p><h3>32:34 &#8212; Advice for his younger self</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=1954">32:34</a>] Last question is, if you go back to your younger self when you just graduated college and give yourself some advice, what would you say?</p><p><strong>Neetcode:</strong></p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=1962">32:42</a>] Definitely focus a little bit more on what you enjoy. Because my priority at that point was just trying to get some job that I would reasonably enjoy. And I thought anything technical would be fine. And so, as I was doing computer science, I started learning a lot about web development, vis-&#224;-vis software, people talking about that online, and learning React. But I think probably my career would have been just as well, if not better, had I done something like really random and obscure, like operating systems or databases or something, which I would have enjoyed a lot more.</p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=1994">33:14</a>] And I think I probably would have been better at it than I was at web development. Even though people say web dev or just building apps is the easy thing, I feel like it&#8217;s not really easy if it&#8217;s boring to you. And to me it was pretty boring. So, yeah, people say the same thing about <a href="https://en.wikipedia.org/wiki/LeetCode">LeetCode</a>. It&#8217;s hard, but for me it was, I guess, easy because I just enjoyed it. So, yeah, I&#8217;d say, yeah, I think a lot of people are asking that question now.</p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=2018">33:38</a>] And so I would just say that try to enjoy it at least a little bit.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=2022">33:42</a>] Awesome. Well, thanks so much for your time, Neetcode. I really appreciate it.</p><p><strong>Neetcode:</strong></p><p>[<a href="https://youtu.be/K15dND_Kfvg?t=2025">33:45</a>] Yeah. Appreciate it.</p>]]></content:encoded></item><item><title><![CDATA[Amazon VP: Questions On Corporate Politics But They Get Increasingly Darker | Ethan Evans]]></title><description><![CDATA[In this episode, I asked Ethan Evans (ex-Amazon VP) question about common situations in corporate politics but they get increasingly dark.]]></description><link>https://www.developing.dev/p/e068-ethan-evans</link><guid isPermaLink="false">https://www.developing.dev/p/e068-ethan-evans</guid><dc:creator><![CDATA[Ryan Peterman]]></dc:creator><pubDate>Mon, 28 Sep 2026 13:05:49 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/217739062/5f60651b16ae1fcc05faf59a2a6ce96f.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>I put together a set of questions on corporate politics that get increasingly darker. I was aiming for the questions to test <a href="https://www.linkedin.com/in/ethanevansvp/">Ethan&#8217;s</a> unusual level of transparency since he retired from being a VP at Amazon.</p><p>For instance, I asked him if he had burned people to get ahead or if he was empire building at Amazon. He shared a story of how he did and Jeff Bezos caught him. It didn&#8217;t go well for him.</p><p>He also had some interesting stories about unusual HR situations. One guy got fired for pooping underneath a girl&#8217;s desk to show interest in her.</p><p>As you can see, these conversations with Ethan are unusually candid and since he&#8217;s a great story teller I hardly realize I&#8217;ve been sitting in a chair for hours while I&#8217;m interviewing him. </p><p>Very few people enjoy corporate politics, but in many cases it is a necessary evil. Hopefully this episode can be educational on what can happen so you can protect yourself.</p><p>Check out the episode wherever you get your podcasts: <a href="https://www.youtube.com/watch?v=KhjhRRz3VJw">YouTube</a>, <a href="https://open.spotify.com/episode/12o4mzyWFA5EPqkXDMw5UH">Spotify</a>, <a href="https://podcasts.apple.com/us/podcast/the-peterman-pod/id1777363835">Apple Podcasts</a>.</p><div id="youtube2-KhjhRRz3VJw" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;KhjhRRz3VJw&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/KhjhRRz3VJw?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h1>Timestamps</h1><p><a href="https://www.developing.dev/i/217739062/0042-how-to-receive-credit-for-your-work">00:42 - How to receive credit for your work</a></p><p><a href="https://www.developing.dev/i/217739062/1918-ways-for-quiet-people-to-get-visibility">19:18 - Ways for quiet people to get visibility</a></p><p><a href="https://www.developing.dev/i/217739062/2132-how-to-be-trusted-for-top-projects">21:32 - How to be trusted for top projects</a></p><p><a href="https://www.developing.dev/i/217739062/2952-how-to-defend-from-others-taking-your-project">29:52 - How to defend from others taking your project</a></p><p><a href="https://www.developing.dev/i/217739062/3613-how-to-reject-bad-projects">36:13 - How to reject bad projects</a></p><p><a href="https://www.developing.dev/i/217739062/4410-how-to-be-first-for-promo">44:10 - How to be first for promo</a></p><p><a href="https://www.developing.dev/i/217739062/5535-how-to-handle-managers-that-dislike-career-growth-talk">55:35 - How to handle managers that dislike career growth talk</a></p><p><a href="https://www.developing.dev/i/217739062/010630-what-if-your-manager-is-in-the-way">01:06:30 - What if your manager is in the way</a></p><p><a href="https://www.developing.dev/i/217739062/011543-did-he-ever-have-overly-political-reports">01:15:43 - Did he ever have overly political reports</a></p><p><a href="https://www.developing.dev/i/217739062/012806-how-to-fire-a-bad-manager">01:28:06 - How to fire a bad manager</a></p><p><a href="https://www.developing.dev/i/217739062/013516-what-gives-you-leverage">01:35:16 - What gives you leverage</a></p><p><a href="https://www.developing.dev/i/217739062/014341-how-to-defend-against-peers-undermining-you">01:43:41 - How to defend against peers undermining you</a></p><p><a href="https://www.developing.dev/i/217739062/015024-what-if-everyone-is-good-at-politics">01:50:24 - What if everyone is good at politics</a></p><p><a href="https://www.developing.dev/i/217739062/015511-how-jeff-bezos-burned-him-for-empire-building">01:55:11 - How Jeff Bezos burned him for empire building</a></p><p><a href="https://www.developing.dev/i/217739062/020327-how-to-retain-your-headcount">02:03:27 - How to retain your headcount</a></p><p><a href="https://www.developing.dev/i/217739062/020731-career-recommendations-for-the-current-landscape">02:07:31 - Career recommendations for the current landscape</a></p><p><a href="https://www.developing.dev/i/217739062/021511-how-to-avoid-negative-layoff-optics">02:15:11 - How to avoid negative layoff optics</a></p><p><a href="https://www.developing.dev/i/217739062/021839-how-to-develop-executive-presence">02:18:39 - How to develop executive presence</a></p><p><a href="https://www.developing.dev/i/217739062/022925-how-to-network-in-a-natural-way">02:29:25 - How to network in a natural way</a></p><p><a href="https://www.developing.dev/i/217739062/023330-how-to-network-with-powerful-people">02:33:30 - How to network with powerful people</a></p><p><a href="https://www.developing.dev/i/217739062/024101-how-to-learn-hidden-incentives">02:41:01 - How to learn hidden incentives</a></p><p><a href="https://www.developing.dev/i/217739062/024443-what-happens-behind-the-scenes-with-hr">02:44:43 - What happens behind the scenes with HR</a></p><p><a href="https://www.developing.dev/i/217739062/025013-did-he-burn-people-to-get-ahead">02:50:13 - Did he burn people to get ahead</a></p><p><a href="https://www.developing.dev/i/217739062/025324-what-he-says-to-people-who-hate-politics">02:53:24 - What he says to people who hate politics</a></p><p><a href="https://www.developing.dev/i/217739062/025903-top-book-recommendations-on-power-dynamics">02:59:03 - Top book recommendations on power dynamics</a></p><p><a href="https://www.developing.dev/i/217739062/030045-how-he-would-speedrun-career-growth-today">03:00:45 - How he would speedrun career growth today</a></p><h1>Transcript</h1><h3>00:42 &#8212; How to receive credit for your work</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=42">00:42</a>] I don&#8217;t know what&#8217;s going to happen in the future, but with all the latest advancements, it seems like these models are able to do the technical work of tech workers. And in that case, it feels like the non-technical work may become more important in the future. And at the same time, this is a theory that a lot of people have, which I hope isn&#8217;t true, but it&#8217;s reasonable, which is if these models can do the work of tech workers, maybe there will be fewer roles in tech.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=79">01:19</a>] And in that case, I could also see politics becoming more important because there&#8217;s the same number of people competing for fewer roles. So what I want to do in conversation today is ask you everything in terms of soft skills, corporate politics, to try to help people in these potential future scenarios. And to start us off, I put together a set of questions about corporate politics, which are dark and get darker as they go on, but they&#8217;re also common scenarios that people experience.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=115">01:55</a>] And I&#8217;m hoping you can answer transparently about how people should handle these and your experiences in these scenarios.</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=123">02:03</a>] Yeah, absolutely. I don&#8217;t know what you have in mind, but I&#8217;m always game for hard questions. I like questions that push my thinking. And if they&#8217;re dark, well, sometimes life is dark, so let&#8217;s go for it.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=136">02:16</a>] First question, how do you make sure that you get credit for your work when there&#8217;s a collaboration and people are competing for visibility?</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=145">02:25</a>] Yeah, so I think recognition, particularly in a collaborative sense, is tricky. One of the good things is it&#8217;s easier to claim more recognition a little later. At the moment, people are very sensitive to it. I say, I helped start <a href="https://en.wikipedia.org/wiki/Amazon_Prime_Video">Prime Video</a>, or I was the first engineer on <a href="https://en.wikipedia.org/wiki/Amazon_Prime_Video">Prime Video</a>. Well, now that&#8217;s long ago. There are some other people who would be like, well, I was part of that team too on that day, but they&#8217;re not here right now.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=173">02:53</a>] So, and they probably, even if they see this, what are they gonna do? They&#8217;re gonna be like, hey, I was there too. Maybe there&#8217;s a comment. If you scroll down in this video years later, maybe there&#8217;s a comment that says, hey, I was there too. It&#8217;s not really a problem. So to get your credit, number one, realize credit is easier to take a little bit after. You wanna get credit in the moment, but there&#8217;s also later, and it&#8217;s easier.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=195">03:15</a>] Second, the way to get credit is to be the first to speak if you can. It doesn&#8217;t mean you have to say things that aren&#8217;t true, but those who speak first or those who speak up first, if you say, hey, we shipped this, I want to, I&#8217;m excited to share, we just released this feature. Whether you&#8217;re sending that internally or externally to a boss, to a product manager, you can include the we and say, oh, I did it with Ryan and Fred and Sarah and Rajeev.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=225">03:45</a>] But if you&#8217;re the one saying it, you&#8217;re the one who gets the lion&#8217;s share of the credit, even if it looks like, and you are sharing that credit because the speaker gets it. Now, if someone else speaks first, what you need to do at that point is figure out a way to add on about what you did. So if you speak first and Ryan sends out this message that says, well, we did this project, whatever, I can at least chime in and say, yeah, this was a great project.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=255">04:15</a>] I really had fun solving blah, blah, blah, or claiming your piece. I really had fun coming up with the algorithm that doubled our sales. And you find a way at least to say your part. What doesn&#8217;t work is be silent and hope your part will be noticed. That&#8217;s what never works.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=279">04:39</a>] Yeah. And I think a very common pattern of this, and this is just the way the teams are laid out, is your group of engineers and then there&#8217;s a product manager, and the product manager is often doing the upward reporting, or maybe it&#8217;s an engineering manager that&#8217;s doing the upward reporting. And so the people who actually do the work may not be as visible. What would you say in that case?</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=304">05:04</a>] Yeah, so one thing you can do is you can talk to your manager, product manager, about remember to share the credit with the team, remember to highlight some people. I&#8217;ll give you an example. When my team finally launched that first version of <a href="https://en.wikipedia.org/wiki/Amazon_Prime_Video">Prime Video</a>, I was a senior manager. I had a vice president, and I went to that vice president and I said, today&#8217;s the day now you write the congratulations message to everyone.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=331">05:31</a>] So I prompted him. He wasn&#8217;t the sort to give out a lot of praise, so I said, &#8220;Today&#8217;s the day. You should write the message saying good job, team.&#8221; And once I sent that to him, I don&#8217;t think he&#8217;d have done it, but about 10 minutes later out comes this great job team, blah, blah, blah message. So you can actually somewhat direct people because a lot of people intend to give credit, but they&#8217;re not thinking about it.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=357">05:57</a>] So that product manager, they&#8217;re thinking about, I need to report the news. They&#8217;re not thinking it&#8217;s important to note what Ryan did. So just giving them that prompt of, hey, this is a big accomplishment for the team. It&#8217;s a big moment for me. Can you make sure when you report this up to mention what we did or mention us, not just what happened? And usually they&#8217;re willing to do it. If they don&#8217;t or they won&#8217;t and you&#8217;ve tried that, find a way to share the news yourself.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=391">06:31</a>] It may not be in the announcement to leadership, but share a technical note and say, follow on to the product manager&#8217;s note and say, I don&#8217;t know if all of you in leadership are curious, but I thought you might want to know some of the technical underpinnings of how we did this. And then you can talk about whatever you want. No one is going to come back to you and say, we don&#8217;t care about how any of it works, because that makes them look bad.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=417">06:57</a>] So you&#8217;re finding a way to talk about things in a way that&#8217;s hard for people to not like or to at least shut down. And so let the product manager share the fact it happened, but then you share the color. Think of it if you watch any sports of any type, they always have 2 people in the booth. They have the play-by-play announcer who&#8217;s like, so-and-so hit the ball or kicked the ball or caught the ball.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=446">07:26</a>] But then they have the color guy, and the color guy is there saying, yeah, and he&#8217;s the great receiver out of this university in his fourth year. And that&#8217;s a really tough play. When I was a player, it was really tough to run that pattern or whatever. You can be your own color guy. If the PM is the announcer, you give the color. And those are two jobs, and everyone welcomes the color guy. Do that.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=478">07:58</a>] There&#8217;s often these forums for leadership reviews where you put yourself down and you say, &#8220;Oh, I&#8217;m trying to get steering on this. So I&#8217;m trying to get some headcount or something.&#8221; And I noticed that actually the real outcome they wanted was to put the project in front of leadership. So when that person&#8217;s promo&#8217;s coming along, then it&#8217;s visible and that person&#8217;s aware of their work. And so if everyone takes this advice, everyone&#8217;s competing to speak but not have impact.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=510">08:30</a>] It feels like that&#8217;s not healthy for an org if everyone&#8217;s clamoring for visibility with no value. What would you say to that?</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=521">08:41</a>] So first I&#8217;d say you&#8217;re right. If everyone&#8217;s clamoring for visibility with no value, you&#8217;ve got a very political organization. But here&#8217;s some truths that will set you free. Number one, most people never say anything. Most people take no action, including, by the way, half the people I&#8217;m speaking to right now who are watching me. They&#8217;re like, I&#8217;m gonna do something different. And the fact is tomorrow they&#8217;re going to do nothing different.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=547">09:07</a>] So I&#8217;m challenging you, be in the half that does something. Second, you can choose to add value. I was describing how to share news or share detail, but when I said share some of the technical detail, you can do that with a purpose. You can be like, what should I tell leadership about what happened or about how this was built so that they know? I can tell them it either is built for scaling and it&#8217;s ready to go, and you can trust it.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=577">09:37</a>] Or I can tell them it&#8217;s important for you to know this is launch ready. But if we have a lot of success, we&#8217;re going to need to invest in scaling. You can make it somewhat useful. I understand the worry. And there are some orgs where too many people are talking just to get visibility. You don&#8217;t want that. But I would say if you have to have a problem, first be one of the people who&#8217;s talking, then figure out how to add value.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=608">10:08</a>] Because so many people listening to this are like, I don&#8217;t care what Ethan says. I can&#8217;t stand the idea of I&#8217;m talking for no reason, so I&#8217;m not going to do that. And that&#8217;s the person who&#8217;s sitting in their cube contemplating either quiet quitting or rage quitting because they can&#8217;t get ahead. Because they&#8217;ve decided to opt out of the system. And I get it. I get what you&#8217;re feeling.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=632">10:32</a>] But you&#8217;re telling yourself you&#8217;re this bold martyr for honesty, and all you are is a martyr. And so don&#8217;t do that. Instead, take it as a challenge and say, okay, I&#8217;m going to talk, but what I say is going to be worth hearing. I&#8217;m just going to raise the bar on myself, as opposed to I&#8217;m going to get mad at all these other people I see just flapping their faces, and I&#8217;m not going to say anything because to talk puts me in the same bucket as them.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=663">11:03</a>] Don&#8217;t do that. Don&#8217;t get in the bucket with them. Make yourself a new bucket that&#8217;s better. And if you&#8217;re as good as you think, if you&#8217;re sitting there about how hot shit you are, then you&#8217;ve got to be able to find something useful to say. And if you can&#8217;t construct something worth hearing, then go back and revisit that. But I&#8217;m so hot shit, right? That&#8217;s the challenge I have to you.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=685">11:25</a>] Is the best thing to do generally be as loud and outspoken as you can?</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=693">11:33</a>] First, I don&#8217;t think there&#8217;s ever a perfect best thing. And second, I would answer that no, because the way you phrased it, you&#8217;re gonna be seen as a blowhard, right? You&#8217;re gonna be seen as claiming falsely. If you rephrase what you said slightly to make sure you claim everything you legitimately can and stretch legitimate a little bit against the limits, then yes. Example, I always say I was the first engineer on <a href="https://en.wikipedia.org/wiki/Amazon_Prime_Video">Prime Video</a>.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=721">12:01</a>] Now, the truth is, and I&#8217;ve had one guy come back and challenge me on this, when I worked on that product, it was <a href="https://en.wikipedia.org/wiki/Amazon_(company)">Amazon</a>&#8216;s first video product, but we hadn&#8217;t named it Prime yet. So when I worked on it, it was never called Prime. It became that. So I could explain, well, I was the first engineer to work on what became <a href="https://en.wikipedia.org/wiki/Amazon_Prime_Video">Prime Video</a>. That&#8217;s just a lot of extra confusing words. So I&#8217;m ballooning up my claim.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=749">12:29</a>] It&#8217;s not false, but it is how you look at it. And I&#8217;m simplifying my messaging as I&#8217;m the first person who worked on that. The guy who&#8217;s the first guy who worked on it when it was called Prime thinks I&#8217;m claiming too much. Well, fine. You push those boundaries a little bit because people&#8217;s brains can&#8217;t hold that much. You&#8217;ve got to make your message simple. So claim as much as you reasonably can.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=774">12:54</a>] Don&#8217;t get caught out. Luckily, that guy isn&#8217;t like, you never worked on <a href="https://en.wikipedia.org/wiki/Amazon_Prime_Video">Prime Video</a>. He knows what I did. He just doesn&#8217;t like how I label it. I can live with that. If he was like, hey, that&#8217;s bullshit. You were never on the team. Show me the proof you&#8217;re ever on the team or you ever did anything, then I&#8217;d be in trouble. So you want to push those limits, but not to being false, more to just being really simple, because it&#8217;s a lot easier to believe, to remember Ethan started <a href="https://en.wikipedia.org/wiki/Amazon_Prime_Video">Prime Video</a>, than this more complex story.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=804">13:24</a>] And it&#8217;s close enough to write. Now some people are like, well, that&#8217;s not really close enough to write, you&#8217;re embellishing. Well, I don&#8217;t know what to tell you. It&#8217;s simpler and simple works. Simple messages work. It&#8217;s like all marketing messages are very short.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=822">13:42</a>] And I hear what you&#8217;re saying, but it seems like there&#8217;s a gray area there. How do you find the right place in the gray area?</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=830">13:50</a>] Yeah, well, okay, so you want to talk about soft skills today. One thing you&#8217;re going to have to accept on all soft skills is they&#8217;re gray. Right? You&#8217;ve asked me a couple times stated like the best is this, the best is that. That&#8217;s a good challenge for me, but best is almost always context dependent. Who are you talking to? What do they care about? So you have to move in that gray area.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=854">14:14</a>] And what I would say is get comfortable in the gray as opposed to we as engineers, we&#8217;re trained in binary. It&#8217;s 0 or it&#8217;s 1. We love black and white. Soft skills and these kinds of things are gray. Never verge into the black where you&#8217;re lying, but also don&#8217;t feel like you have to limit yourself to the pure white of facts not a single person would argue with. Because on a team project, who had the contribution and who had the idea?</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=888">14:48</a>] Let&#8217;s take another example. I hold many patents. A lot of those patents have other inventors on them. Sometimes I feel that I&#8217;m the inventor and some other people&#8217;s names got added because of social circumstances. And sometimes, to be honest, someone else was the inventor and my name kind of got added. In those situations, I just say I have 70 patents. I could try and divide it into, like, I have 70 patents, 25 of which I feel like I was the inventor.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=920">15:20</a>] Or I could just say 75 patents. So answering your question about gray areas, my advice is read the room. And what does read the room mean? It means understand your audience and figure out how to explain what you did in a way that the audience is like, okay, you did that and it was good. You have to adjust. I can tell most of my resume accomplishment stories many different ways, right? I say I was the first person working on <a href="https://en.wikipedia.org/wiki/Amazon_Prime_Video">Prime Video</a>.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=953">15:53</a>] I can also say I was the first person working on <a href="https://en.wikipedia.org/wiki/Amazon_(company)">Amazon</a> Video. I can also say I was the first manager and I hired a team, and they built it. They&#8217;re all true. And that&#8217;s the gray area: every one of those is true, but they&#8217;re a different way of looking at it. Push me. I see you want to push me.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=970">16:10</a>] Yeah, look, because I&#8217;m thinking, so there&#8217;s a spectrum here: complete, no one will push back on it, 100% truth. And then there&#8217;s outright lie. If you had to say where on the spectrum you should place yourself on average for the fastest career growth, where would you be?</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=993">16:33</a>] More is better. More is better until it starts to damage your reputation. You can&#8217;t back it up. More. Why do I say more is better? Because most people say too little and claim too little, and they have this faith which is misplaced. The key is what I&#8217;m fighting against is not on the table in your equation. What I&#8217;m fighting against is all the people who are hoping to be noticed. They&#8217;re waiting for someone to go look at the check-ins and count check-ins or go look at all the code and decide who had the real&#8212;and that&#8217;s never going to happen.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=1032">17:12</a>] They&#8217;re looking for this deep evaluation that will create this cosmic fairness. That&#8217;s natural because we came through university where you took a test and it got graded and every question got a score. And we&#8217;re trained to think that&#8217;s going to happen in life, and it&#8217;s not. So what I&#8217;m pushing back is imagine you took an exam and you were back in college, but the score that was going to be written down was what you could convince the professor your effort was worth, because that&#8217;s how your work is actually scored at a job.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=1065">17:45</a>] You fill out the same exam. Theoretically, it could be graded and give you a point score, but it&#8217;s really going to be 6 months later. The manager, the professor is going to sit down in a room with all these exams and think, what do I think about Ryan? I feel like he probably got about a 75 on this exam. They&#8217;re not going to reread it or grade the questions. They&#8217;re going to be like, I know Ryan, he&#8217;s about a 75.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=1090">18:10</a>] You want to have told a story where it&#8217;s like, I know Ryan, he&#8217;s definitely a 97. I get why some people&#8217;s skin is literally crawling right now. They&#8217;re like, it&#8217;s so wrong. This guy, I hate him because he&#8217;s telling me these things that just shouldn&#8217;t be. And I&#8217;m with you, but I&#8217;m telling you the real world. And it&#8217;s how well you manage that relationship and describe your work and surface it. They&#8217;re like, man, Ryan is my 97.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=1121">18:41</a>] And that does mean, by the way, the dark side is that someone else who was a 75 is like, oh yeah, Alfred. I don&#8217;t remember much about him. That&#8217;s an F. Alfred&#8217;s the guy who&#8217;s sitting and hoping for the fair grading. And now he&#8217;s in his cube contemplating rage quitting because he got an F. This is the world. The world is a social world with short memory, and you&#8217;ve got to claim what you really did.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=1151">19:11</a>] And why I tell people to claim more is so many people are Alfred sitting quietly expecting a fair grade.</p><h3>19:18 &#8212; Ways for quiet people to get visibility</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=1158">19:18</a>] These behaviors come more naturally to some people who are louder. But what about some people who are more quiet by nature? Do you have any ideas on how they can get this visibility?</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=1170">19:30</a>] Yeah, absolutely. There&#8217;s a few ways. Look, the world favors extroverts. It&#8217;s done that for at least 100 years. There&#8217;s some evidence it was different in the past. But getting your point, what someone who&#8217;s quieter should do is, number one, can you write about it? If you&#8217;re not the sort of person who wants to talk about it or speak in a meeting, can you write about what you&#8217;re doing somewhere? Can you email it?</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=1195">19:55</a>] Can you put it in Slack? Can you publicize it somehow? Second, if you can&#8217;t do that, can you get someone else to publicize it? So can you put it somewhere where it&#8217;s going to get reviews? Can you let your work speak, but not in a vacuum? Can you share it out? If you only want to talk to other engineers, can you turn something you did into a shareable component? Can you turn it into a talk for whatever, a white paper, a brown bag?</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=1226">20:26</a>] What are the ways you can let your work truly speak for itself, but not in isolation? The way to succeed totally quietly is build something everyone else uses. If that happens, they will eventually, they will truly come looking for you. Who built this? A story here that&#8217;s fun is there&#8217;s a long-gone <a href="https://en.wikipedia.org/wiki/Amazon_(company)">Amazon</a> engineer. His name was Matt Round. I never met him, but he built something called the Matt Round Tool, or MRT, which was our interview tracking system for over a decade.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=1266">21:06</a>] Everyone used MRT. Well, it was the Matt Round Tool. So I never met this guy, but I can tell you a little bit about him because his tool became used by everybody and it was named after him. That&#8217;s a way to be famous without ever saying a word. Or I guess you had to say three letters, right? He had to call it MRT. So that&#8217;s the silent engineer&#8217;s publicity method.</p><h3>21:32 &#8212; How to be trusted for top projects</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=1292">21:32</a>] One situation that I&#8217;ve heard people talk about, or my friends have encountered, is competitions over scope. So let&#8217;s say you find an incredible opportunity and you know it&#8217;s going to be impactful, it&#8217;s going to be great for your career. This is before you tell anyone about it. How do you make sure that you get that scope?</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=1317">21:57</a>] There&#8217;s a few things. Number one, for me to give you a project as a manager, I have to believe a couple of things about you. First, I have to believe your work&#8217;s good enough. If you have a good idea, I have to believe, okay, you&#8217;ve had a good idea, but are you the one who can carry it out? And you don&#8217;t have to be the best person, but I at least have to believe you&#8217;re not the worst person or someone who&#8217;s a risk.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=1339">22:19</a>] So it&#8217;s a trust in your ability. You have to establish that. The second thing is I have to believe you can make the free time, or that you have the time, or I can free your time. I&#8217;m going to be able to let you do it. And that means if you have other work, being able to hand it off, having it well documented, automating it, whatever it is you need to do in order to get that work to a point where you have the time to do this project.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=1369">22:49</a>] So what you want to do is think through how am I going to make the case to my manager that this is, or to whoever, that this is a valuable addition and that I&#8217;m the right person, both ability and time, to take it on. The key is you do start with an advantage. If it was your idea, then you&#8217;re the one who understands it best. You&#8217;re the one who&#8217;s thought about it most. So you should be in a leading position for that role, as long as you don&#8217;t screw it up, as long as you don&#8217;t have a bad track record or have a bad relationship or have something else going on that&#8217;s super critical.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=1408">23:28</a>] The other thing is be clear to ask for it. Say, I have this great new idea. You don&#8217;t have to say, and I want to make sure you put me on it. You phrase it as, I have this really valuable idea I think is going to change our business or change our team. And I am excited to bring it, to build it. I&#8217;m excited to make it happen. That messaging sets in people&#8217;s minds that you&#8217;re the person and that they have to choose to disappoint you if they&#8217;re going to give it to somebody else.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=1439">23:59</a>] Which most people will shy away from. If you don&#8217;t say anything, it&#8217;s like, &#8220;Oh, it&#8217;s a good idea. I&#8217;ll give it to Fred.&#8221; But if you&#8217;ve said, &#8220;And I want to do it,&#8221; then they have to decide, &#8220;Oh, well, if I give it to Fred, I&#8217;m going to tell Ryan that,&#8221; and get them just to think, like, is that worth it?</p><p>This is another rule I tell people. You do need to be a little thorny. One of the traits I think great leaders have, and this includes great engineers, is disappointing them comes with pain.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=1471">24:31</a>] Not that they&#8217;re jerks, but they&#8217;re not just gonna be, oh, that&#8217;s fine. Oh yeah, no, don&#8217;t worry about it. You gotta be like, what? What did you do? No, my idea. If this is how it&#8217;s gonna be, I just won&#8217;t bring any more ideas. What the hell? And then you gotta put that little pushback in there of like, this is not okay. Again, if you&#8217;re good, the threat is I will take my good ideas somewhere else.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=1501">25:01</a>] And this is important. Again, remember poor Alfred? He&#8217;s sitting there with his F and he&#8217;s mad. He has a good idea. If I can take away his idea and he&#8217;s just going to sit there in his cube and be mad again, Alfred gets abused. Why he gets abused? Because it&#8217;s free to me as a manager. I have to make a trade-off between Ryan, who&#8217;s pushing me for stuff, and Alfred, who&#8217;s always just willing to suck it up.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=1529">25:29</a>] Well, maybe I actually think you&#8217;re a little bit too pushy, and I&#8217;d like to help Alfred out. But I do have an ugly triage to do, which is, well, if I don&#8217;t cater to Ryan, he&#8217;s outta here. Whereas if I don&#8217;t cater to Alfred, that guy is solid as a rock. He&#8217;ll be here two years from now. I&#8217;ll give him some free lunch coupons and movie passes, and he&#8217;ll be so grateful. Don&#8217;t be Alfred. You&#8217;ve got to be a little thorny.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=1559">25:59</a>] And again, those same people are like, why do I have to do that? Why should I? Why? They love the word should. Why should I have to do that? Well, okay. In cosmic justice land where the god of your choice is making everything just, you shouldn&#8217;t. But we don&#8217;t live in that land. We live in reality land where managers have a choice. They have some pushy people that are still good, and they want to keep on their team, and they have some pretty easygoing people that are kind of going to go with the flow.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=1590">26:30</a>] The fact is, the right decision for me as a manager, not the just decision, but the practical one, is take a little from the people who are going to be all right about it and give it to the ones that aren&#8217;t, because that&#8217;s how I keep my whole team. And yes, for all of you who don&#8217;t like it, I have just said a little bit screw the nice people for the bad people, but I have a job to do. And so of course I also never tell myself how I just said it to you.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=1621">27:01</a>] As a manager, I never say, oh, I&#8217;m gonna screw all my nice people to help these 2 jerks. But subconsciously, I&#8217;m making this trade-off. And what I&#8217;m telling myself is I will get back to them and take care of them. The problem is you&#8217;re back around asking me for more stuff, and I never quite get back to them. And I meant to, and I had a good heart about it. And it just didn&#8217;t happen. And nonetheless, you got everything you wanted, and they lived with what was left over.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=1649">27:29</a>] And if you&#8217;re in this leftover bucket, it&#8217;s not that I meant bad things for you. It&#8217;s I had, there was this person always talking to me and I needed to get them outta my office. So I gave them what they wanted &#8216;cause I&#8217;m human.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=1662">27:42</a>] When I was a manager, I used to think about what&#8217;s the optimal team composition in terms of the personalities of the people? And I&#8217;m curious to hear your thoughts. Would you rather have a team that&#8217;s full of these super ambitious, pushy superstars, or would you rather have pure role players?</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=1684">28:04</a>] Yeah, so I&#8217;d love to tell you I&#8217;d like all pushy superstars, but you can&#8217;t keep that many people happy unless your business circumstance is just dropping choice projects in your lap. That can happen in a high-growth scenario where everyone is against their growth limits. But absent that, and particularly now when there&#8217;s a lot more flat headcount scenarios, those people just eat each other.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=1711">28:31</a>] They turn cannibal and they turn cannibal toward you and each other. And it&#8217;s very ugly. So a few of them, though, the reason you don&#8217;t want all role players or all people who are very easygoing is you need those sparks of change, of ambition. You need people who are agitating for changes and ideas, I think, because in this world of very easygoing people, the team may be calm, but no one is pushing.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=1752">29:12</a>] And so it&#8217;s peaceful, but it&#8217;s not high impact. There&#8217;s a quote I love, or a saying I love, which is, reasonable people conform to their environment. Therefore, all progress is due to unreasonable people. People who are like, but why? But why? Why does it have to be that way? Why does it take 3 clicks? Why won&#8217;t the customer pay $1 million? Why can&#8217;t we all have hovercraft? Those are the people who push things.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=1783">29:43</a>] You need some of them. Too many though, and you just have chaos because everybody&#8217;s pushing in different directions.</p><h3>29:52 &#8212; How to defend from others taking your project</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=1792">29:52</a>] In the situation where you have a project and you haven&#8217;t unveiled it yet and you really want to work on it, I actually think a lot of engineers, they don&#8217;t worry about the manager giving it away. They worry about other engineers getting excited about their thing, the thing that they&#8217;re excited about. So in that case, how would you defend against other engineers coming in saying, oh, I want a piece of that, oh, that looks fun, oh, that looks impactful?</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=1820">30:20</a>] Well, number one, that might be a good thing. The first question I would ask myself is, if my fellow engineers are excited about what I&#8217;m doing, how do I make it big enough or tricky enough or hand pieces out so I&#8217;m kind of the kingmaker? Right? So I&#8217;m like the person holding the cookie jar, handing out cookies. That&#8217;s a great role to be in, or could be.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=1842">30:42</a>] Now, if you&#8217;re really worried about defending, one thing, of course, is don&#8217;t tell them until it&#8217;s too late, right? Work on it, keep it to yourself, or until it&#8217;s assigned to you. The other thing is, if you had one good idea, you&#8217;re probably smart enough to come up with multiple good ideas. So can you go to your manager and be like, I have this great idea. I&#8217;m gonna work on this thing. But by the way, there&#8217;s these 2 other ideas.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=1867">31:07</a>] And I think people on the team would be excited about it. Whether they are or not, you&#8217;ve given some, I don&#8217;t know, other bait trail, right? And it doesn&#8217;t mean that&#8217;s illegitimate. Just you&#8217;ve given people other interesting things to work on. But from a pure defensiveness, I guess if you&#8217;re thinking about how do I keep my good work to myself, I would say outrun the competition, be a little ahead of them, be further down the prototype avenue or further down talking about it, or to where they&#8217;re not up to speed.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=1909">31:49</a>] They can&#8217;t keep up. The other thing, it&#8217;s a little bit darker. You probably have work to get off your plate. Think about what you have on your plate. You could get stuck on their plates. They have something to do. &#8220;I want to get rid of this.&#8221; You talk to your boss and you&#8217;re like, I have this great new idea. It&#8217;s going to make us a bunch of money or get us a bunch of customers, but I have to get rid of Project Foo.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=1929">32:09</a>] But you know what? Both Ethan and Sarah would be great to take over Project Foo. They&#8217;re up to speed on it. Now they may hate you. You gotta be careful. You&#8217;ll make enemies. You gotta figure out a way to say we&#8217;d have to figure out how to manage Project Foo. There&#8217;s a couple other people working on it. Maybe we can move it around and then get the boss to say, oh yeah, Fred and Sarah, I got it.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=1955">32:35</a>] Or Ethan and Sarah, right? That&#8217;s, I like to do things above board. I think one of the things I want to challenge about some of your mentality in these questions, there&#8217;s scarcity mentality. There&#8217;s only so much good work.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=1972">32:52</a>] It is true.</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=1973">32:53</a>] There&#8217;s only so much promotion, so much visibility. But when it comes to good work, there&#8217;s a lot of it. Even with promotions and visibility, if a company wants to bad enough, they can promote whoever they want. So I try first to solve these not as a zero-sum game or a prisoner&#8217;s dilemma. I try to figure out how can I actually make them win-win. It isn&#8217;t always possible, but I at least start there of how can I find a way to make this project bigger?</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=2002">33:22</a>] How can I find a way to, if somebody else wants in on it, say to them, great, how can we make it better and do it in half the time? Right. Or I even give them a hard time. I&#8217;ll say something like, well, okay, but this is a cool project and it&#8217;s better than what you&#8217;re working on. So show me you&#8217;re serious. What are you going to build this weekend to move it forward? And they&#8217;re like, oh, this weekend I have plans.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=2025">33:45</a>] Well, then sorry. This is a weekend&#8217;s project, right? I mean, you can do it. You can say it with a smile. I thought you were committed. You can get away with a lot if you can play it off as, hey, step up. Come on, I&#8217;m doing it. And there&#8217;s just a game to that because humans push each other, right? How do all those stories that end with, like, watch this, hold my beer, and then some guy doing something crazy.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=2056">34:16</a>] It&#8217;s usually he got pushed into it, like, &#8220;Oh, you should jump off the bridge.&#8221; Maybe you should jump off the bridge.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=2060">34:20</a>] Wow.</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=2061">34:21</a>] If I did it, I&#8217;d do a backflip.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=2063">34:23</a>] Oh, I think it&#8217;s this.</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=2065">34:25</a>] That&#8217;s how humans are. Another tough message about soft skills. Human skills are about dealing with humans&#8217; weird, broken minds that are not rational. They are emotional. And that can be good. Emotions give us energy. They give us excitement. But you have to understand human psychology. And I would say to anyone listening, many of you, a lot of engineers understand poker and that story about if you can&#8217;t tell who the mark is at the poker table, it&#8217;s you.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=2101">35:01</a>] Well, in the game of understanding each other&#8217;s minds and understanding each other&#8217;s motivations and soft skills, if you&#8217;re not in charge, then you&#8217;re the mark, right? Because that game is happening in every meeting consciously and unconsciously. And if you&#8217;re not thinking about people&#8217;s motivations and their satisfaction and their fears, not to manipulate them, but just to understand and be able to play your cards right, you&#8217;re not in the game.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=2131">35:31</a>] And remember, poker isn&#8217;t a game where you manipulate each other. I can&#8217;t make you play cards a certain way, but it is still a mind game and a competition I&#8217;m allowed to win. And so that&#8217;s where I feel like you can be ethical and be a card shark and be really good at playing your hand. I&#8217;m not putting you down by beating you. I&#8217;m just beating you. You had a fair chance. You held your cards. I was better, and I won, and I get the money.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=2158">35:58</a>] That&#8217;s what I&#8217;m telling people to do. The other way to do it is, oh, I have someone standing over your shoulder or a planted camera. That&#8217;s cheating. That&#8217;s manipulation. Just be really good at understanding people&#8217;s minds.</p><h3>36:13 &#8212; How to reject bad projects</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=2173">36:13</a>] When you want to take on that project, maybe you offboard some of the stuff that you don&#8217;t want to do to other people. And I think a lot of people have experienced receiving that. So someone&#8217;s trying to give them scope that they don&#8217;t want. What&#8217;s the typical ways to protect against that and say, oh, I don&#8217;t want to take on this work. Thank you, though.</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=2193">36:33</a>] If you&#8217;re in the situation where it&#8217;s been pointed to you and you have to refuse it, you&#8217;re already &#8212; you&#8217;ve already lost round one. There may be recovery, but the way to avoid that is to be the one proposing something to the team, the boss, the company, whatever. Be playing offense. Once you&#8217;re playing defense, you&#8217;re already losing. So I will answer how to defend. But the first defense, right?</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=2216">36:56</a>] The best defense, a good offense, is to be the one putting forward ideas and talking about what could happen so that everyone&#8217;s like, Ryan&#8217;s full of ideas and he&#8217;s doing all this stuff. We couldn&#8217;t possibly give him anything. And then if I come to you, you&#8217;re like, man, I&#8217;d love to, but I&#8217;m on projects A, B, and C, or I have these new initiatives to do this stuff, and I can&#8217;t possibly do that.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=2245">37:25</a>] Now, if you&#8217;ve screwed up and you looked idle and you didn&#8217;t have some ideas cooking and somebody&#8217;s trying to shove stuff on you, there are a couple defenses. Number one is, hey, if this is so easy, I can&#8217;t take this on. It&#8217;s too big. It&#8217;s too much. And they&#8217;re like, oh, it&#8217;s easier. It&#8217;s just this. It&#8217;s just that. Great. You automate it. Go ahead. So pushback like, why aren&#8217;t you solving your own problem?</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=2273">37:53</a>] Remember I said be a little thorny. The next defense is you&#8217;re not the only person on the team. So I guarantee you there&#8217;s somebody on the team who&#8217;s not going to resist. And so just be thorny enough that they go to that other person instead of you. Be the person when they come, you&#8217;re like, I&#8217;m not taking on your shit work. Who do you think you are? And then they&#8217;ll go to the person who&#8217;s like, oh yeah, I can help with that.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=2301">38:21</a>] That person is out there. So it&#8217;s the way you defend yourself is to be not worth it, right? It&#8217;s like a hedgehog defense or porcupine. Yes, can the tiger or the dog eat the porcupine? They can, but it&#8217;s not worth it. I&#8217;ll go find a nice mushy squirrel. And so when they come to you, you get those porcupine thorns out. And they&#8217;re like, ouch, I&#8217;ll go find the squirrel. And then there&#8217;s bunny guts all over the lawn somewhere else, and that&#8217;s your peer, but it&#8217;s not you.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=2332">38:52</a>] To say no, to give porcupine quills to your manager, they control if you get fired or not. They control your performance and all that.</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=2343">39:03</a>] So if you&#8217;re constantly saying no, then you&#8217;re just not helpful. Goodbye. But that&#8217;s my point about play offense, right? You&#8217;ve got to be doing something that brings enough value so the manager isn&#8217;t always bringing you things. The other thing I would say is if that doesn&#8217;t work, try making a deal. Just look the manager in the eye and say, look, we both know this is not very appetizing work.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=2372">39:32</a>] Can we just agree that&#8217;s true? The manager will either be like, yeah, but it needs to be done. Or they&#8217;ll be like, no, it&#8217;s great. And you can just roll your eyes in a way that&#8217;s like, come on. So then you just move on either way, and you&#8217;re like, I&#8217;m gonna do this, but I wanna do this other thing. So I&#8217;m gonna crank through this, but the deal is I get this next thing. And again, most managers, they don&#8217;t wanna fight.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=2400">40:00</a>] They got other things to do. They need their team pulling with them, and they know they&#8217;re asking you to do some unappetizing work. And so they will make a deal. So there is a role to be a team player and to take on some of the stuff that needs to be done. There&#8217;s also a way actually to get credit. Let&#8217;s say your peer wants to hand stuff off, or your manager wants to hand stuff off. Go to them and say, hey, it&#8217;s been&#8212;I&#8217;ve really enjoyed getting to work on X, Y, and Z.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=2433">40:33</a>] You&#8217;ve given me some good projects. I know our team has some maintenance work, and I know you&#8217;re always hunting for people to do it. I&#8217;m going to spend the next 2 weeks doing whatever maintenance you want because I want you to know I&#8217;m on your side. And give me anything you want. I&#8217;m going to crank through it. And then I want to do this, or then I want to do that. But you just, if you&#8217;re gonna have to take the hit anyway, turn it into a virtue.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=2460">41:00</a>] If you think the hit is coming or you&#8217;ve seen a pattern, go volunteer for it and bargain up front. Hey, I know we&#8217;re buried in backlog or buried in bugs. I want to get us through that. I&#8217;m gonna do my own bug bash this weekend, tomorrow night, next week, fill in whatever, my next on-call. Tell me what is most important to you because I want to get to where then I&#8217;m free to &#8212; we&#8217;re both free &#8212; for me to work on this thing that you need, this better thing.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=2488">41:28</a>] And so it&#8217;s about all of these are strategies, though, to play offense. What doesn&#8217;t work is to sit in your cube or sit in your home office or wherever it is you&#8217;re sitting and hope you, like, this is the one case where hoping you don&#8217;t get noticed doesn&#8217;t work. Normally it&#8217;s&#8212; normally you won&#8217;t get noticed if you do nothing. But when I&#8217;m handing out shit work, I go look around my team like, who haven&#8217;t I seen in a while?</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=2509">41:49</a>] Oh, it&#8217;s Alfred, the grumpy guy. All right, here we go. He&#8217;s already grumpy. Why not give him this? Well, why is he grumpy? Because he got an F on the test because his work didn&#8217;t get noticed. I actually made him grumpy, but I don&#8217;t know that. I just know he&#8217;s kind of grumpy, but he still goes along with stuff. So I&#8217;ll give it to him. As a manager, I go looking for who can I give this to? Human skills are an art.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=2531">42:11</a>] They&#8217;re not a pure science. There&#8217;s an art to being the thorny person without being seen as a jerk. You can be the porcupine without being a jerk. It&#8217;s like, hey man, I didn&#8217;t stab you. These are just my quills. So how do you do that? What does that mean? It means the little signs that you&#8217;re not quite happy without actually opposing stuff. Let&#8217;s say the boss brings you some extra crap work.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=2562">42:42</a>] You could be like, hmm, all right, this is&#8212;I will get this done, but we got to do better. I&#8217;m looking for better next time. And just that little challenge, you&#8217;re just setting that little hook of, I&#8217;m looking for a better challenge tomorrow, or as soon as this is done, I want something juicier. And you&#8217;re just setting that little hook because if they come back like, here&#8217;s another thing you need to do, and I&#8217;m like, hmm, I told you juicy, we both know this isn&#8217;t that.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=2588">43:08</a>] I&#8217;m going to give you one more pass. Most managers can&#8217;t take that because most humans can&#8217;t. Even though they never agreed, they can&#8217;t take going up against that expectation over and over of like, I&#8217;m gonna take him something else and he&#8217;s gonna give me shit again. It just isn&#8217;t worth it because there, again, there&#8217;s somebody else who&#8217;s gonna turn into bunny guts when I eat &#8216;em. And I also know there&#8217;s people listening are like, this is so unfair and I&#8217;m so sick of being bunny guts spread on the lawn when the wolf got me.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=2624">43:44</a>] Yeah, change. Become the porcupine, then become the bear. And it&#8217;s okay. It&#8217;s a learning process. Everybody was bunny guts at some point in their career because they didn&#8217;t know better.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=2637">43:57</a>] I want to&#8212;</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=2638">43:58</a>] He&#8217;s losing it. He&#8217;s got this vision of a slaughtered field of rabbits.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=2645">44:05</a>] Oh God.</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=2645">44:05</a>] Okay, we&#8217;re gonna come back. I&#8217;ll get a new analogy. I&#8217;ll save you from my analogy.</p><h3>44:10 &#8212; How to be first for promo</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=2650">44:10</a>] Okay, the next situation, a little bit darker as I mentioned, but also realistic, is imagine you want to get promoted but there&#8217;s only one available slot. Maybe there&#8217;s a promo quota, or maybe it&#8217;s one of those roles where there&#8217;s only one manager role and you kind of want it. How do you make sure that you&#8217;re the first in line to get that?</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=2675">44:35</a>] So first, honesty sometimes is not possible. Sometimes, I&#8217;m not gonna promise people things that are impossible. If you have several more senior people in your team who are qualified and have done a good job expressing their interest, the right thing to do is get out of line, go somewhere else, go somewhere where there&#8217;s more opportunity. And I mention that only because some people&#8212;I always make fun of the post office because I can&#8217;t imagine how you move up in the post office.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=2701">45:01</a>] Like, either you deliver the mail or you don&#8217;t, and then there&#8217;s postmaster and there&#8217;s one of those, and they stay there until they retire. I don&#8217;t know what the hell you do at the post office. So if you&#8217;re at the post office metaphorically, get out, go somewhere that&#8217;s growing. Now, if it is growing and there&#8217;s gonna be spots, you have to be sure managers aren&#8217;t mind readers. They don&#8217;t know what you want.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=2724">45:24</a>] So you&#8217;ve got to make sure they know you want the role. The second thing is you can ask them, &#8220;How can I be your first choice for this role?&#8221; Or, &#8220;What would it take?&#8221; A great way to phrase that is, &#8220;Under what circumstances?&#8221; Like, &#8220;What would lead you to choose me?&#8221; Even if you have to be kind of absurd, like, &#8220;Hey, Ryan, against all odds, what would cause you to bump me to the front of the line and put me first?&#8221;</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=2746">45:46</a>] What would that have to look like? Why do you ask it that way? Everyone can answer that. Everyone can say, well, this is what it would take. And then at least you know, and you can negotiate those criteria and say, what about this? What about that? The second thing, though, is who gets promoted is who&#8217;s indispensable, who I can count on, who I know is going to ride to my rescue when there&#8217;s a problem.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=2770">46:10</a>] So what I would do is I&#8217;d say, if I want to jump the line, if I want to make sure I get there, I have to jump on crises.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=2775">46:15</a>] These.</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=2776">46:16</a>] When there&#8217;s a fire, I have to jump on it. Why? Doing your regular job well, there&#8217;s a lot of people doing that. In a crisis, when a system is down, when a customer is angry because they have an outage, who steps up to handle that? And who is technically brilliant and maybe a leader, they get noticed. And the question I&#8217;m asking myself at promo time is this person I&#8217;m about to put on my team, are they going to be the person I can count on no matter what?</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=2814">46:54</a>] Are they going to keep me out of trouble? So you have to show that trait. Now, what that usually means&#8212; crises unfortunately rarely happen conveniently between 9 and 5. They&#8217;re always on a weekend or holiday. So you&#8217;re going to have to make some sacrifices to do that. But to show you want to have a discussion with your leader, what&#8217;s keeping you up at night? What do you need most? I&#8217;m going to work on those.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=2841">47:21</a>] I just spoke to someone. They had a great rule. They went to their manager and would have a chat with their manager and say, &#8220;What are your 3 biggest problems?&#8221; And their manager would always&#8212; managers always have problems. They can always say, &#8220;I have these 3 problems.&#8221; They would say, &#8220;Great, which one&#8217;s worst?&#8221; And they say, &#8220;Oh, this one.&#8221; Say, &#8220;Great, I want to work on your worst problem.&#8221;</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=2860">47:40</a>] How do I want to go solve your worst problem. How do we make that happen? Well, of course, somebody who&#8217;s shown me repeatedly they want to solve my worst problem, who else do I want on my team? That&#8217;s how you get there. It is hard. Okay, you&#8217;ve asked a question. I want to be clear. I&#8217;ve answered how do you get the spot. What a bunch of people actually wanted to know is, how do I get that spot without putting myself out too much?</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=2889">48:09</a>] That I can&#8217;t answer for you. There isn&#8217;t, I don&#8217;t know, bribery. There isn&#8217;t an answer for that one.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=2897">48:17</a>] In that last bit there, you mentioned someone, he asked, what are your worst problems? I wonder if there might be some unexpected opposite effect, or what I mean is if I was a leader and someone was coming up to me and overly, obviously eager to try to get promoted, almost kissing up to me and saying, hey, what&#8217;s your worst problem? Okay, I&#8217;m going to go solve that. It might make that leader feel weird.</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=2926">48:46</a>] It could. I mean, again, this is about all personalities are different, and you have to figure out how to approach each personality. The question is the same, which is: what are they going to value enough to invest in me and enough to really get out on a limb to try and help me? How do I set up a win-win deal where I&#8217;m helping them and they want to help me? And we can keep pushing that to be more and more extreme, that just like you&#8217;re pushing me with darker and darker questions, you don&#8217;t normally jump straight to the end.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=2962">49:22</a>] You build up. So you start by doing good work, just being solid, really solid. Then you get really good. Then you start asking your manager, what can I help you with? What is it you need done? I had this idea, so I just did it and I thought it would help you. You just build. And then you start asking like, hey, I wanna grow. And it seems like we have a great working relationship. Could you gimme some tips on how to grow?</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=2989">49:49</a>] Could you give me some things that you think are challenges I need to work on? Is there something special you need done? And then after you do that, you deepen it again. And you&#8217;re like, hey, I would really&#8212;for both of us, is there a role where you need a right-hand person who&#8217;s your go-to in a crisis? Because I love hard problems. I love being challenged with crisis. And I&#8217;m sure you have some.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=3017">50:17</a>] Is there a win-win where I jump on those? It&#8217;s good for me to have that chance and it&#8217;s good for you. You know, there&#8217;s somebody who&#8217;s always going to step up when you need it and you&#8217;ve built your way into it. So it&#8217;s a little bit&#8212; you&#8217;re kind of asking the classic frog in a pan thing. If you take your manager and throw them in the hot water of like, hey, I want to be promoted, how can I do anything you need so that you want to promote me?</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=3040">50:40</a>] A lot of people are gonna be like, creepy. Okay, you got to boil that water a little slowly. And this is not manipulation, it&#8217;s relationship, right? If you&#8217;re dating, you send someone a note or express interest, you ask them out, you go to dinner, there&#8217;s a process of getting to know someone. There are a lot of analogies between different types of relationships, and there&#8217;s a process and you&#8217;re dating your manager in a way to build a relationship.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=3079">51:19</a>] It&#8217;s not because you&#8217;re going to get married, but it is a work marriage in a way, for a while anyway. And that&#8217;s okay. You build that relationship and then you hold a privileged position. This is something you haven&#8217;t asked. You can&#8217;t ask this question. People would come to me and say, why do you treat so-and-so so well? Or why do they get all the benefits? Or they would also say, why don&#8217;t&#8212; why didn&#8217;t you promote me?</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=3108">51:48</a>] And I always, when they say, why didn&#8217;t you promote me? I say, why didn&#8217;t you earn it? Why didn&#8217;t you promote yourself? I want to move you up. Show me something. And if you&#8217;re asking about this person, oh, I&#8217;m happy to list all the ways they are contributing. And if you want to do the same, for the same period of time, I&#8217;ll put you where they are, right? Because they&#8217;ll be gone, by the way.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=3131">52:11</a>] They&#8217;re a climber. They&#8217;re gonna either move up in our company or move out. There will be a hole. Get moving. So I was a different boss, I guess, but I always tell people, like, you want a promotion? Here&#8217;s a piece of logic for you. Some bosses aren&#8217;t smart enough to figure this out. I want the most senior, most promoted team I can have. Why? Why on earth would I not want the best people on my team?</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=3153">52:33</a>] So if you can rise to be at a new level, I want to pay you that and have that because I&#8217;d rather have a senior person than a junior person. Now I have a budget and whatever, and I have to fight uphill, but I have no problem fighting up to my management, saying, look, yes, I have an expensive team. Why are they expensive? Because my team is damn good and you know it. And I&#8217;ve moved people out of my team to other teams, and now they&#8217;re leaders on those other teams, and you know they&#8217;re stars there.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=3182">53:02</a>] We have a star organization. We build stars. That costs money, but it&#8217;s good for you. And I can tell that with a completely straight face and look the financial officer, whoever, in the eye. Another story. I&#8217;m coaching a company right now on this method, and I wrote the leader there. He&#8217;s the chief product and technical officer. I wrote him and I said, I can make your team higher performing, but it&#8217;s going to cost you salary when they step up.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=3209">53:29</a>] They&#8217;re going to want to be rewarded. Are you ready to pay for performance? So this is just somebody I&#8217;m coaching and I&#8217;m telling him, I can raise your team&#8217;s performance, but it&#8217;s gonna &#8212; you&#8217;re gonna have to hand out more stock options. Are you ready? I did that internally all the time. That&#8217;s how you make it work.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=3228">53:48</a>] When someone would say, &#8220;Why didn&#8217;t you promote me?&#8221; you would say directly back to them, &#8220;Why didn&#8217;t you promote yourself?&#8221;</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=3236">53:56</a>] Absolutely. Those words, right? Why didn&#8217;t you promote me? Why didn&#8217;t you promote yourself? Where is the work? Where&#8217;s, you didn&#8217;t come to me. You didn&#8217;t get a special project from me. We didn&#8217;t make a deal and look each other in the eyes. You do this, this, and this and deliver. And that&#8217;s the bar. Hey, there is one engineer I&#8217;ve written about this. I made a mistake early in my career.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=3262">54:22</a>] I still regret this 20 years ago. An engineer came to me, he made a deal, and I failed to deliver. It was not intentional. I was new to <a href="https://en.wikipedia.org/wiki/Amazon_(company)">Amazon</a>. I didn&#8217;t understand the system. And by the time I went to get him promoted, I was too late and had missed the window. And I didn&#8217;t even know there was a window. And he rage quit. And he should have, unfortunately, because I blew it. But that was user error, not intent.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=3290">54:50</a>] And I never made that mistake again. Anyone I promised I would help them move up, sometimes it was when I said, sometimes unfortunately it took longer, I always got it done. But the people who just whined, they&#8217;re uninteresting to me. And I always tried to be clear to people the door was open. The other thing about promotion for everyone, no one ever in life said, you might be one of the few exceptions.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=3314">55:14</a>] I know you had a remarkable career. Very few people, maybe even not you, ever said, &#8220;Oh yeah, I got promoted way too early. They gave me a bunch of stuff I wasn&#8217;t even expecting.&#8221; Almost everyone in life is like, &#8220;This took too long.&#8221; That&#8217;s gonna be true. Everyone hates the timeline because who imagines ourselves to be best? It&#8217;s always us.</p><h3>55:35 &#8212; How to handle managers that dislike career growth talk</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=3335">55:35</a>] So you mentioned that relationship building with the manager. There&#8217;s this game we were talking about, on how you get promoted in the system. Some people don&#8217;t like the game to the point where you wouldn&#8217;t want to talk about it directly, and others are fine with being very transparent. Sounds like you&#8217;re the type of manager. Yeah, I could go to you and say, &#8220;Hey, I&#8217;m this level. I want to be this level. What does it take?&#8221;</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=3361">56:01</a>] And you would just answer.</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=3362">56:02</a>] I would.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=3363">56:03</a>] I could imagine there are some managers, though, that kind of push it off, or maybe it&#8217;s an uncomfortable conversation. What would you say to someone who&#8217;s under a manager that doesn&#8217;t want to talk explicitly about promos?</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=3376">56:16</a>] Part of me wants to say find a better manager. Find someone who&#8217;s motivated because sometimes those managers aren&#8217;t ambitious themselves. And so they&#8217;re gonna have trouble relating to someone who wants to move up. But if that&#8217;s your situation and you have to work with someone like that, I think then what you have to do is look at who they&#8217;re rewarding. Look at who have they promoted and why. And you might think, oh, well, how do I know why?</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=3407">56:47</a>] Well, one example may not show you, but if you see several people who got moved up under them, you can find a pattern. Who are they moving up? And then what I would say is if they can&#8217;t talk about it, number one, you might be able to talk to some of those people and say, like, I see that Ethan promoted you. How did that work out? How did that come to be? Or I see you got to senior manager or senior engineer.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=3428">57:08</a>] What happened? Figure out what they&#8217;re rewarding and go be that. And that&#8217;s a slower process. It may not be as comforting, but figure out their language. Everyone has a language to express this. You have to figure out how do they have that conversation? Again, I would go talk to the people that did get promoted and say, did you have any kind of conversation? Did they ask something? Did you write it down in your annual review that it was a goal?</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=3458">57:38</a>] Like how I try to find out how did the manager make that decision? And then I would go conform to that pattern as best I could because that&#8217;s what&#8217;s going to work without being as direct as I am. That said, if you go do all this investigation and find out they basically didn&#8217;t promote anyone or there is no pattern, then you&#8217;re back to my, there is no system to work in there. You have to get to a place where there is a workable system that if the manager hasn&#8217;t promoted anyone or they&#8217;ve promoted very few people and very late, then either you accept that, that it&#8217;s going to be a little bit random and it&#8217;s going to be when they get around to it, or you get out.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=3504">58:24</a>] Here&#8217;s a trick. AI has made this super possible. It used to be harder. That manager communicates with people. They write, they speak, they whatever. Grab a bunch of their communication, throw it all into an AI and say, analyze this person&#8217;s communication pattern. I have this goal, which is I want to ask for a promotion. I&#8217;m very direct. They don&#8217;t seem to be. How do I approach this person? AI is amazing at personality typing them and telling you the words and methods to work with their ability.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=3536">58:56</a>] This, by the way, is a hack for anything at this point. Anyone that you have some email chains with or some of their public writing, grab it, tell AI this is a bunch of communication from Ryan or from Ethan. I want this thing, whatever it is. How do I approach them in order to get it? And it will answer it for you. And that&#8217;s like, now, if you&#8217;re on the far side of that, right? I&#8217;ve just told a bunch of people how to approach me.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=3566">59:26</a>] If there&#8217;s a clever person listening, they&#8217;re like, Ethan has lots of blog posts and I want this from him. So I&#8217;m going to get these emails now in the future where people won&#8217;t say, oh, I saw you on Ryan. Here&#8217;s my secret scripted email, but I&#8217;m going to get that. How do I defend myself against it? Well, one, you have to know who you are and what your boundaries are. Two, though, I think there will come a point where we will have to have our own AI countermeasures.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=3593">59:53</a>] So that&#8217;s a little futuristic, but the ability of AI to help me manipulate you is gonna get really strong. So right now I&#8217;m not saying manipulate, I&#8217;m just saying use it to be educated on how to approach that person who has a different personality than yours. But the manipulation is coming.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=3613">01:00:13</a>] This is a common situation I&#8217;ve heard and seen people experience, which is they talk to their manager about that promo they want, and the manager doesn&#8217;t say, no, you&#8217;re so far and here&#8217;s what you need to do. And they don&#8217;t necessarily say yes either. There&#8217;s this gray area in the middle where they dangle this carrot, but they don&#8217;t exactly give you the full story. So they might say, oh yes, you want to get promoted, that sounds like a good thing.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=3645">01:00:45</a>] You&#8217;re gonna need to do more work, and I want that for you, and we&#8217;re gonna do it. And then if you ask a hard question, when will it happen, or what are the concrete steps, they&#8217;ll go, okay, let me get back to you. Or what do you do in that case where it&#8217;s this gray area carrot dangling, but it&#8217;s very unclear if the promo is concrete or not.</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=3667">01:01:07</a>] Yeah. So managers don&#8217;t like to be pinned down. There&#8217;s both good and bad reasons for that. What do I mean good and bad? Good reason is managers don&#8217;t have final control over promotions. So part of what they&#8217;re thinking is, I don&#8217;t want to promise Ryan something that I have to get through a committee. I have to get through a panel. Let&#8217;s say Google, for example. Google, at least in the process they had at one point, there&#8217;s a promotion packet and it goes to all these other people and the manager isn&#8217;t really there.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=3696">01:01:36</a>] And it&#8217;s this panel that decides. So I may truly want to help you get promoted, but I can&#8217;t answer for you, like, when is the panel going to say yes? So that can be one reason managers are legitimately fuzzy. The other reasons they&#8217;re fuzzy are they&#8217;re not sure when you&#8217;re going to be ready. They don&#8217;t want to be cornered. They don&#8217;t want you to think they made a promise. And one of the things that&#8217;s a problem is if I say there are these 4 things, I don&#8217;t want you coming back to me like, I did exactly those 4.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=3731">01:02:11</a>] I want this today. Because what if I came up with a fifth? Or what if I think one of the four sucks and wasn&#8217;t very good? So I want to preserve some room. The bad reason, of course, everybody fears is I just don&#8217;t ever really intend to do it. I just want to keep moving that carrot and keep you working and working and working. So how do you disentangle these? Well, first, if it&#8217;s a system problem, the way to disentangle it is to say, look, I know you face a panel.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=3759">01:02:39</a>] I know that you need our skip&#8217;s approval. You need this panel&#8217;s approval. I&#8217;m not asking for you to guarantee me that we&#8217;re going to get through the panel. I want to know what it&#8217;s going to take for you to be ready, to be enthusiastic, to go make my case. So you try and back the question off to something they can say yes to. Because if I face some panel, I can&#8217;t guarantee you a result.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=3783">01:03:03</a>] What I can do is guarantee you that I will try. So, for example, when I was ready, when I was hoping to become a vice president and I had had these discussions with my vice president, he came to me and said, Ethan, on this cycle, I&#8217;m going to do everything I can. I&#8217;m going to put you up, and I&#8217;m going to put my reputation out there, and we&#8217;re going to see if we can make it happen. He was real clear though, like <a href="https://en.wikipedia.org/wiki/Jeff_Bezos">Jeff Bezos</a> approved at that point all the <a href="https://en.wikipedia.org/wiki/Vice_president">VP</a> promotions.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=3809">01:03:29</a>] He could go fight for it. He could line it all up, but he couldn&#8217;t guarantee me that Jeff would say yes. So that&#8217;s how that got handled. That&#8217;s one way. Then for these cases of trying to pin them down where they want wiggle room, you have to say, look, I understand that answering me or telling me what you&#8217;re willing to do is still dependent on me delivering and that new things could come up. But understand, I need help with the fact I have no clarity.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=3847">01:04:07</a>] I don&#8217;t have any date expectations from you. I feel like it&#8217;s a moving target. Can you help me with that? As long as. What can you do for me? What&#8212; you try and draw them into your emotions. Imagine what it&#8217;s like to sit here, to hear that I&#8217;m a good performer, to want to work hard to achieve a goal, and to kind of have an amorphous target I can&#8217;t see where you&#8217;re saying, well, it&#8217;s the right direction.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=3876">01:04:36</a>] Can you help me out? And you can even say, I know that you&#8217;re probably not trying to leave me in the dark, but what can you do to shed some light on that? These are all variations. I would recommend people read the book Never Split the Difference by Chris Voss on negotiation, because it&#8217;s all about the psychology of how to get other people into your framing. And so you get them talking about&#8212;you find ways to draw them out.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=3908">01:05:08</a>] You ask them questions like, so tell me who else has succeeded, or tell me what success would look like, or tell me how I can measure myself. You can also ask them&#8212; this is totally for the people who&#8217;ve read Chris Voss, they&#8217;ll recognize this&#8212; you can say, when they say, well, you should just keep working towards it or whatever, you say, how can I do that? And that makes it their problem to explain to you how you can feel.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=3936">01:05:36</a>] How can I feel good about working towards such an unknown goal, an unknown destination? That puts them on the defensive to solve your problem. So last thing, it&#8217;s a manager who just keeps stringing people along. Well, you&#8217;re going to have to get out from under that manager or find a way to get a lot of leverage over them. But the way you figure that out is you look at what they&#8217;ve done for other people.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=3961">01:06:01</a>] Are they actually promoting people, or are they leading everyone down a path? And if you ever wonder, am I just suspicious or whatever? Again, it&#8217;s look around, talk around. What are they doing with others? You alone may feel misused, but if the evidence is no, people in this org are getting moved up and they are getting raises and opportunities, then you have to figure out how to earn it. And if nobody&#8217;s getting anything except strung along, you have to get out.</p><h3>01:06:30 &#8212; What if your manager is in the way</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=3990">01:06:30</a>] So we were talking about limited number of spots, quota, or promo. And the assumption is there&#8217;s these other peers that you&#8217;re competing with.</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=3999">01:06:39</a>] Sure.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=3999">01:06:39</a>] But there&#8217;s also a form of that where you&#8217;re not necessarily competing with your manager, but there&#8217;s a limited spot because your manager needs to move up so they can bring others along with them. Yeah. And so maybe the leaders in your org, they&#8217;re not moving up, maybe they&#8217;re not ambitious or some other reason. What would you do in that case where you want to be in line for a promo and your manager is actually the one that&#8217;s in the way?</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=4027">01:07:07</a>] There&#8217;s always cases. One case is the manager is ambitious but can&#8217;t get there for whatever reason. First question there is, can you help them? One of the deals that definitely worked for me that I made with some of my stars is like, hey, I want to move up. You want to move up. If we can do this thing together, we&#8217;ll both move up. And I enlisted multiple people in helping me get promoted so that I could promote them or vice versa.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=4053">01:07:33</a>] They got promoted, and then I could. Either way, it was a two-sided equation. So one question I would ask is, is there something you can help your manager with? And you can just talk to them about, &#8220;Hey, I&#8217;ve shared my career goals. I&#8217;ve been wondering, it seems like maybe you&#8217;d love to move up too. Is that true? And is there any way I can help you?&#8221; And that will make you a super ally unless they&#8217;re those ones who are uncomfortable not talking about it.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=4083">01:08:03</a>] Again, that&#8217;s tricky. Then you can just go to weird language of, well, what&#8217;s rewarded in this company and how can I help our group be more rewarded or something a little more oblique. Now, the second problem is your manager doesn&#8217;t really&#8212; there are some people who don&#8217;t want to move up, or they&#8217;re just not willing to push for it, or they don&#8217;t think it&#8217;ll happen. They&#8217;ve either given up, or they&#8217;re ambivalent, or they&#8217;re one of those people who figures it&#8217;ll come when it comes.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=4115">01:08:35</a>] And you&#8217;re more impatient than that. That may be a case where you have to get out from under them to a different situation, or you ask them, you have a different discussion with them and say, hey, I&#8217;d like to move up. If we can&#8217;t create that opportunity in this team, will you help me find it in another org? I could be a great ambassador for your leadership and our team elsewhere. Are you willing to help me rise or to find a spot?</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=4147">01:09:07</a>] And one of the things that can work to your advantage is a lot of the managers who are a little less aggressive are more into taking care of their teams. They&#8217;re more into, well, the reason I&#8217;m not so aggressive is I&#8217;m at peace helping others, or I really believe. And so they&#8217;re more downward focused. So some of them are willing to actually help you elsewhere. Now, there are ones who are like, no, I need you here.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=4175">01:09:35</a>] And if I lose you, my chance of moving up is even worse than it already is. That&#8217;s tough. That, however, is your leverage, where you can say, look, if that seems to be the case, you can say, hey, here&#8217;s the honest truth. My favorite words are, my career is very important to me. No one can argue with that, right? My career is very important to me. And so I&#8217;m going to move up. I would love to do it with you here.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=4206">01:10:06</a>] But I&#8217;m gonna have to do it. And that&#8217;s just a way&#8212; you&#8217;ve expressed your first preference, but you&#8217;ve also expressed a willingness to make changes. And that&#8217;s just a way that&#8212; that&#8217;s essentially the polite way of saying either you get it done or I&#8217;m going to someone who can. But you say it in a way that they can&#8217;t like&#8212; don&#8217;t threaten me. You just say, look, my career is really important to me.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=4231">01:10:31</a>] And I have to, I&#8217;m gonna grow my career somewhere. I&#8217;m in a season, I&#8217;m gonna tell this story like a younger employee. I&#8217;m in a season of my life where I have this window, my wife and I, my husband and I, my partner and I are gonna start a family. And I only have a few years to really focus on work. So I&#8217;ve gotta move up now. I&#8217;ve gotta do everything I can to have a fast career while I have this moment.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=4256">01:10:56</a>] And I really wanna do that here in this org. If we can make a path for that, that&#8217;s where I wanna do it. But I wanted to talk to you about it honestly because I do have to do it. And so if it can&#8217;t be here, I&#8217;m gonna have to figure something out. And you put on your puppy dog eyes like, that&#8217;s a terrible outcome. And then you shut up and you let &#8216;em speak. And the way I told that, no one can be mad at you.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=4281">01:11:21</a>] You just told me you&#8217;re willing to work really hard for a few years. You&#8217;ve got this nebulous, we&#8217;re gonna have a family thing. I don&#8217;t know, maybe you are, maybe you aren&#8217;t, no lying. But if you haven&#8217;t totally ruled out you&#8217;re ever gonna have kids, that&#8217;s the easiest excuse in the world or whatever. I have these few years before I have to move home to country X to take care of my aging parents.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=4301">01:11:41</a>] There&#8217;s a million variations of it. This story about why you feel urgency now and you really wanna do it. We&#8217;ve got a great relationship. I really enjoy this work. I&#8217;d so love to contribute more in this organization, but I do have to advance my career. And then you just wait and see what they say.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=4322">01:12:02</a>] Yeah, this seems like another one of those gray areas because in the other case, the gray area was selling yourself. In this case, it&#8217;s, I guess, in a negotiation because I could see someone who looks at that and goes, oh, that&#8217;s not fully accurate. Or you don&#8217;t know if you&#8217;re going to have kids or what. You&#8217;re using that as a tool to&#8212;</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=4342">01:12:22</a>] Yeah, I don&#8217;t think most people are sitting here in a podcast chair, thinking about what people might be thinking about. In the moment, they&#8217;re mostly taking in, okay, what am I being told? And I&#8217;ve got all these other worries. But even if they&#8217;re thinking that, the message is still clear. If you were to come back to me and say, well, you don&#8217;t really know your future.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=4363">01:12:43</a>] The future is unclear. I can always go back to, this is how I feel. You can&#8217;t argue with what I feel or what I believe, right? Nobody&#8217;s going to get into, well, you don&#8217;t know if you&#8217;re going to have kids. No one&#8217;s going to tell you that. So that&#8217;s what makes this&#8212;you can call it a trap, but that&#8217;s what makes this a trap. There are certain things you can&#8217;t say to people.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=4391">01:13:11</a>] And you can&#8217;t tell me not to care for my aging parents. You can&#8217;t tell me not to plan to take care of my family. These are totally off, you know? And by the way, if they do say that, you&#8217;ve got someone you got to get away from. Like, wow, your family&#8217;s really your problem. Okay, noted. Thank you so much. Door, please. Check, please. Good managers, clever managers will be like, all right, I see what&#8217;s going on.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=4418">01:13:38</a>] I see the negotiation we&#8217;re having. I see, I&#8217;m onto your game, but I also see that puts them back in my camp. We&#8217;re like, okay, I see your game. What do I want from you? I&#8217;m thinking now, okay, he&#8217;s listened to Ethan and Ryan&#8217;s podcast. He knows the game. Well, as a manager, I know the game too. What do I want from you? And what&#8217;s it gonna take? What do I want you to deliver?</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=4445">01:14:05</a>] So yeah, what you keep asking is effectively, what do I do with people that don&#8217;t like ambition? Remember, there&#8217;s proper ambition and there is pushing too hard. I have had people come to me. They&#8217;re brand new out of college, and they&#8217;re like, I&#8217;d like to be a <a href="https://en.wikipedia.org/wiki/Vice_president">VP</a> in 2 years. How do I do that? Okay, that&#8217;s a reality check problem. I don&#8217;t know. Is your last name Bezos and I didn&#8217;t notice?</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=4474">01:14:34</a>] Otherwise, unfortunately, that&#8217;s probably not going to happen. Let&#8217;s talk about what could happen. And then if they&#8217;re like, no, no, no, <a href="https://en.wikipedia.org/wiki/Vice_president">VP</a>, I&#8217;m like, okay, I see, door, you&#8217;re a loon, I don&#8217;t need it. But for normal ambition, there are people who find ambition a dirty word. Why should you worry about this? And the work is pure and just work and it&#8217;ll be yours eventually.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=4501">01:15:01</a>] And I guess those people, I&#8217;m gonna be really blunt, they&#8217;re probably not listening to this podcast because the people you and I attract want more. And if you have a boss or a manager who is busy being very zen about like, oh, it&#8217;ll all come in due time, you&#8217;re in the wrong place. Go start your own thing. Go come work for me or one of my friends. Find a place because there&#8217;s so many hard-charging people.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=4530">01:15:30</a>] Go find them. Now, some of those people will try to work you to death, and that&#8217;s a different set of guardrails. But go find someone who shares your basic desire to get somewhere in life.</p><h3>01:15:43 &#8212; Did he ever have overly political reports</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=4543">01:15:43</a>] So when you were a <a href="https://en.wikipedia.org/wiki/Vice_president">VP</a> at <a href="https://en.wikipedia.org/wiki/Amazon_(company)">Amazon</a>, and I mean, you&#8217;re very cognizant of this game, did you ever have reports coming to you employing these tactics? Something where you thought, okay, this is polite messaging on top of a hidden message, which is, I want something from you.</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=4564">01:16:04</a>] I had one or two people who were really good at it, but honestly, most people, maybe because I was very transparent, people weren&#8217;t. They were just honest with me. This is what I want and how can I get it? And I&#8217;d be like, here&#8217;s the bill. But I did have some people who were very smooth. I also had a couple people, I mean, I definitely caught some people lying, right? Just trying to run a game on me, and I fired them.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=4592">01:16:32</a>] When I say running a game, they were dishonest. They were actually claiming things that weren&#8217;t true. Those people got gone. The last class of people I want to talk about, honestly, I had some very ambitious people in one team I can think of that I couldn&#8217;t give opportunity to fast enough for their desires. We can argue about whether or not they were quite qualified, but they went to other companies that saw more value in them, and they had, or they had wildly successful careers.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=4627">01:17:07</a>] So sometimes even a boss like me runs out of opportunity because I attract these hard-charging people and I encourage them. It&#8217;s okay if they leave. Meaning sometimes those people would come to me and ask for something and I&#8217;d be like, it&#8217;s gonna take 6 months. And I&#8217;m thinking one guy is like, Samsung will make me a <a href="https://en.wikipedia.org/wiki/Vice_president">VP</a> tomorrow. And I&#8217;d be like, you should do that. And it was okay. This one guy went and he went to Samsung, he got a huge role.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=4657">01:17:37</a>] It was a better job for him. That&#8217;s okay. But your question, did I see people using these tactics? Not as much as I&#8217;d like. I&#8217;d rather more people were trying to figure out how to grow their careers because I want to grow people&#8217;s careers. The ones I hate are the ones who I feel are asleep. They don&#8217;t want to work that hard, or they&#8217;ve got some issue that they&#8217;re angry about, but they&#8217;re passive-aggressive and they won&#8217;t put it out there so that I can address it.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=4687">01:18:07</a>] Or not. So I can tell them, okay, I hear your issue. That&#8217;s not gonna change. So now it&#8217;s accept it or leave, and that&#8217;s okay. Either accept it or leave. They&#8217;re both fine. Or, yeah, I can fix that. Here&#8217;s how we&#8217;ll fix it. I feel like even in a lot of high-performing workplaces, a lot of people are kind of stumbling around blind with no real plan. Some of those people are happy that way. So what I try and remember is, some people are in a season of their life where they just kind of wanna do their job and be left alone.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=4718">01:18:38</a>] Those are the people that the top performers get to pass all their mediocre work to.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=4723">01:18:43</a>] Yeah, I remember there was this tweet that went really viral. It was just an open-ended statement saying something like, why is it that you never hear the highest performers complaining about their manager? And implicit in that is that they leave, that high performers have optionality and they just go and find a better situation. You mentioned that if someone lied to you, you&#8217;d fire them. But when you fire people, you have to collect all this evidence of underperformance and kind of chase them down for some time.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=4758">01:19:18</a>] And then how do you fire someone for lying?</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=4762">01:19:22</a>] Well, number one, if you could really prove the lie, you probably could terminate for dishonesty if you had ironclad proof that it was a lie. But sometimes you know something&#8217;s a lie and you don&#8217;t have it. I&#8217;ve written before that a manager in good standing at any level can get rid of any one employee, and there&#8217;s 50 ways to do it. So you, like, dark. First thing I can do is just start giving you crappy assignments.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=4785">01:19:45</a>] The second thing I can do is just say, Ryan, I know we&#8217;ve talked about promotion. I got to be honest with you. I don&#8217;t really see that coming. It would take a lot of change. And I think you better reset your timeline to 3 to 7 years. So you&#8217;re probably going to quit. The third thing I can do is rate you crappy. Communicate like, I&#8217;m seeing this as, pick your system. But this is, right now I&#8217;m seeing you tracking below average for the year.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=4814">01:20:14</a>] And I just want to tell you upfront, I see a low performance review coming, and you&#8217;re like, wait, I delivered this, this, and this. I&#8217;m like, yeah, but here&#8217;s my list of seven other things you didn&#8217;t do. I can always drive somebody out. And if you go to HR and you&#8217;re like, yeah, he&#8217;s turned on me, he&#8217;s got all these unrealistic things, the fact is, I&#8217;m known as a good manager and you&#8217;re somebody below me.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=4838">01:20:38</a>] Their HR&#8217;s job is to side with me unless I&#8217;ve done something illegal. So they&#8217;re going to say, uh-huh, uh-huh. It&#8217;s going to be very tough. And again, people hate this idea. This is a flaw of our human society, which is that a manager in good standing, if they do get it in for one particular person, they&#8217;re going to win that. And theoretically, at least, an innocent person can be totally screwed over.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=4865">01:21:05</a>] What normally prevents that is good managers don&#8217;t want to screw over good people. That&#8217;s pathological. Why would I want to get rid of a good person? But if someone&#8217;s really cancerous in my organization or dishonest, I have so many tools. Now, I can also start gathering all this evidence if I want to, and that&#8217;s not a bad idea, just in case I need it. But there&#8217;s so many ways to communicate to you that your life here is over and it&#8217;s only going to be crappy work from here on.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=4896">01:21:36</a>] And I can also ride you like, &#8220;Hey, our workday starts at 10. It was 10:05 this morning.&#8221; And just like, I can be on you for everything. And the worst on-calls and the most tickets. It&#8217;s very easy to make your life miserable, and it&#8217;s very hard to prove. Like, oh, Ethan, what are you gonna do? Go to HR, who doesn&#8217;t know shit from shit in this context, and be like, Ethan&#8217;s giving me the worst tickets.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=4927">01:22:07</a>] What? Like, but how hard? Let me just ask you how hard this would be. Okay, we&#8217;ve got a 500-bug backlog, and I go through it and find 20 really crappy things to work on and say, I think for your next on-call, these should be your priorities. By the way, I&#8217;ll be measuring you to them. Hint, hint. If you don&#8217;t do it, it goes in my evidence file to fire you. And they&#8217;re just nasty. And let&#8217;s assume I&#8217;m technically incompetent and I can&#8217;t do that.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=4956">01:22:36</a>] There&#8217;s still a way to do it. I go to Fred and I say, Fred, I was wondering in our bug database, what are 100 tickets you think are pretty useless and we should just close them? Innocent request. Now I take this 100 and I come to you and say, I&#8217;ve been thinking about some of these tickets, and I need some data on these 20. I want you to prioritize working on these 20 picked from that 100 and get them all done this week and tell me what was the total value of them.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=4986">01:23:06</a>] And if you ever come back and say, &#8220;Those are terrible tickets. How could you do that to me?&#8221; or &#8220;I even know you asked Fred what were a bunch of useless tickets,&#8221; like, yeah, I was double-checking Fred&#8217;s judgment. You still had to close all the tickets. I have a defensible thing. What I&#8217;m going to do now&#8212;thank you so much, Ryan, for plowing through those&#8212;I&#8217;m going to close the other 80 with no resolution because you&#8217;ve shown that Fred was right.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=5008">01:23:28</a>] But I&#8217;ve still jammed 20 lousy tickets picked by Fred down your throat without knowing anything about what&#8217;s going on. I can do this all day. You throw me scenarios, I&#8217;ll find another way to come around HR and make your life miserable. So what I do, to summarize, if I really want rid of somebody, I let them know it&#8217;s over, right? With words like, I just wanna level with you. I see after recent events, an allusion to me catching you lying, even if you don&#8217;t admit it.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=5038">01:23:58</a>] After recent events, I gotta be honest, I&#8217;m seeing this as a challenging year. And I know you&#8217;ve asked me about promotion, I think you might want to reset your timeline. That&#8217;s all I have to say on that. And then I start making clear that the punishment&#8217;s going to keep coming. You will evaporate. I just have to wait a little bit and you&#8217;ll either evaporate by quitting or getting another job, or you&#8217;ll evaporate by getting pissed at me and doing something else outrageous that I have instant cause.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=5070">01:24:30</a>] Luck again, though, I want to emphasize: sane bosses don&#8217;t do this to good people, but it&#8217;s a tool, and that&#8217;s the way our world of fallen evil humans works.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=5083">01:24:43</a>] Yeah, and this is another one of those gray areas, though, because in the case where you&#8217;re pursuing someone that obviously lied, you are kind of just, and you&#8217;re outing someone that&#8217;s bad. I guess it would be very unfortunate if you just didn&#8217;t like someone or there was something that didn&#8217;t quite click with you with someone?</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=5103">01:25:03</a>] Well, there&#8217;s another way to handle that. Okay, so let&#8217;s assume you and I don&#8217;t click. It is, again, everything is a gray area in human relationships. Let&#8217;s assume you and I don&#8217;t click. And let&#8217;s even assume I&#8217;m a good person and I&#8217;ve tried to figure out how to work around it. I may have even talked to you and said, &#8220;Your style is you tend to whatever, some personality trait. You tend to look at the downside before the upside, and I really want to run a positive upside team, and I need you to be more upbeat.&#8221;</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=5132">01:25:32</a>] You think you can do that? And you&#8217;re like, yes, I&#8217;ll try. But the truth is you can&#8217;t. I can just come back to you. The nice way to do it is say, Ryan, look, we&#8217;ve talked before about compatibility. You and I just, we&#8217;re not that compatible. I would like to help you find a place where you&#8217;re going to thrive. Would you be open to that? And, at the end of the day, it can be internal, it can be external.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=5164">01:26:04</a>] I will make introductions. I will help you. If you take me up on that, I just help you find a new place with a new fit. If you don&#8217;t take me up on that and you&#8217;re like, no, I really want to be here and I think you&#8217;re unjust, you need to be my way, blah, blah, blah. Then I&#8217;m like, well, I tried. Now I just go back to my million strategies to get you to decide you want to take the offer to move along.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=5186">01:26:26</a>] Why is that potentially justified? I&#8217;m not going to claim it&#8217;s totally justified, but the fact is we all have to work together. And if you&#8217;re too much of a pain in the ass to work with, too much of a disturbance to my zen, frankly, the corporate hierarchy has determined that I&#8217;m the important one. That&#8217;s why I&#8217;m the boss. And again, there&#8217;s people screaming, &#8220;How can you possibly say that?&#8221;</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=5210">01:26:50</a>] Well, that&#8217;s why it&#8217;s an org chart and it goes up at the top. Okay. And I deal with the same thing above me. Either I make Bezos or whoever happy or I&#8217;m expendable. That&#8217;s our system of life. And we don&#8217;t live in a perfect world. I wish we did. We lived in some perfect world where that wasn&#8217;t true. But I have a whole team to run, and if you&#8217;re sucking up too much of my energy, I have to get rid of that.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=5239">01:27:19</a>] Now, I can think of some people who annoyed me enough I encouraged them, like, maybe we need to find you, you know, maybe let&#8217;s work together to find another place that&#8217;s like a more natural fit. And I think that&#8217;s fair because probably if we&#8217;re that different, you&#8217;re not loving it. It&#8217;s not great for you either. And so, you know, this is a little bit the breakup line of like, oh, it&#8217;s not you, it&#8217;s me, but you still need to go, like still pack your shit and move out.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=5266">01:27:46</a>] That&#8217;s the gentle way though that somebody doesn&#8217;t end up fired. And I can totally find&#8212;look, I probably have an opinion of some manager I think who&#8217;s just like you. I probably don&#8217;t care for them that much. I probably think, wow, they operate in this weird way I can&#8217;t stand, but those two are going to be perfect together. Maybe they will.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=5316">01:28:36</a>] As you said, a manager can fire any one employee that they wanted. Yeah. And HR is gonna side with the manager.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=5342">01:29:02</a>] Is there any edge case or any weird situation where the opposite could be true, which is, indeed, the engineer is in the right and they&#8217;re trying to get rid of an unjust manager, and they&#8217;re working with HR? Yeah.</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=5359">01:29:19</a>] So over 50% of this is gonna be who goes to HR first. Because you get to set the framing, you get to make the complaint. So one of the things I would totally do if I&#8217;m the manager is before I started saying stuff to you, I would send a little note to HR that says, hey, I just want to let you know, I&#8217;ve noticed some challenges in Ryan&#8217;s performance. I&#8217;m going to start working on them, ABC, whatever.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=5384">01:29:44</a>] I just set the framing. And that way, when you come to them to complain, you&#8217;re running into this wall that I&#8217;ve already framed you as a non-performer. Going the other way, if you&#8217;re the employee, you want to be the first one to HR about the situation, and you want to frame it as not, I have a terrible manager, but you want to frame it as, I&#8217;m really trying to do great work for this company, and I&#8217;m really struggling because of fact, fact, fact.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=5417">01:30:17</a>] Citing behaviors of mine. So you never actually, at least, open the conversation by saying, &#8220;Ethan&#8217;s terrible and you need to fire him.&#8221; Instead, it&#8217;s how these factual situations&#8212;again, facts can be viewed many ways. You view them your way and get them out there. These factual situations are limiting your ability to produce and that of your peers. The second thing is, if you want to win one of these uphill battles, you&#8217;re probably going to need at least one other person to verify what you&#8217;re doing, like verify the problem.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=5451">01:30:51</a>] The third thing is it sure helps if you&#8217;re a superstar, right? Because if you&#8217;re Joe Average or below average, no one&#8217;s going to go out on a limb. You really need to be standing out enough that maybe HR already knows you or you&#8217;re top rated and they&#8217;re like, oh, a top rated employee or one of the people, or maybe your skip already knows you or your name is on this tool, right? Those kinds of things can influence HR.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=5480">01:31:20</a>] The last thing, of course, that you hope for is bad manager is this huge category. Is there a smoking gun where I&#8217;ve done something illegal, patently unethical, somehow unacceptable to you or someone else that can be documented? Or not. If the manager is generally viewed as well-performing or has a good relationship with their boss, it&#8217;s going to be very, very hard to get rid of them. So I&#8217;ve had stuff come to me from employees that have led me as a skip level to terminate a manager, but it&#8217;s because it was several people over time, and the facts added up to show my manager was actually doing things they shouldn&#8217;t.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=5534">01:32:14</a>] And when I say shouldn&#8217;t, not just low performing, but unethical or just really not super untalented. But that was usually my observation as well. Then everyone has this fantasy that justice is going to be served. And you&#8217;ve asked, does it ever happen? Sure. It happens in the movies and it happens one in a million, but in real life, it&#8217;s just so much easier to leave. And what will actually happen is you&#8217;ll leave and three other people will leave.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=5567">01:32:47</a>] And then finally the management will be like, oh, I&#8217;ll tell you a story. I&#8217;ll exemplify this for you. One of the people I coach, can&#8217;t say where, he was telling me, I have this real problem. I have this manager I like, but I&#8217;ve been&#8212;they keep losing employees. People keep quitting their team and saying it&#8217;s about the manager. And I&#8217;ve been trying to coach them to change and they haven&#8217;t been changing.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=5594">01:33:14</a>] What should I do? And I asked this manager, well, how long have you been coaching this person? And he said, 18 months. And I said, hold on. You&#8217;ve had employees in your organization quitting and pointing to this manager for 18 months, and you&#8217;ve been trying to coach them to change, and they haven&#8217;t changed, and you haven&#8217;t done anything. And they&#8217;re like, yeah, I like them. I want to see them succeed.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=5625">01:33:45</a>] I have this hope for them, and they&#8217;re nice. Okay. What about your employees who quit? And by the way, if this person didn&#8217;t work for you, but you were like, if I had told you the story, what would you tell me to do? Like, oh, I&#8217;d tell you fire that manager. I&#8217;m like, right. Well, why aren&#8217;t you doing that? Well, like I said, I like them and I don&#8217;t have a problem with them. This is why it doesn&#8217;t work.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=5651">01:34:11</a>] This is a real case of a real client of mine who&#8217;s got employee after employee quitting out from under a manager that they see as like, I&#8217;m gonna make them better. I like them and I&#8217;m gonna bring them through this. And what they&#8217;re not seeing is, one person after another is like, oh my God, I gotta get outta here. It&#8217;s not even the message isn&#8217;t reaching the manager. He knows what&#8217;s happening, but he&#8217;s like, oh, I&#8217;m gonna work with them.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=5680">01:34:40</a>] This is what I&#8217;m trying to tell you. And if that client of mine is listening, yes, I am telling your story without your names, because you need to fire that person for your own sake and for them. And he&#8217;s like, oh, but we&#8217;re not hiring. What if I can&#8217;t get a backfill? And I&#8217;m like, it doesn&#8217;t matter. Okay, you have a cancer who&#8217;s killing your team, live without them, right?</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=5705">01:35:05</a>] But, or do something about that. But I&#8217;m just showing you how the inertia works because that manager that you think is bad, I think is great because they do whatever I want.</p><h3>01:35:16 &#8212; What gives you leverage</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=5716">01:35:16</a>] It sounds like there are 2 things here that give you leverage in these conversations. There&#8217;s how high-performing you are and how liked you are. If you&#8217;re high on both of those, it gives you power.</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=5728">01:35:28</a>] Absolutely. So I often say the hardest person to fire is kind of like this manager I was just talking about. If you&#8217;re looking as a boss, it&#8217;s very easy to fire people who are disliked and low performers. They&#8217;re not that good, and nobody really cares. Everybody can see it, easy. It&#8217;s also actually if someone is disliked but either a high performer or not, if most people don&#8217;t like them, nobody&#8217;s going to care.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=5757">01:35:57</a>] And they&#8217;re thorny, too thorny in a bad way. That&#8217;s also easy. And thorny there means they&#8217;ve made themselves disliked with others, not just with me. They&#8217;re generally disliked. The hardest one to get rid of is the person who&#8217;s mediocre. They&#8217;re not obviously terrible, but they&#8217;re not very good. They&#8217;re below average, but everybody likes them. And why is that hard? Well, number one, there&#8217;s no smoking gun.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=5782">01:36:22</a>] They&#8217;ve never screwed anything up bad enough that you can just be like, that&#8217;s terrible, you&#8217;re out. And if you go after them, everybody&#8217;s going to look at you and say, But everybody loves Bob. Why are you down on Bob? Bob brings donuts. He&#8217;s friendly, throws a barbecue at his house every year. He&#8217;s always picking up work. Yeah, the work he does kind of sucks and is often late, but he&#8217;s always volunteering really hard.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=5811">01:36:51</a>] So yeah, be likable. Now, I&#8217;ve said be thorny. How can I be saying be thorny and be likable? You can do both. Okay, you&#8217;re likable all the time, meaning you&#8217;re friendly, you&#8217;re outgoing, you&#8217;re pleasant, you&#8217;re talkative, except when people are trying to do something you don&#8217;t like. And then it&#8217;s just that little pushback and that little push of, come on, just that much? Come on, really? This is our priority?</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=5844">01:37:24</a>] Is this what you&#8217;re telling me you want me to do? Just that little face. It doesn&#8217;t take much. The other thing is, if that&#8217;s too much, you can push back, as I said, with humor. Be like, all right, but you&#8217;re using up one of your crap work tokens. I only give so many of those a month. So is this where you want to spend one? We&#8217;ll do it. But it&#8217;s only 3 a month. Nobody can really get mad at you for being like, hey, Boss, I only give out 3 shitwork tokens a month.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=5873">01:37:53</a>] If this is one you need to spend, I got it for you. But we are burning a token. Is this it? People will accept this framing. This is the weird thing about humans. I can push on you the fact that you get 3 shitwork tokens a month. You never agreed to that. You&#8217;re like, I&#8217;m the boss. If I want to give you 73 shitwork tokens, you&#8217;re going to spend them all and say, may I have another?</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=5895">01:38:15</a>] But that isn&#8217;t what we do. We&#8217;re like, oh, 3 shitwork tokens. Okay. Because you set the frame. So that&#8217;s a way to be thorny and still be liked. Because if other people see you do that, they&#8217;re like, hey, that&#8217;s pretty clever. Ryan&#8217;s pretty smooth. They&#8217;re not mad at you, but you just brush the boss back in front of everybody. Even the boss is like, all right, I see. Because what are they thinking?</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=5920">01:38:40</a>] They&#8217;re thinking, well, you said yes today, that&#8217;s good. And you gave me 2 more, that&#8217;s fine. I&#8217;ll deal with it if I get to token 3. But subconsciously you set the anchor that 3&#8217;s the line, and they&#8217;re gonna know that. And even worse, if you did it with witnesses, then they&#8217;re like, I kind of agreed to it in public. Even though I never agreed, I let it stand. And you&#8217;ve got them cornered because they can&#8217;t be like, no, Ryan, I&#8217;m the one who tells you how much shit work, and it&#8217;s unlimited tokens.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=5954">01:39:14</a>] Well, that makes them look horrible, right? And so nobody&#8217;s gonna do that. And this is how you be still very likable and funny, but lines.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=5965">01:39:25</a>] For job security, it sounds like likability is more important than performance.</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=5973">01:39:33</a>] I mean, it depends on the context. Being liked never hurt anybody. And look, I&#8217;ve seen another decision I saw made, technically totally illegal. We were deciding on a layoff in a company I was in, and we had to cut some people. And one of the other leaders said, well, that guy&#8217;s married and has a family to support, and this other guy doesn&#8217;t. There&#8217;s no legality in that. You can&#8217;t bring people&#8217;s family situation, but that was what happened.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=6000">01:40:00</a>] So decisions get made on criteria that aren&#8217;t performance, and that&#8217;s a very real thing. So likability is one of them. And, hey, a question. If I wanted to save you and you were likable but lower performing, hypothetically, and there were a bunch of people making the decision, what I would say is, yeah, Ryan isn&#8217;t always our top performer, but this new room has to pull together.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=6030">01:40:30</a>] Who do we want in that room who&#8217;s going to light up the room and keep everybody&#8217;s morale up after we go through this grim event? I think we need Ryan at that table. And I&#8217;ve just turned your likability into a performance asset. And that kind of thing also happens because who do I want to work with? I want to work with really smart people, but I also want to work with people I enjoy who can pull together.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=6058">01:40:58</a>] And that&#8217;s the likability piece. High performance, there are cases where you will say, yeah, Robert is the only one who knows that old arcane system. And even though he&#8217;s really tough to deal with, we&#8217;re gonna need him. That also happens. That&#8217;s the Cal Newport so good they can&#8217;t ignore you path. But what&#8217;s going on in my mind is how can we cross-train someone on what Robert knows?</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=6087">01:41:27</a>] So that we&#8217;re not in this situation? Because the truth is, I&#8217;d rather unload him. Nobody ever wants to get rid of the likable guy if he&#8217;s at all good. But the high-performance guy who nobody likes, we&#8217;re looking for how do we get out of this situation? How do we get out of our dependence? Because no one likes to feel trapped and depending on someone who&#8217;s unpleasant. And that&#8217;s why that&#8217;s dangerous.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=6114">01:41:54</a>] I also want to make clear, you don&#8217;t have to be like this super lovable teddy bear. Just be a decent person. Don&#8217;t be rude or judgmental. Don&#8217;t be that person who&#8217;s always talking down, super like&#8212; engineers hate this again. This is my list of stuff engineers hate. Managers have fragile egos. They have imposter syndrome. They&#8217;re always wondering, even if they&#8217;re technical managers, part of their mind is like, am I technical enough to keep up with the team?</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=6144">01:42:24</a>] Well, there&#8217;s that one engineer who wants to show the manager, &#8220;Ah, you&#8217;re really out of touch, old man.&#8221; I don&#8217;t like that. And so if you keep showing me up in front of the team, you become marked for death for two reasons. Okay? One, I don&#8217;t like you. And two, I can&#8217;t have you doing that. So if I can&#8217;t win you over, then I have to shut you up because I gotta keep the rest of the team with me, and you&#8217;re undermining my authority.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=6176">01:42:56</a>] And humans are incredible rationalization machines. My mind will always come up with some reason at night why that&#8217;s justified. It always does. That&#8217;s what human minds do. That&#8217;s why there&#8217;s so much nasty behavior in the world. People don&#8217;t tell themselves, nobody wakes up in the morning and like, I&#8217;m a supervillain. This doesn&#8217;t happen. The supervillains wake up and they&#8217;re misunderstood.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=6201">01:43:21</a>] Nobody understands the greater good I&#8217;m doing. Nobody understands that I&#8217;m just getting by, taking care of my family. Nobody understands this is just the way the world is and some people gotta die. They always have some excuse, and it&#8217;s okay because just. And we all, we&#8217;re built to do that. Literally built to.</p><h3>01:43:41 &#8212; How to defend against peers undermining you</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=6221">01:43:41</a>] Last question on this dark topic, and we&#8217;ll go to the darker one.</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=6225">01:43:45</a>] Darker? All right, this hole has no bottom. Let&#8217;s go.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=6231">01:43:51</a>] So we&#8217;ve been talking about promos and how there&#8217;s maybe limited spots in some cases. And not that you would recommend anyone do this, but let&#8217;s say your peers are going for that spot as well, and they know that you&#8217;re one of the people that wants it too, and so they undermine you. So they&#8217;re attacking you. How do you defend against being undermined by your peers where they&#8217;re saying, oh, he&#8217;s not the best candidate for that position?</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=6265">01:44:25</a>] Yeah, so speed matters. Again, going first really matters. If you have seen this once, you can predict it will happen again. So if you get bitten once or see someone bite someone else once, you can predict that person did it once, they&#8217;re going to do it again, they&#8217;re going to do it to me. So then what you have to do is get in front of it with your management and say, hey, I don&#8217;t know if you&#8217;ve noticed, but there is some undermining in this team.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=6293">01:44:53</a>] We have a competitive team. Some people will take shots at each other. I&#8217;m never going to do that. But that means I&#8217;m counting on you to recognize it because I&#8217;m not going to play that game. But I&#8217;m counting on you to see it and just please judge my performance by what I actually do, not by what anyone else says. And then you&#8217;ve planted the seed in their mind without accusing anybody of when someone comes and chirps, they&#8217;re like, oh, that&#8217;s what Ryan was talking about.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=6321">01:45:21</a>] And now you&#8217;re up 2 because I&#8217;m going to disregard what they said and not knock you down a peg. Meanwhile, I&#8217;m going to look at the other person and say, that&#8217;s interesting, and knock them down for undermining. So you really want to set that, like, if this is a problem you&#8217;ve seen, you want to talk to your management and just be like, hey, I&#8217;ve seen some people in the team, maybe while you&#8217;re not there, talking shit about each other.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=6343">01:45:43</a>] And it really disturbs me. I&#8217;m worried that if they&#8217;re talking shit about each other or other people around me, they&#8217;re also talking shit about me to you. And I&#8217;m not going to play that. And I&#8217;m not accusing anybody, but just please judge me by what I actually do. And if you ever have any question about what I&#8217;ve actually done, grant me 10 minutes to show you. Because if I can&#8217;t back it up, that&#8217;s great.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=6369">01:46:09</a>] Like, that&#8217;s fair. But if I can, judge me by what I&#8217;ve done. And that humble pie act of like, judge me by what I&#8217;ve done and give me a chance to show it. Again, who can object to that? Right? But you&#8217;ve set that anchor so that then if somebody comes and like, well, Ryan, blah, blah, blah, then they look, they&#8217;re playing into it. Now let&#8217;s assume, I know you&#8217;re going to ask me, well, what if they&#8217;ve beaten you to it and you find out they&#8217;ve been doing this and your boss is like, wow, really?</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=6400">01:46:40</a>] How much did you have to do with that project? First, you may have to just be like, okay, once bitten, twice shy. Now I&#8217;ve learned. But you can, without being defensive, you can just say, haven&#8217;t done that much, huh? And that&#8217;s the Chris Voss trick of mirroring back to them, where they&#8217;re like, well, you didn&#8217;t contribute that much. And you say, contribute that much? And let them keep talking.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=6421">01:47:01</a>] Well, so-and-so said, oh, interesting. So-and-so said? And you just, this is a trick from the book, but it&#8217;s very powerful, called mirroring. You just say, repeat the last few words they ended with, and they will keep talking, and they&#8217;ll talk themselves into trouble. But eventually you just say, well, I&#8217;m really disappointed by what you&#8217;re sharing. I think if you&#8217;re willing to examine it, my work speaks strongly for itself.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=6447">01:47:27</a>] But I certainly want to make sure I&#8217;m judged rightly in the future so that we&#8217;re both on the same page about what I contribute. What&#8217;s the best way for me to showcase what I&#8217;ve contributed to you so that you&#8217;re fully informed? Because that&#8217;s another little dig, very subtle. Maybe you&#8217;re not fully informed right now, but how can I make you fully informed in the future? But I haven&#8217;t said, oh, you&#8217;re not fully informed.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=6472">01:47:52</a>] I just said, so you can be. So I&#8217;ve set this anchor that, you&#8217;re not fully informed, but I&#8217;ll make sure you are in the future. These are just all little techniques. Lastly, I know I say this a lot, if you&#8217;re in a team with a bunch of snakes, not all teams are like that, find your way out. Another thing, if there is a chance, rather than counterattacking the person who&#8217;s undermining you, that puts you down in their gutter.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=6508">01:48:28</a>] Instead, figure out a way to catch them out or set a trap or otherwise expose them as a shit talker. Maybe your team probably has a bunch of neutral people who just don&#8217;t care. Wait until that person who&#8217;s got that behavior probably shoots at other people too. Go find those people and say, hey, I heard Ethan say that you didn&#8217;t contribute that much. I just want to let you know, I thought you contributed a lot.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=6538">01:48:58</a>] I&#8217;m not sure where that came from. And you do that with a few people, and that just forms the, right? And you&#8217;re not&#8212;you never said, I see he&#8217;s running you down. Say, I&#8217;m not sure why he said that. I thought you did a lot. It&#8217;s that subtle. Just like, hey, I see you. And you do that with a few people, and suddenly they&#8217;re all like, oh, that other person&#8217;s always. With a little bit of help, people are very good at seeing through others.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=6566">01:49:26</a>] Once your eyes are open to this person&#8217;s behavior has double meaning, it&#8217;s much easier to see. So you just have to help people open their eyes a little. You can even just be really curious and say, I noticed today Ethan was saying bad things about Fred&#8217;s work. You&#8217;re talking to a third person. Why do you think that was? What caused them to bring that up? It&#8217;s so strange.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=6591">01:49:51</a>] You&#8217;re not even saying, &#8220;I disagree with it.&#8221; Just, &#8220;That was a little weird.&#8221; You just leave it. Their mind will go, &#8220;What was weird about that?&#8221; Huh, maybe seeds of doubt. Planting seeds and being patient, great relationship tool, both in terms of planting seeds of, &#8220;I&#8217;ll help you,&#8221; and planting seeds of doubt where you need to. That&#8217;s that doubt, like where I&#8217;ve said my career is very important to me and I need to move it forward, I&#8217;m just planting that little seed of doubt of, &#8220;Either you take care of me or I take care of myself.&#8221;</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=6621">01:50:21</a>] I just let that grow. Plant those seeds.</p><h3>01:50:24 &#8212; What if everyone is good at politics</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=6624">01:50:24</a>] When I think of politics, it feels like this adversarial game. If everyone was playing this game optimally or using all these tactics that you were saying, does that change what is the best thing to do?</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=6638">01:50:38</a>] So I will answer your direct question in a second, of does that change what&#8217;s optimal? Politics, the way you&#8217;re describing it, and all these sort of dark scenarios, they&#8217;re never ideal. This dark scenario in a real&#8212;like, where do we start about getting credit? In the best world, managers have a pretty good idea of credit, but all the team members are sharing honestly what they&#8217;ve done, and we&#8217;re all trying to grow together.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=6663">01:51:03</a>] And like I said, with this company I&#8217;m working with, we&#8217;re trying to get all the boats to rise. The company gets higher performance, which means it does better in the marketplace, which means everybody&#8217;s shares goes up and we can give more out, and everyone wins at some level. So there are positive ways to do this. It does not have to be zero-sum or prisoner&#8217;s dilemma, but those situations do arise.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=6685">01:51:25</a>] And if everyone&#8212;we know the prisoner&#8217;s dilemma, to cite a problem, hopefully if somebody is watching, they don&#8217;t know it, Google it, but I&#8217;m assuming they all do. In the prisoner&#8217;s dilemma, we know how it ends, which is everyone stabs each other all the time and it ends up nobody makes progress, but nobody loses progress. So in this highly political, everybody doing this, what you would have is you&#8217;d have a set where because everyone is maneuvering in this politically optimal way, you&#8217;re right back where you started.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=6715">01:51:55</a>] No one&#8217;s getting an advantage. So you&#8217;re back to neutral. What I would say to do is if you recognize that case, oh, everyone here is very politically astute, I would be like, so my problem is I&#8217;m playing poker at a table of excellent poker players. I can hold my own, but a much better thing is go to that table of suckers and clean them out. Go somewhere else that&#8217;s a different game or a different level of play.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=6746">01:52:26</a>] Where I&#8217;m the star. I often share it this way. When I chose to do what I do today, which is coach and teach online, I realized I have 3 talents. I&#8217;m a pretty good public speaker. I know a lot about careers, and I know a fair amount about social media from having worked at Twitch and been a Twitch streamer. I am certainly not, and by no means was anywhere near the best Twitch streamer. I&#8217;m probably nowhere near the best public speaker.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=6777">01:52:57</a>] And while I&#8217;m a career expert at some level, I may not even know the most about careers. But when you intersect those 3 things, I&#8217;m very near the best. So I went and found the one poker table where, no, I have very little competition. So what I would say to do in that case is go find the place that fits you. Because if you&#8217;re that good and everyone else is that good, go somewhere where the competition is softer.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=6804">01:53:24</a>] Now, some people are like, ooh, I don&#8217;t want to do that. I want to win, or I want to be at the toughest place. Well, that&#8217;s fine too. It&#8217;s a lot of effort to stay. Let&#8217;s use sports as an analogy. You want to play on the top team, whether it&#8217;s World Cup or whatever, getting the benchwarmer spot on the top team is a lot harder than getting the star spot on, like, the 6th team. And that is a choice.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=6833">01:53:53</a>] The star on the 6th team, though, probably makes more than the benchwarmer on the top team. So it is, what do you want? If you want to say, I was part of the team that won the championship, you might have to take the benchwarmer spot. And if you want the big paycheck, you might want to go somewhere else. And those are both valid choices. They&#8217;re just choices.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=6853">01:54:13</a>] In the hypothetical, I guess, you&#8217;re at the poker table and everyone&#8217;s playing optimally. Does the way the people play the game change?</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=6863">01:54:23</a>] It does in that it changes in that nobody tries simple moves anymore, meaning the way you might bait someone or bluff someone who&#8217;s greener isn&#8217;t going to work. Once you recognize it&#8217;s all stars, it makes you more conservative in that there aren&#8217;t going to be any easy shortcuts and any mistakes are going to be caught and punished. So I think it makes you play a lot more cautiously because a mistake is at that table.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=6908">01:55:08</a>] If you make a mistake, you&#8217;re done.</p><h3>01:55:11 &#8212; How Jeff Bezos burned him for empire building</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=6911">01:55:11</a>] Darker hypothetical.</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=6913">01:55:13</a>] Darker. Here we go.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=6915">01:55:15</a>] Well, so we talked about empire building before. It&#8217;s incentivized if you want to grow as a manager. And my question to you, because you had so much success as a <a href="https://en.wikipedia.org/wiki/Vice_president">VP</a>, did you do empire building?</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=6930">01:55:30</a>] Yeah. So I mentioned earlier, the human mind is great at rationalizing. I think in hindsight, I for sure did some empire building. But at the time, you probably don&#8217;t tell yourself you&#8217;re empire building. What you tell yourself is, with all these people, I could do so much more, right? You frame it as, man, I have all these great ideas. We&#8217;ve got a big backlog. If only I had 375 more people, imagine what we could do.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=6954">01:55:54</a>] And it&#8217;s not your budget. So why not ask for it? So I got totally burned on this. When we were growing <a href="https://en.wikipedia.org/wiki/Amazon_(company)">Amazon</a> Appstore, we had launched the store and we had our annual meeting with Bezos, and we said, we launched the store and we took him this huge ask for all these people. And I remember what stands out to me most is I think we had nobody in marketing. We had no dedicated marketers because we had started this lean team.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=6982">01:56:22</a>] It was something absurd like we need 25 marketing people. And it was going to be like, this is not exactly right, but it&#8217;s like we need 5 PR people. And we had this idea like, oh, we&#8217;re operating in 5 countries, we need 1 PR person per country. So we had some justification in our own minds, but we were just asking for everything under the sun. Well, if we had all this, I&#8217;m sure we could do a lot, and wouldn&#8217;t it be great?</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=7011">01:56:51</a>] Well, Jeff tore into us. He asked a couple questions like, what are these people going to do? And what are these people going to do? What are they actually going to do? And our answers fell apart because we were just sort of like, well, they&#8217;re going to do marketing. That&#8217;s why they&#8217;re called marketing people. We need more marketing and 25 is a good number. And I remember very distinctly, he asked one question, we gave a crappy answer, and you could tell he&#8217;s like, hmm.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=7037">01:57:17</a>] So then a second later, he asked another question, and we gave another crappy answer. And he&#8217;s like, okay, I don&#8217;t believe any of your numbers from here on. I&#8217;ve asked you two questions. They were both nonsense. I&#8217;m not going to go through everything else. I don&#8217;t believe any of it. Here&#8217;s what you&#8217;re going to do. Go back and bring me a sheet where the maximum size of any bucket of anything you&#8217;re asking for is two or three people, and it says exactly what they&#8217;re going to do.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=7066">01:57:46</a>] And I will go through that line by line and tell you what you can have. And that&#8217;s what he did. We went away and came back with this line by line, and he went through it and like, 2 people for PR, I can believe you need some PR. No one. And he just literally with a red pen with all of his direct leaders watching, no, 3, none, 2, okay, both for that, but I want this, this, and just took us over the coals.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=7099">01:58:19</a>] He wasn&#8217;t wrong. He was actually right. I was relatively newer. One of my managers was newer. We had gotten big eyes because we&#8217;d launched the project and thought, well, let&#8217;s see what we can do with this. It&#8217;s a good project. Let&#8217;s see what they want to do. And what we found out was not very much. They wanted us to be lean. That was for sure empire building. But I would say in that case, it was driven out of laziness as much as this idea of I&#8217;ll have a huge team.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=7126">01:58:46</a>] Not that a huge team wasn&#8217;t also appealing, but we were just daydreaming rather than thinking. When people set out to really empire build, they&#8217;re either asking for people and resources they don&#8217;t really have any use for, or they&#8217;re asking for stuff they do need. And what they&#8217;re not doing is worrying about what they&#8217;re taking it away from because the company only has so many resources. So my job is to advocate.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=7152">01:59:12</a>] The way I was successful empire building later, if you want to call it that, was coming up with new ideas that the company wanted to invest in. We&#8217;re going to do this. Look at the money. We&#8217;re going to do this. Look at the customers. We&#8217;re going to do this. Well, that&#8217;s a lot of growth, Ethan. Another challenge. You can&#8217;t hire all those people. And I&#8217;d be like, okay, here&#8217;s what let&#8217;s do. You hold 100 heads for me and release them in groups of 20.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=7178">01:59:38</a>] And if I don&#8217;t fill the first 20, I don&#8217;t get the second 20. Well, I got really good at filling heads and with good people, by the way, not just filling them, but I found ways to turn my heads into performance. But then I was very aggressive asking for more. I&#8217;ve done this much. I&#8217;ve built leaders who can do it. I want this. I want that. That was me being the I want guy. The here&#8217;s my proposal.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=7202">02:00:02</a>] Here&#8217;s my new idea. A story of empire building, sort of. I ran the <a href="https://en.wikipedia.org/wiki/Amazon_(company)">Amazon</a> Appstore team. We sold apps. Our job was to build an app store for the Kindle and for phones. We had this idea. We were supposed to compete with Google and Apple, who own their platforms. It was a very hard job. And we were trying to figure out how can we compete with Google and Apple? What can we offer they can&#8217;t? And we had this somewhat harebrained idea of, well, they can&#8217;t ship physical goods.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=7235">02:00:35</a>] We&#8217;ll go to all the game makers and offer to be their swag department. We&#8217;ll make their T-shirts and their coffee cups and whatever. We&#8217;ll tell them you should work with us because we can help you with your Merch by <a href="https://en.wikipedia.org/wiki/Amazon_(company)">Amazon</a>. So we built this group called Merch by <a href="https://en.wikipedia.org/wiki/Amazon_(company)">Amazon</a>, and we started with printing T-shirts. Well, my leadership came to me and said, why are you working on a T-shirt printing project?</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=7257">02:00:57</a>] And you have people on a t-shirt project from within the Appstore? I said, well, we have these reasons. Well, the bottom line is t-shirt printing didn&#8217;t change the app business, but <a href="https://en.wikipedia.org/wiki/Amazon_(company)">Amazon</a> now prints more than $1 billion of T-shirts a year. And we built a T-shirt business. It was a matter of me fighting for it and saying, I have a theory and we have the ability to do it. And there&#8217;s a business model behind it.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=7282">02:01:22</a>] And then when it turned out the business model, this is the key, when it didn&#8217;t work for what I planned for, it was working to sell clever slogans and people&#8217;s party T-shirts and people&#8217;s political T-shirts. That was selling great. So I just pivoted right away and said, this isn&#8217;t really about apps anymore. It&#8217;s about how many T-shirts we can sell and how much money we&#8217;re making.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=7304">02:01:44</a>] And I just&#8212;and that became a new empire. Now we spun that off and it went elsewhere in the company. Part of empire building in a good way is being good at turning things into money and being willing to be flexible. My theory of why to make print t-shirts was a total failure. It&#8217;s going to make game makers prioritize putting their apps on <a href="https://en.wikipedia.org/wiki/Amazon_(company)">Amazon</a> Appstore. They didn&#8217;t care. Merch was such a small thing to them, wasn&#8217;t&#8212;but we found other money, and so we just used it for other money, and we kept it.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=7340">02:02:20</a>] Another thing I&#8217;ve done before is I&#8217;ve gotten heads for a project. That project has tanked. I don&#8217;t go and say, oh, that project tanked, you should take the heads back. I&#8217;m like, that project tanked, but you know what? Great news. I put those heads on this thing that&#8217;s working, and now it&#8217;s going twice as fast. So you&#8217;ve got to always know where do you shift the resources to where they&#8217;re making money or delivering results?</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=7363">02:02:43</a>] And if you&#8217;re doing several things, if one thing fails, you just immediately put them on the other thing and do it twice as well. And they don&#8217;t take them away. I think it&#8217;s undeniable. And this, this doesn&#8217;t look good of me to say, I was an empire builder in ways. The only defense I have is I made it pay off for the company to the goals the company wanted and/or in hard cold cash. Sometimes those weren&#8217;t the same.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=7387">02:03:07</a>] I&#8217;ve talked about rationalization. I&#8217;ve rationalized it to myself where I feel like I delivered value. Some other people looking at and listening to this, some of my old peers would be like, bullshit, Ethan, you were just really slippery. I hate that idea that they might think that. I would say, well, I did deliver a lot of value, right? At least I made a lot of money and you can&#8217;t deny that.</p><h3>02:03:27 &#8212; How to retain your headcount</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=7407">02:03:27</a>] So if you were empire building, is there ever a case where they clawed back headcount because maybe you didn&#8217;t need all of that headcount? And if so, how&#8217;d you defend against your headcount getting clawed back?</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=7422">02:03:42</a>] <a href="https://en.wikipedia.org/wiki/Amazon_(company)">Amazon</a> didn&#8217;t shrink much during the times I was there. So pure clawbacks, I don&#8217;t think I faced too many, but as I described, that&#8217;s because I was playing offense. When something wasn&#8217;t working, I was upfront about it not working. And before they could say, well, we could use those elsewhere, I was talking about what I had already done with them. &#8216;Cause they were on my team, so I already had them assigned to something else, something more valuable.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=7450">02:04:10</a>] So they would have to come and say, no, no, you can&#8217;t move them to that. We have to take them back off of that. And I&#8217;m like, well, isn&#8217;t that important? Look at&#8212; so I sort of prevented that by staying ahead of it. I never left headcount open at the end of the year, &#8216;cause that was their favorite thing to take back. <a href="https://en.wikipedia.org/wiki/Amazon_(company)">Amazon</a> often did this thing. Where at the beginning of the year, whatever, we&#8217;ll pick a random number that&#8217;s too small, but to illustrate, they would say, okay, we have budget for 1,000 heads this year across the company.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=7486">02:04:46</a>] We&#8217;re going to let people open 1,500 and we&#8217;ll see who fills them and we&#8217;ll cut it off when we get there. Well, I put a lot of effort on hiring, so I played offense. My heads were all full before the gate came down. And I did that year after year. And other teams, they would be like, oh, we were too busy working and now it&#8217;s November and we haven&#8217;t hired yet. What do you mean we can&#8217;t? Sorry, what you&#8217;re talking about is any kind of resource competition.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=7515">02:05:15</a>] You&#8217;ve got to think about how do I seize those resources and make my use of them something no one will argue with or that it&#8217;s too late to argue with it. There are some things that once the ship has left the dock, it&#8217;s gone. I was very good at getting my ship out to the ocean. And by the time they&#8217;re like, hey, we needed that ship, you&#8217;re like, well, I&#8217;ll give it to you when I get back.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=7539">02:05:39</a>] Like, it was too late. And that part of empire building, if you wanna say, for a place I was very maliciously empire building, I knew how headcount worked, and I was always the first to hire and fill my team so much that I taught a class on how to hire quickly, because I knew others wouldn&#8217;t do it. And that was my way to get people. That was, in fact, another argument I made was they&#8217;d say, oh, we don&#8217;t have any headcount left to give this year.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=7571">02:06:11</a>] And I&#8217;d say, well, isn&#8217;t there a bunch of other teams not filling their headcount? Tell you what, they&#8217;re probably not gonna get to it. Let me hire a little ahead and we&#8217;ll, you know, they&#8217;re not gonna get to it. And that was another story I told of like, hey, across your whole org, all these other teams are behind. You have headcount you can loan me that they&#8217;re not going to get to.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=7590">02:06:30</a>] And that was just literally me, taking other people&#8217;s heads, but knowing I could get away with it. Now, I put them to good use. Remember, I talked earlier about you have to be a good performer. My teams were always at least delivering their stuff. And so it wasn&#8217;t like they were going to look at me like, why would we let you do anything? Your shit&#8217;s all broken. I never had that accusation. I&#8217;ve shared before though, I was very willing to hack to get things out and I probably shipped some stuff that was too raw.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=7620">02:07:00</a>] That was though, keep the speed moving, keep in front, don&#8217;t get bogged down in the perfect project. Get it out there and show progress and then iterate is better than, &#8220;Oh, but it&#8217;s not quite ready yet. I can&#8217;t let it out yet.&#8221; Because if I can&#8217;t see it, it&#8217;s not real. People could see my stuff and they&#8217;re like, &#8220;It&#8217;s got warts.&#8221; And I&#8217;m like, &#8220;Yeah, but it&#8217;s there.&#8221; It&#8217;s different as opposed to your thing that if I ever pulled the shoot at somebody else, I&#8217;d be like, yeah, maybe their project&#8217;s perfect.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=7650">02:07:30</a>] They&#8217;ve been telling us that for 2 years.</p><h3>02:07:31 &#8212; Career recommendations for the current landscape</h3><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=7651">02:07:31</a>] Where is it?</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=7653">02:07:33</a>] With all of these changes with AI, I think you could make a case that it&#8217;s a boom in some places, a bust in many places. And I know you have a lot of experience across different companies and periods in the tech industry. So when you look at today&#8217;s landscape of tech careers, what advice would you give people in the uncertainty of potential scenarios with all this AI stuff that&#8217;s happening?</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=7681">02:08:01</a>] I wish I had a perfect crystal ball with AI because I&#8217;d make a fortune on Wall Street. But I do think there are gonna be winners and losers, and I do think some types of jobs are gonna get eliminated. I think other types are gonna change. I think some will also get created that we don&#8217;t understand yet. So what do you do to position yourself for that? Well, I think breadth of learning is more valuable than depth, flexibility.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=7705">02:08:25</a>] And so, of course, I am a fan, as we talked about, of develop your soft skills because that&#8217;s not a target of AI at the moment. AI&#8217;s strongest target is things that have rule sets, coding languages, law, math, things that have firm rules. It can be optimized around a lot easier. You&#8217;ve said how many times today regarding soft skills, well, it&#8217;s a gray area. That&#8217;s where AI is going to struggle because how to act like a human at that level and how to convince people, and it doesn&#8217;t have a body or a face and it can&#8217;t hug anyone or shake hands.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=7744">02:09:04</a>] It&#8217;s got a lot of limitations in this pure, does the code run or not? Is this contract viable or not? So I think leaning into some of those skills that require human presence is a big tool, a big tactic. At the same time, you can&#8217;t be AI ignorant or resistant. You have to be aware of the tools, able to use them. I think the people who are spending absolutely every moment trying to stay on top of AI, only maybe I&#8217;ve called it like winning the race off the cliff.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=7786">02:09:46</a>] You will be the best person at using the tools. But as those tools chip away at what you do or obsolete what you do, you&#8217;ll be the last one kept around to operate them until they don&#8217;t need you either. It&#8217;s a kind of a Pyrrhic victory. Now, again, there&#8217;s at least two analogies that get bandied around. You mentioned engineers and coding in our opening. We know that spreadsheets didn&#8217;t eliminate bankers or financial analysts.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=7817">02:10:17</a>] They increased the demand. Financial tools have increased the interest in doing all kinds of weird financial instruments and analysis. So there are more bankers, not less. Similarly, it was thought that ATMs are going to eliminate bank tellers. Didn&#8217;t happen. There is an argument that these tools are only going to increase the demand for things. In other words, more people have seen what code can do for them.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=7846">02:10:46</a>] There&#8217;s more people playing around with vibe coding, and they&#8217;re going to reach a point where they realize I actually need a software engineer to help me with this. And so it&#8217;s going to increase demand. I don&#8217;t actually know which of those wins. I&#8217;m sure that sitting and pounding a keyboard the way I grew up doing it is not going to be the same. So the jobs are going to change. What do I advise? Having the best eye you can on where is the value going?</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=7874">02:11:14</a>] What are people valuing? What I think they&#8217;re valuing more and more now is more people can produce more code or more legal documents or whatever. Who&#8217;s deciding? Who&#8217;s explaining those? Who&#8217;s deciding what&#8217;s needed? Who&#8217;s deciding what to prioritize for release? Who&#8217;s deciding what to tell customers? Let&#8217;s say the engineers on Gmail can now write 10 times as many features. Well, we don&#8217;t need 10 times as many features.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=7903">02:11:43</a>] We actually might need fewer, that are better or different. Who&#8217;s deciding? That&#8217;s that whole taste or judgment. I think that&#8217;s going to be very highly prized, and I&#8217;d rather be in the judgment seat than in the running the tools seat.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=7923">02:12:03</a>] In the last few years, there&#8217;s this trend of flattening orgs or getting rid of the layers, and I wanted to ask you, in your experience, is that in the tech industry, is that just something that ebbs and flows with the booms and the busts, or do you think that&#8217;s a new permanent way of operating?</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=7946">02:12:26</a>] The delayering is a cyclical pressure, and it&#8217;s a cyclical pressure when companies are very focused on headcount, on keeping headcount flat. Companies go through periods of expansion and contraction or rationalizing. And when they&#8217;re trying to rationalize, they&#8217;re always trying to flatten because there&#8217;s this belief managers in the middle don&#8217;t do anything. And so how do we get rid of them? But I want to talk a little bit about history.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=7978">02:12:58</a>] There was an early dynasty in China that in 600 BC implemented the first testing for civil servants. And by 200 BC, this had actually become a formal process with a written exam. So if you think of administrators as basically the same as managers, we&#8217;ve had manager layers since 600 BC, to the point that they were selecting them with a test. I believe AI changes a lot of things.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=8008">02:13:28</a>] I don&#8217;t believe it changes human nature to where there&#8217;s no longer gonna be this idea that you need one person to organize other people&#8217;s work or to speak for it or to centralize it. And so I think it&#8217;s cyclical. I don&#8217;t think it permanently changes. It might be that AI tools increase what is considered a team, like how many people can be on a team because the manager has automation helping them.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=8039">02:13:59</a>] But I can just as easily argue that because each individual on the team is producing more and more decisions are needed and more judgment is needed, more communication about what&#8217;s been done is needed, that it increases the need for people acting as managers. Right now, this flattening idea, it&#8217;s got a couple of poster children like Jensen Huang, who&#8217;s got 60 direct reports. Is everyone Jensen? They&#8217;re not.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=8070">02:14:30</a>] And by the way, those 60 people, I coached some people in his organization, they are extremely senior. So can one brilliant guy lead 60 other brilliant people? Yeah, maybe. Can I do it? Can you do it? Can the average first-level manager scale from 10 engineers to 100 and still do a good job? I doubt it, right? I really doubt it. So I think it&#8217;s cyclical. Predicting that human nature is going to be different is a really bad prediction because it&#8217;s been the same for so long.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=8105">02:15:05</a>] And the idea that a tool is magically going to make humans different, I&#8217;m skeptical.</p><h3>02:15:11 &#8212; How to avoid negative layoff optics</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=8111">02:15:11</a>] In the doomer AI case where there&#8217;s less technical roles, I think people might worry about layoffs and those kinds of things. What are the top ways to protect against layoffs? And also, I&#8217;m curious to know how do you avoid the negative optics?</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=8131">02:15:31</a>] Yeah, so let me address your second question first, which is the optics. I think right now, AI-driven layoffs or downsizing from big companies is so common. You tell that story exactly. You say, look, my org was eliminated. My whole org was eliminated. That&#8217;s a simple way of saying it&#8217;s nothing to do with me. And that&#8217;s so common now that a recruiter isn&#8217;t gonna be like, oh, you were at Google, but now you&#8217;re&#8212; or again, fill in the blank.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=8160">02:16:00</a>] Meta&#8217;s done a lot of layoffs. <a href="https://en.wikipedia.org/wiki/Amazon_(company)">Amazon</a>&#8216;s done them. All the big companies have. Saying that you were laid off from one of these big companies when your org was closed down or significantly reduced no longer has the tarnish it did. But the rest of how you prevent that from tarnishing you is you make it a quick fact and you pivot. And so you say, yeah, unfortunately my organization at Meta was eliminated, but the good news is fill in your story.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=8189">02:16:29</a>] That gives me a chance to do something new. That actually gives me a chance to bring the Meta philosophy or the Meta insights on whatever, fill in the blank, again to other companies. That gives me a chance to bring <a href="https://en.wikipedia.org/wiki/Amazon_(company)">Amazon</a>&#8216;s experience with scale to you. And so I&#8217;m actually excited. It sucks I got laid off. I admit I wasn&#8217;t looking for that, but it&#8217;s opened my eyes that there&#8217;s a chance to bring that to someone else.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=8215">02:16:55</a>] And you change the topic quickly to the future. So truth about the past, quick move on. Now, how do you avoid a layoff? First, sometimes you can&#8217;t. If they whack a whole org, you may be done. But even in most layoffs, I know top managers or executives, they try to place their key people in other orgs. So I know a leader at <a href="https://en.wikipedia.org/wiki/Amazon_(company)">Amazon</a> was shutting down a whole big org. And she had a list of her top performers.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=8251">02:17:31</a>] And she was calling other leaders and saying, &#8220;Make a space. You want to make a space for this person.&#8221; How do you get on that list? The layoff key is the decision is often not made by your manager. It&#8217;s made by your skip or a couple levels up. So you need some visibility as a top performer. Top ratings is one key. They&#8217;ll look by rating, but being known for an accomplishment, something like that Matt Round Tool that I talked about earlier, or something, a tool with your name on it, having a unique skill.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=8281">02:18:01</a>] We talked about the curmudgeon engineer that&#8217;s the only one who knows something. If you&#8217;re the only one who knows something that&#8217;s still needed, I can cut half the org, but I have to keep you because you&#8217;re the only one who knows this thing. Those are the different techniques. And again, I&#8217;m mixing technical knowledge, building tools or having unique expertise with social engineering, being known to the skip, skip and whatever.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=8307">02:18:27</a>] It&#8217;s always, every answer I give should be a combination of what I said: be good and be likable. Both are additive, maybe even multiplicative.</p><h3>02:18:39 &#8212; How to develop executive presence</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=8319">02:18:39</a>] Yeah, we talked a lot about the social engineering and kind of the negative and the politics. I do wanna talk a little bit about the positive side of soft skills as well. What is executive presence, and how do you develop it?</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=8335">02:18:55</a>] Yeah. So executive presence is very hard to define because it&#8217;s something others decide about you. They look at you and they either decide you have it or you don&#8217;t, and they&#8217;re combining a few things. So what is executive presence? I have 2 definitions. One of them is from a book and it&#8217;s academic, and it says it&#8217;s 60% gravitas, which is like the weight of your accomplishments, what you&#8217;ve done.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=8357">02:19:17</a>] It&#8217;s 30% communication skills, 10% appearance. This is from a researcher who has done all this work to figure it out. I think it&#8217;s a fine framework. The other way I look at executive presence is, are people coming to you for your opinion, particularly on things that you may not directly be involved in? Are they coming and saying, hey, Ryan, we&#8217;d love to get your take on this because you have really good insights, or we&#8217;d love to get your support on this because we know people look up to you.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=8386">02:19:46</a>] That&#8217;s the other sign of presence, is you&#8217;re being sought after even when it&#8217;s not directly your work. You&#8217;re being valued. It&#8217;s those 2 ways of looking at it that define executive presence. If you want me to really boil it down to a phrase, it is, do you command respect in a room? Do people listen to you? Do they look to you? This is a little overly political, but are they busy, like reading your gestures?</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=8421">02:20:21</a>] So if you&#8217;re talking and I pick up the phone, are they like, oh, well, we can ignore Ryan &#8216;cause Ethan is? That&#8217;s the sign of a lot of presence.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=8431">02:20:31</a>] When you framed executive presence as people wanna know your opinion, I&#8217;ve seen that where there may be someone who&#8217;s a quiet engineer, but they&#8217;ve been there a long time and they know everything, and a lot of people go to them for their opinion. So I could see that being one path to executive presence. I could also see a case where it&#8217;s not grounded in their being objectively correct all the time.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=8460">02:21:00</a>] Something about the way they stand, the way they speak, what they accept, what they don&#8217;t accept, and it&#8217;s&#8212;that&#8217;s a little harder to define.</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=8471">02:21:11</a>] I will tell you a story, which is I speak with tremendous confidence, and sometimes I can sound like the voice of God. I can sound like I am declaring truth from on the mountain. I have the tablets. And my wife, who knows me very well, she once told me, she said, Ethan, I&#8217;ve learned that you sound like you know. And so sometimes when I think something different, I don&#8217;t say anything because you sound so sure.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=8506">02:21:46</a>] And then it turns out you&#8217;re wrong. And I&#8217;m like, why didn&#8217;t I say anything? I knew we needed to turn right at the last corner, but you said, no, it&#8217;s straight. And you sounded like you knew. And I bought it. That&#8217;s my executive presence. Going too far, right? Because I think it&#8217;s straight, but I don&#8217;t know. But I&#8217;m saying, oh, I&#8217;m sure it&#8217;s straight. And she&#8217;s hearing, I&#8217;m sure it&#8217;s straight. What are those traits?</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=8530">02:22:10</a>] Well, some of them are very superficial. The number 1 and 2 are confidence and decisiveness. If you undermine yourself and say, well, I think maybe it&#8217;s straight, people are definitely going to challenge you. Whereas if you say it&#8217;s straight, the next&#8212;we don&#8217;t turn, it&#8217;s two, two lights, then a right. Very specific. Everybody&#8217;s going to buy it. One thing I do in my executive presence class, I teach a class on it, is I share the fact that stats with numbers are 62% more believable than stats without them.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=8563">02:22:43</a>] Now, the truth is I just made that up. I&#8217;ve never looked it up, but 62% sounds so specific, and I delivered it like, oh yeah, this is true. Maybe you bought it, probably you bought it, but a lot of people listening were like, really? 62%? I was just lying through my teeth, or at least embellishing, right? Specificity delivered with confidence, speaking up quickly. The list of traits are being tall and white.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=8592">02:23:12</a>] You don&#8217;t have to like it, but it&#8217;s true. They&#8217;re both like, if you look at presidential height, if you look at how many white men we&#8217;ve had as president, not just here, go around the world, go through history. These are things, okay? Doesn&#8217;t mean they&#8217;re good. It means they&#8217;re true. Deep voice. We respond better to people with deep voices, which is why when I do the voice of God, I go even lower.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=8615">02:23:35</a>] And so did all the actors who&#8217;ve ever done God. So apparently God&#8217;s a baritone. You never see a squeaky God. Another trick is speaking slowly. Usually pausing for emphasis makes you seem confident. And gestures, body language. When you said all the things that aren&#8217;t just being a great engineer who knows all the facts, it&#8217;s this feeling like your trustworthy uncle. That&#8217;s the picture, right?</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=8646">02:24:06</a>] The uncle who&#8217;s like your dad&#8217;s older brother and runs a business. He&#8217;s fun, but he&#8217;s really smart and he owns two cars and has a beautiful wife and three lovely children. It&#8217;s exuding that successful, comfortable in every situation. Another big factor is never getting flustered. They&#8217;re never out of control. They may show anger, but it&#8217;s always like this. It&#8217;s not this wild, screaming rage and spit, blowing spittle.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=8680">02:24:40</a>] It&#8217;s this lean in, like, how dare you, little one? And so it&#8217;s emotion under control. It&#8217;s, you know, if you don&#8217;t like it, I guess, or if you do like it, it&#8217;s all these ape dominance tricks. What makes the top ape in the tribe who gets the bananas? It&#8217;s just the human version of those brought into a room.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=8700">02:25:00</a>] This reminds me, there was that one CEO, Elizabeth Holmes, and she was famous for her deepened voice when she was speaking. And there are recordings of her not doing the CEO voice, and it&#8217;s different. Different. Yeah, it&#8217;s different. So I guess she picked up on that, and she&#8217;s trying to exude executive presence.</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=8726">02:25:26</a>] And she&#8217;s not the only one. Margaret Thatcher, the historic prime minister in the UK back in the &#8216;80s. I think she was the first female prime minister. I may have that wrong, but I think so. She, early in her career, was accused in the media of screeching, of being high-pitched. She said, that&#8217;ll never happen again. She systematically trained herself to speak low and slow. Basically, and this again will bother lots of people, took on a man&#8217;s voice to compete in a man&#8217;s world.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=8756">02:25:56</a>] Now, this goes down into that whole should thing again. Should she have to do that? No. Did she do that? Yes. Did it work for her and Elizabeth Holmes? Yes. So until our world changes, that&#8217;s different. And so yeah, that is one of the signs. The good news is you can be successful and have high executive presence without any one of these given traits, but you&#8217;re gonna have to have some of the others.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=8783">02:26:23</a>] So you&#8217;re either gonna have to be really good at what you do. That&#8217;s the engineering viewpoint. The example I always point to there is Warren Buffett. Warren Buffett, no one that I know of has ever said, &#8220;What a dramatic speaker, what a showman.&#8221; And yet he commands tremendous respect, tremendous executive presence. That&#8217;s your case of the engineer who&#8217;s the expert. It&#8217;s because he&#8217;s Warren Buffett and his investment track record.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=8811">02:26:51</a>] It&#8217;s not any of these other factors. We look at somebody else, Steve Jobs or Elon Musk. They are both showmen. They were very good. They may have had great ideas, but they are icons in our industry because they were also very good at all the speaking and presence. They controlled their stage presence. They did things in a very exacting way.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=8837">02:27:17</a>] Well, it&#8217;s interesting you mentioned the Elon Musk one as an example of showmanship because when I see a public speech of Steve Jobs, it&#8217;s very polished. But yeah, when Elon speaks, it doesn&#8217;t seem so much like showmanship. What are those traits in him that you&#8217;re saying are&#8212;I think the showmanship in him that works for him is he can deliver relatively outrageous claims with very 100% conviction.</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=8871">02:27:51</a>] He can make you believe that at least he believes. So if we look at the recent SpaceX IPO, he&#8217;s talking about how he&#8217;s going to build factories in space. Maybe if you start really thinking through all the things that would have to be true to make it possible to build things in space and make it useful, it&#8217;s a very long list of problems. But he says it with his total conviction. Whether he says these words or not, he&#8217;s like, nobody thought we could do electric cars.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=8905">02:28:25</a>] Check. Did that. Nobody thought I could build a private rocket company. Check. Did that. And I&#8217;m telling you, next is space factories. And he just says it in a way that it&#8217;s inevitable. The sun will come up tomorrow, water is wet, and Elon Musk will build factories in space.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=8923">02:28:43</a>] It&#8217;s&#8212;</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=8925">02:28:45</a>] I think his showmanship, whether it&#8217;s an act or not, is conveying utter conviction of ideas that are somewhere between incredibly cutting edge and total fantasy. What you think there depends on what you think of Elon. Is it one or the other, but he&#8217;s able to get out in that space and make it plausible because he&#8217;s done stuff that people didn&#8217;t believe was possible. So his essential pitch is, you didn&#8217;t believe me before and you were wrong.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=8962">02:29:22</a>] Are you gonna dare to doubt me again?</p><h3>02:29:25 &#8212; How to network in a natural way</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=8965">02:29:25</a>] Obviously it&#8217;s an asset if you&#8217;re liked, and you should build relationships at work. How do you actually go about that?</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=8975">02:29:35</a>] I think networking, there&#8217;s a recipe to do it. It&#8217;s very authentic, very effective. And that&#8217;s figure out some stuff you love, stuff you&#8217;re passionate about, stuff you would like to share with people you&#8217;re proud of, you&#8217;re interested in. Do those things or work on those things and figure out just put in a little extra effort to figure out how can I give this to other people? How can I make it available?</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=8997">02:29:57</a>] How can I package it as a tool? How can I give away my advice, give a class, give a talk? The key is to give. Take what you like doing and give it away because there are other people who don&#8217;t like that thing or don&#8217;t know about it or want to know more, and they want your help with it. So it does require that you have some sort of expertise, but it doesn&#8217;t have to be wild. It just has to be solid because there&#8217;s other people who aren&#8217;t good at that thing.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=9026">02:30:26</a>] And if you can figure out how to give away some value, so my first way of doing this at <a href="https://en.wikipedia.org/wiki/Amazon_(company)">Amazon</a> was I mentioned how I was really good at hiring. So I started teaching a class to other managers on how to hire really fast and well. Then I started teaching some other stuff, and that led to my teaching. I found other ways to give stuff away. So I started streaming on Twitch, giving away advice, and I built an audience.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=9053">02:30:53</a>] That&#8217;s all network. But it was all based on what could I give away and why was I willing to give it away. I loved it and I was good at it. It was fun for me. It wasn&#8217;t work. So I often share a story. There was a guy at <a href="https://en.wikipedia.org/wiki/Amazon_(company)">Amazon</a> who liked to ski and he was an engineer, I think, but he went to the local ski slopes and he got their bulk ski tickets. And he had a deal with them where they would ship him tickets and he would resell them internally so that people could get a ski ticket for those hills at the discount bulk price.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=9092">02:31:32</a>] Well, he just basically did it because he liked skiing, he liked helping people, and he liked to get cheap tickets himself. So it was a way for him to get bulk pricing. But through doing this, he made hundreds of connections with people who got discounts through him. It meant if he ever needed anything, he had all these people he knew, or if he called up a random person, there was a good chance, oh, you&#8217;re the ski ticket guy.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=9113">02:31:53</a>] Yeah, I&#8217;ll help you out. Why do I give this example? He wasn&#8217;t sharing anything technical. He wasn&#8217;t doing anything he didn&#8217;t want to do or even that he didn&#8217;t benefit from, but it built a network. And everyone can find some way to do that, to share something they&#8217;re interested in or love or don&#8217;t mind doing, that they&#8217;re really good at, it&#8217;s easy and fun for them, or at least not too hard, and other people appreciate it.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=9139">02:32:19</a>] What most people think of when they think of networking is we&#8217;re all standing in some room for some random purpose, and I have a cocktail, and I have to go talk to people I don&#8217;t know and be like, hi, I&#8217;m Ethan. Why are you here? Let&#8217;s find something in common so you give a shit. And that&#8217;s an introvert&#8217;s nightmare. And I get it. And it&#8217;s hard to build a relationship where there&#8217;s no shared interest.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=9168">02:32:48</a>] What works about the skiing example or anything else is the one guy liked to ski. Well, the people who were getting the tickets also liked to ski. So they immediately had something in common. Oh, are you going this weekend? How was the snow? Conversation is easy. And then once you&#8217;ve talked a little bit, it&#8217;s easy to go deeper. That&#8217;s how you build a network naturally, organically. Every engineer has some piece of technology that they know more about than the average engineer and that they&#8217;re excited to talk about.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=9202">02:33:22</a>] Talk about it. You can talk about it in recordings. You can talk about it in forums, on Reddit. It doesn&#8217;t matter where. Share value.</p><h3>02:33:30 &#8212; How to network with powerful people</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=9210">02:33:30</a>] I like this version of networking, but of course I gotta ask the dark version.</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=9214">02:33:34</a>] Of course you do.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=9216">02:33:36</a>] Which is, I stumbled upon this post and it is the basic principles of politics. And it was saying, step 1, be aware of who&#8217;s powerful and who&#8217;s not. Step 2, help the powerful people as best you can. Yeah. Step 3, make sure they know that you&#8217;re helping them. So this is a little bit of a darker, more Machiavellian framing of networking. A lot of people, let&#8217;s say they&#8217;re going for a promo, they want to think, okay, how do I make that <a href="https://en.wikipedia.org/wiki/Vice_president">VP</a> that&#8217;s making that decision like me?</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=9252">02:34:12</a>] Is there a way to do it organically that you would recommend?</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=9257">02:34:17</a>] There are ways. Let me give you a few. First, let&#8217;s take this <a href="https://en.wikipedia.org/wiki/Vice_president">VP</a>. You can take a couple shots, like, &#8220;Hey, I&#8217;ve built this thing where I get bulk ski tickets. I don&#8217;t know if you go skiing, but if you do, 375 people around the company are using it. Is it something you&#8217;d want to use?&#8221; That&#8217;s one way. It talks about something you&#8217;ve done, and maybe you&#8217;ll get lucky and they&#8217;re like, &#8220;Oh, yeah, I ski.&#8221;</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=9282">02:34:42</a>] How do I get some tickets? That&#8217;s one way. Same thing with if you&#8217;ve built a tool or you&#8217;re sharing your expertise, you can be like, hey, I built this interview tool, or fill in the blank what you did. I don&#8217;t know if it&#8217;s of use to you, but a lot of people in your org are using it, so I thought you&#8217;d want to know it existed. And that&#8217;s just a way of dropping in like, you may or may not directly value what I do, but I&#8217;ve got a line on a bunch of your people.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=9307">02:35:07</a>] And they&#8217;re really like in your dark world, powerful people always want to know who&#8217;s influencing my people. They&#8217;re like, oh, you&#8217;ve attracted attention from a third of my people. I better know you and keep an eye on you. And that keep an eye can be like, I got to watch you. But it can also be like, maybe there&#8217;s a way to use you. And so that&#8217;s a door in. But the other door is if you built a network, someone in your network knows that person.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=9337">02:35:37</a>] And so what you do is you go to one of their direct reports or whatever and say, hey, I really would like to get to know our <a href="https://en.wikipedia.org/wiki/Vice_president">VP</a>. I haven&#8217;t figured out. We don&#8217;t have any common interests I can figure out. You know them. Would you be willing to put in a good word for me or suggest that they do a skip level with me? Or can you help me get in front of them? And because you&#8217;ve built a relationship with the person in your network and you&#8217;ve helped them out with ski tickets or whatever, they&#8217;re like, yeah, I can help you out.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=9366">02:36:06</a>] Let me think about that. So I&#8217;ll give you the dumbest example that blows my mind. I do charity work for Ukrainian refugees that were driven out of Ukraine by the war, and they&#8217;re in Poland. And early in the war, I wanted to get a bunch of suitcases of medical supplies and other gear shipped from the US to Poland free on a United Airlines flight. So I went out to my network. It&#8217;s a very empathetic story.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=9395">02:36:35</a>] So I had that to my advantage. I said, oh, I want to get medical supplies to Ukraine. And I need somebody who knows people in United Airlines that can help me get 10 suitcases sent for free on this flight. I was thinking, who knows what&#8217;ll happen? I get an email back from someone in my network who says, I know the chairman of the board for United. I&#8217;m going to connect you to him in email. Now, this is using a sledgehammer to kill an ant.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=9423">02:37:03</a>] But I get this email a little bit later, I get put on email with this guy, chairman of the board for United, who&#8217;s like, hey, I hear you want to help some people displaced by the war. What do you need? And I wrote him an honest note being an executive. I&#8217;m like, dude, this is such a waste of your time. Just delegate me to someone. Here&#8217;s what I need. And he was like, it&#8217;s cool.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=9444">02:37:24</a>] I like to help people. Well, all the bags went on the airplane for free, but when the guy who was flying with them went to drop them off, the whole team from United met him with a gift basket, which is just stupid overkill. The point I&#8217;m making, though, is I had built a network, and then I needed something random, and I didn&#8217;t even ask a specific person. I just put out there into the world, I need help reaching someone in power at United.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=9476">02:37:56</a>] And I ended up with the chairman of their board. I could tell three more stories that are almost the same level of, I reached out for help and I got this overkill. You go through an intermediary who wants to help you. Here&#8217;s the key. I&#8217;ll give everyone a key. Helping people makes you feel good. So when someone in your network asks for a favor, if it&#8217;s a favor you can grant easily, you get to feel so good and it didn&#8217;t cost you anything.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=9508">02:38:28</a>] So, let&#8217;s jump to the situation of the guy who introduced me to the chairman. For him, he gets this note, he sees it on LinkedIn, he&#8217;s like, oh, he needs help, he&#8217;s doing something good, he&#8217;s helping refugees. Wow, that&#8217;s really good. If I help him do that, that means I&#8217;m really good, and I know the chairman, and he&#8217;s gonna go along with it. Wow, all I gotta do is send an email and I look like the tooth fairy.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=9539">02:38:59</a>] Now, if my friend is listening to this, I&#8217;m not saying your motivations were that base because it&#8217;s legit to be like, oh, refugees, I want to help them and I can. So it wasn&#8217;t like he was like, oh, I get to feel good. But believe me, I&#8217;m sure he did feel good. And that&#8217;s a great feeling. So the reason networking works is you&#8217;re finding someone and giving them a way to feel really good and magnanimous.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=9563">02:39:23</a>] And we all love to be able to pat ourselves on the back about what great friends we are. I&#8217;m just opening the door for you to have a chance to do that.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=9573">02:39:33</a>] When you were a <a href="https://en.wikipedia.org/wiki/Vice_president">VP</a> at <a href="https://en.wikipedia.org/wiki/Amazon_(company)">Amazon</a>, did you have people coming up to you and clearly there was an ulterior motive and they were trying to, I guess, quote unquote network? What&#8217;d you feel in those cases? What&#8217;d you do in those cases?</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=9588">02:39:48</a>] So I&#8217;ve already shown you I&#8217;m very blunt. I had engineers three levels below me or four levels. I had big organizations. So way down the org, they&#8217;d come to me and be like, hey, can you mentor me? Or can I have a monthly one-on-one with you? And I&#8217;d be like, so I have absolutely no time for this. I have no time to put you on my calendar, but here&#8217;s the deal. I&#8217;m gonna give you one meeting.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=9611">02:40:11</a>] You&#8217;re gonna bring me something really interesting I don&#8217;t know. And you&#8217;re going to bring me value in that meeting. And if you do, we&#8217;ll have another one. That&#8217;s your shot. Go do it. That&#8217;s&#8212; and if they wanted something, I would just tell them like, what&#8217;s the price? I&#8217;ve said, bring value. Okay. I will do what you want. Surprisingly, I will say yes. But what are you going to show me? Make it interesting.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=9637">02:40:37</a>] And that was actually my challenge to them often, which is, my job&#8217;s kind of boring. It&#8217;s a lot of meetings, a lot of pushing paper around. Bring me something interesting. If you can keep my interest, we&#8217;ll keep meeting. As soon as you become boring, well, it was more of a chance than sorry, I&#8217;m too busy, right? So a lot of people were good at it, and some of them never came back, and I&#8217;m okay with that.</p><h3>02:41:01 &#8212; How to learn hidden incentives</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=9661">02:41:01</a>] Most people I feel like are not as direct with their incentives. And so in those cases, how do you find the things that people want or what their goals are, how you can help them? In a way that can make some win-win interpersonal dynamics?</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=9677">02:41:17</a>] So I think you want to build a trusting relationship so you can have more of that talk, even if you can&#8217;t use as blunt a language. But before you do that, or as you do that, I think there are four ways to figure out what people want. One is to directly ask them. We&#8217;ve kind of talked about that. The second is listen to what they&#8217;re saying. What are they talking about in their all-hands? What are they talking about in the staff meeting, whatever?</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=9702">02:41:42</a>] What are they saying are the problems? What are they saying are the goals? Because those are&#8212;they&#8217;re talking about the things they want and don&#8217;t want. The third way is ask their direct reports, ask others in the organization who know them or have a relationship with them. This is called triangulation. Rather than asking them directly, you go out and you cross over and you see what this person says they think they want and this person, and you figure out, okay, what are they telling others, even if it&#8217;s only little bits, or what are others inferring?</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=9737">02:42:17</a>] So you triangulate. The last way is observing them. Actions speak louder than words. Where are they putting their money? Where are they putting their time? Where are they hiring? Where are they spending their time in meetings? Their actions are going to show what matters to them. So four ways: ask, listen, triangulate, observe. Those are the four ways to figure out what they want. And then, more or less, those are the same paths to start going at them and adding value.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=9770">02:42:50</a>] You start moving towards the things they value and then finding ways to come to their attention, or whether you send it up through friends or you send it up through a status report, or when you bump into them in the hallway, you find different ways to showcase that you&#8217;re working on the things they value and asking how you can help. And again, this is less direct than the Ethan, let&#8217;s make a deal kind of way.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=9804">02:43:24</a>] And some people are even bothered by that idea that I&#8217;d say, let&#8217;s make a deal. That door was open to everyone. Make a deal with me where you deliver more value and I will find a way to help you move you up. That&#8217;s a fair deal. It is the corporate deal. The more valuable you are, the more I can pay you. So bring more value, I&#8217;ll give more value. Fair deal. And therefore, I don&#8217;t think dealmaking is bad.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=9825">02:43:45</a>] It&#8217;s just explicit. But for the people who aren&#8217;t so transparent or transactional, they do still have all the same goals and motives at some level, which is progress. You just have to find a way to do it in their style. And their style is less explicit, more implicit. You&#8217;re going to have to tolerate more ambiguity because if you&#8217;d like to have that clear statement of you do these three things and I will do my best to get you promoted next cycle, you&#8217;re not going to get that from them.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=9856">02:44:16</a>] So you&#8217;re going to have to be like, well, I can see who they&#8217;re promoting and what they&#8217;re valuing. I&#8217;m going to do those things and trust. You&#8217;re going to have to weather more ambiguity. I have found that if you build a relationship with people, most people, they may never be willing to be transactional or explicit with everyone, but they will do it with you inside the confines of that built personal relationship.</p><h3>02:44:43 &#8212; What happens behind the scenes with HR</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=9883">02:44:43</a>] When I was working at Meta, when someone&#8217;s underperforming and then they get managed out, it&#8217;s more clear even if no one says anything. But there were cases where someone came to work on Friday and then on Monday they were gone, and there was no clear evidence of why they would disappear. So in those cases, it felt like there was some secret HR thing that had happened. And at the time I was just a software engineer, and I just thought, okay, I don&#8217;t know what just happened to that person, but they&#8217;re gone.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=9916">02:45:16</a>] And it was not performance because I had worked with them. As a <a href="https://en.wikipedia.org/wiki/Vice_president">VP</a>, I imagine you knew a lot of the things that happened. And so in those cases where people just disappear suddenly, what is it that goes on behind the scenes at the HR team?</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=9933">02:45:33</a>] Well, I mean, a lot of those so-called disappearances, they&#8217;re the case where someone did something, frankly, that put the company at some kind of risk. So they&#8217;re usually the bad things. Racism, theft, embezzlement, sexual harassment. I will tell a story. I know someone, they had a strong political opinion on a topic and the company was doing something they saw as inconsistent with that. And they leaked an internal memo to a reporter, and then they got caught.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=9966">02:46:06</a>] They didn&#8217;t think enough about how the company&#8217;s IT systems worked. And they left a paper trail. And after the news report came out that obviously the reporter had had access to information, the company tracked it back down to them and they were gone. I actually, now that I think about it, I saw several people fired for leaks. So a case that you might not think of that gets people broomed that isn&#8217;t like interpersonally gross, like a sexual harassment thing, is stuff like that.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=10004">02:46:44</a>] Leaks, sharing competitive information. Sometimes they&#8217;re just dumb. Another story I tell, we didn&#8217;t end up firing this guy, but we very easily could have and no one would have blinked. At one point I ran a video game team, and that team made violent shooter games. One of our artists one day brought in his actual real firearm collection, spread it all over his desk. And when other people walked in, his desk was covered with guns.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=10030">02:47:10</a>] He was totally innocent. He was making up new weapons, and he wanted his guns as models and inspiration. And it never clicked with him how having a desk full of guns in a California office might wig some people out. Now, if we&#8217;d have just been like, guns in the office, done, nobody would have said a thing. We figured out, okay, there&#8217;s a difference between thoughtless and actually planning on murdering your teammates.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=10059">02:47:39</a>] So we&#8217;re just gonna send you home with all your stuff and tell you please never do that again. But that could have been gone. So people make the dumbest&#8212;the stuff that happens you would never believe. One time I came back to my office from a business trip to visit another office. My female executive assistant and one of my female employees greeted me at the office door and said, we got to tell you what happened while you were gone.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=10091">02:48:11</a>] And every alarm bell for a manager at this point is going off. It&#8217;s where, it&#8217;s <a href="https://en.wikipedia.org/wiki/Amazon_(company)">Amazon</a>, so it&#8217;s mostly male. I have a female leader and my EA, who are both women, saying they have to tell me what happened. I know it&#8217;s going to be bad. Well, what had actually happened was so unbelievable. What had happened was my employee came in, the leader, and found a pile &#8212; we had dogs in our office.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=10118">02:48:38</a>] We had a pet policy, right? You could have dogs. She found a pile of poo under her desk and she&#8217;s like, gross. So she calls the building maintenance, like, dog had an accident. The woman gets there to clean it up and says, This is not dog poo. So they call security, like, there&#8217;s human poop under the desk. And so security is pretty smart. They ask her, like, has anybody been showing unusual attention to you?</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=10144">02:49:04</a>] You know, blah, blah, blah. And she&#8217;s like, well, now that you mention it, there&#8217;s this one janitor and he seems to hang out and whatever. So they go grab this janitor and they quiz him like security does. Well, he cops to it. And this was his way of showing&#8212; obviously he was not normal the way we did. It was his way of showing interest was he had&#8212; but when I say you wouldn&#8217;t believe what goes on, of course he was fired and given a restraining order to go with it.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=10177">02:49:37</a>] Like, you can&#8217;t come near the building again or her. But when I say you wouldn&#8217;t believe &#8212; &#8216;cause when I tell these stories, people bringing guns in, like, &#8220;Oh yeah, it&#8217;ll be fine if I just spread them out all over my cube,&#8221; or &#8220;I&#8217;m gonna show my affection or interest by&#8221; &#8212; you wonder what were they thinking? And the answer is they weren&#8217;t thinking in a normal way. People both do things that are unethical and they&#8217;re very intentional, but they also do some stuff that later you&#8217;re just like, wow.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=10211">02:50:11</a>] That&#8217;s why those people disappear.</p><h3>02:50:13 &#8212; Did he burn people to get ahead</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=10213">02:50:13</a>] We&#8217;ve talked about gray areas all throughout this conversation, and you mentioned this situation. I think you said it was like Joe Blow that gets the F or whatever. Yeah, this other person gets the A. There&#8217;s this implicit framing of one person&#8217;s gonna get ahead and one person&#8217;s gonna get put behind. And so in your career, were there ever cases where you had to burn someone to get ahead?</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=10243">02:50:43</a>] I would love to say no to that. I&#8217;m cautious to say no because of rationalization. There are definitely places where I competed with people. There were definitely places where I was trying to make sure I looked better than others. I&#8217;d like to say that was always me doing superior work. Is there ever a case where I targeted someone to burn them down? I don&#8217;t think so. I think there were definitely places where I did everything I could to make sure I came out ahead.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=10277">02:51:17</a>] I think one of the cases I feel worst about wasn&#8217;t anything I explicitly did to someone on purpose, but when I first joined <a href="https://en.wikipedia.org/wiki/Amazon_(company)">Amazon</a>, and when I mean first, I mean the first week. I had been hired without being told what my job would be. It was a secret project, and all they would tell me was the general area, but I couldn&#8217;t know what the project was, and I had to accept. So I got there and I went to my boss and I said, hey, I&#8217;m here now.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=10304">02:51:44</a>] What the hell am I doing? And he said, well, we have 2 jobs open. One of them is building our next video product, our first video product. And the other one is building the ingestion systems that will be used to ingest the video and also will support our music project and our books project, what became Kindle. Which one do you want? Well, I&#8217;m an end-user guy. So I&#8217;m like, I want to build the end-user thing.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=10334">02:52:14</a>] I&#8217;m not an infrastructure person. I want to build the video product. He&#8217;s like, great, done. What I had no idea, another manager started the next Monday, and they had apparently told him he could build video, and he got the infrastructure project. He joined for the job I had asked for. I had no idea, but the result of my action was he got put in a job he didn&#8217;t want. And I think it sucked for him.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=10361">02:52:41</a>] That&#8217;s the closest I can think of to where something I did really screwed someone else in a, and that lasted, that was his job for the next 2 years. Now, the other thing, if I had been told, well, there&#8217;s 2 people, I would&#8217;ve still fought for that job. I&#8217;d have still said, can&#8217;t I have it? I&#8217;m good at that. I have history in that. Why didn&#8217;t you pick me? So I would&#8217;ve still fought for it.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=10391">02:53:11</a>] But it would&#8217;ve been because I wanted that job, not to screw him, but it had that side effect even though I didn&#8217;t know in that case. But I would&#8217;ve pushed for it, sure, because I want to do what I want to do just like everybody else.</p><h3>02:53:24 &#8212; What he says to people who hate politics</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=10404">02:53:24</a>] When we make these videos, it&#8217;s very polarizing because there&#8217;s a big group of people who say, thank you for saying it as it is. This is so helpful, and I&#8217;m going to be aware of this and use some of these tips in their career, and this is how the game works. And then there&#8217;s a group of people that don&#8217;t engage with the content fully. They just hear something that they don&#8217;t like on a moral level almost.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=10427">02:53:47</a>] They hear, &#8220;Oh, how could you think that? How could you say that?&#8221; And what would you say to those people that say the premise of all this stuff, the premise of the game, is distasteful? It&#8217;s not something they even want to believe, for instance.</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=10444">02:54:04</a>] Yeah, so I have a good friend who takes exactly that viewpoint. And we argue all the time. And the premise is this game sucks and no one should have to play it. And the fact you&#8217;re talking about how to play it means you&#8217;ve already bought into the evil side. What I would say is this game is real, and I wish it wasn&#8217;t real in some ways. I wish we could all be judged on our intentions and on our merit, and we were all seen, you know, we all had unlimited opportunity and we were all rewarded for what we really did.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=10480">02:54:40</a>] I wish those things were true, but I don&#8217;t know how to make them true. So what I say is I try to make them as true as possible for people working with me and around me. That&#8217;s why I&#8217;m so transparent, not only with you. I was pretty transparent at <a href="https://en.wikipedia.org/wiki/Amazon_(company)">Amazon</a>, and I made deals, and I did everything I could to keep them. And I&#8217;ve been honest about, I still regret 20 years later, this one guy I let down. It still bothers me.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=10510">02:55:10</a>] But humans, human society is full of nasty people. And it&#8217;s also full of limited resources and competition. And I think this is reality. And so I get that all the time. I hear people are bothered by the reality, and they want me to make the world just. I don&#8217;t know how to do that. I know how to work towards it, but that&#8217;s going to take well beyond my life or your life. And we see that because if we look at all the nasty things that happened in history, like slavery or oppression or limitations on women&#8217;s rights, I dismiss none of those.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=10549">02:55:49</a>] But they&#8217;ve been ongoing battles for a century or more. They&#8217;re not going to be solved this year or next year. So I coach women all the time how to get ahead in a biased world. Does that mean I support bias against women? Absolutely not. But I can&#8217;t fix that this year, and those people have to try and move their career ahead this year. So what I would say to the people who dislike it is I am trying to deal with what&#8217;s going to happen this year while also working on rights.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=10578">02:56:18</a>] I think people can throw stones at me, but when I talk about, I started a charity in Poland to help refugees from Ukraine, it&#8217;s not like I don&#8217;t believe in causes and I&#8217;m not willing to tilt against windmills and try and right injustice. That&#8217;s my particular cause. You may wish I worked on your particular cause, but if you just objectively say, does this guy try and do good? I do. But I also have to deal with what is reality today?</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=10606">02:56:46</a>] Moral situation. I made a friend who&#8217;s Ukrainian. Her husband voluntarily joined the army in Ukraine. He served 2 years. He wanted to get out after 2 years of volunteer. Ukrainians need soldiers. They wouldn&#8217;t let him out. He was going to be sent to the front in a place where he would likely die. We knew that he could be bribed out of the army. It was relatively little money. It&#8217;s about $1,000.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=10635">02:57:15</a>] So a friend of mine and I gave his wife $1,000, and she went in and bribed her husband out of the Ukrainian army. Probably some other dude we don&#8217;t know died in his place. So American wealth, because we knew this woman, saved this guy&#8217;s life, killed this other guy. It&#8217;s very real. And I am completely okay with it because I know her and she&#8217;s my friend. I didn&#8217;t want to kill the other guy. Maybe I didn&#8217;t.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=10659">02:57:39</a>] I get to have plausible deniability. Maybe it&#8217;s all happy. Nobody died. But I deal in that reality. She was important to me and I could help her. He had served some time. He had done some duty for his country. I was okay letting him out. Right decision or not? I don&#8217;t know. Like me or don&#8217;t. I&#8217;m okay with my decision. Same thing as all the corporate politics. I teach people how to deal with the world that is.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=10690">02:58:10</a>] The world that is was he&#8217;d served some time, and probably he was going to die, and this woman I cared about was going to be hurt, and it was going to cost me relatively no money to save his life. I was okay with that. There are 50 ways you can say that was an evil decision of mine. There are also 50 ways you can say, wow, you did something remarkable for that woman, and you&#8217;re trying to help other people there.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=10718">02:58:38</a>] So here&#8217;s the thing I think about some of the critics. They have an ideal in mind. It&#8217;s a great ideal. I support their ideal, but you got to understand it&#8217;s an ideal that we&#8217;re far from. And just because I deal with reality today does not mean I think your ideal is wrong. I&#8217;m just trying to also live today and help other people do that.</p><h3>02:59:03 &#8212; Top book recommendations on power dynamics</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=10743">02:59:03</a>] I polled people on Instagram, and one common question people were asking is, do you have any book recommendations on power dynamics or people or these kinds of topics that we discussed that you&#8217;d recommend to people?</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=10760">02:59:20</a>] I have several. So my all-time favorite book on this is called Leadership and Self-Deception by the Arbinger Institute. It&#8217;s a book that explains how we sometimes treat other people as objects without meaning to. But if we objectify people, which means we treat them as a roadblock, how do I press the right buttons to get the response I want? That doesn&#8217;t usually get a good reaction because they feel manipulated.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=10788">02:59:48</a>] But if you treat them as a human and, hey, I know this is hard for you, I know you&#8217;re busy, how can we make this work? Here&#8217;s what I need. And with warmth, they&#8217;re more willing to help because people seen as humans will treat you back as a human. That&#8217;s that book. Second book is Chris Voss, Never Split the Difference. That&#8217;s all about negotiation and about understanding how human motivation works.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=10813">03:00:13</a>] All of this is human psychology. So all of these things are human psychology. The third book, even though I hate to recommend it for all your interest in dark side, is The 48 Laws of Power. It&#8217;s a very thorough catalog of the dark ways people think and manipulative tricks. You can either become that person who manipulates or you can at least become aware of how psychology can be pulled on and see some of it, and it will open your eyes for better or worse.</p><h3>03:00:45 &#8212; How he would speedrun career growth today</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=10845">03:00:45</a>] In video gaming, there&#8217;s this premise of speedrunning, and this is basically trying to get through a game as quickly as possible.</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=10853">03:00:53</a>] I worked at Twitch. I know speedrunning.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=10856">03:00:56</a>] Imagine you&#8217;re playing the game speedrunning, any%, you&#8217;re trying to just get to a <a href="https://en.wikipedia.org/wiki/Vice_president">VP</a> level and you start at the beginning. At <a href="https://en.wikipedia.org/wiki/Amazon_(company)">Amazon</a>, what would you do? What might you change today?</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=10871">03:01:11</a>] Yeah, so first thing is I would not be planning on getting a <a href="https://en.wikipedia.org/wiki/Vice_president">VP</a> at <a href="https://en.wikipedia.org/wiki/Amazon_(company)">Amazon</a>. That&#8217;s not gonna be a speedrun at this point. And the reason is the company&#8217;s not growing the way it was. It grew while I was there, grew 100-fold. That meant endless opportunity. It&#8217;s not true anymore because it&#8217;s not got the growth. So what I would do if I was at <a href="https://en.wikipedia.org/wiki/Amazon_(company)">Amazon</a> today is I would say, how can I suck as much information and technique out of this company in 18 to 24 months to get more skilled, and then I&#8217;m going to have to go somewhere that&#8217;s high growth.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=10903">03:01:43</a>] And so I&#8217;m going to try to become an expert in a skill that will get me bought externally, which probably means AWS. It could mean a few other things, but I&#8217;m going to try and become enough of an AWS expert that someone who needs AWS knowledge will hire me in at a higher level in a high-growth place. And then I&#8217;m going to go find a high-growth place that wants to use cloud computing. Hopefully the stuff I&#8217;ve been working on, and I&#8217;m going to pitch to them, bring me in and I&#8217;m going to be your solution to adopting this fast, well, and cheaply.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=10939">03:02:19</a>] Then I&#8217;m going to deliver on that and talk to them about, okay, how do I move? That&#8217;s where I&#8217;m then going to run this. How do I move up? I want to grow in this way. I want to lead. Now, the next thing you&#8217;re going to need to do is speedrun. You&#8217;re going to need some management skill if you want to be a <a href="https://en.wikipedia.org/wiki/Vice_president">VP</a>. You&#8217;ve got to be good at the job. You&#8217;re not trained in that. So you&#8217;re going to have to start studying the psychology, the organization, the risk-taking, the decision-making.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=10962">03:02:42</a>] The next thing I will say is favor gambling, favor taking risks. You&#8217;ll probably move up faster by shooting for big wins and missing a few because you can always&#8212; unfortunately or fortunately, you can always leave behind the smoking ruins of your disaster at one company and try again somewhere else. And eventually, if you take enough big swings, you will hit one. So I&#8217;m going to use a baseball analogy from the book Moneyball.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=10994">03:03:14</a>] You can either bat for on-base percentage, and I want to swing to get a safe trip to first base. And that&#8217;s actually easier than trying to hit a home run. But if what you want is the home run, you got to swing hard and wild. A little bit, and you&#8217;ll strike out more, but you&#8217;ll get a few home runs. And that&#8217;s actually what makes you famous. Nobody cares that you got on base. They like to see the ball fly over the wall.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=11018">03:03:38</a>] So that&#8217;s&#8212;I would leave <a href="https://en.wikipedia.org/wiki/Amazon_(company)">Amazon</a> with my expertise, with the <a href="https://en.wikipedia.org/wiki/Amazon_(company)">Amazon</a> name on my resume, go somewhere high growth and start giving them value, asking for advancement, and taking risks. If I succeeded, I&#8217;d move up. If I didn&#8217;t, I&#8217;d hop again. And that would be my way. When I found a high-growth place where I was succeeding and moving up, I&#8217;d then ride that. That would be the end of my speedrun, but that might be the 3rd or 4th company.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=11049">03:04:09</a>] There was a time, I know many people who went from entry-level at <a href="https://en.wikipedia.org/wiki/Amazon_(company)">Amazon</a> to <a href="https://en.wikipedia.org/wiki/Vice_president">VP</a>. They&#8217;re VPs today, but I don&#8217;t think that&#8217;s repeatable without 35. There is no speedrun of that today. There&#8217;s like a slug run. I don&#8217;t know what the opposite of a speedrun is, but it&#8217;s very slow. And that&#8217;s what a playthrough&#8212; what&#8217;s the playthrough where you complete every quest? It&#8217;s that one.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=11074">03:04:34</a>] And it&#8217;s slow as shit. And that&#8217;s what&#8217;s left. And it&#8217;s because a company that grew from 14,000 employees when I joined to 1.4 million when I left is now still more or less 1.4 million. The opportunity is not there. And the same as you were at Meta. Meta used to grow like crazy. Now it&#8217;s shrinking. I&#8217;m sure many careers were made at Meta, but I don&#8217;t think they&#8217;re being made the same way now.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=11101">03:05:01</a>] What you did at Meta, because I know you had a lot of success there, I don&#8217;t even know&#8212; do you believe that&#8217;s repeatable at Meta today, this moment?</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=11112">03:05:12</a>] Maybe through the early engineering levels, but not at the higher levels where the business case matters more, I would say.</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=11119">03:05:19</a>] Right. So that&#8217;s why to <a href="https://en.wikipedia.org/wiki/Vice_president">VP</a>, it&#8217;s not possible. You totally could stay at <a href="https://en.wikipedia.org/wiki/Amazon_(company)">Amazon</a> to go L4, which is the entry level, to L5, maybe L6, but from there it&#8217;s out.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=11131">03:05:31</a>] Go out somewhere that&#8217;s gonna be faster because other people are gonna value that expertise way higher than <a href="https://en.wikipedia.org/wiki/Amazon_(company)">Amazon</a> does.</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=11138">03:05:38</a>] One thing I&#8217;d say about <a href="https://en.wikipedia.org/wiki/Amazon_(company)">Amazon</a> that makes this interesting, interesting answer. They have 50,000 L4s or whatever, 30,000. I don&#8217;t know the number. They have 50,000 L5s. That means you&#8217;re just a number. You can go somewhere where you&#8217;re the only AWS native engineer. That is turning being one of 50,000 L5s into leverage in another company. It actually drives <a href="https://en.wikipedia.org/wiki/Amazon_(company)">Amazon</a> nuts because they can&#8217;t afford to pay all 50,000 L5s what each one is individually worth to externals.</p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=11176">03:06:16</a>] So they&#8217;re always getting snapped up by companies who are like, having that person in here is going to save us a ton on our bill and our implementation time. So they&#8217;re worth $300,000 to us, but <a href="https://en.wikipedia.org/wiki/Amazon_(company)">Amazon</a>&#8216;s only paying them $200,000. Buy them out.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=11191">03:06:31</a>] Thank you so much for your time and your transparency. For people who want to find more of what you&#8217;re doing, where can they find you?</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=11199">03:06:39</a>] Two places. ethanevans.com is my website. It links to everything else. Or find me on LinkedIn. I&#8217;m <a href="https://en.wikipedia.org/wiki/Ethan_Evans">Ethan Evans</a> there. You&#8217;ll find me in a heartbeat.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=11208">03:06:48</a>] Awesome. Well, thank you so much for your time, Ethan. I really appreciate it.</p><p><strong>Ethan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=KhjhRRz3VJw&amp;t=11210">03:06:50</a>] Thank you, Ryan. It&#8217;s always a pleasure. I know you have an endless list of questions, so someday we&#8217;ll continue.</p>]]></content:encoded></item><item><title><![CDATA[OpenAI & Meta Distinguished Eng (IC9): The Psychology Behind Tech Career Peaks | Philip Su]]></title><description><![CDATA[Philip Su grew quickly to a Distinguished Engineer at Facebook and OpenAI. We discussed the psychology of peaking in your career.]]></description><link>https://www.developing.dev/p/openai-and-meta-distinguished-eng</link><guid isPermaLink="false">https://www.developing.dev/p/openai-and-meta-distinguished-eng</guid><dc:creator><![CDATA[Ryan Peterman]]></dc:creator><pubDate>Mon, 21 Sep 2026 13:06:43 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/215756569/97eb3b019c5d281eb63dd5b8dcde5e1e.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p><a href="https://www.linkedin.com/in/suphilip/">Philip Su</a> grew quickly to a Distinguished Engineer at Facebook and OpenAI. We talked about the psychology behind peaking in a tech career and the pressure at the highest levels.</p><p>Check out the episode wherever you get your podcasts: <a href="https://www.youtube.com/watch?v=RMo04pSSiao">YouTube</a>, <a href="https://open.spotify.com/episode/3UfHNC1sCQIwV3mZ1qSUY6">Spotify</a>, <a href="https://podcasts.apple.com/us/podcast/the-peterman-pod/id1777363835">Apple Podcasts</a>.</p><div id="youtube2-RMo04pSSiao" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;RMo04pSSiao&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/RMo04pSSiao?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h1>Timestamps</h1><p><a href="https://www.developing.dev/i/215756569/0037-growth-past-ic9">00:37 - Growth past IC9</a></p><p><a href="https://www.developing.dev/i/215756569/0539-motivation-changes-over-his-career">05:39 - Motivation changes over his career</a></p><p><a href="https://www.developing.dev/i/215756569/1136-asking-to-not-be-promoted">11:36 - Asking to not be promoted</a></p><p><a href="https://www.developing.dev/i/215756569/1733-what-made-it-hard-to-sustain-ic9-performance">17:33 - What made it hard to sustain IC9 performance</a></p><p><a href="https://www.developing.dev/i/215756569/2222-what-motivated-him-outside-of-promos">22:22 - What motivated him outside of promos</a></p><p><a href="https://www.developing.dev/i/215756569/2621-is-career-advice-useless">26:21 - Is career advice useless</a></p><p><a href="https://www.developing.dev/i/215756569/2934-motivation-after-youve-hit-fire">29:34 - Motivation after you&#8217;ve hit FIRE</a></p><p><a href="https://www.developing.dev/i/215756569/3608-meaning-and-fulfillment">36:08 - Meaning and fulfillment</a></p><p><a href="https://www.developing.dev/i/215756569/3817-top-book-recommendation">38:17 - Top book recommendation</a></p><p><a href="https://www.developing.dev/i/215756569/4014-what-he-would-change">40:14 - What he would change</a></p><h1>Transcript</h1><h3>00:37 &#8212; Growth past IC9</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=37">00:37</a>] Last time we talked, I focused almost entirely on, you got to a distinguished engineering level. You grew very quickly. How&#8217;d you do it? And this time I wanted to focus more on what happens when you hit your terminal level. Or what I mean is there&#8217;s this idea of a career asymptote, which is no one can grow forever. And at some point, you&#8217;re going to get to a level where you can&#8217;t go any further, and you may have 20, 30 years left in the career.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=75">01:15</a>] So what I wanted to ask you is, when you got promoted to IC9 or distinguished engineer, which is crazy high, that&#8217;s like four levels higher than a senior engineer, what was your immediate thought? Were you thinking, &#8220;I want to go to IC10? Does that exist?&#8221; Or are you thinking something entirely different?</p><p><strong>Philip:</strong></p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=96">01:36</a>] Yeah, I honestly didn&#8217;t think about it when I was earlier in my career. I really just assumed that, oh, yeah, you go for a promotion and once every few years you get promoted. And I never once thought, there&#8217;s gotta be an end to this, right? Like everybody, there&#8217;s gotta be an end, right? And I think many people might not think that through, right? And so for me, it took many years before I figured out.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=119">01:59</a>] Even at seven, for instance, I felt like, oh, hey, things have got to slow down. Because it gets harder and harder. The amount of scope that you need becomes tougher. The number of roles that offer the opportunity actually gets smaller because the organization also needs that scope of work, right? So, for instance, at <a href="https://en.wikipedia.org/wiki/Microsoft">Microsoft</a>, oftentimes when they reorganize, they figure out, hey, your organization should at most have four partners.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=145">02:25</a>] And that&#8217;s just a budgetary sort of thing. That&#8217;s a business opportunity thing. So you need the opportunity as well. And so when I was growing to IC9, I think I just didn&#8217;t think of going any further as realistic. I was at <a href="https://en.wikipedia.org/wiki/Facebook">Facebook</a> when they first created level nine, right? And I remember that three level eights were promoted into nine. And at that point, those three level eights were all universally loved and known throughout the company as obviously super senior technical people.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=177">02:57</a>] And to me, that felt unreachable. If I&#8217;m honest, when I think about those folks and the type of work they were doing, that really felt out of reach for me. So I think definitely by the time I got to IC8 or IC9, it really felt like the end is near.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=192">03:12</a>] Well, a lot of people might feel that sooner in their career, too. What kept you pushing past the staff level or the senior staff level? 6, 7, 8, 9.</p><p><strong>Philip:</strong></p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=204">03:24</a>] When I got all the way through to 7, I think, which was at my 12 years at <a href="https://en.wikipedia.org/wiki/Microsoft">Microsoft</a>, right. I was really personally ambitious for level growth. And I think the reason was, in school, I loved tests. I loved grades because I was good at grades and tests. When I started professional work, there was nothing quantifiable. It wasn&#8217;t like once every two months you got a test that told you you were doing well.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=228">03:48</a>] So for me, promotions became one of the very few quantifiable things, right? It&#8217;s sort of like, well, how much money do I make? And there are so few things that are actually numbers, right? So to me, a level was almost like an achievement number. And so throughout my 20s and my early 30s, I was really ambitious to get through all the way to level seven. But I think starting there, I just realized the nature of the work changes with every additional level that you go into.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=257">04:17</a>] I wasn&#8217;t sure that I would like the end of work, first of all. And then the other is I felt things slowing down rightfully, because everybody has a talent limit, right? So for me, as I approached that, I just began to feel like I was no longer ambitious for the further growth. So I would say my growth into 8 and 9, neither of those were things that I was seeking myself. I was, by that point, doing the work I found interesting and trying to do a better job of it, as opposed to.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=286">04:46</a>] I would characterize my time, especially in my 20s, as mostly focused on how do I grow to the next level. Tell me what I need to do, that sort of thing. By the time I went from 7 to 8, getting to 8 was honestly a surprise for me at <a href="https://en.wikipedia.org/wiki/Facebook">Facebook</a>, because getting to 8 was the first time I learned that there were levels at <a href="https://en.wikipedia.org/wiki/Facebook">Facebook</a>. When I joined <a href="https://en.wikipedia.org/wiki/Facebook">Facebook</a>, it was 500 engineers, right? Everybody was focused on the work itself and did not worry about careers and stuff, which I think is normal for small companies.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=315">05:15</a>] When you&#8217;re on a big mission, you&#8217;re just trying to get the mission done. So I didn&#8217;t even learn I had a level until my boss, who was Boz, said, &#8220;Hey, congratulations, you&#8217;ve been promoted to level eight.&#8221; And I was like, &#8220;What? There&#8217;s a level here? That&#8217;s kind of amazing. Thank you.&#8221; So I think I stopped focusing on the level itself, and my promotions became more a consequence of the work that was being done.</p><h3>05:39 &#8212; Motivation changes over his career</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=339">05:39</a>] Early in your career, it sounds like you were constantly maybe harping your manager and saying, how can I get promoted? What&#8217;s the next thing? And later you transitioned into doing meaningful work and getting promoted as a byproduct. What was it that changed in your mind where you went from that mentality to promos don&#8217;t matter anymore?</p><p><strong>Philip:</strong></p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=362">06:02</a>] Yeah. I think there were two things that come to mind. One was that the thrill of the promotion itself was no longer the same as when I was younger. So I think when I was younger, because I sought after those grades, those measurable metrics, I very much felt great every time I got promoted. This was wonderful, right? I think as I got promoted even into level seven, I started to honestly become a little bit.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=387">06:27</a>] Not ambivalent about it, but I guess it wasn&#8217;t all roses to me anymore, the idea of getting promoted, because I realized that each promotion also came with much higher expectations. Expectations that I was no longer positive that I was going to deliver. When I went from a four to a five, I was confident that I could do this work. It&#8217;ll be great, right? And when I got to seven, I felt like.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=412">06:52</a>] Like this is pretty much nearing the boundary of my capability. And so I felt a lot more comfortable saying, hey, if they keep me here perpetually, it is still work I enjoy a lot. I think the second thing that really changed for me is realizing also that asymptote, right. Realizing that, you know what? Maybe this ultimately is my final level. I was so humbled many years ago when I had this lifelong mentor throughout much of my adult life that was one of my best managers at <a href="https://en.wikipedia.org/wiki/Microsoft">Microsoft</a>.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=446">07:26</a>] And I recently, just in the last few years, thought, you know, there was this one conversation where he promoted me into level seven. And I said to him, &#8220;That&#8217;s great. Thank you. Let&#8217;s talk about how to get to eight, right?&#8221; And his first response to me was like, &#8220;Philip, can we just take at least one one-on-one to celebrate the fact that you&#8217;ve actually reached this tremendous level at <a href="https://en.wikipedia.org/wiki/Microsoft">Microsoft</a>?&#8221;</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=466">07:46</a>] And I honestly felt like, no, we can&#8217;t. I&#8217;ve got to keep going. But years later, I realized he himself was probably 15 years more in industry than I was at the time. And he himself, in hindsight, had to be a level seven. He was not a partner at <a href="https://en.wikipedia.org/wiki/Microsoft">Microsoft</a>. And so for me to come across sort of so naively without considering, for instance, his feelings or considering just realistically, this is a guy I look up to a lot, and he&#8217;s giving me mentoring advice all the time.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=495">08:15</a>] And he himself is level seven. And so for me to be pushing so hard, I think just the humility of realizing that people do tremendous work at those levels, and I should just appreciate that if I can even keep up with the expectations, that&#8217;s already kind of a big accomplishment.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=513">08:33</a>] If I were to think from when I was at my youngest, the beginning of my career, my thought would have been keep pushing. And the thoughts that you just said are noble, but let&#8217;s go to eight. Let&#8217;s go. Yes, this person&#8217;s at that level, but I want more. I want more. What calmed the, I guess, the crazy energy of I want more, even if it&#8217;s not realistic?</p><p><strong>Philip:</strong></p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=544">09:04</a>] I think some of it might be as simple as age, to be honest. And I think society is designed to work this way, right? Like young people go to war, right, traditionally. And there needs to be this ambition of, I&#8217;m going to build great things, I&#8217;m going to do great things. I think that energy from the young is super powerful. And I definitely don&#8217;t want to sit here and say, let&#8217;s quell all of that.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=565">09:25</a>] Like, let&#8217;s make sure when a person is 23 and they start work, they&#8217;re like, E3 is fine, right? So I definitely want people to have that ambition. I think maybe some of it is the natural aging process, but I do think, at least for myself, a lot of it was the shifting nature of the job itself. I would say for me, up until, let&#8217;s say, an IC6 level of work, it just felt like doing the same stuff, but grander, if that makes sense.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=593">09:53</a>] You&#8217;re still coding all day. You&#8217;re meeting with engineers primarily and product managers, sometimes designers, but it&#8217;s just about doing it at a much higher amplitude. I&#8217;m now gonna do much bigger refactors. I&#8217;m gonna participate in longer-range projects. Oh, we should do this new service that does X. But I think beyond that the nature really changes to where just doing more better is typically not how people get there.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=619">10:19</a>] You will find very rare cases, for instance, where people can do more better, but they are preternaturally gifted for super fast coding or whatever. I was definitely not that person because I was much more a generalist. And so for a generalist going beyond six, I think it does change the nature of the work such that you&#8217;re doing maybe less direct coding, for instance, maybe even less direct architecture stuff, but much more things like team direction.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=645">10:45</a>] Is this even the right product to be building right now, given where the industry is moving? Maybe trying to influence even another organization that&#8217;s on a collision path, right? Maybe trying to find a mutually useful way to land both sides. So I think that also, pragmatically, as you go up higher in levels, it&#8217;s almost definitely true that you will have more meetings, just period. Whether you&#8217;re an <a href="https://en.wikipedia.org/wiki/IC_1101">IC</a>, whether you&#8217;re a manager.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=670">11:10</a>] That&#8217;s just what it is. And plenty of people, for whom directors, as an example, every single hour&#8217;s meetings and half of the hours are double booked. And so they&#8217;re just choosing which one to go to for that, right? That&#8217;s typically how, one small example of how the nature of the work changes. And so for me, as the nature of work changed, I was less enthused about how it might continue to change if I continued getting higher level.</p><h3>11:36 &#8212; Asking to not be promoted</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=696">11:36</a>] You mentioned that you sought out a demotion from IC9 to IC7, or distinguished to senior staff. Did you ever consider saying to your manager, I don&#8217;t want to get promoted?</p><p><strong>Philip:</strong></p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=708">11:48</a>] Past IC7 from going to 7 to 8? Not really, because I didn&#8217;t know levels had existed at that point. So that promotion was sort of like a surprise, right? But I think if I&#8217;m honest, <a href="https://en.wikipedia.org/wiki/Facebook">Facebook</a> was also so small even back then. I was promoted into eight maybe one year at <a href="https://en.wikipedia.org/wiki/Facebook">Facebook</a>. I was a seven at <a href="https://en.wikipedia.org/wiki/Microsoft">Microsoft</a> for probably three years. So you figure, like, let&#8217;s say four years, right? One year into <a href="https://en.wikipedia.org/wiki/Facebook">Facebook</a>, I get promoted to eight.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=734">12:14</a>] <a href="https://en.wikipedia.org/wiki/Facebook">Facebook</a> was still, I want to say back then, 800 engineers globally. So the company was much smaller. And I think when a company is that size, the work doesn&#8217;t include as much meta work. The work is mostly the work. So you&#8217;re doing the code, you&#8217;re doing the actual. Whereas I would say my even at <a href="https://en.wikipedia.org/wiki/Facebook">Facebook</a> many years later, when I came back to <a href="https://en.wikipedia.org/wiki/Facebook">Facebook</a> Seattle, when I joined, I was the second person who joined, right?</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=761">12:41</a>] So the office was four desks. When I went to <a href="https://en.wikipedia.org/wiki/Facebook">Facebook</a> London for five years and I came back, the office was more than 2,000 people. And so just like that, mind-blowing. Size means that the typical senior job when an organization is tens of thousands of people is a lot more people wrangling, I guess, and a lot less technical. I think one of the struggles I&#8217;ve had throughout my career is so many higher level jobs, including a solid IC6, quote unquote.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=793">13:13</a>] Just coding has to do with how well they work with others. And in some environments I just don&#8217;t work very well with people like others do. I would say objectively when I was leading the <a href="https://en.wikipedia.org/wiki/Facebook">Facebook</a> London site, I was good at the job. It was a very people-focused job. But for me, the happy parts were people like welcome to the team or, like, hey, going to do this collaboration with Menlo Park and all this stuff.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=817">13:37</a>] I think there&#8217;s another type of people-oriented thing that happens at large companies, which is a lot of what people might call politics, but a lot of work that has nothing to do with the actual software deliverable but has everything to do with the fact that when three or more people are somewhere, there&#8217;s politics. Just figuring out the people thing. Dealing with unhappy people, for instance, is something I&#8217;m very bad at.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=843">14:03</a>] Giving people constructive feedback is something that I am fairly bad at. And so more jobs at those levels just require even an IC7. Minding your own business is probably regularly supposed to be giving pretty helpful feedback to other engineers. They&#8217;re not their managers, but still you should be improving those around you. And I am much less good at that.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=866">14:26</a>] When you sought out the demotion from IC9 to IC7, I&#8217;m just thinking for someone who&#8217;s thinking that the success criteria is going up in levels, it would be very difficult to accept going down from, you know, kind of like undoing all that hard work, quote unquote. What was that process like?</p><p><strong>Philip:</strong></p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=890">14:50</a>] I think it was hard. I think it was Will Smith or someone else famous said getting famous is amazing. Being famous is a mixed bag, and then getting not famous is horrible. And I think that&#8217;s human nature, not just about fame but about anything, right? When we are growing in anything. Let&#8217;s suppose you first get into auto repair, right? The first big job you do beyond an oil change feels like success.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=915">15:15</a>] Right. Eventually you&#8217;ve removed an engine, you&#8217;ve done clutches, and at some point, like my age right now, I literally just started giving away some of my auto repair gear because I&#8217;m realizing I&#8217;m not doing this as much. Physically, I&#8217;m not as capable of doing it. And that feels a little bit sad. And I think the same thing happened to me in my software career, which is on the way.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=940">15:40</a>] Rising up, it always felt great, right? Other than the rising expectations and the worries around that. But the general thing felt like, oh, I&#8217;m progressing. Being at the top was a mixed bag. There were some amazing things. There were some very hard things. And then I think coming down, I feel like there were a few things that were hard about it. One was that I think I knew I could do more because I had done more before.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=969">16:09</a>] But part of it was the feeling of being exhausted, running at that pace, and always having the Eye of Sauron, like roving the land looking for people.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=980">16:20</a>] And I think the higher level you are, the more that you feel that intensity all the time, and rightfully so. You&#8217;re getting paid the big bucks. And so it&#8217;s right for a company to constantly question whether or not they&#8217;re getting their value out of you. So I think it&#8217;s only fair. But I felt that struggle. And I think the other thing that was hard for me about getting demoted down to seven was more that feeling that as I saw other people who used to be below me rise above me beyond that level, that was very difficult.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=1012">16:52</a>] I don&#8217;t begrudge them their success. So I&#8217;m not at all saying I&#8217;d rather go out there and make sure this person never succeeds. What I mean is more that I felt wistful, I guess is the right word, which is like, I was not crushed that someone else was doing better, but I did feel a little bit like I once could do that work. And part of me wonders if I could again.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=1032">17:12</a>] It&#8217;s like when Beowulf, at age 70, is asked to slay the dragon one last time. He gets out of his old house, and he slays the dragon one last time. Part of me wishes that I had that in me, that when I&#8217;m 70, I can be called upon one last time to do this thing. And I&#8217;m able to deliver at that level, but I know that maybe that&#8217;s not it for me. Right.</p><h3>17:33 &#8212; What made it hard to sustain IC9 performance</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=1053">17:33</a>] You mentioned that you used to be able to do it, and then you couldn&#8217;t. What changed that made it hard to perform at that level?</p><p><strong>Philip:</strong></p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=1060">17:40</a>] I think if I were to bucket it into a few categories, one is my environment changed. So as <a href="https://en.wikipedia.org/wiki/Facebook">Facebook</a>, the company grew, right? Senior ICs do a lot better, I think, in larger companies if they are domain experts. So you&#8217;re great at, let&#8217;s say, SQL optimization, right? And you&#8217;re helping SQL move on to SSD and you&#8217;re moving SQL into the cloud. That sort of <a href="https://en.wikipedia.org/wiki/IC_1101">IC</a> does best in a large company. In a tiny company, a generalist does best because when I first started on video calling, I also negotiated the contracts with Skype with a third-party tester, with all sorts of things.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=1098">18:18</a>] So I&#8217;m negotiating contracts, I&#8217;m doing crazy things, but I&#8217;m also coding the thing, and then when the press release goes out, I&#8217;m talking to the press. So I&#8217;m literally meeting the press about the video calling feature, right? That is what a generalist excels at. And I could only do that because <a href="https://en.wikipedia.org/wiki/Facebook">Facebook</a> was small. By the time I came back to <a href="https://en.wikipedia.org/wiki/Facebook">Facebook</a> Seattle, and the Seattle office itself was 2,000-plus people, and the company was maybe, I don&#8217;t know, 30,000 people.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=1120">18:40</a>] There&#8217;s no way you would send me out to negotiate a contract with <a href="https://en.wikipedia.org/wiki/Microsoft">Microsoft</a>. That would be ridiculous, right? And so for me as a generalist, my environment shifted to where specialists would survive better. And for me as a generalist, I was honestly just not as useful, right? For one whole six-month period, the team that I was on, the only mission for the ICs for that entire six months was to fix the bugs on this internal tool.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=1142">19:02</a>] So I spent six months fixing the bugs, which I&#8217;m happy to do, but I am not especially skilled at that. Right. And so I think one thing was my environment changed. I think the other thing that changed for me was I did tire a little bit of feeling like there was always so much pressure just to meet expectations, if that makes sense. So up until I would say IC6, I never felt the Eye of Sauron. Like I was never at any point in my career feeling like, oh, if I just fall a little below right now, maybe they&#8217;re going to can me.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=1176">19:36</a>] Right. But I think regularly at IC7 and beyond, once in a while I would feel like, oh, I feel like my own performance this half, I don&#8217;t know, things aren&#8217;t looking great, you know what I mean? And I think in a way it&#8217;s like when I was super ambitious, being like the slowest member of a team. But catching up and rising was exciting to me as I accomplished more in my career and I felt my happy places.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=1203">20:03</a>] I no longer liked the feeling of being the slowest on a team or feeling like I was potentially going to have a talking to at some point because I wasn&#8217;t performing to expectations. So I think that sort of pressure also was something that I no longer enjoyed in reality.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=1220">20:20</a>] That Eye of Sauron, though, was in your head rather than reality. Given that you got promoted from 7 to 8 and 8 to 9, right?</p><p><strong>Philip:</strong></p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=1228">20:28</a>] Yes. Maybe some of it is imposter syndrome, but I think a lot of it is actually just an honest look at myself and reality. So when I was an <a href="https://en.wikipedia.org/wiki/IC4">IC4</a> looking to go to <a href="https://en.wikipedia.org/wiki/IC5">IC5</a>, right, there were plenty of IC5s where I felt like I could totally do that work. Just give me two years and I&#8217;ll be just as good.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=1247">20:47</a>] At IC7, I could see many IC7s where I&#8217;m like, honestly, if you put me on that guy&#8217;s team, I could not do that work. Right. I know I can&#8217;t.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=1257">20:57</a>] And so I think my realistic appraisal of my own abilities was more accurate to what they actually were.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=1267">21:07</a>] Right.</p><p><strong>Philip:</strong></p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=1268">21:08</a>] And also maybe some of it, if I riff on your theme a little bit, maybe some of it also is that as you get more and more senior, not only are the expectations higher, but the number of business roles where you are the perfect guy for the role actually is far, far less. When you&#8217;re an IC6, almost any team would welcome one. It&#8217;s like, great. Like, just pick up a keyboard and we&#8217;ll get going.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=1295">21:35</a>] But I think once you get to a certain level, it&#8217;s like, well, we need someone who&#8217;s good at marketing. And then this person has to also be somewhat technical, or the shapes become very specific.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=1306">21:46</a>] And I think that just realizing that my shape wasn&#8217;t right for many, many roles also made me realistically feel like maybe this isn&#8217;t the right long-term place for me.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=1315">21:55</a>] It sounds like over the course of your career, you worked an extraordinary amount. I mean, you mentioned last time we talked that you bring a sleeping bag to work. And I think early in your career it makes a lot of sense because you were so gung ho and you&#8217;re pursuing the promos, but then when you were at <a href="https://en.wikipedia.org/wiki/Facebook">Facebook</a> and you weren&#8217;t pursuing the promos, you&#8217;re just getting them because you were doing awesome work.</p><h3>22:22 &#8212; What motivated him outside of promos</h3><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=1342">22:22</a>] What was your motivation to work so crazy hours at that time?</p><p><strong>Philip:</strong></p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=1347">22:27</a>] One of the most intense work periods of my life was shipping the first version of <a href="https://en.wikipedia.org/wiki/Facebook">Facebook</a> video calling. I had worked with Denise, with Chago, with maybe one or two others, with Vijay. That first version, when we went out, I think I went about six weeks down in Menlo Park, where I literally got up out of bed, went straight to work and worked all the way until I drove back to the apartment and went to sleep.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=1375">22:55</a>] I was eating junk food the whole day. It was like SunChips and whatever. But despite that, I lost ten pounds in those six weeks. It goes to show how intense brain-related work can be, but I had no idea there were levels. So obviously, a promotion was nowhere on my mind when I was doing this work. But I tell you, it was one of the most fun periods of my life because it felt so thrilling that I was directly impacting real users because <a href="https://en.wikipedia.org/wiki/Facebook">Facebook</a> was so tiny back then.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=1405">23:25</a>] You could see the users having errors right away. I was patching errors every day. It felt missional, right? It felt like this was the first time video calling was going to be easy for people without installing any software. WebRTC was relatively new back then. We still had to get some software with the first version out. And so I felt like this strong sense of mission, and being on a tiny team of three people also felt like, wow, I owe it to the other folks too, who are working equally hard to pull forward.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=1435">23:55</a>] So I think that was still in it for me, but no longer based on promotions as a thing, but more because I believed in what I was doing, and I felt that direct customer contact with people I could actually see getting positively impacted by the fixes.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=1453">24:13</a>] When you look back on a career of working so many hours, would you say that it&#8217;s worth it, and would you recommend it to others?</p><p><strong>Philip:</strong></p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=1461">24:21</a>] I think it&#8217;s become popular for successful people to tell people not to push as hard, and for wealthy people to tell people not to push as hard. And it&#8217;s understandable that people who aren&#8217;t as late in their career or aren&#8217;t as wealthy would say, well, it&#8217;s easy for you to say that, right? Because you&#8217;ve already gotten there. Like, I once had a guy say to me, &#8220;Well, it&#8217;s easy for you to say that because you&#8217;ve already been there, done that.&#8221;</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=1484">24:44</a>] And I think at some level, yes. But I also think that there is sometimes wisdom that can only be gotten when you live a certain thing yourself. This is why when someone tells you money can&#8217;t buy happiness, nobody believes it, right? Everybody thinks there&#8217;ll be the one exception. And I think the thing is, you have to have lived a certain life before to really objectively be able to say whether it&#8217;s better or not.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=1514">25:14</a>] And I think for me, given my personality, the really much higher level roles that require broad impact and feel like a lot of pressure for me, just for my own personality over time, is not the right thing. But I would, at the same time, say, well, I don&#8217;t want to look a gift horse in the mouth. The freedom for me to, for instance, work on my own software right now, it only comes from having had a career where I got paid enough that I could save enough money that I can go two years writing my own software, right?</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=1546">25:46</a>] And I don&#8217;t want to look a gift horse in the mouth and say, &#8220;Oh no, I totally shouldn&#8217;t have done that.&#8221; That&#8217;s not true at all. I think what it is for me is I would have appreciated, when I was younger, being more cognizant of the trade-offs that I was making. You know, like, hey, if I dig in really hard right now and I really work hard, then this will buy me the freedom when I&#8217;m 50 to work two years on my own software.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=1571">26:11</a>] I wish I knew that was the trade-off. Whereas I think at the time I was just blindly pushing forward, like, hey, I&#8217;m just ambitious. I want to do all this stuff.</p><h3>26:21 &#8212; Is career advice useless</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=1581">26:21</a>] And in your career and your life in general, you must have mentored so many people. And like you said, if you give someone advice and then they can&#8217;t really take it until they actually experience it, is all advice useless? Then what&#8217;s the point?</p><p><strong>Philip:</strong></p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=1603">26:43</a>] I think there is still a point, which is there&#8217;s a massive difference between you ignoring advice and you not knowing the advice was even there. And I think the difference is two things. One is when you have the advice in the back of your head but you&#8217;re ignoring it, when eventually some consequence comes about, it actually will reinforce for you why the advice was given and you&#8217;re much more likely to take more immediate action because it rings true, right?</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=1630">27:10</a>] And so when someone tells you money won&#8217;t buy happiness and, let&#8217;s say, a brick of $2 million falls on your forehead, right? And then you go out and you buy something and you realize it&#8217;s not a happy thing. One of the things that I splurged on for myself when I felt like I have financial security is I bought a $50 pen, okay, because New York Magazine said this is the best pen out of the 100 they reviewed, and it was this Baron Fig pen out of machined aluminum or something.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=1656">27:36</a>] And I bought that pen, and after using it for a while, I realized this is not my favorite pen. There&#8217;s a Pilot G2 or whatever that&#8217;s much better than this, and it&#8217;s like a buck fifty, right? It took me buying that machined aluminum pen before I was like, actually, if you mill a pen exactly round, no matter what surface you put it on, it&#8217;s about to roll off, right? And it&#8217;s hard to grip onto because it&#8217;s slippery.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=1681">28:01</a>] It takes getting there. So I think part of the advice is when you finally do buy that pen and you&#8217;re disappointed by it, you realize, hey, people used to tell me that this thing might happen, right? So I think that recognition is helpful. I think the other thing, however, is even if you don&#8217;t take someone&#8217;s advice right away, I do think, at least for me, when I next face a decision where that advice might apply, it makes me think a little more hard about it. I may not take the advice, but I&#8217;ll at least think, several very smart people have told me this thing.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=1715">28:35</a>] Maybe there&#8217;s a reason they say that.</p><h3>29:34 &#8212; Motivation after you&#8217;ve hit FIRE</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=1774">29:34</a>] Obviously part of career and what motivates people at some point is the financial earnings. And I&#8217;m curious to explore the topic of the motivation after those more objective things because, for instance, there&#8217;s this subreddit and this movement on financial independence and all of that.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=1811">30:11</a>] And I remember when I used to look at that subreddit, there would be a recurring post of someone saying, &#8220;Hey, I finally did it. I finally hit my retirement number, and I&#8217;m depressed,&#8221; or &#8220;I don&#8217;t know what to do,&#8221; because they&#8217;ve been on this money-making hamster wheel for such a long time that their happiness was kind of tied to that. And so at some point in your career, you broke out of that needing to be on that wheel.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=1840">30:40</a>] What did you look to that gave you meaning and fulfillment in your day-to-day outside of needing to be in this capitalist machine?</p><p><strong>Philip:</strong></p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=1850">30:50</a>] I feel like, to your point about the FIRE movement, there are two types of personalities. There&#8217;s one type that, when retired, will be happy, and they will be happy for years. This is the type of person that is happy to sit on a beach, read a book, and if they are doing that two months from now, they are still happy. It&#8217;s like, oh, this is the best, right? There&#8217;s another type of personality, which is mine, which is the first week on the beach is amazing.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=1875">31:15</a>] And then once I&#8217;m there for two weeks, I&#8217;m like, what&#8217;s going on? What am I doing here? For me, four months on a beach feels like, quote unquote, a waste. And I know that that offends many people. For the type of personality for whom lifelong beach them is amazing, they will feel like what I&#8217;m saying is nonsensical. But I think there&#8217;s a type of personality that understands exactly what I&#8217;m saying.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=1897">31:37</a>] Which is like that sort of person feels like the rat in the cage that pushes the dopamine button and then dies pushing it because it can&#8217;t even bother to eat because it feels the pleasure is so great that it can&#8217;t eat. When I see that, I feel like that&#8217;s sad. That to me is sad. That is not dying in bliss. There&#8217;s a type of personality that says, &#8220;What more could you want? Like if you could feel a sensation that is more desirable than even food when you&#8217;re starving.&#8221;</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=1922">32:02</a>] Like, wouldn&#8217;t that be the epitome of happiness? And in my mind, that is just a travesty. Like, to me, it feels like this rat could have been so much more, right? So that&#8217;s how I feel about myself. So I would say of the FIRE movement, for someone like me, the best parts of the FIRE movement, if I were to embrace it myself, which I never did, but if I were to embrace it, the best part would have been before I retired because it gave me such a strong sense of purpose.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=1948">32:28</a>] I am going to save up until I have $1.5 million. That&#8217;s the goal. And every two months I can remeasure how the investments are doing. Right? That is the excitement. The moment I reach the R in FIRE, then that&#8217;s actually probably the dangerous spot for me. So I think, in my particular case, for my personality, always having that sense of a goal is good. And that is what I&#8217;ve struggled with when I have been in periods of unemployment.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=1975">32:55</a>] I&#8217;ve really struggled with what, quote unquote, should I be doing?</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=1980">33:00</a>] So then I guess the question is, you can think of getting promoted and all this stuff in engineering as this game that you&#8217;re playing, and you&#8217;ve got a goal, and you&#8217;re kind of going up, and you&#8217;re excited. Oh, I want to go to that next one. Oh, I want to go to the next one. I&#8217;m going to grow the skills. Do you think that you&#8217;d be happier if you got promoted slower and the game lasted your whole career? So let&#8217;s say whenever it is you actually want to retire, say, I don&#8217;t know, 65 or whatever the age is.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=2013">33:33</a>] And we could set up that game so that you are constantly searching for that next goal, and you get IC9 at 65, and you get a nice little hit of dopamine all along the way, and you&#8217;re constantly growing. Do you think you&#8217;d be happier in that case versus you speed-run everything and you get to IC9 in the first third of the game.</p><p><strong>Philip:</strong></p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=2039">33:59</a>] I feel like titrating it out would have been better for me. Maybe not all the way till 65, let&#8217;s say, right? But take from E3 to E9 is about six levels, right? If you work about 42 years in your career, that&#8217;s one level promo every seven years. When I imagine myself taking seven years to go from three to four, I&#8217;d feel like, oh man, I&#8217;d feel like I was so behind in the sense that it&#8217;s not a competition, but I would feel like, am I really progressing?</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=2066">34:26</a>] Because seven years, you could get a PhD at Stanford in seven years. So I&#8217;m like, dude, what&#8217;s going on? Right. But the lemma or the corollary of what I&#8217;m saying then is let&#8217;s suppose you get from three to five or six within, let&#8217;s say, seven years, which is a leisurely, not superstar pace, but not terrible pace. You go from E3 to 6 in, let&#8217;s say, seven or eight years. Right. The remaining three levels, let&#8217;s say you would need about 12 years between each of them for the math to work.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=2094">34:54</a>] And when I think about 12 years, I also feel like, oh, that feels so long. I worked at <a href="https://en.wikipedia.org/wiki/Microsoft">Microsoft</a> 12 years, and that was on six different teams.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=2102">35:02</a>] So on one hand, I feel like it would be better if it came sooner, but on the other hand, I do feel like you&#8217;d have to recognize if it came sooner that you might be 25 years in your career without a promotion. And for me, I think I would have to. If I were in my 20s and you told me that I would have to have shifted my intrinsic motivation to something beyond career levels. In my 20s, I didn&#8217;t have other intrinsic motivations, so that would have been disappointing for me.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=2132">35:32</a>] I&#8217;ll throw in one last thought, though. The median age of a Corvette owner in America is 64. And that&#8217;s a median, meaning half the people are above that. Right, right. I personally imagine by the time I&#8217;m 64, owning a Corvette would be not half as interesting as when I was 38, you know what I mean? And so, in a sense, I mean, is reaching E9 at 62, like, as good? Is that like getting a Corvette at 64?</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=2159">35:59</a>] I don&#8217;t know. I feel like in a way maybe that progress is wasted on someone that&#8217;s that late in career. So I&#8217;m torn about it.</p><h3>36:08 &#8212; Meaning and fulfillment</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=2168">36:08</a>] You mentioned in between jobs or when you were, yeah, when you&#8217;re in between jobs, the motivation or the goals were harder. Did you ever discover meaning or fulfillment outside of an immediate goal? Do you have any advice on finding meaning in your work?</p><p><strong>Philip:</strong></p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=2188">36:28</a>] Yeah, very personality dependent. But for me, the thing I learned about myself is that I need to do more stuff with people. When I got out of work, a big part of it was the socialization. You show up, it&#8217;s like they mandatorily have to show up. Whereas when I throw a party, nobody mandatorily has to show up. So work is like mandatory socialization. But when I first quit <a href="https://en.wikipedia.org/wiki/Facebook">Facebook</a> and I took six months off, I thought this would be amazing.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=2214">36:54</a>] I&#8217;m gonna reach out to all sorts of long-lost former coworker friends for coffee and whatnot. But the problem is everybody else was busy working. So when I wrote them like, hey, can you grab a coffee, whatever, it&#8217;s like, well, I can&#8217;t, maybe next week. Right. And so what I figured out there was that, wow, I thought I would have all this socialization, but I didn&#8217;t. The best time being without work was I had about a six- or nine-month period where two other former coworkers of mine also were between jobs.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=2241">37:21</a>] And that was amazing. We went skiing three times a week on weekdays. Right. We did all sorts of stuff together. We ate dinner out. And I imagine that&#8217;s what I would like to think British aristocrats in the 1800s, like the same men that dug up the bones from the Jurassic period and that&#8217;s why it&#8217;s called the Jurassic era. Right? Those people, right? The gentleman scientists. Right.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=2263">37:43</a>] I would like to think that part of the secret to the happiness of the aristocracy is actually that there were other aristocrats also looking to do something together. It was fun because Mr. Darcy had no job, but you have no job either. So you and Mr. Darcy get together three times a week to whatever, play bocce ball. So I feel like that is the secret for me.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=2285">38:05</a>] And realizing that has made me feel like whether I&#8217;m working or not working, being in a situation where I can find regular socialization is probably key to me being happier.</p><h3>38:17 &#8212; Top book recommendation</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=2297">38:17</a>] Do you have any book recommendations? Something that you&#8217;ve read that gave you perspective on life that you recommend to someone who may be earlier in their career or are still figuring out how they want to plan things out?</p><p><strong>Philip:</strong></p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=2309">38:29</a>] Yes. I love the book Four Thousand Weeks. I&#8217;m not sure if you&#8217;ve read it.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=2313">38:33</a>] Haven&#8217;t. What&#8217;s it about?</p><p><strong>Philip:</strong></p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=2314">38:34</a>] Oh, highly recommended by Oliver. Oh man, I&#8217;m going to pull out the last name, but Four Thousand Weeks, his idea is that the average one of us probably has about 4,000 weeks. And you&#8217;ve probably seen the Tim Urban cartoon where he draws out a single box for every week of his whole life. Right. When you think about a life as 4,000 weeks, it actually feels a lot more precious and every week feels much more consequential.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=2337">38:57</a>] So reading that book really helped me take a broader look around. Decisions were often hard for me because my values weren&#8217;t clear. But what I would say to the average person, if they&#8217;re willing to hear the advice, would be something like, first, visualize today&#8217;s biggest goal for yourself in the next whatever many years. Maybe you want to retire by the time you&#8217;re 36, or whatever the FIRE movement people want, right?</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=2358">39:18</a>] Visualize that goal. Then I would say, now pretend you&#8217;ve just reached it. What do you do next? If you have a good answer for that, then you&#8217;re fine. Then you&#8217;ll be just fine. I did not have an answer for that. And being that person, not having that ready answer really left me in a place where I was like, is it Michael Phelps or whoever? There&#8217;s so many athletes for whom, once you reach that career peak, they realize, wait, what&#8217;s after football or what&#8217;s after swimming?</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=2385">39:45</a>] And the answer is nothing, because they&#8217;ve built no other skills in any other domain. And once they&#8217;re not a famous football player, it&#8217;s like, well, how many people really want to see them and for what reasons other than to ask them for money? And so I feel like many people have that big goal. I&#8217;m going to get in the NFL. I&#8217;m going to get in the NBA, right? But they don&#8217;t know what they&#8217;re going to do the day after.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=2404">40:04</a>] And so if I could give one piece of advice to people, it would be: think about the day after and what you&#8217;re going to do. And I think the book Four Thousand Weeks really helps a person think about that.</p><h3>40:14 &#8212; What he would change</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=2414">40:14</a>] And I guess, last question. If you could go all the way back to the beginning and do it over again, is there anything that you would change?</p><p><strong>Philip:</strong></p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=2422">40:22</a>] I think there were a few times in my career where I biased too much toward being maximally available for my employer and not available at all for friends or family. I think there are a few incidents, and if I could change things again, I would have played those periods of my life differently. Funny enough, one of them was not when I lost ten pounds working six weeks at <a href="https://en.wikipedia.org/wiki/Facebook">Facebook</a>, because my kids were very young back then, right?</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=2452">40:52</a>] My kids were very young back then, right? Probably three and one or something. But what was great was I told my wife back then, hey, after we ship, it&#8217;s probably going to be nuts. And so what we did was we just moved the whole family down to California. My wife took the kids to the library every day. I could see them for 14 minutes before I went to sleep, right. And having family with me and just treating it more like, hey, everybody, we&#8217;re just going to go on a big trip.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=2476">41:16</a>] That actually made it all right. Whereas I think there were other times in my career where my wife was the primary one taking the kids to and from school. I had very little conversation with them. It felt like I was doing important things, quote, unquote, for the family.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=2490">41:30</a>] Right.</p><p><strong>Philip:</strong></p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=2490">41:30</a>] But at the same time, I wasn&#8217;t with the family. And so there are times like that where I do think there were a few periods where I would have played that differently.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=2500">41:40</a>] Everything in life, we have limited time, so everything in life, there&#8217;s trade-offs. If you did, let&#8217;s just say you went back to those times and you prioritized family, would that have made a material difference in your career success?</p><p><strong>Philip:</strong></p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=2515">41:55</a>] I think it might have. And I think the tradeoff is, in my case, definitely worth it. I say I think it might have because it&#8217;s very hard to tell. I&#8217;ll throw out examples where it&#8217;s hard to tell. How sometimes there&#8217;s the type of engineer who works super long hours, but you can tell that as they work longer and longer, they&#8217;re actually creating more and more regressions and they&#8217;re getting worse and worse.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=2539">42:19</a>] Right. For that sort of person, a break would actually improve their performance. So there&#8217;s no telling. Maybe sometimes taking a break would have made me perform even better. Right. So I don&#8217;t want to say that that&#8217;s definitely not true. But I also feel for the type of person who constantly tells other people, relax, work a 40-hour work week, you&#8217;ll do just as well and even better than other people.</p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=2563">42:43</a>] I don&#8217;t think that&#8217;s generally true. I think, at face value, it doesn&#8217;t seem like it could be true if two people were at the same skill level, but one just worked 10 hours more per week over a period of time. I think anybody would feel it was grossly unfair if that person wasn&#8217;t rewarded any differently. It would feel like, what? What sort of crazy company do you work for where these two people get compensated the identical amount over multiple years, but one guy&#8217;s working 40% more?</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=2591">43:11</a>] Right.</p><p><strong>Philip:</strong></p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=2591">43:11</a>] It makes no sense. So I do suspect it would have impacted career, but I think also that I would have gladly taken that tradeoff.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=2600">43:20</a>] Awesome. Well, thank you so much for your time, Philip. I really appreciate it.</p><p><strong>Philip:</strong></p><p>[<a href="https://www.youtube.com/watch?v=RMo04pSSiao&amp;t=2603">43:23</a>] Yeah, thanks for having me again.</p>]]></content:encoded></item><item><title><![CDATA[Update on Quitting My Job]]></title><description><![CDATA[How it went]]></description><link>https://www.developing.dev/p/update-on-quitting-my-job</link><guid isPermaLink="false">https://www.developing.dev/p/update-on-quitting-my-job</guid><dc:creator><![CDATA[Ryan Peterman]]></dc:creator><pubDate>Fri, 18 Sep 2026 12:03:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!vBD-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddac6c7c-af3f-42f6-8a89-6f5477dd1a1c_990x650.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>For the first time in my career, I made a decision that didn&#8217;t make sense on paper.</p><p>Last year, I started a podcast to practice speaking and share software engineering career stories that inspired me. Everything felt new and I was learning a lot. After work, I kept thinking about ways to make the podcast better.</p><p>I dreamed of working on it full time but it never made sense because I&#8217;d only ever lost money on it. Then late last year, <a href="https://www.developing.dev/i/186696236/why-i-pulled-the-trigger-early">there was a reorg</a> that felt like a good opportunity to leave Meta early and try it out. So I decided to use six months of my savings to see if I could make it work.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8A9k!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F571ec14b-9dbb-4058-bda8-15667eecf2dc_1015x424.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8A9k!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F571ec14b-9dbb-4058-bda8-15667eecf2dc_1015x424.png 424w, https://substackcdn.com/image/fetch/$s_!8A9k!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F571ec14b-9dbb-4058-bda8-15667eecf2dc_1015x424.png 848w, https://substackcdn.com/image/fetch/$s_!8A9k!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F571ec14b-9dbb-4058-bda8-15667eecf2dc_1015x424.png 1272w, https://substackcdn.com/image/fetch/$s_!8A9k!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F571ec14b-9dbb-4058-bda8-15667eecf2dc_1015x424.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8A9k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F571ec14b-9dbb-4058-bda8-15667eecf2dc_1015x424.png" width="640" height="267.3497536945813" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/571ec14b-9dbb-4058-bda8-15667eecf2dc_1015x424.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:424,&quot;width&quot;:1015,&quot;resizeWidth&quot;:640,&quot;bytes&quot;:59001,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.developing.dev/i/216195559?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F571ec14b-9dbb-4058-bda8-15667eecf2dc_1015x424.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!8A9k!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F571ec14b-9dbb-4058-bda8-15667eecf2dc_1015x424.png 424w, https://substackcdn.com/image/fetch/$s_!8A9k!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F571ec14b-9dbb-4058-bda8-15667eecf2dc_1015x424.png 848w, https://substackcdn.com/image/fetch/$s_!8A9k!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F571ec14b-9dbb-4058-bda8-15667eecf2dc_1015x424.png 1272w, https://substackcdn.com/image/fetch/$s_!8A9k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F571ec14b-9dbb-4058-bda8-15667eecf2dc_1015x424.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><a href="https://www.developing.dev/p/i-quit-my-job">Original post</a> I wrote when I quit</figcaption></figure></div><p>At first, it was glorious. I interviewed people like <a href="https://www.youtube.com/watch?v=U46fJ2bJ-co">Bjarne Stroustrup (Creator of C++)</a> who I&#8217;d looked up to ever since I started learning C++ as my first programming language. It was a lot of fun studying for each interview and getting into video production. But doing everything myself had an obvious downside. If I stopped, everything stopped.</p><p>I put so much time into each episode that even though I was working more than ever, I could barely keep up with my goal of one episode per week. That&#8217;s because I personally reviewed every second of footage and did deep research on each guest before interviews.</p><p>Four months into my six-month runway, I still hadn&#8217;t made a dollar. I&#8217;d been reluctant to monetize since finding sponsors felt like time taken away from the fun parts of creating content. But as my bank account got closer to zero, I knew I couldn&#8217;t put it off much longer.</p><p>Then I got sick. I caught what felt like a strong flu that had me bedridden for a few days. Lying there, drifting in and out of consciousness, I kept wondering if I&#8217;d even be able to publish an episode that Monday. Because I couldn&#8217;t work suddenly everything felt fragile for the first time.</p><p>Thankfully, I had one episode already mostly finished so that got me through that week of sickness. And because of that week I finally started taking sponsors seriously despite my reluctance. I also found ways to make my recording process more efficient so I could do two episodes a week to get ahead although it was an insane grind.</p><p>With some luck and hard work, great sponsors like Cursor and then WorkOS signed on, which brought money in. I also cut my burn a lot by recording every episode myself. Aside from saving money the scrappiness has been a fun way to capture the essence of some of my guests. For instance, the interview with Bjarne <a href="https://www.youtube.com/watch?v=U46fJ2bJ-co">was shot in his study against a wall of his own C++ books with two iPhones</a>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!y35t!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc50db3e-be4a-47c5-a436-4149f470d0fa_1101x741.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!y35t!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc50db3e-be4a-47c5-a436-4149f470d0fa_1101x741.png 424w, https://substackcdn.com/image/fetch/$s_!y35t!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc50db3e-be4a-47c5-a436-4149f470d0fa_1101x741.png 848w, https://substackcdn.com/image/fetch/$s_!y35t!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc50db3e-be4a-47c5-a436-4149f470d0fa_1101x741.png 1272w, https://substackcdn.com/image/fetch/$s_!y35t!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc50db3e-be4a-47c5-a436-4149f470d0fa_1101x741.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!y35t!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc50db3e-be4a-47c5-a436-4149f470d0fa_1101x741.png" width="560" height="376.89373297002726" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cc50db3e-be4a-47c5-a436-4149f470d0fa_1101x741.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:741,&quot;width&quot;:1101,&quot;resizeWidth&quot;:560,&quot;bytes&quot;:1141257,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.developing.dev/i/216195559?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc50db3e-be4a-47c5-a436-4149f470d0fa_1101x741.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!y35t!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc50db3e-be4a-47c5-a436-4149f470d0fa_1101x741.png 424w, https://substackcdn.com/image/fetch/$s_!y35t!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc50db3e-be4a-47c5-a436-4149f470d0fa_1101x741.png 848w, https://substackcdn.com/image/fetch/$s_!y35t!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc50db3e-be4a-47c5-a436-4149f470d0fa_1101x741.png 1272w, https://substackcdn.com/image/fetch/$s_!y35t!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc50db3e-be4a-47c5-a436-4149f470d0fa_1101x741.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I earmarked 6 months of money and it&#8217;s been 9 months now. The podcast sustains itself and my other passion project (an ergonomic keyboard I wish existed) raised the funds we needed <a href="https://read.compose.llc/p/project-kickoff-and-tooling-update">within a day of launching on Kickstarter</a>. Since then, we hit our first milestone of <a href="https://read.compose.llc/p/first-sample-fresh-off-the-assembly">real production hardware off the assembly line</a>. If you want one, you can still <a href="https://www.kickstarter.com/projects/ryanlpeterman/compose-simple-ergonomics-beautifully-done">sign up on Kickstarter</a>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!kCNZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac5abccd-3ed2-4134-9e8f-474d1a2eadee_4284x5712.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kCNZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac5abccd-3ed2-4134-9e8f-474d1a2eadee_4284x5712.heic 424w, https://substackcdn.com/image/fetch/$s_!kCNZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac5abccd-3ed2-4134-9e8f-474d1a2eadee_4284x5712.heic 848w, https://substackcdn.com/image/fetch/$s_!kCNZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac5abccd-3ed2-4134-9e8f-474d1a2eadee_4284x5712.heic 1272w, https://substackcdn.com/image/fetch/$s_!kCNZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac5abccd-3ed2-4134-9e8f-474d1a2eadee_4284x5712.heic 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!kCNZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac5abccd-3ed2-4134-9e8f-474d1a2eadee_4284x5712.heic" width="376" height="501.24725274725273" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ac5abccd-3ed2-4134-9e8f-474d1a2eadee_4284x5712.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1941,&quot;width&quot;:1456,&quot;resizeWidth&quot;:376,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!kCNZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac5abccd-3ed2-4134-9e8f-474d1a2eadee_4284x5712.heic 424w, https://substackcdn.com/image/fetch/$s_!kCNZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac5abccd-3ed2-4134-9e8f-474d1a2eadee_4284x5712.heic 848w, https://substackcdn.com/image/fetch/$s_!kCNZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac5abccd-3ed2-4134-9e8f-474d1a2eadee_4284x5712.heic 1272w, https://substackcdn.com/image/fetch/$s_!kCNZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac5abccd-3ed2-4134-9e8f-474d1a2eadee_4284x5712.heic 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The first unit! Also some <a href="https://www.instagram.com/compose.kb/">footage here of me using it</a>.</figcaption></figure></div><p>My career decision didn&#8217;t make sense on paper then and it still doesn&#8217;t. For instance, I actually expect the keyboard project to lose me money in aggregate. But the goal with my podcast and keyboard wasn&#8217;t to make money. Otherwise I would&#8217;ve stayed at Meta.</p><p>I often think about how lucky I am to get to work on my passion projects. I just want to say thank you to everyone who has supported my work along the way. Without your support, the podcast would have died and the keyboard would have never seen the light of day.</p><h3>What&#8217;s next?</h3><p>I&#8217;m going to keep working on my passion projects as long as I continue to earn my keep:</p><ol><li><p>The Peterman Pod - The podcast has grown so I hope I can leverage that to bring on better guests for you all. If you want to see how it&#8217;s going you can look at the <a href="https://podcastcharts.byspotify.com/us/technology">Spotify podcast charts in tech</a>. I usually struggle to stay in the top 50 but I&#8217;m going to keep pushing here! If you want to help out, I&#8217;d greatly appreciate if you <a href="https://open.spotify.com/show/0MX9PyeCzDhdlyRv6slwIX">dropped a rating for the podcast on Spotify</a>.</p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vBD-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddac6c7c-af3f-42f6-8a89-6f5477dd1a1c_990x650.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vBD-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddac6c7c-af3f-42f6-8a89-6f5477dd1a1c_990x650.png 424w, https://substackcdn.com/image/fetch/$s_!vBD-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddac6c7c-af3f-42f6-8a89-6f5477dd1a1c_990x650.png 848w, https://substackcdn.com/image/fetch/$s_!vBD-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddac6c7c-af3f-42f6-8a89-6f5477dd1a1c_990x650.png 1272w, https://substackcdn.com/image/fetch/$s_!vBD-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddac6c7c-af3f-42f6-8a89-6f5477dd1a1c_990x650.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!vBD-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddac6c7c-af3f-42f6-8a89-6f5477dd1a1c_990x650.png" width="486" height="319.09090909090907" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ddac6c7c-af3f-42f6-8a89-6f5477dd1a1c_990x650.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:650,&quot;width&quot;:990,&quot;resizeWidth&quot;:486,&quot;bytes&quot;:123780,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.developing.dev/i/216195559?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddac6c7c-af3f-42f6-8a89-6f5477dd1a1c_990x650.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!vBD-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddac6c7c-af3f-42f6-8a89-6f5477dd1a1c_990x650.png 424w, https://substackcdn.com/image/fetch/$s_!vBD-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddac6c7c-af3f-42f6-8a89-6f5477dd1a1c_990x650.png 848w, https://substackcdn.com/image/fetch/$s_!vBD-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddac6c7c-af3f-42f6-8a89-6f5477dd1a1c_990x650.png 1272w, https://substackcdn.com/image/fetch/$s_!vBD-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddac6c7c-af3f-42f6-8a89-6f5477dd1a1c_990x650.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><ol start="2"><li><p>Compose (my ergonomic keyboard) - I&#8217;ve been <a href="https://www.instagram.com/compose.kb/">using the first sample</a> off the assembly line as my main keyboard for the last two weeks. It&#8217;s a surreal feeling seeing the abstract become physical. It&#8217;s exactly what I wanted and my next goal is to bring it to production at the highest possible quality bar I can. We&#8217;re on track to ship early next year (<a href="https://read.compose.llc/">follow along here if interested</a>).</p></li></ol><p>As long as the podcast covers itself and my living costs, I plan to keep pushing on these goals. I hope what I produce is good enough that you&#8217;ll continue to supporting it. And if you want to follow along you can also subscribe here.</p><p>Thanks for reading,<br>Ryan Peterman</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.developing.dev/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Subscribe below to receive my future posts and support my work:</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Casey Muratori: Surprises In Computer History And Where Bad Code Comes From]]></title><description><![CDATA[In this episode, my goal was to record a conversation that was completely free of any &#8220;AI doom&#8221; content.]]></description><link>https://www.developing.dev/p/casey-muratori-surprises-in-computer</link><guid isPermaLink="false">https://www.developing.dev/p/casey-muratori-surprises-in-computer</guid><dc:creator><![CDATA[Ryan Peterman]]></dc:creator><pubDate>Mon, 14 Sep 2026 13:03:29 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/215590461/52520a275d4e9410e72908df9a174eb5.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>In this episode, my goal was to record a conversation that was completely free of any &#8220;AI doom&#8221; content. There&#8217;s so much of it out there, I hope that this can be a nice timeline cleanser.</p><p>I had <a href="https://x.com/cmuratori?lang=en">Casey Muratori</a> on who is a video game developer and programming creator also known for several talks (<a href="https://www.youtube.com/watch?v=wo84LFzx5nI">ex1</a>, <a href="https://www.youtube.com/watch?v=hpj6r6CjJf8">ex2</a>) on the history of computing. In putting together those talks he dug deep into computing history. Enough where he had interesting stories and tidbits to share. </p><p>For instance, Dijkstra wrote about his depression and there were also several famous flame wars that happened between legends in the industry. They didn&#8217;t have social media back then so they wrote letters to each other calling each other out which we discussed.</p><p>Lastly, we talked about his career and the video game industry. I was curious to compare it with big tech and hear more about his career path. He&#8217;s a great story teller so I hope you enjoy the episode!</p><p>Check out the episode wherever you get your podcasts: <a href="https://youtu.be/jHLbL1Eg4gM">YouTube</a>, <a href="https://open.spotify.com/episode/4ywz6rOWmFardgZ04tuBTs?si=w-toSznlQFCn6qd6S_r1_g">Spotify</a>, <a href="https://podcasts.apple.com/us/podcast/the-peterman-pod/id1777363835">Apple Podcasts</a>.</p><div id="youtube2-jHLbL1Eg4gM" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;jHLbL1Eg4gM&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/jHLbL1Eg4gM?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h1>Timestamps</h1><p><a href="https://www.developing.dev/i/215590461/0108-digging-into-computer-science-history">01:08 - Digging into computer science history</a></p><p><a href="https://www.developing.dev/i/215590461/0408-what-shocked-him">04:08 - What shocked him</a></p><p><a href="https://www.developing.dev/i/215590461/1623-dijkstra-was-depressed">16:23 - Dijkstra was depressed</a></p><p><a href="https://www.developing.dev/i/215590461/2617-the-personal-side-of-goto-considered-harmful">26:17 - The personal side of goto considered harmful</a></p><p><a href="https://www.developing.dev/i/215590461/3509-the-anatomy-of-a-35-year-mistake">35:09 - The anatomy of a 35 year mistake</a></p><p><a href="https://www.developing.dev/i/215590461/5012-clean-code-horrible-performance">50:12 - Clean code horrible performance</a></p><p><a href="https://www.developing.dev/i/215590461/5833-how-to-write-high-performance-code">58:33 - How to write high performance code</a></p><p><a href="https://www.developing.dev/i/215590461/010118-where-bad-code-comes-from">01:01:18 - Where bad code comes from</a></p><p><a href="https://www.developing.dev/i/215590461/010637-why-design-docs-before-code-is-a-bad-idea">01:06:37 - Why design docs before code is a bad idea</a></p><p><a href="https://www.developing.dev/i/215590461/010920-the-only-unbreakable-law-in-software-engineering">01:09:20 - The only unbreakable law in software engineering</a></p><p><a href="https://www.developing.dev/i/215590461/011557-how-he-got-into-programming">01:15:57 - How he got into programming</a></p><p><a href="https://www.developing.dev/i/215590461/012116-why-he-didnt-work-in-big-tech">01:21:16 - Why he didnt work in big tech</a></p><p><a href="https://www.developing.dev/i/215590461/013044-should-you-work-at-a-startup-early-on">01:30:44 - Should you work at a startup early on</a></p><p><a href="https://www.developing.dev/i/215590461/013452-what-video-game-engineering-is-like">01:34:52 - What video game engineering is like</a></p><p><a href="https://www.developing.dev/i/215590461/013957-why-preventing-recursion-is-reasonable">01:39:57 - Why preventing recursion is reasonable</a></p><p><a href="https://www.developing.dev/i/215590461/014324-is-vibe-coding-bad-for-the-industry">01:43:24 - Is vibe coding bad for the industry</a></p><p><a href="https://www.developing.dev/i/215590461/015017-technical-reading-recommendation">01:50:17 - Technical reading recommendation</a></p><p><a href="https://www.developing.dev/i/215590461/015427-advice-for-his-younger-self">01:54:27 - Advice for his younger self</a></p><h1>Transcript</h1><h3>01:08 &#8212; Digging into computer science history</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=68">01:08</a>] There&#8217;s this famous quote by Donald Knuth. The big part of it is, &#8220;Premature optimization is the root of all evil.&#8221; And I remember, I&#8217;ve heard that before, but I don&#8217;t think I know the full history behind it. And why is that significant?</p><p><strong>Casey:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=86">01:26</a>] So I guess we can split that into two parts. What&#8217;s the history behind it and why is this significant? The significant part is probably the easiest to answer because, for whatever accident of history, it&#8217;s something that people really remembered. It stuck. And so the reason that it ended up being significant is people keep repeating it, and they keep interpreting it or reinterpreting it. So the effects of that phrase are far beyond what anyone may have done with it in context at the time or what they meant or any of those things, or the history. The effects of it are still felt to this day.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=122">02:02</a>] Some people, I think probably correctly, you might say, interpret the term with a fair bit of nuance and say, oh, well, it can mean a number of different things or it&#8217;s trying to capture something subtle or whatever. Other people are very blunt about it and just think, oh, it just means I don&#8217;t have to think about the performance of my code to the end of the project. &#8220;Premature&#8221; just means any consideration of performance is not worth it.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=148">02:28</a>] Eventually, we&#8217;ll see where the code is slow and we&#8217;ll fix it or something. It&#8217;s a significant phrase for that reason, at least to me. You still hear it to this day, and it&#8217;s at least, depending on how you want to account for it, it&#8217;s at least something that&#8217;s 50 years old now. And so that&#8217;s an incredibly lasting impact for a rule of thumb, or however you want to look at it. So on the history side, this was really.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=177">02:57</a>] When I decided to do a talk on this, I knew I wanted to do another computer history talk because I had given one before. This is at something called the Better Software Conference. There&#8217;s been two of them so far. At the first one, I did a history talk, and I wanted to do another history talk. And this was going to be like, I&#8217;m probably only going to do two of these, and this is the second one. I wanted to do it on the history of this phrase because when I started looking into the history of this phrase a while back, I found that there was just a lot of stuff there that I didn&#8217;t know.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=207">03:27</a>] And this is true. I mean, I guess I would say every time I&#8217;ve ever looked at computer history, every time I go, I refer to it as dumpster diving. But it&#8217;s not like that makes it sound derogatory. But I think of that as kind of what I&#8217;m doing. But it&#8217;s not really like, it&#8217;s actually a very enjoyable experience to go back through history and try to pick through what happened. So to do this talk, I basically went and tried to do a pretty detailed analysis of how did this phrase end up being put in print?</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=238">03:58</a>] What were the worked examples at the time? What were they thinking about? Why might it have been said?</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=242">04:02</a>] What did you learn in doing all that research about these famous computer science phrases?</p><h3>04:08 &#8212; What shocked him</h3><p><strong>Casey:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=248">04:08</a>] The thing that shocks me both times, even though I&#8217;ve now done it twice, is the amount of stuff that you learn about what was going on at that time that you just had no idea about. It&#8217;s just mind boggling. And I would point out that this is for a talk. I&#8217;m not a historian, I don&#8217;t do this for a living. I&#8217;m not at a university somewhere doing computer history research. So what I think of as a pretty thorough read for the history that I did for the talk is actually somewhat shallow.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=279">04:39</a>] If you had time and the resources, you could go access some of these people&#8217;s personal papers, make appointments to see things that are not really in the public record so much, and so on. So even just with publicly available things that you can get, the amount of stuff that I found was just really kind of intriguing to me. And so I&#8217;ll give kind of a brief overview of sort of what I thought was the story of this kind of phrase. In a way, I think there are kind of two.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=310">05:10</a>] I guess I would say there are sort of two threads that are good to understand that come together. And this is what I tried to portray in the talk as well. The first thread is this idea of a thing, and we didn&#8217;t really do an intro to this podcast, but I&#8217;ll say it now. I&#8217;m a big fan of your show. When you said, do you want to be on the podcast? You didn&#8217;t have to tell me what the show was. I&#8217;ve already watched it.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=334">05:34</a>] I love it. And one of the people you had on, for example, was Barbara Liskov. And in that interview, she actually refers to something called the software crisis, right? And I think you prompted her a question about this as well, right? So a lot of people don&#8217;t really know about the software crisis. They don&#8217;t know that that was a term. They don&#8217;t know. This is something that happened because it&#8217;s kind of ancient history now.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=358">05:58</a>] It was in the sort of late 60s, early 70s. This was the thing. What this was is originally computer hardware, in a sense that you or I can&#8217;t really conceive of it in practice because it was so far before our time that basically computer hardware originally was very simplistic. And so the things that you were going to do with it could be described very easily. And really all you were trying to do when you programmed a computer was just translate a fairly straightforward definition of some computation into machine instructions.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=396">06:36</a>] The kind of thing that we would think about today as hand optimizing assembly code was really just all computer programming was. It was just like, okay, we&#8217;re going to take this problem description and translate it in. But during the 60s, computing power was advancing to the point where people could consider doing much more significant things with it. They could run payroll systems, they could do analysis of data sets, and they would want to be able to be flexible and change the sorts of computations they were doing and all these other sorts of things.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=426">07:06</a>] They were starting to have graphical displays. Ivan Sutherland&#8217;s Sketchpad is in the early 1960s. What they found was that at that time, programmers were not really ready to make that transition. They didn&#8217;t think about things the way we all now take for granted, where it&#8217;s like, oh, yeah, I built this library for loading JPEG images, and now when I want to load a JPEG, I just call load JPEG and it&#8217;s done.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=452">07:32</a>] All of these things that we take for granted all had to be a cultural shift. The idea that there were going to be these abstractions and these ways of sort of breaking down a much more complex system into parts that we could manage, that actually was a transition that had to happen. And so the software crisis was kind of this period where people were starting to say, the methods that we&#8217;re using for programming will not scale to these larger problems that we want to do.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=479">07:59</a>] We&#8217;ve got to figure out something to do about it. So that&#8217;s one thread of history that&#8217;s coming. Another thread of history that&#8217;s coming. It&#8217;s a little bit more specific to Donald Knuth, who was the first person to really put this into a worked example. He&#8217;s kind of who I would credit with the origin of this phrase, even if there are people who might debate that fact. And to me, it doesn&#8217;t really matter who said the phrase.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=503">08:23</a>] The phrase lives on its own. So I wouldn&#8217;t even argue with someone if they wanted to sort of make other claims about it. But just in general, he was going, like, at Stanford at this time, he was sort of learning about the fact that you could do these profiles, like taking actual execution profiles, figuring out where time was spent in the execution of a program and using that to guide your decision-making about where you&#8217;re going to spend time developing the software.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=535">08:55</a>] Again, something that even today, performance is maybe not as much of an emphasis as it maybe should be in software. But even today, with that in mind, most people understand the concept of an execution profile. They understand that you could go into Chrome and see a network profile of how that&#8217;s working. You could see a flame graph of where time is being spent, or all these sorts of things. Again, you have to remember, if you rewind the clock back far enough, these were all brand new concepts, right?</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=564">09:24</a>] A sampling profiler, a block-based profiler, a binary instrumentation profiler. All these sorts of things were not just tools that everyone assumed that they could just go have and had seen at some point. Some people may never have even realized that was a thing. So that&#8217;s another thread that&#8217;s happening. And those two things converge effectively in 1974, right? Roughly. To get us this statement, Knuth is very much into this idea of structured programming, which is sort of a proposed solution to the software crisis.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=602">10:02</a>] Maybe a proposed solution is the wrong way to say it. It&#8217;s a certain set of ideas that are trying to be employed to improve the situation. Let&#8217;s say he&#8217;s very much into this. We can talk about what that is as sort of a separate tangent if we want to later. He&#8217;s very much into that. He&#8217;s thinking about that. He&#8217;s thinking about this idea that programmers can&#8217;t just be about writing all of this very tightly optimized assembly language code.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=631">10:31</a>] And that&#8217;s all we&#8217;re going to spend all our time doing. We have to be thinking bigger picture. We have to be picking and choosing our battles. We have to make concessions to maintainability. If this particular routine is not really accounting for hardly any of our runtime, we should not be obfuscating it with all of these hand-unrolling the loops and all these things. Remember again, underlying all this, they don&#8217;t have massive optimizing compiler passes like we have with LLVM now.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=657">10:57</a>] They don&#8217;t have all of this extra stuff. So if you wanted something unrolled, you were going to unroll it yourself. If you wanted some kind of loop, hoist a loop invariant out, you probably had to do that yourself. A lot of that stuff that we take for granted today, again, not in there. So that sort of. He&#8217;s very unstructured programming. He&#8217;s starting to see these execution time profiles. They do a thing at Stanford in 1970, actually he does it with some students where they take a look at FORTRAN programs and they instrument them to see where the time is being spent.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=686">11:26</a>] Not in exactly the most rigorous way that you might imagine. That&#8217;s another thing from my talk that I kind of go into. But he&#8217;s sort of saying, look, we as programmers need to start taking the decision about what to optimize more seriously. And he kind of has a fairly nuanced take on it. If you actually read the section of his 1974 paper Structured Programming with go to Statements where kind of the first time this was really put to print that I know of.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=714">11:54</a>] He does say it in an ACM Turing Lecture a little earlier, but he would have submitted the manuscript for this publication prior to the lecture. So it was the first time that I know of that he actually committed it to paper. It would have been there. But he may have said this a lot in lectures. He kind of obliquely refers to that in the Turing Lecture that maybe he had said this around town, so to speak.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=740">12:20</a>] So where this was first uttered, I don&#8217;t think anyone knows. But the point being, when he says that phrase, it&#8217;s in this context of saying, look, we need to be very concerned about efficiency. We shouldn&#8217;t be leaving performance on the table when it matters, but at the same time, we need to know that it matters. If we don&#8217;t know that it matters, then we&#8217;re going to apply this optimization. That&#8217;s a premature optimization, and it has real cost.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=768">12:48</a>] It&#8217;s going to make our maintenance and debugging of this program worse for all the same reasons that it would make it worse today. If we go into something and we start applying these optimizations to it that are above and beyond the kind of structural things that we might be doing to that code otherwise, that&#8217;s creating a cognitive burden that other people are now going to have to deal with, and you&#8217;re going to have to deal with in the future.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=790">13:10</a>] So I don&#8217;t want to put too many words in Knuth&#8217;s mouth, certainly, but in general, that&#8217;s sort of the way that this comes together is those two things, this idea that we need to be doing things to solve the software crisis. How have a more structured approach to programming, care about maintainability and debugability, composability, abstraction, all that stuff. But also at the same time, we do care about optimization.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=813">13:33</a>] So how do you dovetail those things? &#8220;Premature optimization is the root of all evil&#8221; is kind of like this phrase he uses, I would say, if I had to imagine his way of sort of reminding himself, think about all this before you make a decision. Right. That would be kind of my take on it. Right. And where it comes from. So hopefully, I don&#8217;t know, that&#8217;s very long, but it&#8217;s a very expansive question. So hopefully I&#8217;ve kind of wrangled most of the stuff into there.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=840">14:00</a>] It sounds like this is really an engineering tradeoff, where the software crisis is about the maintainability and the complexity for people to actually write and handle their code, and then the tradeoff between performance and, I guess, code that is maintainable. And it sounds like this Knuth quote is, be mindful of where you pay that cost.</p><p><strong>Casey:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=869">14:29</a>] Yes. And it&#8217;s always important to understand the context in which this was said historically. So I want it to be a historical talk, because who your audience is is a large determiner of what the root of all evil is. If you&#8217;re talking to a bunch of people who don&#8217;t think about optimization at all, then you don&#8217;t really need to say this phrase to them. If you fast forward to today, when a lot of people don&#8217;t really take optimization into account at all during their programming, or very, very little, this phrase doesn&#8217;t make very much sense to someone who does care about performance, because it&#8217;s like why would you ever say that?</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=908">15:08</a>] It just seems like it encourages people to not be mindful of the performance of their program. But if you rewind to that time and you understand that, well, a lot of the programs, you know, they had the opposite problem. A lot of the programs at that time, what programming was, was coming up with all these crazy little assembly tricks to shave a cycle off here or there, right? And if you&#8217;re talking to an auditorium full of people who are really into that sort of thing, then it really can be the root of all evil, right?</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=941">15:41</a>] It&#8217;s like you guys are spending all your time on this, but we have this really big other problem. And that is not the right tradeoff, right? That is, you&#8217;ve swung, you know, like calling it tradeoffs is a great way to say it. You&#8217;ve swung the pendulum way too far in one of those directions at some point. And so to some degree, while I would highly dispute the description &#8220;root of all evil&#8221; today as a good thing to say to somebody, or that it leaves a good impression, when we rewind to that time period, I think it makes a lot more sense.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=972">16:12</a>] Because when you look at what people were actually spending their time doing, where their priorities were, I think that maybe that wasn&#8217;t so much of an exaggeration. I mean, obviously it&#8217;s hyperbole, but it&#8217;s less of one.</p><h3>16:23 &#8212; Dijkstra was depressed</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=983">16:23</a>] In your slides, there were so many quotes and snippets of really kind of digging into the true history. Was there anything you found that surprised you when you were doing the research?</p><p><strong>Casey:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=993">16:33</a>] I mean, constantly, absolutely constantly. And first of all, I&#8217;ll just say that there&#8217;s, as a <a href="https://en.wikipedia.org/wiki/Meta_Platforms">meta</a> point, I&#8217;ll give you a specific thing that surprised me that&#8217;s kind of funny. That&#8217;s more about a technical thing. But first I want to talk about a broader picture, which is one of the things that really hits home for me whenever I do these, is the personal aspects of it. These people were friends and competitors and all these sorts of things.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=1028">17:08</a>] And it&#8217;s all kind of lost to us in a way when we think about computing history in a sterile way. When I read up on what Edsger W. Dijkstra wrote, Dijkstra was the person who kind of kicked off structured programming. No, I&#8217;ll call it a revolution. That&#8217;s a bit too probably grandiose, but he kicked off that train of thought. He wrote a thing called Notes on Structured Programming. It was a manuscript or a monograph, I don&#8217;t remember what they called it.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=1059">17:39</a>] Got a typewritten thing. It looks exactly like a typewritten thing. Right. When he wrote that, he was very depressed, like he was having a lot of trouble in his life at that time. He had gone through this situation where they had done what people today now recognize as pioneering work in distributed computing. He and these other people at Eindhoven University of Technology.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=1087">18:07</a>] I apologize, I can&#8217;t say the proper name for it; it&#8217;s well beyond my pronunciation capabilities. But point being, he had done this really foundational work in distributed computing and published it, and people today now recognize it as that. It is undisputedly a massive contribution to distributed computing. He did it with a part-time team of people at the university, who&#8212;this wasn&#8217;t their job; it was a mathematics department they were in.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=1114">18:34</a>] And as a result of that, basically they sort of just got dissolved, like the Department of Mathematics. I guess he wasn&#8217;t really specific about it, but in his notes the Department of Mathematics was just like, they disbanded the team. It was like, this isn&#8217;t math or whatever, I don&#8217;t know, they just had a pessimistic view of it. And he was really depressed about that, and he wasn&#8217;t sure what he should do with his life and, what&#8217;s the deal here, right?</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=1137">18:57</a>] And he was having this sort of, I don&#8217;t want to call it an existential crisis because I don&#8217;t want to again put words in his mouth. These are historical figures and, you know, I can only. That&#8217;s why I try to use quotes to try to show you like what they said. But that&#8217;s, it&#8217;s just so relatable when you go through the history this way. It&#8217;s not just some random guy who wrote some math down in a paper.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=1157">19:17</a>] It&#8217;s like people were really struggling with this, and some of the most important aspects of computer history come out of these amazing human stories. And I found that absolutely fascinating. So I&#8217;ll just put that out there as one of the biggest rewarding things about looking into this history, if you ever do it, is if you can go find the actual writings of the people, like things outside of just their technical papers.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=1181">19:41</a>] It&#8217;s just fascinating. And it&#8217;s so much more relatable and fascinating because you feel the story. It&#8217;s not just this abstract computer science thing that happened. So that&#8217;s one thing. But the other thing I was going to say is when you read through this stuff, I just go through piles of documents and I&#8217;m just reading them and seeing, does this fit into this story? Should it be part of what I&#8217;m telling, or is it extraneous?</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=1207">20:07</a>] Is it something that is interesting, perhaps, but not actually part of it. And one thing that I found, when the VOD of this lecture or talk goes up, I&#8217;m going to include this in the notes because I thought it was so fun, didn&#8217;t make it into the talk. I found a thing, like a thing from Tony Hoare. So C. A. R. Hoare, who again is another massive figure in computer science. Hoare, Dijkstra, and Knuth are like the three amigos.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=1238">20:38</a>] And they all write to each other. They&#8217;re very important people in computer science history. So I found a thing by him that was like a thing he did not decide to pursue. It&#8217;s like this note where he&#8217;s talking about&#8212;he&#8217;s talking about this thing that he&#8217;s thinking of doing, and there&#8217;s just a handwritten thing on him from later on in his life, when he was, I guess, categorizing these documents, and he just writes down, like, I decided not to pursue this because I talked about it at this conference that I was at.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=1270">21:10</a>] And Peter Naur, who&#8217;s again another famous figure in computer science history, if you&#8217;ve ever looked at context-free grammars and parsing, you&#8217;ve probably heard Backus&#8211;Naur Form. He&#8217;s the Naur in Backus&#8211;Naur Form. If you&#8217;ve ever heard of the language ALGOL, he was a major figure in standardizing that and writing up the standard and all this stuff. Anyway, Hoare. Yeah, I proposed this thing, I went through and said it, and Peter Naur was like, making multipass compilers is easy.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=1300">21:40</a>] I just wrote a nine-pass one. So I decided not to pursue this. So what&#8217;s the thing? I read through the thing and maybe I&#8217;m just overreading it with the benefit of hindsight, but he pretty much describes static single-assignment form, like SSA, which is a very standard compiler technique developed in the &#8216;80s. But this note is from the &#8216;60s. So it&#8217;s like, in my head, I&#8217;m like, did Peter Naur accidentally set back compiler science by 20 years by telling Tony Hoare?</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=1338">22:18</a>] Well, 15, let&#8217;s say, by telling Tony Hoare this is not important, when actually it would have been very, very important. You find stuff like that all the time where you&#8217;re like, whoa, what is this? I saw another one too. Just one more I&#8217;ll mention. I can&#8217;t remember now, I&#8217;m sorry again. Your brain kind of turns to mush when you try to dump this many documents into it for a talk. But there was a pretty interesting thing, I thought, where Margaret Hamilton, so the person who managed the Apollo Guidance Computer, she was one of the core programmers originally on the project and then was the manager of the whole OS, like the whole real-time software that ran the Apollo 11.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=1383">23:03</a>] Well, all the Apollo Guidance Computer stuff, right? Which I mean, most people today herald as a very, very significant real-time systems achievement in that era, right? Everyone pretty much agrees with that. She had to write a defense. I think it was in Communications of the ACM, maybe it was in Datamation. They say&#8212;apologize. I can&#8217;t remember the venue because it had been pointed out as a failure because people didn&#8217;t understand the context that the reason that the Apollo computer had to trip those alarms was because that had been used improperly.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=1420">23:40</a>] It was used in a configuration that wasn&#8217;t supposed to. And it actually, rather than crashing, went into backup modes and successfully landed. It worked. It actually was a triumph of fault-tolerant engineering. And she had to write a defense of this because people at the time were saying, &#8220;Oh, they screwed up. This is an example of why you wouldn&#8217;t want to do engineering this way, or don&#8217;t write the code this way.&#8221;</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=1443">24:03</a>] And so again, stuff like that always makes me think, the more things change, the more they say the same. That&#8217;s exactly what would happen on Twitter now, right? Some very successful thing that people did, right? They would just get slandered and say that it was done wrong, and there would be a flame war, and then they&#8217;d have to come out and have a thing. So anyway, those are just some examples.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=1463">24:23</a>] But there&#8217;s so much great stuff in there. I highly recommend it to anyone who likes this kind of thing. You won&#8217;t be disappointed if you go dumpster diving, as they call it.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=1472">24:32</a>] When you said that you saw the human stories and that Dijkstra was depressed at that time, what did you see that made you realize that?</p><p><strong>Casey:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=1482">24:42</a>] One of the nice things about Dijkstra is that he&#8217;s kind of a pretty straight shooter. And so I didn&#8217;t actually have to do any interpretation. He literally talks about being depressed. There&#8217;s a paper, not a paper, like a thing that he did that&#8217;s like a retrospective that&#8217;s handwritten by him later on in life. And he literally says, in this period I was very depressed because of these reasons.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=1512">25:12</a>] Now, he could be wrong about the source of his depression. Right. So I don&#8217;t want to claim that just because he said it, it&#8217;s necessarily true or something like that. But one of the amazing things, I think one of the really cool things about academics, especially that era, is they just produced a voluminous amount of material, and so we don&#8217;t have to guess that much. In the private sector, I think it&#8217;d be a lot harder, like if you wanted to know what people at maybe Lockheed or something were thinking or doing at that time.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=1547">25:47</a>] I imagine it&#8217;s much more difficult just because things are classified or they&#8217;re not academic, so they&#8217;re not necessarily going to write them all up. So a lot of the internal stuff when you write them, academics don&#8217;t really have that. They don&#8217;t have an incentive or a prohibition on writing up everything they do. So they don&#8217;t just have to have a public-facing statement of what they did or a public-facing paper of what they did.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=1567">26:07</a>] And then, oh, there&#8217;s this extra secret stuff. The academics don&#8217;t have that restriction. They&#8217;re sort of... They benefit from being as forthcoming as possible about what they&#8217;ve accomplished, usually.</p><h3>26:17 &#8212; The personal side of goto considered harmful</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=1577">26:17</a>] I saw in the slides that you looked at Go To Statement Considered Harmful. That email, do you have any sense of the personal or people side of that?</p><p><strong>Casey:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=1588">26:28</a>] So you&#8217;re talking about the original Dijkstra letter to the editor. That&#8217;s like Edsger W. Dijkstra&#8217;s Go To Statement Considered Harmful. The complete story is actually relatively simple according to him. He was at a conference in Tennessee where he was talking to Brian Randell, who&#8217;s another computer science guy. He doesn&#8217;t quite get the same level of name recognition as a Knuth or something like that, but he has a lot of papers at that time.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=1624">27:04</a>] You can go find him. He&#8217;s not obscure. He&#8217;s not an obscure figure. I wouldn&#8217;t say to anyone who reads the history. You&#8217;ll see him come up. He&#8217;s talking to Brian Randell and some other people outside. This is exactly like the same thing that happens at modern conferences. There&#8217;s the talks and then there&#8217;s all the stuff that goes down at the bar. Right. It&#8217;s very much that. They&#8217;re outside, they&#8217;re talking.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=1645">27:25</a>] And according to him, he&#8217;s basically giving the same sort of example of a problem with the Goto that he gives in the paper. Right. This idea of enumeration, we can talk about that later. But sort of a side note, he&#8217;s sort of saying, like, this is kind of a problem with Goto. And one of the reasons that maybe it&#8217;s not such a good idea. And the people who were listening to him were like, Brian Randell and the others were like, you should publish that.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=1676">27:56</a>] That would be helpful because there&#8217;s these arguments going on about whether GOTO is good or bad. That was kind of happening at the time already, since around 1959 even, I think there&#8217;d kind of been a little bit of that, had been kind of growing, this idea that maybe Go To Statement Considered Harmful wasn&#8217;t the best idea as a way to structure your programs. And so he does. He goes back to Eindhoven University of Technology and he writes up this same thing he was saying, basically, and he sends it to Communications of the ACM for publication.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=1709">28:29</a>] Niklaus Wirth, who is the creator of Pascal, a very prominent figure, also was very heavily involved in ALGOL and all this sort of stuff. Language designer guy, he is the editor who is in charge of getting this thing published. I guess I&#8217;m not exactly sure how things work at Communications of the ACM. He doesn&#8217;t want to wait to have it published. He doesn&#8217;t want to take the time to go through the referee process or whatever.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=1738">28:58</a>] I don&#8217;t know at that time what the requirements were for publishing an article in Communications of the ACM, but I&#8217;m sure that it involved a lot of procedure. It wasn&#8217;t just like, oh, hey, I&#8217;m the creator of Pascal at that time. He wouldn&#8217;t have been the creator of Pascal yet, because Pascal comes later, I think. But either way, he&#8217;s like, hey, I&#8217;m this important guy. I&#8217;m just going to put this whatever I want.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=1759">29:19</a>] Communications. That&#8217;s not how it worked. And so he decides that in order to get it published more quickly, he&#8217;s just going to publish it as a letter to the editor. Because then there&#8217;s no anything goes there. As long as the editors are fine with the content. I assume it doesn&#8217;t have to be refereed, it doesn&#8217;t have to have any kind of review. It doesn&#8217;t have to be, et cetera, et cetera. So he turns it into a letter to the editor and he takes the name of the thing that Dijkstra sent, which was A Case against the GO TO Statement.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=1787">29:47</a>] That was what Dijkstra wrote at the top of the thing as the title. He changes it for letters to the editor to Go To Statement Considered Harmful. Right. So it wasn&#8217;t even Dijkstra&#8217;s plan to have it maybe be that confrontational. But that&#8217;s what happens now. This is not well received, to say the least. According to Knuth, again, I&#8217;m just trying to say who said what here. According to Knuth, Dijkstra said he got letters, angry threatening letters, in much the same way you would today.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=1834">30:34</a>] Got people who were very abusive, telling him off. I&#8217;m sure part of that is because by all accounts, Dijkstra himself was also somebody who liked to push people&#8217;s buttons. That&#8217;s well acknowledged. I think Alan Kay is probably the best source for this. He talks about this. He liked Dijkstra, and they apparently got along well. But he&#8217;s often said that Dijkstra was someone who kind of leaned into being sort of brash about stating things about programming and kind of relished that position.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=1867">31:07</a>] So it probably didn&#8217;t help that he was already sort of known a little bit in that way. But in general, that&#8217;s how it went down. And, like I said, that wasn&#8217;t the initial foray against Go To Statement Considered Harmful by any stretch of the imagination. But it just kind of maybe, you call it the straw that broke the camel&#8217;s back. It was like a flashpoint, might be the way to say it. And then the title, of course, that Niklaus Wirth picked is quite the doozy and kind of clickbaited everyone, as I call it, into that soap.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=1903">31:43</a>] It&#8217;s funny because, I mean, social media, it&#8217;s similar patterns. People have very explosive first lines, and then the comments are full of all this hate and stuff. In their case, I&#8217;m guessing this is all papers. So you submit a letter to that. It&#8217;s a physical thing, and people are reading maybe a newspaper or something. I don&#8217;t know.</p><p><strong>Casey:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=1925">32:05</a>] Yeah, it&#8217;s like a periodical. It comes as a bound. I mean, I guess there&#8217;s. All the things around us here are hardbound, but it&#8217;s like usually with soft. It was a maybe a perfect binding kind of bound thing that has you open it up, table of contents and letter to editor. Right. And yeah, like you can go find. There are a few. If you go look at people&#8217;s personal papers, which, like I said, if I did this full time, I&#8217;m sure I could find out way more stuff than I did.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=1954">32:34</a>] Right. But some people have gone and looked at the personal papers, and occasionally some of them have been able to digitize some of those and put them online that we can look at. And you can find, for example, online right now, if you search for it, there&#8217;s a back-and-forth letters, personal letters between Edsger W. Dijkstra and a guy who is kind of into functional programming and promoting that. And you can look at the correspondence, and it&#8217;s kind of.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=1982">33:02</a>] It&#8217;s a little, it&#8217;s a little flame war. Like, really, like that&#8217;s what they did. They didn&#8217;t have the ability to do, like, pithy Twitter replies, so it was just on paper. And Knuth did something similar. It wasn&#8217;t really a flame because he had, at least when reading comes through, a tremendous amount of respect for the authors of the book Structured Programming, which is Dijkstra, Hoare, and Dahl.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=2012">33:32</a>] One of the things that he published was a series of open letters to them reviewing the book and talking about the things that he didn&#8217;t find compelling in it. Very respectful. So it wasn&#8217;t. That one wasn&#8217;t a flame war. But that&#8217;s what they had to do because they didn&#8217;t have social media. So Edsger W. Dijkstra wrote all these things called EWD with a number. It was his initials, basically, and then a number.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=2040">34:00</a>] And that&#8217;s like this serialized list of all the things he wrote. And he labels them this way. It&#8217;s not like some historian characterizes it after the fact. It&#8217;s like, oh, I&#8217;m doing. He&#8217;s like, I&#8217;m doing EWD 937 now or whatever. Right. It&#8217;s hilarious. But anyway, several of those have been put online that are not necessarily technical. For example, his trip reports. You can go read those and you can read about, oh, I went and stayed at, like, such and such&#8217;s house and we went to dinner or whatever, right.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=2071">34:31</a>] So you can find some nice personal anecdotes in even the publicly available stuff. But in terms of a real heart-to-heart conversation, I didn&#8217;t have access to anything like that that wouldn&#8217;t have just been in a paper, more or less, normally. So it&#8217;s a shame. One of the problems with this stuff is it&#8217;s so interesting, but it&#8217;s not a job to do. If somehow it was a job, I probably would almost take that job.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=2098">34:58</a>] Being the person who crawls through and tries to redocument this whole thing. But, no, computer historian, no one&#8217;s hiring, no one&#8217;s interested in paying for that.</p><h3>35:09 &#8212; The anatomy of a 35 year mistake</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=2109">35:09</a>] You have this other talk, and the title was just so catchy. It was &#8220;The Big Oops: Anatomy of a 35-Year Mistake.&#8221; What is that? 35-year mistake.</p><p><strong>Casey:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=2121">35:21</a>] So this was a kind of funny thing that happened to me that I then did a historical lecture on. I had worked on systems in the past that were basically like editors. You have 3D graphics editors. You have to multi-select things and move them around. There&#8217;s a bunch of architecture things you have to learn to be able to write that kind of code and certain kinds of problems you have to solve. A very basic one that I would point out that hopefully most people can relate to would be if I have a bunch of things on the screen, some of which have a color.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=2160">36:00</a>] So maybe this is a drawing program and I&#8217;ve got some text and I&#8217;ve got some shapes and I&#8217;ve got some strokes, some hand-drawn stuff, whatever, and I want to be able to select a bunch of them, and I want the user interface to present to me which things I could edit on these shapes. So I want to be able to edit the color, and I want it to apply to all of them. Right. This is just a basic architecture problem that you have to solve if you&#8217;re going to write one of these programs and you want it to be any good.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=2186">36:26</a>] Now, oftentimes, you will see programs where the person didn&#8217;t solve this problem, and you can&#8217;t do that. It&#8217;s very frustrating, right? So a good program, someone has solved that architectural problem in some way. And I was watching, I just happened to be watching because sometimes I do like to watch old videos of computer science pioneer stuff. And I was watching a demo of Sketchpad. I&#8217;d seen it before, but I was watching a demo of Ivan Sutherland&#8217;s Sketchpad.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=2213">36:53</a>] And Sketchpad, for those who don&#8217;t know, is a groundbreaking computer graphics program. It&#8217;s done with a light pen, and it was done in the early 60s. And you could draw things like you do in a modern CAD program, and you could do stuff that even a lot of modern CAD programs don&#8217;t really offer or only offered recently. I think in the talk I said in 2007 was the first time that AutoCAD got some of these features.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=2239">37:19</a>] You could do stuff like say these two shapes, this line has to be perpendicular to that line, constrain it, and you could just do whatever you want with the drawing and it would resolve for making that happen. And these are very rare in programs even to this day. That&#8217;s just not a common operation you would see in a drawing package today. I was looking at this and I was like, how the heck did he solve this architectural problem?</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=2266">37:46</a>] How did he do this stuff in the early 1960s in assembly language, with no editing tools, no debugging tools? I mean, this would have been like either punch cards or one step away from punch cards. It would have been hard to develop this stuff. And when I went back and I went through his thesis and I looked at the code, it&#8217;s actually documented how he did it. And I realized, like, oh crap, this is actually like an entity-component system.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=2298">38:18</a>] Basically what we would now consider sort of state of the art of real-time architecture for doing these kinds of operations, meaning cross-cutting, operating on this kind of property across many things at once that are all kind of different. And this was something that object-oriented programming &#8212; I&#8217;m editorializing now, a bunch of people will complain that I&#8217;m saying this, but this is just my opinion.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=2327">38:47</a>] Object-oriented programming and the pedagogy around it really struggled with that problem for a long time because they were teaching, despite people who will now claim otherwise. I document it very completely in the talk, so I don&#8217;t think they have any leg to stand on. But the pedagogy at the time was all about build a domain model. The domain model looks like your hierarchy. Basically, like I&#8217;ve got employees and employees, I&#8217;ve got contractors and I&#8217;ve got derived, like is this a full-time employee or a part-time employee?</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=2355">39:15</a>] That was how they suggested these things should be implemented. That kind of architecture doesn&#8217;t work for these kinds of operations that I&#8217;m talking about. Entity-component systems do. And generally, that kind of rotated architecture, I might call it, does work for these. What I call the 35-year mistake is the fact that I very ironically, in my opinion, Sketchpad sort of showed in its architecture how you could solve this problem and how you could solve it in arguably an object-oriented way.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=2392">39:52</a>] I think if you squint at it, a person who does object-oriented programming could easily make an argument that you can do an object-oriented version of this. You don&#8217;t have to violate any particular principles to do it. It&#8217;s just not the hierarchy domain model way that people were conceptualizing it through a lot of the 80s and 90s, let&#8217;s say, and even unfortunately to this day. But I think a lot of object-oriented programs don&#8217;t do that anymore.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=2417">40:17</a>] Ironically, that was in Sketchpad. The DNA was there, and we could have had it right away because Ivan Sutherland figured it out. But weirdly enough, the whole idea of this sort of inheritance hierarchy with lots of encapsulation around it grew in part out of Sketchpad because Alan Kay looked at it and said the interesting part of this is the fact that you could take a shape and not know what it was and just have this draw circle call on it or something.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=2449">40:49</a>] That was the part they took away from it, which is much less interesting in my opinion and not that architecturally useful in most cases. So in kind of this amusing way, Sketchpad contained, if I&#8217;m editorializing, it contained what I consider to be a good architectural idea, but the takeaway from it was a bad architectural idea, is how I would say it. And saying bad architectural idea is a little bit strong because, as I say in the talk, I think there are times when you do want to think very high level.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=2477">41:17</a>] You might want to think about things in kind of the way that Smalltalk thinks about them. So I don&#8217;t want to say bad idea in the absolute sense, but bad in the way it ended up being applied, let&#8217;s say.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=2489">41:29</a>] Why does that class hierarchy not work for this problem?</p><p><strong>Casey:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=2493">41:33</a>] It&#8217;s pretty easy to understand, actually. So when you think through an inheritance hierarchy that&#8217;s based on sort of what you see in the real world or what you&#8217;re trying to model. So you say, the typical example, and it&#8217;s brought up tons of times by people who wrote the OOP literature, like Bjarne Stroustrup, like the Smalltalk people, the idea is keeping it with a Sketchpad example, I&#8217;m going to have a shape.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=2518">41:58</a>] From the shape, I&#8217;m going to derive triangle or circle. And the encapsulation is around that thing. So a circle has a radius, but shapes don&#8217;t have radiuses. Shapes don&#8217;t necessarily know what that is, right? So it tends to get deferred down and the encapsulation boundary is drawn around that sort of derived class. That&#8217;s, like, the most derived version of whatever this thing is.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=2545">42:25</a>] The problem is that creates a lot of headaches when now something that wants to work across a lot of shapes needs to actually do something intelligent with modifying, say, the scale of something or wanting to change its color because it doesn&#8217;t really have a way to know what&#8217;s going on in these highly encapsulated things. So typically what you end up having to do in those situations is you then have to take this inheritance hierarchy and kind of, in a sense, throw away the benefits of it.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=2577">42:57</a>] You end up having to make at the top all of these accessor iterator things that allow you to probe into that lower class and say, tell me all of the colors that you might be using and a name for them. In a sense, what you end up having to do when you want the architecture to work is you have to rebuild the Sketchpad version on top of the inheritance hierarchy version, which doesn&#8217;t really do anything for you.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=2604">43:24</a>] And it&#8217;s not to say that there isn&#8217;t some benefit that you can derive from having derived is kind of a pun here, I guess, that you can derive from having this idea of saying this thing is like this other thing. Please give me some of the implementation of it. That&#8217;s not necessarily a bad thing in practice. The problem is when you teach people that this is how it&#8217;s going to work, like you just make this hierarchy and then your architecture is just supposed to work, it really ill-prepares them for the reality that that&#8217;s actually not going to solve most of the problems that you have are not going to be solved that way.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=2636">43:56</a>] And again, it just comes from this fact that typically when we&#8217;re working with computer programs, most of the time what we need to do is create cross-cutting operations that work with a lot of the data that&#8217;s inside these derived classes. That&#8217;s actually the thing that we want to do. And it&#8217;s really cumbersome and typically a bad fit for the problem space to put that into some virtual functions that are sitting at the top of this very sort of tall hierarchy.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=2663">44:23</a>] It&#8217;s usually much better to do. Again, even if you&#8217;re doing object-oriented programming, you don&#8217;t have to stop doing object-oriented programming. You just have to think about it differently. You have to think about what the objects are differently, where you&#8217;re drawing the encapsulation boundaries. It just helps to think about it differently and say, actually, the more important things to model are what are the things that stuff is built out of?</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=2684">44:44</a>] How do I build a circle out of objects, right? What are those things? A radius property, a center property. Those maybe should be the objects that I&#8217;m thinking of as more first-class citizens. And this inheritance hierarchy stuff about what the objects are that I see on the screen, like triangle and circle, that&#8217;s a distraction. That&#8217;s not the proper way to model the problem. And again, I don&#8217;t think I would be pissing off any object-oriented programmers by saying that today because I think a lot of them use architectures that do think about objects in that sort of rotated sense and not in the domain model hierarchy sense.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=2720">45:20</a>] Not that there aren&#8217;t still people who are doing that. But it&#8217;s not the only way to go nowadays. It&#8217;s not the only way that&#8217;s promulgated.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=2728">45:28</a>] because I guess my immediate thought would have been in that case, the base class has the notion of a color or some shared thing, and we just operate. If you&#8217;re a shape, then we assume you have a color. But you&#8217;re saying refactoring and putting up in there is suboptimal and you want all these subclasses to have some handle to some radius property or something like that.</p><p><strong>Casey:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=2754">45:54</a>] Is that what you just described is what tends to happen in systems that are architected this way? You end up with your derived class not really being very much of anything because in order to edit stuff, you had to migrate it all up to the top. And there was actually terms for this in the old days. I don&#8217;t still use, like, fat base classes, right? Or things like that. It just ends up your base class has every type of property that any derived class might ever have.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=2778">46:18</a>] You have get primary color, get secondary color, get tertiary color, right? Because something needed three different colors or whatever. And most things don&#8217;t use those colors and all these other sorts of things, right? There&#8217;s certainly nothing wrong with running a program that way. It&#8217;s just, again, why did you bother with the hierarchy? You&#8217;re not getting any actual encapsulation benefits from it because you just forced everything in the base class anyway.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=2801">46:41</a>] So why didn&#8217;t you just make that be your thing? Just make one class called Shape and be done in terms of the ECS style of implementation. I don&#8217;t necessarily want to advocate for it or not because I don&#8217;t actually personally use ECS or anything like that, but they are very common. Now the idea there is to just turn it on its side and say, look, typically what we want to do is do things like, okay, there&#8217;s stuff that has physics on it.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=2829">47:09</a>] I&#8217;m doing this thing, and I want to have physical simulation of entities. Well, the physics system is the thing that probably knows how that should be stored. So rather than having that be data in my derived class that&#8217;s encapsulated around the derived class, instead, why don&#8217;t I just have the physics system know what physics is, and then if you want to make something that participates in physics, you just have a handle for whatever this thing is, like a handle for my shape.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=2856">47:36</a>] That handle is valid in all the systems. So I can look up the physics properties of the shape and gather it when I want to actually do something with it. But generally speaking, the encapsulation stays around the system. So physics properties are defined by the physics system because, hey, that&#8217;s who knows how physics should work. And I just ask about my physics when I need to do something with it.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=2879">47:59</a>] And this kind of gets you out of that problem. And then now you can just compose things. Oh, I want to make something that has several physics elements in it. Fine. I can just have multiple physics handles if that&#8217;s what I need, or something like this. I can very flexibly merge these things together. I want something to not have physics. I just don&#8217;t ever insert the. I don&#8217;t ever ask the physics system to have a valid piece of data for this handle in it.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=2901">48:21</a>] And it won&#8217;t simulate any physics for it. Right. Whether that&#8217;s the world&#8217;s best architecture or not, I&#8217;m not going to argue for it or against it. It&#8217;s just a lot better than domain model hierarchies, that I will say, right?</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=2971">49:31</a>] Earlier we talked about the tradeoff between, I guess, performance code and maintainable code. And I saw you had this one video. It said in quotes, &#8220;Clean Code, Horrible Performance.&#8221;</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=3003">50:03</a>] I feel like this is on the same topic. What&#8217;s your take on that? Because you also put Clean Code in quotes. What does that mean?</p><h3>50:12 &#8212; Clean code horrible performance</h3><p><strong>Casey:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=3012">50:12</a>] So it&#8217;s a fairly subtle topic, right? And that&#8217;s why the quotes are there. Because the first thing that you have to point out is that clean code is clean code. Object-oriented programming. A lot of these phrases, they mean different things to different people. And so if you&#8217;re going to say that this code is clean, it&#8217;s pretty hard to find two programmers who will agree on exactly whether it is or not.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=3039">50:39</a>] They all have different ideas about what is clean and what is not. The reason I put that in quotes is I was talking about a very specific thing, which is literally the book Clean Code. The thing where there&#8217;s, here are the things that we would recommend that you do in that particular case. What I was talking about is there&#8217;s a certain set of ideas that is advocated in Clean Code as these are the things you should do.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=3064">51:04</a>] And they are like you should have everything should be kind of, I guess I would say dynamic dispatch, or at least code shouldn&#8217;t know the types it&#8217;s operating on, right? Saying it&#8217;s dynamic dispatch is maybe it depends on the language whether that&#8217;s going to be true or not. But when I write code, I don&#8217;t know what types I have. It&#8217;s just, I don&#8217;t know. Some base classes is what I&#8217;m operating on, and they could be anything.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=3088">51:28</a>] That&#8217;s thing one. Thing two is functions should be very small. In fact, the numbers are kind of weird. They&#8217;re like four lines or five lines. When you go look at the actual things that are claimed in some of this literature, it&#8217;s really strange. You&#8217;re just like, gosh, that&#8217;s very small, right? And I go through some of those things and I say, look, if we were to actually follow these, we get into a really bad state because a lot of the languages that people are going to be using to implement this stuff, like C, for example, which even would be a fairly good case in a lot of cases.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=3121">52:01</a>] At least it&#8217;s a compiled language and so on. In a lot of cases, these things are kind of a recipe for disaster. If you&#8217;re handing out types where you can&#8217;t know the type at compile time, or you can&#8217;t know the type, or it&#8217;s going to be in a different module, so unless you have really aggressive link-time code generation, it&#8217;s not going to be likely that you could figure this out. And you&#8217;re saying all the functions should be very small.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=3144">52:24</a>] And of course they&#8217;re going to be virtual because they&#8217;re on these sort of types that you don&#8217;t know what they are. This creates a really toxic combination for the compiler. Normally you can have&#8212; I mean, you can have small functions if you want them only four lines long. If the compiler can know that, it can just inline that, right? If it can see clearly what you&#8217;re doing, it can just merge those things in. We don&#8217;t have a problem if they&#8217;re behind a virtual function.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=3170">52:50</a>] So it doesn&#8217;t know, it can&#8217;t guarantee that it is that type. It can&#8217;t do that. And so when you talk about all this stuff, what you&#8217;re giving up... People, I think, also because the video&#8212;I mean, the video was a very short video as part of a series&#8212;I think people sometimes get the wrong idea that I think that virtual function calls cost a lot. They do cost something, but depending on how you want to look at it, they actually don&#8217;t cost that much because it depends on whether it&#8217;s predicted correctly or not.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=3199">53:19</a>] But in general, the cost of a virtual function is less than you would think a lot of times. The actual reason that it slows things down is because the compiler cannot merge the code together. It can&#8217;t inline stuff and remove and reduce the waste. That&#8217;s the actual problem. So if you just want to call a virtual function, yeah, if it was a really, really hardcore optimization scenario, then you don&#8217;t want anything, probably calling a virtual function in general, because there is some cost to that.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=3225">53:45</a>] Just calling a function has cost. But that wasn&#8217;t the really bad part of it, right? So it&#8217;s that. Plus there&#8217;s an additional thing, which is that it can&#8217;t unroll and go wide on things. If the compiler can see everything you&#8217;re doing, it can use SIMD, it can widen loops to operate on multiple things at once. It can unroll those loops. There&#8217;s all these things it can do. If it&#8217;s got these virtual functions, it&#8217;s just like, that&#8217;s it.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=3248">54:08</a>] I don&#8217;t know. I can&#8217;t make decisions about that. I have no idea what this thing on the other end is doing. That was my point on that. And again, it&#8217;s not meant to be assailing the idea that your code should be easy to read or easy to maintain. It&#8217;s just more like these guidelines seem really bad. And also, I don&#8217;t think we need them for code to be maintainable. I don&#8217;t have trouble maintaining functions that are 30 lines long or 50 lines long.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=3273">54:33</a>] I don&#8217;t find that five is a magic number or something, or that it has to be really short. And also I find that it&#8217;s usually pretty easy to write code where I know what the types are, that those can be determined at compile time. I don&#8217;t think that results in code that&#8217;s particularly hard to read.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=3288">54:48</a>] When I was in college and very early, I remember people would recommend that book, &#8220;Oh, you should read Clean Code.&#8221; So my understanding is that you wouldn&#8217;t recommend that to people who are software engineers to read that. I guess the way I would categorize it is a mixed bag.</p><p><strong>Casey:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=3300">55:00</a>] So I wouldn&#8217;t actually say that I disagree with all of the things in the book, though. I mean, some of the things are things that I definitely do myself. Like giving variables easy-to-understand names is something that I think is good advice, and that&#8217;s in that book. Right. And so kind of more, I wouldn&#8217;t necessarily say do or don&#8217;t read the book. What I would say is, like, I think there&#8217;s some things in this book that don&#8217;t.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=3331">55:31</a>] That aren&#8217;t addressed properly. Like, I don&#8217;t think you want to tell people these rules of thumb and not tell them about these other problems. That was exactly what I was pointing out there. And so usually it&#8217;s more that it&#8217;s like I find that oftentimes there is this tendency, I guess I&#8217;ll say, to pretend that we don&#8217;t have to talk about performance and we can just say, in fact, premature optimization is the root of all evil.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=3361">56:01</a>] Bringing it back to there, I feel like there&#8217;s this temptation and very prevalent practice of sort of taking that idea to mean we don&#8217;t have to talk about performance when we&#8217;re teaching people things at all. Or like when you write the book Clean Code, you don&#8217;t have to talk about performance at all. You can just include a thing that&#8217;s basically like, hey, there&#8217;s performance issues, but most of the time it&#8217;s not a problem or something like that, which is, or if you look at Refactoring, the book Refactoring, very popular, it literally says exactly that in like the OOP thing.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=3394">56:34</a>] It&#8217;s like there might be performance concerns, but they&#8217;re usually okay or something, right? And that is not true. I just think that&#8217;s fundamentally not true. I think these books should include detailed discussions of the actual performance problems that you are very likely to hit if you take some of their advice, because it&#8217;s not that it means you can&#8217;t do those things.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=3417">56:57</a>] But I&#8217;ll quote you back to you. It&#8217;s about trade-offs. There is always a trade-off that you&#8217;re making, and sometimes if you understand the trade-off, you will make it. You&#8217;ll say, I know this is going to cost. This may be a serious performance problem for us, but I think that&#8217;s okay. I think it&#8217;s not like our performance won&#8217;t suffer to the point where it&#8217;s a problem for the product. I understand what that is.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=3443">57:23</a>] There&#8217;s a huge difference between that and just going like, eh, we don&#8217;t worry about performance till the end. It&#8217;s completely different. Those are two different engineering approaches. And so what I try to do is encourage people to put that analysis back in, understand the performance trade-offs you&#8217;re making, understand how much it might cost in the future to make these fixes. And I don&#8217;t really do any AI stuff, but my sort of feeling is more so now than ever.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=3473">57:53</a>] I feel like that&#8217;s got to be pretty important because you&#8217;re instructing these AIs to do what they&#8217;re going to do. And I feel like it would be a bad idea not to know about performance trade-offs because, especially if an AI is going to be doing your bidding and structuring the code the way you want to structure it or doing whatever, it seems like a fairly straightforward part of the process to include performance stuff in those instructions.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=3497">58:17</a>] Right? That would be a natural thing that we would want to understand and do. So I feel like really I&#8217;ve been just trying to get that more into the conversation, and I feel like it&#8217;s as relevant now as it ever was and arguably maybe more so. I don&#8217;t know, but I could be wrong about that.</p><h3>58:33 &#8212; How to write high performance code</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=3513">58:33</a>] What are some things that are in your mind? They&#8217;re those high-value performance things to consider that don&#8217;t cost a whole lot to think about.</p><p><strong>Casey:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=3523">58:43</a>] So to me, awareness is the number one thing, right? Understanding roughly the performance characteristics of the hardware that you&#8217;re working on, which includes things like if there&#8217;s a network, what does that look like? And so on. It&#8217;s really about awareness more than anything else. Because a little bit of awareness can go a very long way if you understand the basic concept that network latency versus network throughput are different things.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=3555">59:15</a>] You can make upfront decisions about structuring code such that you batch things properly and so on and so forth. If you don&#8217;t understand those things, you could get very far down a project only to realize that everything you designed and the way it works is all very serial and really just cannot be accelerated over a network at all. It&#8217;s never going to run reasonably or something like that.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=3576">59:36</a>] Right. And so I think the lowest hanging fruit is just to get some education in performance, get some education in how to think about the way a machine works and what makes it fast or slow, what it struggles with and what it doesn&#8217;t. And just to keep that in the back of your head, because at the end of the day, if you have that knowledge, I think you&#8217;re very unlikely to make the kinds of architectural decisions that will be hard to undo later.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=3606">01:00:06</a>] Right. And so that&#8217;s really the majority of it, I think. And that is by far the highest impact, lowest cost thing you can do is just do that training once, because once you have it, it&#8217;s with you forever. Once you understand how to think about performance, it can always be there. And at any time you can sort of have that alarm bell of like, &#8220;I don&#8217;t see...&#8221; You&#8217;re always kind of looking like, &#8220;I don&#8217;t see the path towards this running well,&#8221; then that&#8217;s your cue to stop.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=3638">01:00:38</a>] Maybe we need to rethink how we were making some of these decisions. As long as you can see that path, you can delay most optimization work. As long as you can see the path, like here is how we will optimize this, you&#8217;re in pretty good shape because if you&#8217;re making those trade-offs correctly, you&#8217;re not going to paint yourself into a corner where there&#8217;s nothing that you can do other than scrap and rewrite.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=3665">01:01:05</a>] You had this one video title. It said, &#8220;Where does bad code come from?&#8221; I guess, yeah. My question to you is: what&#8217;s the answer to that? Where does bad code come from?</p><h3>01:01:18 &#8212; Where bad code comes from</h3><p><strong>Casey:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=3678">01:01:18</a>] Yeah, that&#8217;s a good question. My feeling on where bad code comes from is that, for everything that I&#8217;ve seen on projects in the past, the bad code all seems to come from roughly the same source. And that is not dealing with the actual thing that&#8217;s happening. Right. There&#8217;s a lot of ideas in computer science about sort of doing upfront design and making a lot of decisions without ever really implementing anything.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=3714">01:01:54</a>] And I have found that universally that leads to the worst kind of code. And the reason for that is, I hate to be pessimistic, and I hate to be pessimistic about my own ability, but I&#8217;ll just say, for me personally, I am not able to correctly hold all of the details for most complex software in my head at once. There&#8217;s just a lot of stuff going on at, like when the actual instructions hit the CPU, there&#8217;s a lot going on down there that&#8217;s very hard to keep all in your head.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=3754">01:02:34</a>] And so when you approach an upfront design, typically, unless the problem is very stupidly simple, right? When you approach something with upfront design and you think you&#8217;re going to get all of this architecture worked out ahead of time, you forget some important things. You make decisions without realizing, oh, wait, there&#8217;s this thing that has to happen there that means that this isn&#8217;t really the right way for these pieces of code to interoperate.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=3783">01:03:03</a>] Then you end up seeing these hilarious APIs or something where it&#8217;s like you&#8217;re just like, how did this end up being the way that you do this? I have to create all these objects and I have to connect them together with these things and I have to create this weird filter graph thing and then I have to call compile on it. But only you end up with these insane things. And you&#8217;re like, all I wanted to do was call this one thing that said, like low pass filter this buffer.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=3806">01:03:26</a>] It could have been one function call, right? It&#8217;s like, how did you get there? And the answer is because you weren&#8217;t actually dealing with the actual problem and looking at what the actual code looks like when you actually want to solve the problem in practice. And so my idea where bad code comes from is usually just that. It&#8217;s that. It&#8217;s this failure to engage with the actual reality of the situation.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=3832">01:03:52</a>] Maybe there are people out there. I certainly have never met any, but maybe there are people out there whose brains are so expansive that they can actually hold all that in there and they can therefore just do it upfront. But other than for various sort of constrained problem spaces, I&#8217;ve never seen that work. And there are some times when that&#8217;s the case with, if you&#8217;re just doing, I&#8217;m trying to do this particular mathematical operation, that might be a case where you can work it all out on paper because it&#8217;s very specific what it is.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=3861">01:04:21</a>] It takes these N inputs, produces this output. And I can work, right? But when you&#8217;re talking about architecture, like, hey, it&#8217;s a web browser, right? Some complicated thing, the details are all that matter to me, right? It&#8217;s like, it&#8217;s where all the complexity lies. And if you try to do the design without reckoning with them, it just leads to bad results in my experience.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=3881">01:04:41</a>] So how do you avoid writing bad code in that case?</p><p><strong>Casey:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=3885">01:04:45</a>] I try to start with the actual solutions to the problems and work up from there. So one way to say it would be instead of top-down programming, bottom-up programming as much as possible. And top-down programming isn&#8217;t really the same as designing up front. But I&#8217;m just saying as a contrast there, try to start with the things that you know you need. It&#8217;s like, okay, if I&#8217;m building this thing, it&#8217;s gotta have a rasterizer.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=3910">01:05:10</a>] All right, I&#8217;m gonna start making a rasterizer. I&#8217;m gonna see what kinds of stuff that does and how I would like, what&#8217;s the most straightforward way to call this and use it. Okay, let&#8217;s make an API out of that, right? Build it out of steps where the abstraction comes from actual working code that gets abstracted rather than pushing the abstraction down from the top, where I say, this is how I will abstract the rasterizer.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=3936">01:05:36</a>] And now I go write the rasterizer and the thing that uses the rasterizer, only to find that that is not a very good way to use a rasterizer. So to me, starting with that and working upwards is the best way to ensure that you will get an architecture that is at least good for one thing. Now, if you want it to be good for multiple things, you probably need a couple different. I want a few different varied things that would use this rasterizer that I will kind of work on together, and I&#8217;ll make abstraction decisions that work across all three of them.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=3967">01:06:07</a>] That&#8217;s a good way to make a more reusable API that works for a lot of things. But I never want to just sit down and say, &#8220;How will I design an API for lots of people to use a rasterizer without actually writing any of it?&#8221; It&#8217;s like, no, no, no. And I definitely can&#8217;t do it. And I would question someone who says that they can. Unless one caveat: they&#8217;ve written a lot of them before, right? If you&#8217;ve written tons before, then you&#8217;ve sort of done the thing that I&#8217;m talking about already.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=3993">01:06:33</a>] And you might remember, oh, it&#8217;s this way, right?</p><h3>01:06:37 &#8212; Why design docs before code is a bad idea</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=3997">01:06:37</a>] I think there&#8217;s a lot of common advice, especially at these larger companies where there&#8217;s this process to write a design doc and put together everything in advance, present it before you write any code. And it sounds like you&#8217;re saying that that&#8217;s a terrible idea.</p><p><strong>Casey:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=4017">01:06:57</a>] I think that&#8217;s an absolutely terrible idea. Now, that doesn&#8217;t mean that I wouldn&#8217;t be okay with that process with a slight modification.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=4025">01:07:05</a>] If what you&#8217;re doing during that time is writing test code in the way that I&#8217;m saying. So we&#8217;re going to write a little experimental rasterizer. We&#8217;re going to do those things. We&#8217;re going to start, and then our document that we&#8217;re producing is, here is what we have determined is a good API based on these experiments. I have no problem with that. That&#8217;s following my procedure pretty much to a T. And I don&#8217;t tend to produce documentation because I work on smaller teams.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=4052">01:07:32</a>] I don&#8217;t have to have a 1,000-person org know exactly what I&#8217;m doing there or whatever. So I wouldn&#8217;t produce upfront documentation normally in a case like that. But if you wanted to, that seems totally reasonable. Right. And that is communicating our research into how this should be structured out to a wider audience. But we still did the due diligence of determining that it really does work in practice.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=4075">01:07:55</a>] It&#8217;s not just our guess about what it will be.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=4079">01:07:59</a>] I see. Okay, so you&#8217;re saying kind of this pair design, pair prototype, just build as you go, but it&#8217;s just so you get a sense of the reality of the design.</p><p><strong>Casey:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=4090">01:08:10</a>] Yeah. And I think I would be very comfortable with the team that wanted to work that way. If they&#8217;re like, look, we want to produce, we want to document this thing before we start developing. That&#8217;s just how we feel more comfortable with how we&#8217;re going to do it. Maybe it&#8217;s a very large org, maybe we have some very good reasons for that. Then I would say totally fine. It&#8217;s just, I want to hear if I&#8217;m going to be comfortable.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=4111">01:08:31</a>] I want to hear that that process is not, we&#8217;re just typing on paper. We are actually testing these API design decisions, and they come from looking at actual usage code that we have made and that we have implemented at least experimental versions of, so that we know they really do account for all the details that we&#8217;re likely to encounter in practice. That&#8217;s what I want to hear. Right. I don&#8217;t want to hear, we thought it through.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=4137">01:08:57</a>] I&#8217;m like, did you think it all the way through? Because I&#8217;ve seen a lot of times where people thought they did and they didn&#8217;t, including myself. That is not. That is not. I always think it all the way. So it&#8217;s like, no, this comes from a personal place of I forgot the thing. I forgot this important thing and I made a really stupid design, right?</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=4154">01:09:14</a>] There&#8217;s another video you had. It was titled The Only Unbreakable Law.</p><p><strong>Casey:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=4159">01:09:19</a>] Oh, yeah.</p><h3>01:09:20 &#8212; The only unbreakable law in software engineering</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=4160">01:09:20</a>] What is the only unbreakable law in software engineering?</p><p><strong>Casey:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=4164">01:09:24</a>] So, yeah, that was a lecture I did where I was trying to think of, if I was going to say one thing about architecture to people, right? If I was going to say one thing about architecture, what could I say that isn&#8217;t probably wrong? Because you think about a lot of our ideas about architecture, it&#8217;s like even the stuff I just said to you, who knows what we&#8217;re going to be thinking 10 years from now.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=4187">01:09:47</a>] It&#8217;s like, they&#8217;re not really laws, they&#8217;re just observations that we&#8217;ve had that maybe this is a good way to do things, but it&#8217;s not really a law, right? So the only thing I&#8217;ve seen that feels like a real law to me is the thing I cover in this lecture, which is Conway&#8217;s Law. And this is a. It&#8217;s not a real law in the sense of like the laws of gravity or so, like, it&#8217;s not a physics law.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=4214">01:10:14</a>] Like a physicist would laugh at calling it a law. It&#8217;s probably not even a theory; it&#8217;s more like a hypothesis at this point, right? But in terms of things that I would place money on being validated as a law at some point, if we ever had the means to do so, this would be one of the only software engineering things that I think would qualify. And it is that if you would like to organize a series, like a set of people to work on something, or in the modern parlance, let&#8217;s say agents.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=4256">01:10:56</a>] So it could be. It doesn&#8217;t have to be human. It&#8217;s any system that has sort of its own internal processing, like a human brain does or like a computer does. If you need to partition a problem into a set of workers in this way, where the communication between those workers is slower than their own internal computation ability, which we would all agree is true about humans, it&#8217;s true about two computers running an AI model as well, right.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=4285">01:11:25</a>] The amount of time it takes to send information back and forth to them is significantly slower than what the GPU can be processing directly on its own, right? In systems that look like that, when you start to tackle a problem, in order to get the benefits of that parallelization, you will have to make decisions about who is working on what, at least some decision. For example, if we are making a car and you and I are the two people who are going to make the car, I&#8217;m going to design the body of the car, you&#8217;re going to design the wheels.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=4314">01:11:54</a>] Right. Just a decision someone could make. Once you&#8217;ve made that decision, you have now locked in the fact that the iteration on the design will be slower across that boundary than it is interior to either of the two parts. So, for example, your ability to improve the design of the wheels on their own and my ability to design the body of the car and improve that on its own will be much faster than our ability to design the interface between the wheels and the tire.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=4352">01:12:32</a>] Or it&#8217;s not even just the interface, the degree of harmony between the designs. So the degree to which your wheels complement my body design and my body design complements your wheels, that they all are considering the trade-offs together. Right. And Melvin Conway&#8217;s paper, which lays this out, this is a very early paper. It&#8217;s in the 60s at least. Was it in the 50s? It&#8217;s way back. When that lays this out, points out the consequence of this is that products or any.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=4386">01:13:06</a>] And when I say product, I mean anything that comes out of one of these design processes or development processes. Products will have a similar structure to the organization that produced them. You will be able to see in the product evidence of this because the degree to which things are able to harmonize is restricted across that boundary. So when you look at the object, it will have that boundary visible in some way.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=4413">01:13:33</a>] Right. It won&#8217;t be quite as good at the interface between these two things or in the way that they work together as the things are themselves to themselves. It gets sort of flattened, like one way. The rule is pithily stated is products look like the org chart, but that&#8217;s not exactly what it says. But that&#8217;s kind of a downstream consequence, and boy, do you ever see it in the real world.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=4443">01:14:03</a>] So, I&#8217;ve heard that in the context of these big tech companies, like, almost like it&#8217;s a bad thing to quote unquote ship your org chart, or basically the product you put out there has these inorganic, yes, things. So it sounds similar to what you&#8217;re saying.</p><p><strong>Casey:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=4464">01:14:24</a>] Yeah, it&#8217;s. And I think part of the reason I think it is kind of an unbreakable law is I think it&#8217;s somewhat unavoidable. It&#8217;s more something that you just have to be aware of and mitigate to the degree that you can. Like, you just have to understand, look, that lower communication time, whether it&#8217;s humans or computers or whoever is doing this work, that lower communication bandwidth is whatever.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=4494">01:14:54</a>] That just means that where we draw these lines has consequences for what we ship. And so we really want to try, over time, to align those boundary drawings to places where it will have the least bad impact on the result of the product. And that&#8217;s true for org charts, like I said. I suspect it will also become true for AIs and things like that, where it&#8217;s like, you will want to partition these problems in ways that respect that line drawing, because that will be less good than the thing that can be wholly solved by one unit, whatever that unit is.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=4536">01:15:36</a>] And so to me, it&#8217;s a very helpful construct for thinking about things. It&#8217;s also a very good explanation for why you see something somewhere. You&#8217;re like, why doesn&#8217;t this just integrate this? It&#8217;s like, because there were two different teams. It&#8217;s like, I&#8217;m sorry, that&#8217;s just the answer. And it costs a lot more for those two teams to have integrated this. That&#8217;s not how we work. Right.</p><h3>01:15:57 &#8212; How he got into programming</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=4557">01:15:57</a>] I&#8217;d love to hear more about your career and how you got into programming.</p><p><strong>Casey:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=4564">01:16:04</a>] I started programming when I was really little because my father worked at Digital Equipment Corporation, which is actually a very important company in that era. No longer exists. Right. They would be sort of like almost like a case study in how not adapting to a change in technology leads to your demise. They were one of the most important companies in the world for computing. If you ever heard of a PDP-11 or a VAX in computing history, that&#8217;s them.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=4595">01:16:35</a>] Right. They made these things that were foundational computers in computing history, gone today. Right. Part of them got absorbed by Intel, part of them got absorbed by Compaq, but they don&#8217;t exist. So he worked for that company. And so we always had computers in the home, and I learned to program when I was little, and that&#8217;s just sort of always what I wanted to do. I really enjoyed it.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=4619">01:16:59</a>] And so I ended up getting an internship at Microsoft when I was pretty young, and I met some people there. I came out to &#8212; I should say, I grew up on the East Coast, so nowhere near Microsoft. I met some people there. I ended up coming out to the West Coast really early on. This would be in, like, &#8217;95. So it didn&#8217;t feel early at the time. It felt late in computer history. But nowadays, like, oh, wait, &#8217;95.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=4646">01:17:26</a>] Oh, my God. Before everything was on the web, right? There was a web, though it was nascent. I ended up coming out and working sort of in the game industry, and that&#8217;s what I did ever since. And I&#8217;ve mostly always worked on game technology. I&#8217;m famously absolutely terrible at understanding game design. People who watch my stuff know this about me. I&#8217;m very, very bad at it.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=4674">01:17:54</a>] I&#8217;ve tried to make games a couple times and I just cannot do the design side. I&#8217;m awful at it. But I really enjoy the engine stuff, and I feel like I&#8217;m okay at it, and I&#8217;ve been able to contribute to projects. So in general, most of the time, if you&#8217;ve used code that was written by me, you probably used it in the context of a video game that was using technology that I wrote. And an example would be I worked at RAD Game Tools on a character animation system.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=4703">01:18:23</a>] I wrote the entire thing myself. That is used. Well, that&#8217;s not entirely true. I wrote the entire thing myself, except for the texture compressor, which Jeff Roberts wrote. There was this texture compressor that you could use as part of the pipeline for the exporting and stuff like that. It was a pretty cool project at the time. I&#8217;m really proud of it. The first version was awful because I was pretty new at the time.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=4724">01:18:44</a>] The second version, I thought we did a really nice job. And it was made at a time when people didn&#8217;t think you could do licensable game technology of that kind because it was too hard to integrate into things, like you couldn&#8217;t get the performance or whatever. And we did a lot of things that I think were pretty innovative at the time. And we were able to make something that was very successful. And it&#8217;s.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=4744">01:19:04</a>] I mean, we released the first version of that in &#8216;99. It&#8217;s still in use today, largely unchanged from the architecture that I guess was the second version I did in 2001 or something. There are a few changes to the architecture that people have made over time, but it&#8217;s largely unchanged. I found out recently Baldur&#8217;s Gate 3, which was a big game from Larian, came out. I had no idea. It turns out they use it.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=4770">01:19:30</a>] It&#8217;s in their engine or whatever. So I&#8217;m very proud of that product because I think it was in tons of games and was a very hard problem to solve. And I think we solved it pretty well. It&#8217;s largely irrelevant today. I would say it&#8217;s still in some people&#8217;s engines over time, but it&#8217;s not the kind of product you would make today because nowadays engines are monolithic and you license them as a whole. Typically, you wouldn&#8217;t be getting a character animation library.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=4797">01:19:57</a>] It&#8217;s going to be something that&#8217;s built into Unreal Engine or built into Unity. It&#8217;s not the kind of product you would probably consider making today. That was mostly, in terms of things that I&#8217;ve done that people might actually have experienced or used, like folks at home. If you&#8217;ve played games, you may have played something that I had a hand in at some point, but only the technology, not the design.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=4820">01:20:20</a>] I also worked a little bit on The Witness, which was a game by Jonathan Blow and team that I thought was absolutely fantastic. And I did some work on the walk system there that I was pretty proud of. I thought it came out pretty well. There&#8217;s some parts of it that are really janky. I don&#8217;t think I did a very good job of the actual implementation of it, but the design was pretty good, let&#8217;s put it that way.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=4843">01:20:43</a>] Early in your career. So you worked at Microsoft and then went to go.</p><p><strong>Casey:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=4848">01:20:48</a>] I was only ever an intern. I never actually, I mean, I guess that&#8217;s technically working there, but I didn&#8217;t ever work there as an employee. Employee, right.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=4855">01:20:55</a>] As someone who&#8217;s writing code, I mean, there&#8217;s a lot of different paths, but there&#8217;s one path I imagine: you go and you work at one of these big tech companies and create their tech products, I guess. And then video gaming seems like another path. And I think there&#8217;s other paths as well, of course.</p><h3>01:21:16 &#8212; Why he didnt work in big tech</h3><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=4876">01:21:16</a>] What drew you to going towards video gaming and not continuing down the Microsoft path or something like that?</p><p><strong>Casey:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=4885">01:21:25</a>] I think that there&#8217;s a bunch of things I could say about that, but they&#8217;re probably all BS. The truth is probably that I&#8217;m probably more affected by the people around me than I would like to admit. I mean, I guess I don&#8217;t have a problem admitting it now, but at the time I probably wouldn&#8217;t have said that, right. I could envision an alternate past where I did stay at Microsoft and try to get a job there and work there instead of being just an intern and then going off and working at a different place.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=4920">01:22:00</a>] The reason that didn&#8217;t happen was because of the people who I worked with there when I was an intern. I fundamentally really like. Nowadays I fundamentally really love doing things like analyzing assembly code or looking at exactly how a microarchitecture is working and these sorts of things. If I had gone to Microsoft and had just happened to be under some people who were doing that kind of work and had taught me how to write device drivers in assembly language or something like that.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=4953">01:22:33</a>] I might still be there today, right? That&#8217;s not what happened. The capsule summary is the group that I was supposed to be in, the way that they did internships at that time was that a set of interns, say three or four of them, would be underneath a particular manager who was going to be managing those interns. So there were a couple of us who were supposed to be reporting to this guy whose name I won&#8217;t mention, just in case for some reason it&#8217;s ancient history.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=4982">01:23:02</a>] He probably wouldn&#8217;t care at this point, but we were supposed to be reporting to this particular person. And literally the week before we arrived, he has this massive flame-out with upper management. Leaves, just walks out of the building, and has not been heard from since. So we show up, and there was me, a guy named Rudy, a guy named Rajeev, and we&#8217;re just interns. We show up, we&#8217;re like, hey, how&#8217;s it going?</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=5019">01:23:39</a>] And we report to this test guy, this SDET guy named Scott Latham, really nice guy. And we&#8217;re like, we&#8217;re supposed to be reporting to a program, like a software, or what&#8217;s going on? This is one of the guys in the test org. He&#8217;s like, yeah, that guy&#8217;s gone, he&#8217;s out of here. And me and this other guy, Bruce Johnson, are going to take care of the interns because, eh. Right. We don&#8217;t really know what you&#8217;re going to do.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=5053">01:24:13</a>] The first thing I think Bruce had me do was like an ANI cursor loader. There&#8217;s this format, I don&#8217;t know, ancient history now, but there&#8217;s this format for animated cursors on Windows. If you ever see the stupid little walking dinosaur or the, like, no one uses these anymore, I don&#8217;t think. But they were this thing that was in there. He had me write a parser for loading ANI files, right? Like it&#8217;s just meaningless stuff.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=5076">01:24:36</a>] So my experience there was pretty lame. I was like, this is kind of dumb. I don&#8217;t really want to work here. But it could have been totally different if I had been on some team that had really inspired me to learn the stuff that I didn&#8217;t know. I didn&#8217;t know assembly language at that time, really, at all. I think the only thing I&#8217;d ever written assembly language was a joystick polling routine for DOS because it was the only way you could poll the joystick in DOS.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=5100">01:25:00</a>] I think that&#8217;s really it, if I&#8217;m honest about it. I think most of it is that I think even if you&#8217;re a very brash youngster, which I was, and even if you think that you&#8217;re very independent, I think you definitely gravitate toward people who you see doing things you think are impressive or technologically interesting. And that is just not the experience I had at Microsoft. Now, there were some people who I like, the people I went out to go work with were people in other parts of Microsoft who were leaving Microsoft to do a startup company.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=5134">01:25:34</a>] And those were the people that I was really impressed with. Those are the people that I wanted to hang out with. So, if I just look at it in arrears, if those people had just been staying at Microsoft and doing something, maybe I would have gone.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=5147">01:25:47</a>] And I think that&#8217;s the truth of it, as best I can determine at this point anyway.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=5151">01:25:51</a>] So you moved across the country to go work with those people at a startup?</p><p><strong>Casey:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=5156">01:25:56</a>] Yes.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=5156">01:25:56</a>] That feels pretty risky to do.</p><p><strong>Casey:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=5160">01:26:00</a>] It was especially because at that time, a startup is not really what you think of as a startup today. Like, a startup was just some scrappy people in a crappy office doing stuff. Nowadays, you think startup, it&#8217;s like, well, we&#8217;ve got $10 million in VC funding and we have free sodas and whatever, like in the break room, and a masseuse comes in periodically or something like this.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=5182">01:26:22</a>] Right. I don&#8217;t know what the now version of a startup is, but it&#8217;s very different, right? So, yeah, it was pretty risky. And I don&#8217;t really know why I did it. It was mostly just because I hadn&#8217;t had really good experiences with education. I didn&#8217;t really want to do college, or I didn&#8217;t want to do any more education. I wanted to actually work, for whatever reason. And this seemed like a.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=5212">01:26:52</a>] But this was just the easiest way to do that. And I don&#8217;t really regret it, honestly. I&#8217;ve been able to learn most of the things that I would have needed to, if I was gonna go do a PhD or something. I&#8217;ve ended up doing work that is the sorts of stuff, like I&#8217;ve been lucky enough to be in positions where I could go spend a few months writing this particular linear least squares solver or something like that.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=5239">01:27:19</a>] The kinds of things you might have done as a thesis or something, or that walks on somebody done The Witness. Those sorts of things are the kinds of things you would have done had you decided to get a master&#8217;s degree or something like that. So I&#8217;m fortunate enough that I&#8217;ve kind of been able to have that part of the education because not everyone gets that opportunity. You may never get, if you don&#8217;t do a master&#8217;s thesis or you don&#8217;t do a PhD thesis, you may never really get the chance to really do deep work on one problem and learn a lot about it, read a lot of papers, maybe make some novel contribution in some very small way usually.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=5279">01:27:59</a>] Right. And so I was just lucky enough to do that. So I don&#8217;t really regret not doing something like that, but I think had I not had those opportunities subsequently, I could see being regretful about that because that is something that I do enjoy doing. And if I&#8217;d never had the chance, I would have been sad.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=5298">01:28:18</a>] So you went and you traveled to this startup because there&#8217;s no funding, it sounds like.</p><p><strong>Casey:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=5305">01:28:25</a>] So, yeah.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=5306">01:28:26</a>] What, you? It&#8217;s just a group of guys. Was there pay or...</p><p><strong>Casey:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=5310">01:28:30</a>] It&#8217;s just not really. No, it was. It was pretty rough, and it didn&#8217;t last very long. Right. I ended up going to work at an actual game company shortly after that called Gas Powered Games. And then shortly after that I started working at RAD Game Tools, which I stayed at for quite some time and where I did that character animation system and stuff. So it was pretty quick into not doing that, but it was still a pretty educational experience for me.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=5333">01:28:53</a>] And also what I will say is at the time, I worked with a guy named Chris Hecker, who I have to give basically complete credit for teaching me basically about reading technical papers. Before that time, I just thought math was kind of stupid and an annoying thing you had to do in class. Right. And I definitely didn&#8217;t know anything about reading a SIGGRAPH proceedings, really.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=5366">01:29:26</a>] And I may have been aware. I mean, I was aware of SIGGRAPH. I knew what it was. But I don&#8217;t think if you&#8217;d handed me that binder, I would have known what that was or what to do with it. I think the biggest takeaway that I got from that, other than startups are hard and maybe don&#8217;t do them unless you have a lot of people and a lot of funding and aren&#8217;t really that much on the line, maybe.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=5391">01:29:51</a>] But the biggest takeaway that I got from that that was positive was just a much deeper appreciation for math, a much deeper appreciation for research, how to read it. That&#8217;s where I learned to use CiteSeer, which would be kind of the precursor to Google Scholar or whatever. Crawling references and all that stuff. In a lot of ways you could say if I hadn&#8217;t had that experience, I bet I wouldn&#8217;t have given the two talks that we&#8217;ve talked about for most of the interview.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=5417">01:30:17</a>] Because what are those talks? They&#8217;re me crawling every reference. They&#8217;re just me going back and back and back and looking at everything that I can find. And that&#8217;s something that if no one ever conveys to you the importance of reading, the scholarship and being aware of what&#8217;s being done, and also teaches you how to read a tech paper and how to parse through it, I don&#8217;t know that you get that.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=5442">01:30:42</a>] I don&#8217;t know that you get that.</p><h3>01:30:44 &#8212; Should you work at a startup early on</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=5444">01:30:44</a>] I remember early in my career, I think there&#8217;s this common path of these big companies, and then there&#8217;s this thought of, oh, me and a couple buddies, let&#8217;s go build something. Now, with your experience looking back, if someone out there is young and thinking about starting, would you say go that common path or would you say take the chance?</p><p><strong>Casey:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=5470">01:31:10</a>] It&#8217;s a really tough question. And I think the advice is that you have to think about what it is that you want to do every day. So in my mind, the things I regret are the times when I&#8217;ve had to do things or chosen to do things that I wasn&#8217;t really that happy doing every day. Right? And so I think you just have to optimize for the experience you want to have. Because a startup might work out, it might not.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=5505">01:31:45</a>] It&#8217;s always a risk, right? You may go to the big company and it may be cool. There may be interesting things there, or there might not be. You don&#8217;t really know. You&#8217;re making a kind of blind decision. And so I think you kind of have to optimize for what do you want your day to day to be? What do you want the experience to be? And you want to keep a running talent, you want to be aware of it.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=5532">01:32:12</a>] If you make a decision and six months in, you are not liking what you&#8217;re doing every day, then you need to get out of that, right? That&#8217;s my opinion. So I don&#8217;t know. I think most people probably, if they sit down and actually clear their mind and aren&#8217;t engaging in too motivated a reasoning just for themselves, go, what do I envision working at the startup will be like? What will I actually be doing every day?</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=5560">01:32:40</a>] Am I gonna like that? Is this gonna be thrilling? Trying to make this thing work and being kind of on the edge, and do I want the kind of war stories of the things we had to do to pull off the demo or whatever? Right. If all that sounds exciting to you and you wanna have that experience, then you should do that thing. And I would say, really, I really mean that.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=5585">01:33:05</a>] I don&#8217;t even think you should take into account, even, like, let&#8217;s say, the startup&#8217;s gonna fail. If you want to have that experience, then you need to do it, right? It&#8217;s just like anything else. It&#8217;s like going and backpacking across Europe or playing guitar at a nightclub. It&#8217;s like, you may know that these things are not profitable. Is that the experience you want to have?</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=5606">01:33:26</a>] Are you going to look back on that six months or a year or five years or whatever, the amount of time you&#8217;re thinking of committing to it? Are you going to look back and say, I&#8217;m glad I did that, or are you gonna be like, that was time that I would have rather spent some other way? Right. And so I think most people can probably, if they&#8217;re honest with themselves, at least make a pretty good guess.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=5625">01:33:45</a>] And that guess, if they&#8217;re honest with themselves, is gonna be better than any advice I&#8217;m gonna give them. My guess about what you should do is gonna be worse than yours. So you should just make that determination. Because another way to look at it is, you know, the big company side, maybe you just wanna have some security. Maybe when you&#8217;re starting out, I mean, I&#8217;ll just give some examples.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=5644">01:34:04</a>] Maybe you want to spend a lot of time dating. You want to find a partner, and you want to have a relationship, and you want to have a family. Maybe that&#8217;s more important to you. Maybe the startup, yeah, it might be fun. Maybe it would be more money if it worked out or whatever. But maybe the stability is actually going to be something that you would really benefit from because the sorts of things that you imagine being fulfilling in your life are not all around what you&#8217;re going to be doing in computing.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=5674">01:34:34</a>] I think you can have some guess about those things if you just let yourself have some space to think about it and don&#8217;t engage in too much motivated reasoning about it. And I think that would be the best way to make a decision, if you&#8217;re going to make one. That&#8217;s my feeling about it. Anyway.</p><h3>01:34:52 &#8212; What video game engineering is like</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=5692">01:34:52</a>] We talked a lot about video game engineering, and I have no idea what goes into video games. If you were to just boil it down to the big pieces that you need for a video game, what are those software components?</p><p><strong>Casey:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=5707">01:35:07</a>] So the biggest thing that&#8217;s different about a video game is that the sort of original mental model that you&#8217;re taught in programming, which is the standard I O, is not how it works, right? So the biggest mental shift is just like, oh. The way that a video game or a simulation of any kind works is I need to have some world state.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=5737">01:35:37</a>] And I&#8217;m constantly updating that world state on a regular interval. Everything is always happening. There&#8217;s no &#8220;I wait for input and then I do something,&#8221; right? Everything is always going because it is real time. The time is going forward. So the components tend to be built around this idea, and it depends on what level of sophistication you end up getting into. But in general, you need a way of storing that world state.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=5763">01:36:03</a>] So some kind of. We usually call these entities, like the things that make up a world.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=5768">01:36:08</a>] So some way of modeling what is in the world. Where are things in the world, what is their state, what are they doing right now? So you need something that does that, something that is in charge of advancing that state. This is a mixture of several things. It could involve physical simulation, it could involve AI, not necessarily large language model like the modern notion of AI, but pathfinding, making a decision between whether I should attack the player or not, that sort of AI.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=5802">01:36:42</a>] So we have the world. Some way of showing the world state, some way of advancing the world state, like an update step that may involve lots of things like that. Then some way of presenting the world state. So a renderer. Right. And this is something that typically has, I guess I would say it&#8217;s traditionally been a very important part of a game because the visuals are often something that is a selling point for games.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=5832">01:37:12</a>] People produce trailers, certainly in the AAA space. We&#8217;re trying to show you how cool the new lighting looks and the whatever. So that is a pretty big component of games. Oftentimes you go look at an indie pixel art game, it might be much smaller because that&#8217;s a much smaller part of the problem. Now that&#8217;s generally what the shape looks like. There&#8217;s a lot of little pieces there. Typically nowadays we would have some way of asset streaming. The renderer needs to have things like textures loaded, models loaded, things like that.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=5865">01:37:45</a>] We need world data, physics, collision models, these sorts of things. They might be too big to fit in memory, or we don&#8217;t want to spend a lot of load time to load them up front. We want to stream them in as they&#8217;re necessary. So there&#8217;s typically this thing that&#8217;s sitting there constantly grabbing things off of disk, caching things, pulling them in and out of a cache that&#8217;s being used by the renderer, by the physics, and so on.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=5884">01:38:04</a>] So that&#8217;s another common component that&#8217;s new, didn&#8217;t used to be there. There&#8217;s going to be an audio and music system. Obviously, that&#8217;s in charge of when sounds are triggered in the world, ambient sound effects that are happening in the world, music that&#8217;s playing, continuity. Again, all of that&#8217;s interacting with the world state to know which ones of those things are happening. The update step, which will be triggering things in that sound system.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=5908">01:38:28</a>] And of course, the asset streaming to load what sounds are being played or load the music. So we typically have that. And then I&#8217;m trying to think, I&#8217;m trying not to leave out any major components. In a modern context, there&#8217;s often networking. So we want to have a way for multiple of these game clients to communicate with a server. So typically what that means is that world, that state of the world might be provisional. It might be sort of a predicted model of the world that&#8217;s not the real model of the world.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=5941">01:39:01</a>] The simulator is actually running. The authoritative simulator is actually running on a server somewhere. And I am merely communicating with it to find out what the world state is. And then, because I don&#8217;t want to wait, I don&#8217;t want the latency of going all the way around, I am predicting the motion of things forward in time based on the last information I have. So that&#8217;s another kind of way that things tie in.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=5967">01:39:27</a>] If you want to start doing things like competitive multiplayer and all these sorts of things. Right.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=5971">01:39:31</a>] That makes a lot of sense because I used to play video games, and then these MMO online games, when I start to lag, everyone continues forward.</p><p><strong>Casey:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=5983">01:39:43</a>] Yes.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=5984">01:39:44</a>] And then my Internet catches up, and then everyone jumps to where they&#8217;re actually supposed to be. Okay, that makes a lot of sense. I pulled some of your top tweets. I thought that might be interesting to discuss.</p><p><strong>Casey:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=5997">01:39:57</a>] I&#8217;m sorry.</p><h3>01:39:57 &#8212; Why preventing recursion is reasonable</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=5997">01:39:57</a>] So someone said, NASA does not allow recursion in their code. How crazy is that? And then you said, not even slightly crazy, and it went really viral. Can you explain why that&#8217;s not even slightly crazy?</p><p><strong>Casey:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=6012">01:40:12</a>] When you&#8217;re writing functions in a procedural programming language like we have, and that NASA is probably using, you are able to use the program stack for storage. I mean, that&#8217;s what it&#8217;s there for. It&#8217;s what local variables are. I call a function, I get some storage space on the stack. The compiler did that for me. It also saves the return address when I make a function call. That program stack is keeping track of where in my code I was, so that when the thing that I called is finished, I get back there, not some other point.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=6050">01:40:50</a>] Neither of those two things are things you couldn&#8217;t implement yourself. They&#8217;re both things you could do. You could break the thing up into pieces. You could have ways of remembering what they were, like a state machine. You can have your own stack that you put data on and access it. Right? So the only thing recursion really does is it allows you to leverage the fact that someone already wrote that code for you and maybe more convenient to use because it&#8217;s built into the language.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=6078">01:41:18</a>] Now, there are some things, if you really want to get super technical about it, there are some things that happen at a CPU level when functions are called, but we can put those aside for now if you want to talk about them after we wrote the code. So the reason that I don&#8217;t think it&#8217;s crazy to go, we&#8217;re not going to use recursion to implement an algorithm, is because if you&#8217;re doing that, you&#8217;re kind of just YOLO swagging that there&#8217;s room on the stack for whatever it was that you were doing, right?</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=6104">01:41:44</a>] And you can&#8217;t even really check unless you&#8217;re going to do some kind of weird thing. We could sort of do a thing where we go like, okay, let&#8217;s try to determine how many more iterations, how many more recursion depths we have before we hit the end of our stack. We can do those calculations, but it&#8217;s like, eh. And also if the compiler changed something about the layout, it wouldn&#8217;t be true anymore, and so on and so forth.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=6127">01:42:07</a>] So it&#8217;s like, so if I&#8217;m NASA and I&#8217;m like, hey, I don&#8217;t want my astronauts to crash into the moon, it seems much more logical to say, don&#8217;t use recursion. Just figure out whatever this thing was you&#8217;re going to do, turn it into a loop, keep a stack, and make a state machine for it. We can reason about that much more clearly. We know exactly how far it&#8217;s going to take. It doesn&#8217;t matter what compiler, it&#8217;s going to work the same way every time, and it will know the bounds.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=6151">01:42:31</a>] Precisely.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=6153">01:42:33</a>] Very sensible to me.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=6155">01:42:35</a>] And again, you assume at NASA that they&#8217;re not doing it for their health. They&#8217;re doing it because they have hard constraints on the problem domain where someone&#8217;s life is at risk, or at a minimum, many millions of dollars in equipment is at risk. If you screw up, if your stack falls, if you get something where you&#8217;d recurse too many times and hit the end of the stack, that is not just a, oh, I rebooted the computer or restarted the software.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=6188">01:43:08</a>] So I don&#8217;t know. Hopefully that makes sense.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=6191">01:43:11</a>] Andrej Karpathy had this famous tweet that kind of coined the phrase vibe coding.</p><p><strong>Casey:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=6196">01:43:16</a>] Yes.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=6197">01:43:17</a>] And then you said, if you thought software was bad today, buckle up, because it&#8217;s about to get a whole lot worse.</p><p><strong>Casey:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=6203">01:43:23</a>] Yes.</p><h3>01:43:24 &#8212; Is vibe coding bad for the industry</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=6204">01:43:24</a>] It&#8217;s been about a year and a half since that tweet came out. The tweet came out in February of 2025. Would you say that that was an accurate prediction?</p><p><strong>Casey:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=6215">01:43:35</a>] To be clear, I think the whole lot worse part is predicated on something that may not happen. And that is that the idea that we just kind of type some stuff into a computer and ship it to prod, right? Basically like, hey, could you make me a thing and then publish it, becomes a common way of doing things, right? For example, also done by people who maybe don&#8217;t have a computer science background. I think it&#8217;s fair to say, and that I wouldn&#8217;t be being sort of overly dismissive of AI at this point, to say that a person who is well trained in computer science using an AI to make code right now can make substantially better code than someone who doesn&#8217;t know anything about computer science, who is just given Fable and types some stuff in.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=6267">01:44:27</a>] The difference is rather dramatic, I would say, from everything that I&#8217;ve seen. So part of my concern that I was trying to express in that tweet was like, if the idea is like, we&#8217;re just going to type stuff in and we&#8217;re not going to really be checking the code, someone who knows computer science is not really going to be looking at it. Worst-case scenario, it&#8217;s literally just like some random person in marketing somewhere who has no idea what programming is, just types of stuff in and crosses their fingers.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=6297">01:44:57</a>] Right. I think we&#8217;re in for a world of hurt right now. It&#8217;s a race, so it&#8217;s hard to say because it&#8217;s basically a race of how good can you make the AI versus how much adoption does it get? It&#8217;s a curve. If you can make the AI good enough that the people who are adopting it at a particular rate are always using an AI that&#8217;s good enough for what they&#8217;re adopting it for, we wouldn&#8217;t expect software to get significantly worse.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=6324">01:45:24</a>] If those curves go the other way, we&#8217;re in a lot of trouble. Right. So I feel like right now we&#8217;re almost kind of teetering on this knife&#8217;s edge. It&#8217;s really, to me, it feels like a footrace of improving AI so it can be more autonomous and make better decisions without you needing to make them for it, versus the capability level of people who are using it and the degree to which they&#8217;re paying attention to its output.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=6349">01:45:49</a>] It&#8217;s like these two curves that are just, what&#8217;s going to happen? I don&#8217;t have a prediction. I don&#8217;t know where we&#8217;ll be in a year. Obviously, for all of our sake, I&#8217;m hoping that the AI curve wins because I agree. I understand certainly the perspective of people who maybe just don&#8217;t like AI and don&#8217;t want there to be AI. I can understand wanting it to fail. I understand that.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=6381">01:46:21</a>] Right. And I&#8217;m no fan of AI myself, so it&#8217;s not like I&#8217;m going to criticize someone for taking that position, but at the end of the day, if you&#8217;re talking about something that tons of people are using, you&#8217;re going to kind of want it to be good. I think at this point, given the level of adoption of AI, I really don&#8217;t think it would be great if it stopped getting any better right now.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=6406">01:46:46</a>] Like, if this was as good as it was going to get, I think that might be bad. Certainly six months ago, I think that was true, and I think it&#8217;s probably still true today. So I think ideally, if you want software to not be terrible, you have to kind of still be hoping that six months from now the AIs are again significantly better than they were. Right. Like, that is the only way out of the current situation, as I see it.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=6435">01:47:15</a>] Right. I don&#8217;t know if that&#8217;s fair, but that&#8217;s my sort of feeling on that.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=6441">01:47:21</a>] One of your other top tweets, it was Shopify put out this internal memo and you just replied, Slopify.</p><p><strong>Casey:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=6450">01:47:30</a>] Yes.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=6450">01:47:30</a>] So I guess it&#8217;s because in this tweet it&#8217;s leadership pushing the adoption curve, maybe harder than the capabilities of the AI in this case.</p><p><strong>Casey:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=6459">01:47:39</a>] Yeah. Although I also just like the pun. One of the things that I think is most unfortunate about the AI adoption, as I&#8217;ve seen it, is just the, because people think that it&#8217;s going to be this major. I guess if I had to categorize the way it appears that companies are reasoning about it, they&#8217;re assuming that if they don&#8217;t get in early it will be a big disaster for them, right? Like there&#8217;s a tremendous.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=6487">01:48:07</a>] They don&#8217;t just think, &#8220;Oh, well, we can just wait until the AI does what we need it to do and then start using it.&#8221; They&#8217;re like, &#8220;No, we have to do it now. Even before we know whether it can really do the thing that we want it to do or whether we know whether the outcomes are good, everyone has to do it right now. Let&#8217;s do this, right?&#8221; And I understand why they want, why they&#8217;re going about it that way, because they think that that&#8217;s critical, right?</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=6507">01:48:27</a>] They obviously believe that&#8217;s very important. And to me, that&#8217;s just kind of terrifying because, as with any technology, the sane way to do it is to measure its capabilities, see how well it is able to solve problems that you have, see if it solves them faster than the way that you were doing it, and put it into a workflow at such a time as you&#8217;ve determined that it is a net positive. That&#8217;s just the same; that&#8217;s what you would do with any technology.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=6537">01:48:57</a>] And you&#8217;d probably have your team of people whose job it is to assess this thing, and they&#8217;re out there YOLO swagging it. They&#8217;ve got 3,000 agents working on this cluster, talking to each other and doing God knows what, right? So there&#8217;s going to be that, and someone&#8217;s going to do that. But that should not be every org. You wouldn&#8217;t just be like, everyone needs to use a ton of tokens, right? So yeah, I do have concerns about that.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=6564">01:49:24</a>] I don&#8217;t think that the way AI adoption was done was the best way for quality in software. But I would temper that statement with just the obvious fact that we were not exactly a five nines industry to start out with. Software quality was really pretty low rolling into the AI era. So I always try to just also caveat most of the things that I have to say that might be critical of a particular thing happening with AI with just the fact that, look, it wasn&#8217;t particularly great beforehand either.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=6601">01:50:01</a>] A lot of this software was pretty low quality, and so you can&#8217;t. Some AI things may make things worse, but it&#8217;s not like software was amazing and the AI showed up and ruined everything. That is a completely ridiculous narrative. That is not true at all.</p><h3>01:50:17 &#8212; Technical reading recommendation</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=6617">01:50:17</a>] Do you have any top technical book recommendations for engineers that might be listening?</p><p><strong>Casey:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=6625">01:50:25</a>] No. I would probably use this opportunity to try to pitch reading technical papers. I think something that really the industry could use more of is people being more aware of what&#8217;s happening, both the historical papers, but also just current papers. It&#8217;s daunting at first, to be sure. If you don&#8217;t tend to read technical papers in your field, you will probably find it confusing. You won&#8217;t know where to find them, you won&#8217;t know how to approach them.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=6660">01:51:00</a>] It will seem to take too long to read them because you don&#8217;t know how to skim them properly and determine whether it&#8217;s worth your time to investigate a particular section of a paper and all that stuff. But if you&#8217;re willing to spend a few months just, at night I look at a paper, or on my lunch break I look at a paper, if you&#8217;re willing to spend a few months just doing that, you will get your bearings and you will start to know where the good papers are in your field.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=6685">01:51:25</a>] You&#8217;ll know how to find them, you&#8217;ll know where they tend to be published. You&#8217;ll be able to read them much more effectively, you&#8217;ll be able to know how to spend your time on them. And I think in all but probably a few small fields that probably exist somewhere that maybe people don&#8217;t tend to write many papers in or something like that, it&#8217;s tremendously valuable, and I think it&#8217;s so valuable that I read papers in disciplines I don&#8217;t even do.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=6710">01:51:50</a>] And I find it extremely rewarding. I read security research papers all the time. I don&#8217;t even work in a field where there are security research implications. Games don&#8217;t really do much of that. They tend to be run very sandboxed, and they don&#8217;t. Sometimes there are. But they&#8217;re not that kind of thing. They&#8217;re not like a web server authentication protocol or something like this. And I just find it incredibly rewarding because there&#8217;s just so much good stuff out there that you can learn.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=6738">01:52:18</a>] So I would say that would be it. Instead of a book rec, I would say find a paper, try reading a paper.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=6744">01:52:24</a>] How do I go and find that first paper or someplace to get started?</p><p><strong>Casey:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=6749">01:52:29</a>] That will be valuable for most people who are watching because they might be generalists or working in web dev or in just a general tech org at a big tech company or something like that. I would say pull up the proceedings of USENIX, look through it for a paper that sounds interesting to you and try reading that paper. Or oftentimes there&#8217;s awards. I think USENIX has them where it&#8217;s like best paper of the conference.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=6780">01:53:00</a>] Try reading the best paper of the conference, see what you think, because that&#8217;s a collection of papers that&#8217;s usually about operating system stuff and systems design stuff. So it&#8217;s going to be something that most people can relate to. It&#8217;s not going to be really esoteric. If you were to open up the proceedings of SIGGRAPH, for example, it&#8217;d be like, oh, neural networks for cloth simulation or something, and you&#8217;re like, okay, this is not.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=6808">01:53:28</a>] I can&#8217;t relate to this because I don&#8217;t do graphics or whatever. Right. So USENIX might be a good place to start. But in general, yeah, if you had another option would be to go to scholar.google.com, which is their search that just specializes in papers, and type in a topic description that you find interesting. So if you wanted to learn, maybe you were very interested in consensus algorithm Paxos or something, and I don&#8217;t know what that is, or it came up at work and I haven&#8217;t really ever looked at it.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=6842">01:54:02</a>] You can just type that in, Paxos, and they&#8217;ll just be a list of papers, and they&#8217;ll say a thing like cited by. You can see how many citations they have. That&#8217;s usually how influential that paper was, to a certain extent. So those are some ways you could get started and find something that might interest you. It won&#8217;t be for everyone. You may bounce off it, but that&#8217;d be my recommendation. It&#8217;s something to try. You might find it interesting.</p><h3>01:54:27 &#8212; Advice for his younger self</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=6867">01:54:27</a>] And then, yeah, last question for you is if you could go back to the beginning of your career, when you just entered the industry, and give yourself some advice, what would you say?</p><p><strong>Casey:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=6878">01:54:38</a>] I think the advice I would have given to myself was to get into low-level programming earlier. I didn&#8217;t really learn how to properly analyze and even really write assembly language code until probably 2010 or 2015 or something. I mean, it&#8217;s recent because I&#8217;m pretty old, and it&#8217;s like the last 10 years or so. Right. And I feel like I always wanted to know how to do it and just never seemed to.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=6921">01:55:21</a>] And the advice I would have given to myself was, just go down the hall. What I was interested in, go down the hall and be like, grab somebody. Show me. How the heck do you write this? Just show it to me. I think one of the problems is a lot of people, especially when they&#8217;re young, they are afraid of appearing like they don&#8217;t know things. And I think that can be a real impediment to learning.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=6948">01:55:48</a>] I&#8217;m sure it was for me. And I probably just didn&#8217;t want to literally say, &#8220;I don&#8217;t understand any of this stuff. Can you explain it to me?&#8221;</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=6955">01:55:55</a>] To me?</p><p><strong>Casey:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=6958">01:55:58</a>] And I think that&#8217;s one of the most useful things you can do. I don&#8217;t understand this. Please explain it to me. It&#8217;s very useful, and most people will be very happy to do that, if they&#8217;re not a dick. Most people will be like, oh, sure. Now, they might not be good at explaining it. There are plenty of engineers who are really good at something and suck at telling you how they do what they do. So you won&#8217;t always get a great explanation, but sometimes you will.</p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=6986">01:56:26</a>] Sometimes you&#8217;ll find the type of person who can explain very clearly how it is they do what they do. So if you just keep asking, you&#8217;ll get the good explanation. Nowadays, I wouldn&#8217;t really need to give myself exactly that advice because the Internet has so much great information on it. I could have taught myself that did not exist at the time.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=7006">01:56:46</a>] Awesome. Well, thank you so much for your time, Casey. I really appreciate it.</p><p><strong>Casey:</strong></p><p>[<a href="https://youtu.be/jHLbL1Eg4gM?t=7009">01:56:49</a>] Thank you so much for having me. I love the show. It was an honor to be invited on, so thank you very much.</p>]]></content:encoded></item><item><title><![CDATA[How Anthropic Builds And How Engineering Will Change Soon | Thariq Shihipar]]></title><description><![CDATA[When I talk with my friends who work at Anthropic it always surprises me how far ahead they are in adopting AI within their processes and workflows.]]></description><link>https://www.developing.dev/p/how-anthropic-builds-and-how-engineering</link><guid isPermaLink="false">https://www.developing.dev/p/how-anthropic-builds-and-how-engineering</guid><dc:creator><![CDATA[Ryan Peterman]]></dc:creator><pubDate>Mon, 07 Sep 2026 13:17:19 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/214514209/8354e12b84e1ff9eba08e771121af1c4.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>When I talk with my friends who work at Anthropic it always surprises me how far ahead they are in adopting AI within their processes and workflows. Generally what engineers in the industry start doing, these top AI labs have already been doing for a while. </p><p>In this conversation, I asked <a href="https://www.linkedin.com/in/thariqshihipar/">Thariq Shihipar</a> who is an engineer on Anthropic&#8217;s Claude Code team how Anthropic makes the most out of the models for engineering and how the industry will change soon.</p><p>For instance, we discussed:</p><ul><li><p>How Anthropic maintains their code given so much more code is landing now</p></li><li><p>What has worked in preventing AI-written breakages</p></li><li><p>How internal software engineering practices have changed (e.g. onboarding, glue work, etc)</p></li><li><p>How engineers within the company typically leverage the models</p></li><li><p>What percent of Anthropic&#8217;s work is fully autonomous</p></li></ul><p>Hope the conversation is helpful for giving you some insight in how the models are and will change software engineering more in the near future.</p><p>Check out the episode wherever you get your podcasts: <a href="https://youtu.be/2Kch3tWMnw8">YouTube</a>, <a href="https://open.spotify.com/episode/5dT5nBPv2JXPKz14M5zlE1?si=sQsWgOiZS1SzsEjWRJ0ruA">Spotify</a>, <a href="https://podcasts.apple.com/us/podcast/the-peterman-pod/id1777363835">Apple Podcasts</a>.</p><div id="youtube2-2Kch3tWMnw8" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;2Kch3tWMnw8&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/2Kch3tWMnw8?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h1>Timestamps</h1><p><a href="https://www.developing.dev/i/214514209/0029-onboarding-at-anthropic">00:29 - Onboarding at Anthropic</a></p><p><a href="https://www.developing.dev/i/214514209/0253-internal-capabilities-vs-external-perception">02:53 - Internal capabilities vs external perception</a></p><p><a href="https://www.developing.dev/i/214514209/0616-model-vs-harness">06:16 - Model vs Harness</a></p><p><a href="https://www.developing.dev/i/214514209/0855-what-percent-of-anthropics-changes-are-fully-autonomous">08:55 - What percent of Anthropics changes are fully autonomous</a></p><p><a href="https://www.developing.dev/i/214514209/1451-computer-use">14:51 - Computer use</a></p><p><a href="https://www.developing.dev/i/214514209/1742-how-to-make-the-most-out-of-your-compute">17:42 - How to make the most out of your compute</a></p><p><a href="https://www.developing.dev/i/214514209/2045-loop-engineering">20:45 - Loop engineering</a></p><p><a href="https://www.developing.dev/i/214514209/2247-where-the-industry-will-go-soon">22:47 - Where the industry will go soon</a></p><p><a href="https://www.developing.dev/i/214514209/2602-which-model-do-anthropic-engineers-use">26:02 - Which model do Anthropic engineers use</a></p><p><a href="https://www.developing.dev/i/214514209/2738-is-learning-a-particular-model-worth-it">27:38 - Is learning a particular model worth it</a></p><p><a href="https://www.developing.dev/i/214514209/3056-prompting-tips-for-todays-models">30:56 - Prompting tips for todays models</a></p><p><a href="https://www.developing.dev/i/214514209/3504-how-to-get-the-models-to-do-tasteful-work">35:04 - How to get the models to do tasteful work</a></p><p><a href="https://www.developing.dev/i/214514209/3900-how-much-of-writing-is-done-by-ai-at-anthropic">39:00 - How much of writing is done by AI at Anthropic</a></p><p><a href="https://www.developing.dev/i/214514209/4536-code-ownership-and-maintenance-at-anthropic">45:36 - Code ownership and maintenance at Anthropic</a></p><p><a href="https://www.developing.dev/i/214514209/5204-how-anthropic-prevents-breakages">52:04 - How Anthropic prevents breakages</a></p><p><a href="https://www.developing.dev/i/214514209/5524-visibility-and-sharing-your-work">55:24 - Visibility and sharing your work</a></p><p><a href="https://www.developing.dev/i/214514209/5842-luck-surface-area-example">58:42 - Luck surface area example</a></p><p><a href="https://www.developing.dev/i/214514209/010057-should-people-still-learn-to-code">01:00:57 - Should people still learn to code</a></p><p><a href="https://www.developing.dev/i/214514209/010742-advice-for-his-younger-self">01:07:42 - Advice for his younger self</a></p><h1>Transcript</h1><h3>00:29 &#8212; Onboarding at Anthropic</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=29">00:29</a>] My goal with this conversation is to ask you as much as I can about how you can get the most out of the models specifically for software engineering, so that people in the industry can learn from the best practices where <a href="https://en.wikipedia.org/wiki/Anthropic">Anthropic</a>&#8216;s having success. And so to start the conversation off, I&#8217;d like to ask you, let&#8217;s say I was coming from a company that&#8217;s maybe less AI-pilled, and I was onboarding onto your team.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=61">01:01</a>] What are the most impactful things that you tell me to start doing to successfully onboard?</p><p><strong>Thariq:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=68">01:08</a>] I think the number one tip we have for both people inside and outside <a href="https://en.wikipedia.org/wiki/Anthropic">Anthropic</a> is that if you treat <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a> like a thought partner and give it the context that you need, then you can usually figure out the next steps. And so I think that starting with, okay, can <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a> do it? If not, why not? And using that as the starting place, I think is really important. And I think just always thinking about, okay, reflecting on, can you move up a higher abstraction level?</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=102">01:42</a>] Can you set up a system? Can you build the system that builds a system instead of just building the product itself?</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=112">01:52</a>] I remember when we used to onboard people, you would get assigned an onboarding buddy, someone who really knows the code base. And you can ask all of your trivial setup questions too. It sounds like <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a> fills in a lot of those gaps. And in practice, is it 100% you don&#8217;t need an onboarding buddy and you can just ask the model for everything?</p><p><strong>Thariq:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=134">02:14</a>] You do need an onboarding buddy, but more from a social and cultural perspective than a technical perspective. I think, from a technical perspective, you can basically just work with <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a> and, if you&#8217;re good at it, you can get what you need to onboard. But I think just having the context of how to work with the team, and also how to get buy-in on what you&#8217;re building, or understand how the team works together, or just even have a friend to work with, is really important.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=166">02:46</a>] So, yeah, we still have onboarding buddies, but it&#8217;s not nearly as much technical lift as it used to be.</p><h3>02:53 &#8212; Internal capabilities vs external perception</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=173">02:53</a>] There&#8217;s a big difference between the external perception of the AI capabilities and the internal <a href="https://en.wikipedia.org/wiki/Anthropic">Anthropic</a> usage. Because I&#8217;ll talk to friends and say, yeah, what Boris is saying is the reality. And so my question is, why is there such a big difference between that internal perception and that external perception?</p><p><strong>Thariq:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=195">03:15</a>] I think we have a good track record when we make these claims. You&#8217;re like, oh, it turns out to be true on a large enough timescale. I think a lot of engineers are not really in the IDE anymore. The code being written is like, I talked to large enterprise customers where they haven&#8217;t typed a line of code themselves in six months. We think of it part of our jobs to figure out how to work at a higher abstraction level.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=225">03:45</a>] And if I spend a day trying to figure out how to get <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a> to do this autonomously and I fail, that&#8217;s fine, maybe even good. Because now I can be like, oh, hey, <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a> is not good at this. How do we make it better? But I think if you&#8217;re working an average job, your job is to produce the output. And I think automation always has a cost because it&#8217;s an investment. And if it works, then great, you&#8217;ll make a return on your investment over time.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=254">04:14</a>] But if it doesn&#8217;t, now you&#8217;ve wasted all this time. And so I think the nice thing about the models is that generally the chance of the investment working out is higher and higher because the models are getting smarter and smarter. But you still have to take that leap as an individual. Your boss is not going to be super happy with you if you&#8217;re like, you know, if you&#8217;ve been working on your harness setup the entire time and not shipping code.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=280">04:40</a>] But yeah, I think it&#8217;s mostly just culture and thinking of it as our job to sort of live in the future. And then we try and build it into the product and our harness as well so that you don&#8217;t have to do as much manual step. Yeah.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=293">04:53</a>] Are there examples that come to mind when you think of things you don&#8217;t see people doing at <a href="https://en.wikipedia.org/wiki/Anthropic">Anthropic</a> that are really making a big difference and you&#8217;d kind of recommend?</p><p><strong>Thariq:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=306">05:06</a>] Using <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude Code</a> for knowledge work I think is really valuable. The way a technical person does knowledge work, I think, is very different than the way a non-technical person does knowledge work these days because you can get the models to do it. And so I think increasingly, if you can figure out, like, hey, this is a task, the task is made up of code-like things, how do I tell the model the code steps to take in order to do it right?</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=336">05:36</a>] You can do a lot more, right. So I think I do a lot of accounting with <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude Code</a> on the personal side, using scripts and Python instead of <a href="https://en.wikipedia.org/wiki/Microsoft_Excel">Excel</a>. I do video editing using FFmpeg and these libraries to render visuals and things like that. And so I think most knowledge work is reducible to code and coding agents, if you think about it well.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=367">06:07</a>] And I think that that&#8217;s one big difference that I see, other people doing less of.</p><h3>06:16 &#8212; Model vs Harness</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=376">06:16</a>] I think we talked a little bit about the model and the harness, and I want to ask you, what&#8217;s the relationship between the model and the harness in terms of getting the best end results? Obviously the model is important, so how important is the harness, and are there any examples you could share?</p><p><strong>Thariq:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=396">06:36</a>] Yeah, I mean, the harness is super important. I think that sometimes there&#8217;s this idea that the harness doesn&#8217;t matter because the models will get better and better. And if the model just does everything perfectly, then why do you need a harness at all? I think that in practice, what we see is the models get better and better, and so the harness needs to become more and more complicated to allow the model to do more things.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=424">07:04</a>] An example of this is Auto mode. And so Auto mode is a classifier that runs after every task that you normally have to ask a permission prompt for <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a>. And back when we were on <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude Opus 4</a> or even <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude Opus 4.5</a>, maybe it was not so bad to hit Enter on the permission prompts because the turns would only last a few minutes anyway. Now <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a> can run for hours, and so you really need that ability for it to do work safely.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=458">07:38</a>] Stick to your instructions. And Auto mode is really complicated software. Sandboxing is really complicated software. And then you also think about things like, okay, <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a> can do so much more work. Now, how does it represent the work that it&#8217;s done? It&#8217;s worked for eight hours and you want to know what&#8217;s done in eight hours. This is what we use Artifacts for. And Artifacts themselves are a form of prompting, because how does <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a> represent that in a useful way?</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=486">08:06</a>] There&#8217;s a lot of different ways that it could represent that information. And so I think roughly what we see is the harness. Harness engineering is definitely this mix of science and art. I think it&#8217;s very unintuitive in a lot of different ways, but I think it has just big abilities to unlock new parts of model behavior. And I just see the harnesses get more and more complicated, and it&#8217;s kind of harder and harder to actually vibe code to your own, which is a little bit unintuitive to me because of how good the models have gotten.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=525">08:45</a>] But yeah, things like Auto mode and workflows and things like that, which are actually quite complicated pieces of software, become really load-bearing.</p><h3>08:55 &#8212; What percent of Anthropics changes are fully autonomous</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=535">08:55</a>] I think as <a href="https://en.wikipedia.org/wiki/Large_language_model">LLMs</a> have advanced, more and more of the human part can be taken out of the loop. At <a href="https://en.wikipedia.org/wiki/Anthropic">Anthropic</a>, what percent of your or your team&#8217;s changes are fully autonomously made versus actually pairing with a model? People were doing more of that around a year ago.</p><p><strong>Thariq:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=558">09:18</a>] I think it&#8217;s very dependent on what you consider autonomously made or what team or what function you&#8217;re working on as well. For example, a designer might give you a Figma file, and then you pass the Figma file to <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude Code</a>. <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude Code</a> is great at using the Figma MCP, but the designers put a lot of work in there. I think roughly our goal is to sort of get <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a> being able to do all of the glue work that ties everything together, right?</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=595">09:55</a>] So, okay, you&#8217;ve got a Figma file. Do I really need to rewrite that in React or something? Probably not.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=600">10:00</a>] I think that work has been done once, right? And so the way I think about it is, what&#8217;s the unique work that I need to do every day, right? And the more I&#8217;m doing that unique work, the better. And I think there&#8217;s just a ton of demand for unique work and thinking. And the more I&#8217;m doing something I&#8217;ve done before, I&#8217;m like, okay, can <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a> do this?</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=624">10:24</a>] Or if I&#8217;m just translating what someone else has done, I&#8217;m like, oh, can <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a> do this as well? It&#8217;s really blurring the lines of what does it mean? Even if <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a> has fully generated his PR, you&#8217;ve probably made a lot of decisions and added a lot of context along the way.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=642">10:42</a>] How close are we to a world where someone just says, &#8220;Hey, <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a>, here&#8217;s the ticket. Just don&#8217;t tell me until you&#8217;re done&#8221;?</p><p><strong>Thariq:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=650">10:50</a>] Yeah, so I mean, it depends on how good the ticket is. If someone has perfectly written out essentially a software spec for this ticket, then yeah, actually <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a> can probably do that, right? But I think that to start, let&#8217;s say that we get a GitHub issue. Is this worth fixing? Oftentimes issues are also feature requests or something, or there might be multiple things happening that maybe you combine together in a different way.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=678">11:18</a>] And so I think that a lot of that work is, okay, what&#8217;s the vision for the product? Where do we want to go?</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=687">11:27</a>] How do we make sure what we&#8217;re building is cohesive? And so I think for a specific spec, a specific enough spec, <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a> can do it. In practice, people haven&#8217;t figured out what they really want and haven&#8217;t figured out the unknowns or the shape of the problem and things like that. And maybe the way you would have done it before is you start writing the code and you&#8217;re like, oh, what am I supposed to do now?</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=715">11:55</a>] Or you figure it out that way. Now I think you need new ways of figuring out what you don&#8217;t know yet. And I think you can still chat to <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a>, really. But I think that&#8217;s the hard part. And I think definitely a failure mode is like, you tag <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a>, tag. And you&#8217;re like, hey, please do this one sentence or less description, no previous context or memory. And then it does it. And you&#8217;re like, oh, no, I don&#8217;t like it.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=742">12:22</a>] And then you&#8217;re like, just iterating forever on that, right? Versus figuring out what you actually want, really quickly.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=750">12:30</a>] When I was working at Meta, the ambiguity of the task really ranges, oftentimes proportional to people&#8217;s&#8212;I mean, levels aren&#8217;t everything in software engineering, but roughly, senior engineers kind of take that ambiguous business need and convert it into something that&#8217;s a lot more concrete. And then people who are maybe newer in their careers kind of do the implementation work, and intern projects were kind of almost line by line specified.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=782">13:02</a>] If I was still working at Meta and I had an intern, I was like, just kind of give the intern back. Give <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a> my intern&#8217;s work back, and it would kind of do it. What kind of work does an intern do then at <a href="https://en.wikipedia.org/wiki/Anthropic">Anthropic</a>, if <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a> can kind of handle it? What we see in practice is that there are just so many new types of work that no one has ever done before, right?</p><p><strong>Thariq:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=835">13:55</a>] And I think that we all have to figure that out. And so, for example, how do you do an eval against these new coding behaviors, right? How do you make sure that <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a>&#8216;s performance across millions and millions of users doing all sorts of tasks? Sometimes these tasks might have tradeoffs, you know. So I think there&#8217;s a lot of new work to be done, especially on the research side of things.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=799">13:19</a>] And I think that it&#8217;s harder and harder to write those specs, but there&#8217;s also less and less experience that is relevant, you know what I mean? And so I think that, yes, having some experience means that you can sort of, you know, you know how to get work done and you know how to learn. But I think you also get those skills out of college. And now I think as an intern trying to figure out, okay, what are the things that people have not done before?</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=865">14:25</a>] And doing that, I think, is really exciting. And I think that there&#8217;s, yeah, I think internships are less &#8220;write the React code,&#8221; you know what I mean? And there&#8217;s so many new problems to solve. We need people to solve them. It&#8217;s helpful if you have a fresh set of eyes on it. But it is definitely more proactive and opportunistic, maybe than before, where it was maybe more of like a pipeline.</p><h3>14:51 &#8212; Computer use</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=891">14:51</a>] We talked a little bit about knowledge work, and that makes me think of computer use and browser use. And I wanted to ask you, how far away is that from being widely adopted in the industry and impactful? Maybe you can talk about how <a href="https://en.wikipedia.org/wiki/Anthropic">Anthropic</a> uses it, since it feels like you&#8217;re always far ahead.</p><p><strong>Thariq:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=911">15:11</a>] I think computer and browser use, the models have gotten a lot better. Opus 5, I think, is a really good computer use model. But there are these weird edge cases where, for example, it can&#8217;t type a password on my behalf because my passwords are in <a href="https://en.wikipedia.org/wiki/1Password">1Password</a> or something, and it can&#8217;t access that. And so it gets stuck. I think there are still those edge cases, which are kind of UX edge cases. And then I think also, obviously, computer use is also the more and more people turn APIs and MCPs into new ways to use <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a>. I think that can also take a lot of the use cases that you&#8217;re using computers for.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=951">15:51</a>] And so going back to, oh yeah, knowledge work, everything is code. I think there are some things where there&#8217;s no <a href="https://en.wikipedia.org/wiki/API">API</a>, there is no way to execute in code other than just opening up your browser. But I think increasingly there are more and more ways. And I think, yeah, <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude Code</a> is a great example of we&#8217;ve just sort of tried to roll up all these things into APIs that it can use. And so it feels like it can do a lot of work on your behalf, even though it&#8217;s not literally running a virtual computer and clicking things.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=984">16:24</a>] I have noticed that whenever I use any kind of computer use tooling, it feels painfully slow. I look at the <a href="https://en.wikipedia.org/wiki/Cursor_(company)">cursor</a>, and it&#8217;s sitting there for 10 seconds, moves over, goes there for 10 seconds. Where is all that latency coming from? Do you have a sense?</p><p><strong>Thariq:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=1001">16:41</a>] I think it&#8217;s hard to make a small model that&#8217;s really, really good at it. I think just because there&#8217;s a lot of knowledge that you need to have about this task and how these things work together and stuff. And so you want a smart model, and smart models take a little bit longer time. I think a lot of people thought we&#8217;d get here sooner, but I think it&#8217;s just been a harder task than we expected.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=1023">17:03</a>] I think one thing someone&#8217;s told me about computers before is that it&#8217;s a state machine where you don&#8217;t control the entire state. If you are on the <a href="https://en.wikipedia.org/wiki/DoorDash">DoorDash</a> website or something, you want to add something to the cart, and you add it incorrectly. Now you have this new flow to undo it. Now you need to go click, and now you need to go delete it, and you can make a mistake along that side as well.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=1045">17:25</a>] Whereas in code, you can sort of undo, Git, whatever. You control all of the state. But for computer use, each action is, if not irreversible, it&#8217;s much harder to reverse than others.</p><h3>17:42 &#8212; How to make the most out of your compute</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=1062">17:42</a>] At <a href="https://en.wikipedia.org/wiki/Anthropic">Anthropic</a>, I get the sense that employees have a lot of budget in terms of the compute to speed up whatever it is they need to do. And so if we were to spur the imagination of people who use the models to make them more productive, assuming they had infinite compute, what type of workflows would you start telling someone to do if they had infinite compute?</p><p><strong>Thariq:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=1090">18:10</a>] I think this difference is slightly more exaggerated than you think. I think that, for example, I use my <a href="https://en.wikipedia.org/wiki/List_of_HBO_Max_original_programming">Max subscription</a> on the weekends, and I have almost never hit a five-hour limit. I think the models are really smart, and I think that a lot of times when we&#8217;re spending a lot of compute, we&#8217;re just trying to find capabilities or we&#8217;re trying a bunch of different things, and it&#8217;s more about us figuring out model possibilities than getting a lot of work done.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=1123">18:43</a>] When we&#8217;re testing for math, for example, we&#8217;re trying to understand how smart the model is. And that is useful to us, that&#8217;s useful output to work. And it can also sometimes solve the Riemann Hypothesis or something, or not make progress, you know what I mean? People can replicate what we do at home just by thinking at a higher level of abstraction. For example, I&#8217;m trying to get <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a> to draft feedback for you.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=1147">19:07</a>] And so I want the funnel for, like, <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a> has drafted some feedback to the user, has submitted feedback, to be really good, right? And so I monitor that funnel. And then I asked <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a>. I had some ideas, but then I was also like, oh, what if I ask <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a> to try and improve the funnel? And it&#8217;d be like, here are some ideas, can you come up with some as well? Let&#8217;s figure it out. All of those things you can kind of do yourself right now.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=1173">19:33</a>] If you&#8217;re like, okay, when I&#8217;m making a feature, let me annotate it with events. Let me make sure that <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a> has access to those events. Let me run a loop in the morning every day to check what events have fired and what changes were made. Maybe even let me proactively suggest some ideas. This can all happen, I think, within a fairly reasonable amount of compute, actually. What I see more often is people running into limits where they&#8217;ve actually done the opposite.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=1204">20:04</a>] They&#8217;ve started with a small mid-scope task. It&#8217;s like, oh, hey, refactor this function in this way, and then <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a> does it, and maybe it has some follow-on effects because refactoring this means you have to do some other work too. And that&#8217;s not exactly correct, or you&#8217;re iterating there, and it&#8217;s like you&#8217;ve just spent a lot of time. Whereas if you had sort of stepped up a level, told <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a> your goals, then figure out, okay, what are the details, do some exploration, maybe write out the schema, and then work with it, then let it run.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=1241">20:41</a>] You could probably get the same output.</p><h3>20:45 &#8212; Loop engineering</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=1245">20:45</a>] I remember it was going kind of viral, this idea of creating loops. And I mean that does feel like a pretty expensive sort of thing to set up if you&#8217;re just asking it to keep hammering away. Maybe first could you define this loop engineering thing, and then I&#8217;m curious, how often do you use it, and would you hit limits if you were on a <a href="https://en.wikipedia.org/wiki/List_of_HBO_Max_original_programming">Max subscription</a> doing that kind of stuff?</p><p><strong>Thariq:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=1270">21:10</a>] Yeah. Okay, so loop engineering, roughly, it&#8217;s like instead of prompting <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a> directly, you&#8217;re setting up a system that prompts <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a>. You don&#8217;t have to think of it, if you use <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude Code</a>, a lot of this comes naturally. You just ask it, like, hey, every day do this thing. And that will, that&#8217;s a loop. You can definitely do that sort of work right now. But I think if you&#8217;re trying to set up, let&#8217;s say, like 10 loops or something that are triaging your feedback and implementing and things like that, we do that sort of work, but we also spend a lot of time making sure our skills and things like that are useful and are good at triaging, that we can have, we&#8217;re good at verification and so that we can, like, make sure that the changes land, you know, and then I think at that level, you know, what it means is like, now we have someone monitoring issues that we just could never have kept on top of before, right?</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=1336">22:16</a>] And it just increases our software development velocity, and it&#8217;s worth a lot of value to us. And so, yeah, I think that, if you&#8217;re kind of at the scale of like, okay, you want it to essentially be autonomously running, doing a software engineering job for certain cases, I think it can do that if you set up the verification well, if you set up your skills well, if you give it the right data sources.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=1358">22:38</a>] But it is a lot of work, right? And I think that you have to make sure that that work is valuable to you in the same way that if you hire someone, you have to make sure that work is valuable.</p><h3>22:47 &#8212; Where the industry will go soon</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=1367">22:47</a>] We&#8217;ve talked a little bit about <a href="https://en.wikipedia.org/wiki/Anthropic">Anthropic</a> being kind of just ahead because that&#8217;s the job of the company, on adopting AI. Is there something that you feel is kind of the next big shift that maybe <a href="https://en.wikipedia.org/wiki/Anthropic">Anthropic</a>&#8216;s already felt that you feel is going to diffuse into the industry, and if so, what might that be?</p><p><strong>Thariq:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=1386">23:06</a>] Yeah, I think there are a few different ones. Obviously, <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude Code</a> is the way we do a lot of our work right now. I think the way I think about it is that <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude Code</a> is really good at the implementation of code, and <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude Code</a> is for the rest of the software development lifecycle, so getting feedback, doing code review, babysitting, building CI/CD incidents, all of these other things. <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude Code</a> is really good at at a high level.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=1418">23:38</a>] Turning every part of your software development lifecycle into kind of like a routine or a loop using <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude Code</a> or something like that, I think is probably where things are headed. I think generative interfaces are still to come, and I think that Artifacts and, yeah, basically Artifacts, I think, are going to be an increasingly large way of how you interact and read with <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a>.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=1446">24:06</a>] And so I think that I use Artifacts for almost everything. And so I think that we&#8217;re going to see that also become big. And I think that also ties into <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude Code</a>. Right? So, like, let&#8217;s say that you are on your phone and <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude Code</a> has done a bunch of work for you. It creates a report. The report is readable on your phone because it&#8217;s made the, like, the Artifact look really great.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=1468">24:28</a>] Could you explain artifacts a little bit, or kind of what are they and how do people use them?</p><p><strong>Thariq:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=1474">24:34</a>] Artifacts are basically <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a> can upload, essentially a web app for you to use. And I think that you can use it in a really wide range of capabilities. They can now, for example, call your MCP. So you can make an artifact, for example, to read your inbox and display it or sort it or tag it in one way. You can also use an artifact to show you a plan for coding. And that might show diagrams and file snippets and code and schemas.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=1509">25:09</a>] And so it shows you sort of, it&#8217;s like an interactive display for the job you&#8217;re doing right now. And as <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a> does more and more jobs, we&#8217;re realizing that just text in, text out is probably not useful for everything, right? And <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a> is better and better at creating essentially the exact interface for you at the right time. I think that there&#8217;s a lot more to do there. And I think it&#8217;s another one of those things where you have to think about, like, oh, could I be interacting with <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a> in a different way?</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=1544">25:44</a>] Could I interact with it through an artifact? Could I use it to learn more or to understand it better or stay in the loop or improve some of my own knowledge work or something? Yeah, I think it&#8217;s pretty exciting. We&#8217;re still kind of early to it.</p><h3>26:02 &#8212; Which model do Anthropic engineers use</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=1562">26:02</a>] Does the daily driver model vary among engineers, or do people typically just pick the most intelligent one that&#8217;s available at <a href="https://en.wikipedia.org/wiki/Anthropic">Anthropic</a>?</p><p><strong>Thariq:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=1571">26:11</a>] I do think similarly with models. If you use the smart models and you use them well and you give them tasks where they are well shaped and you&#8217;ve spent some time setting up a good verification harness and things like that, you can get a lot out of them. I don&#8217;t think it&#8217;s like choosing which model at the right time. I think it&#8217;s like, oh, how do you get the most out of the frontier models? Because I think technology works the way it does, right?</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=1597">26:37</a>] Everything gets more abundant, more available. And so I think we&#8217;re in this current weird spot where we don&#8217;t quite have enough compute for everyone to have <a href="https://en.wikipedia.org/wiki/Fable">Fable</a> at 100% of the rate limits. But I don&#8217;t think this is a durable skill to build, figuring out, like, oh, when do you use <a href="https://en.wikipedia.org/wiki/Fable">Fable</a> and when do you use <a href="https://en.wikipedia.org/wiki/Sonnet">Sonnet</a>? I think it&#8217;s unintuitive there. But I think in practice, if you&#8217;re today, what I would do is I use <a href="https://en.wikipedia.org/wiki/Fable">Fable</a> for planning, for brainstorming, for finding unknowns, for coming up with a detailed spec, and I&#8217;d use <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude Opus 5</a> to implement it, and I would probably use <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude Opus 5</a> with workflows using a verification aid like Schema or Harness that&#8217;s built with <a href="https://en.wikipedia.org/wiki/Fable">Fable</a>.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=1641">27:21</a>] So I&#8217;d use <a href="https://en.wikipedia.org/wiki/Fable">Fable</a> for those high-leverage tasks and, yeah, <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude Opus 5</a> for execution and implementation. But yeah, I think increasingly, probably next year, I think you&#8217;re just not going to be thinking that much about which model.</p><h3>27:38 &#8212; Is learning a particular model worth it</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=1658">27:38</a>] You mentioned that skill of prompting, and I&#8217;ve heard some people say it&#8217;s not too durable of a skill because it&#8217;s really specific to a model. These models, they almost have their own unique, I guess, spiky intelligence. So if you knew everything that was very specific to, let&#8217;s say, today&#8217;s <a href="https://en.wikipedia.org/wiki/Fable">Fable</a>, and you&#8217;re a master of today&#8217;s <a href="https://en.wikipedia.org/wiki/Fable">Fable</a>, maybe you don&#8217;t need to know any of that stuff a year from now.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=1688">28:08</a>] And <a href="https://en.wikipedia.org/wiki/Fable">Fable</a> 3 or 4 or 5 or whatever comes out. Let&#8217;s say you were talking to a software engineer who&#8217;s looking for career advice, and they&#8217;re thinking, hey, should I really become a master of engineering?</p><p><strong>Thariq:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=1703">28:23</a>] My prompt, I do want to say prompting is a little bit more than just a prompt you put in. It&#8217;s also, you know, you might have made a skill or you might have added some data or something. It&#8217;s not just a prompt you write, but it&#8217;s like everything you&#8217;ve done before that builds up into your context. Sometimes people see us write small prompts and they&#8217;re like, oh, what does that mean?</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=1724">28:44</a>] But we just spent so much time on the harness and the verification and the skills. So I think it will be really valuable to just get better at prompting. I think, to what you&#8217;re saying about each model is different, you&#8217;re right. I think each model is kind of its own kind of almost organic digital thing. And so there are quirks you have to learn, and you do have to unlearn them. We recently wrote about how we removed 80% of the system prompt from <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude Code</a>.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=1758">29:18</a>] One of the learnings we had was we needed to remove examples from the tool descriptions. This used to be the only way you could get good output from the models was through tools or through examples. You&#8217;d have to be like, hey, this is the right tool. Use this here. Here&#8217;s an example of writing a file well, and here&#8217;s an example of not doing it well. Now, we found that examples are mostly negative, I think, unless you really see <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a> doing something you don&#8217;t like because it&#8217;s just quite imaginative.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=1792">29:52</a>] It&#8217;s good at sticking to your intention and working with you. And so we removed a lot of examples. So in that case, yes, you do have to sort of adapt, but the skill you&#8217;re building is the skill to adapt. You learned how to use <a href="https://en.wikipedia.org/wiki/Fable">Fable</a>, and now you know a lot about <a href="https://en.wikipedia.org/wiki/Fable">Fable</a>, but you also know how to learn. You learned how to work with a model, and so <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude Opus 4.5</a> comes out. You need to learn how to use it again as well, but you&#8217;ll be much faster because you&#8217;re better at learning.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=1822">30:22</a>] You&#8217;re better at working with <a href="https://en.wikipedia.org/wiki/Fable">Fable</a> 5. And I think, for me, I think the first model I worked with was GPT-2. And I remember it was so hard to get a JSON output out of GPT-2. If you could just get it to choose one of the categories that you gave it, that would be incredible. And so I think that building that skill&#8212;GPT-2 is such a different model than <a href="https://en.wikipedia.org/wiki/Fable">Fable</a> 5&#8212;but I feel like the time I spent doing that has helped me be better at prompting <a href="https://en.wikipedia.org/wiki/Fable">Fable</a> 5.</p><h3>30:56 &#8212; Prompting tips for todays models</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=1856">30:56</a>] Is there any tribal knowledge or quirky tips in today&#8217;s models where you&#8217;d say someone should know that to get more when they prompt? I actually need to counter one.</p><p><strong>Thariq:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=1863">31:03</a>] I think that people have been saying where it&#8217;s like, oh, just believe in yourself or something. I know that Jared&#8217;s post about the Riemann Hypothesis. He was just like, keep going, just believe in yourself. I think in this case it was mostly just Jared saying, it&#8217;s okay to use <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude Code</a> to solve this problem, and I&#8217;m giving you permission to do it. And I think that that&#8217;s not exactly the same as I believe in you.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=1893">31:33</a>] You know what I mean? It&#8217;s really just letting the model use compute. So I think that is something I like to tell the models right now is like, okay, hey, I think this is a hard problem. Use subagents, use workflows if you need it, right? So I always tell it to use its own judgment, but I&#8217;m giving you permission to do this stuff. I think that you have to remember that the models by default do what maybe the average user wants, which is they want it to respond and start doing work as fast as possible.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=1931">32:11</a>] Roughly complete the task but not spend a crazy amount of compute on it. I think that you have to sort of, if you want the model to do it differently, you have to nudge it slightly, right? So you might have to be like, okay, hey, I don&#8217;t want you to do any work yet. I want you to brainstorm. I want you to think with me, right? And if you prompt it that way, it will start doing that if you want it to spend a lot of compute.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=1956">32:36</a>] If you&#8217;re like, hey. Sometimes I&#8217;ll say, yeah, hey, I think this is a hard problem. Feel free to use workflows. If I&#8217;m running overnight, I might just be like, hey, I&#8217;m going to sleep. Set a /goal or something and then let it run. So yeah, I think there is just giving it permission to do the thing you want.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=1977">32:57</a>] When you recently removed so much of the system prompt, how did you prove that the end result was better?</p><p><strong>Thariq:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=1986">33:06</a>] We have a bunch of user metrics, just like how much do people like the output of <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a>? Sometimes you get that survey and you see it. We run evals against our internal eval and external evals to see how it performs at these different tasks. But I think it is hard sometimes. You don&#8217;t realize that if <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a> is telling the user, if it does all its work and then it&#8217;s like, hey, maybe you should go to sleep.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=2015">33:35</a>] There&#8217;s no eval for <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a> telling you to go to sleep. You know what I mean? And now we have to catch this new behavior. So it is hard. I think we spent a lot of time basically just removing lines in system prompt, running evals, seeing how it works, seeing how people reported it internally, and then adjusting. But it was a full-time job for several people over long periods of time. And so I don&#8217;t think I necessarily recommend everyone do this.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=2043">34:03</a>] I think that&#8217;s kind of why we wrote that post about what we learned from adjusting the system prompt. And we think that&#8217;s pretty general. So hopefully you don&#8217;t have to now go through this crazy iteration process.</p><h3>35:04 &#8212; How to get the models to do tasteful work</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=2104">35:04</a>] I think a lot of people, when they use <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude Code</a>, they get excellent results when it&#8217;s kind of getting very objective work done.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=2113">35:13</a>] But when it&#8217;s prompting models to do beautiful or tasteful work, it&#8217;s not always. It&#8217;s pretty much more hit and miss. And so, how do you best instill a very particular style you&#8217;re going for, or particular taste in the model&#8217;s outputs when it&#8217;s a much more subjective domain, maybe like front end?</p><p><strong>Thariq:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=2135">35:35</a>] The way you do it is sort of like you stay in the loop. I think you give it references, and I think the more references you give it with data, the better. So it&#8217;s better to give an <a href="https://en.wikipedia.org/wiki/HTML">HTML</a> file than a screenshot. It&#8217;s better to give a Figma file than a raster image or something. Because now if <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a> wants to know the border radius of this thing, it&#8217;s like, oh, what&#8217;s the Figma component? Border radius?</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=2160">36:00</a>] And let me just copy it over. I think giving it a bunch of references, ideally in code, is a really good way of getting it to stick to this. I think if not, you can then ask it to. If you don&#8217;t have, let&#8217;s say you&#8217;re not a designer, there&#8217;s probably step one is being like, okay, I&#8217;m not a designer. There&#8217;s a lot I don&#8217;t know about design, and there&#8217;s a lot I don&#8217;t know about iteration. I don&#8217;t even know what good looks like.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=2189">36:29</a>] And I think this is part of the art of working with the designers. They will just know what good looks like, and they&#8217;ll be like, this isn&#8217;t good enough in this way. And they prompt it. And that, I think, is also a skill that will keep getting valuable and even more valuable over time: what is good output, what is worth doing? I think, for example, with the Riemann Hypothesis, Jared prompted it, but he had no idea if it was correct.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=2216">36:56</a>] Until Lev, who is one of the world&#8217;s best mathematicians, was like, okay, is this correct? And he worked with it, and he asked it tons of follow-up questions, and we could not follow that at all. We had no idea what he was saying, but he was really intrigued. I think more and more, being that high-taste user and knowing a lot about a problem in a domain space is how you get good outputs. That&#8217;s how you solve these problems.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=2247">37:27</a>] Otherwise, maybe <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a> did solve physics or something, but you just wouldn&#8217;t know it. You don&#8217;t know enough about it. And so I think when you&#8217;re talking about design, the first thing you do is how do you become more tasteful with design? And so you can ask <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a> that as well. You can be like, hey, I&#8217;m not a designer, I want to be better at design. I don&#8217;t even have the language first. Maybe let&#8217;s find some reference sites.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=2270">37:50</a>] And then maybe you pull some reference sites, and then you&#8217;re like, this is what I like, or this is what I don&#8217;t like. And then you sort of build up those references, and you give <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude Code</a>, and now maybe you tell it, hey, let&#8217;s do some exploration. This is sort of my taste. And then it&#8217;ll do a few different mockups. I like to do these mockups all in <a href="https://en.wikipedia.org/wiki/HTML">HTML</a> because it&#8217;s all self-contained, easy to edit.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=2293">38:13</a>] And then once you have that reference, now it&#8217;s a reference. So now you can make a new session and be like, hey, this is a mockup of a design. I want to start implementing this, and it will have all of it in code, and you can start getting there. But I think that the really hard part is just knowing when something is good enough versus when can you push harder. And you see this with a lot of the math proofs too.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=2321">38:41</a>] When Terence Tao is like, okay, enough with the half-complete theorems, just do the full theorem. And so I think it sounds simple, but it takes a lot of domain knowledge and expertise to get to the point to be like, okay, it seems like you&#8217;re smart enough to have done that. Now do this.</p><h3>39:00 &#8212; How much of writing is done by AI at Anthropic</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=2340">39:00</a>] When I was a software engineer, there was a lot of, I guess it was like glue writing work kind of where you finish some work and you write a launch post, or you are part of some work stream and you got to post an update every two to four weeks. Or maybe you have a direction doc or design doc and all this writing around the software that you actually write. And curious your thoughts on if that&#8217;s changed at all at <a href="https://en.wikipedia.org/wiki/Anthropic">Anthropic</a>, how much of that is written by <a href="https://en.wikipedia.org/wiki/Large_language_model">LLMs</a> and how much of that is human written?</p><p><strong>Thariq:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=2379">39:39</a>] Still, my rule of thumb is if I would be happy to show someone the prompt, I would send them the output, right? And so a lot of times the prompt is just collecting context. Context is the most common one. For example, before every one-on-one with my manager, I asked <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a> to read every Slack message and GitHub message or PR and compile a report of what I did. That&#8217;s context that my manager doesn&#8217;t have because they haven&#8217;t been literally reading every PR or something.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=2415">40:15</a>] And so I don&#8217;t feel bad if my manager could also run this command, but it doesn&#8217;t have my context. And I don&#8217;t feel bad with them knowing that this is the prompt I used to generate this command. I think likewise, if you&#8217;re sharing updates or something like that, you might want to prove that you&#8217;ve read it. I think this is important. And sometimes little edits are ways of proving that you have also understood this work.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=2445">40:45</a>] And so if it&#8217;s just like a data readout, maybe you&#8217;re sanity-checking the numbers make sense and these are all the numbers you intended to include. And as part of that, maybe you format it differently or you add a little sentence on your behalf, but I think ultimately it&#8217;s a data readout. Everyone knows the prompt you wrote is like, hey, generate a readout on this feature based on this, and you&#8217;re fine, right?</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=2470">41:10</a>] But I think if you&#8217;re pitching a new concept or a new idea, and your prompt was like, help me come up with a new concept for this product, right? People probably at least want to know that you&#8217;ve believed in it, right? And so even if you think <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a>&#8216;s idea is incredible and just verbatim, you wouldn&#8217;t change anything. What I would say is, I&#8217;d be like, hey, <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a> generated this.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=2494">41:34</a>] But I think it&#8217;s great, you know, like I did 100 different generations. And I think this was really good. And here is something, you know, that I want to send you, right? And so I think that it&#8217;s good to be upfront about it, I think, right? Because I do think what people don&#8217;t like is when they feel like they&#8217;ve been misled a little bit. Like, oh, we thought you were doing this work, but, you know, it&#8217;s really <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a>.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=2521">42:01</a>] Right. And I think that writing sometimes can have a lot of... There are some parts of writing where individual words matter, funnily. Tweets are, I think, an example of this, where the individual tweet matters more and more. You can&#8217;t use <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a> to do that because it&#8217;s like every word has some thought that you&#8217;ve put into it and some intention that you&#8217;ve put into it. So yeah, a pitch or an essay or something like that.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=2549">42:29</a>] We do a lot of internal essays at <a href="https://en.wikipedia.org/wiki/Anthropic">Anthropic</a>, being like, hey, this is why I think we should do this. And that&#8217;s generally all human written. It&#8217;s very looked down upon, I think, to have <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a> write your essay for you, you know what I mean? Because every word is something that you are intentional about.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=2568">42:48</a>] This sounds like the proportion of the writing. That&#8217;s all that boring rote writing, like the data readouts, the one-on-one updates, the work stream updates, that&#8217;s increasingly becoming AI but always reviewed by a human. And then the novel thoughts, novel direction, is still very human written and feels like it should remain that way, even if the models were a little bit better too.</p><p><strong>Thariq:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=2596">43:16</a>] Yeah, I think it&#8217;s like if your writing is also a way of thinking, and so maybe if you need to think about the data stream or data readout more than maybe you need to summarize it. And so, but I think especially gathering context is one of those things where no one will ever hold it against you, kind of. Right. Like, oh, you know, you did a bunch of research and <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a> did this.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=2621">43:41</a>] But yeah, like I don&#8217;t want to ask my agent to do the same research. Like, you know, it&#8217;s a shortcut, but just acknowledging it is good.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=2628">43:48</a>] Someone else I was talking to, they had this thought that it would be valuable to have almost like a Git blame, but it&#8217;s like a prompt blame because it would be nice to reverse look up what was the prompt that generated this change, to kind of debug things. Do you have any sort of meta version control on the prompts that generated the software, or is it still very vanilla Git history?</p><p><strong>Thariq:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=2657">44:17</a>] Yeah, that is a little bit tough because, again, what goes into a prompt is not just the prompt, but also context and skills and things like that. So maybe a prompt might seem basic, but isn&#8217;t. I think it&#8217;s kind of hard to judge, but I do, going back to when I&#8217;m giving a PR, I don&#8217;t think a PR at this point is any different than an artifact or something. <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a> is doing basically all the code writing.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=2684">44:44</a>] So if I send someone a PR, I usually also attach an artifact of every prompt I sent to <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a>, including failed approaches and things like that, so that they can see, okay, I&#8217;ve considered a lot of other things. And if I haven&#8217;t, if this is just a one-shot, I just tell people, I&#8217;m like, hey, this is the one-shot example. This is the prompt I used. And I think that&#8217;s usually impressive and interesting to them as well because they&#8217;re like, oh, it&#8217;s cool that <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a> could one-shot this.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=2718">45:18</a>] But the worst is when you get, like, I&#8217;m just trying to avoid cases where I send in this 10,000-line PR and they&#8217;re like, how much have you read this? Or how much do you work with <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a> on it? And if I&#8217;m doing a large PR, I am going to show my work.</p><h3>45:36 &#8212; Code ownership and maintenance at Anthropic</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=2736">45:36</a>] as much as possible on maintaining code, because AI can generate such high volumes of code at this point. Do you have any tips on what&#8217;s worked well at <a href="https://en.wikipedia.org/wiki/Anthropic">Anthropic</a> for code ownership and maintenance?</p><p><strong>Thariq:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=2752">45:52</a>] I do think you have to revisit what is important with code maintenance. I think that there are some things where naming used to be really important because it was how you as a team thought about this abstraction and feature. But I think naming is becoming less and less important. A lot of stylistic things in code are becoming less and less important. And I think that this is not the same to me as maintenance.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=2779">46:19</a>] I think that you might want to sit down and be like, okay, what things really matter now? What don&#8217;t? What opinions do we have that don&#8217;t matter? That&#8217;s one. And then I think on the second, on the maintenance side, is having good scaffolding. So I think that it&#8217;s like having a good verification harness, having a good sort of skills. We use the simplify skill a lot. I think that sometimes even from a model perspective, it might do a lot of work.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=2811">46:51</a>] And then even just giving it permission to be like, &#8220;Hey, I think this is the right idea. Let&#8217;s simplify.&#8221; It gives it that permission to do it. But you actually don&#8217;t want a model to, by default, do work and then simplify because maybe it&#8217;s not correct. You don&#8217;t want it to simplify work. That&#8217;s not correct. It&#8217;s like you&#8217;re wasting tokens. And so I think this is also how humans think. You&#8217;re like, you think generatively, you try and approach, and then maybe you simplify and abstract a little.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=2843">47:23</a>] So I think there&#8217;s some work inside your own code base or setting up those skills and that process for those practices where you&#8217;re not just submitting the first take, but you&#8217;ve simplified it and tried it. And then having a really good verification harness where you feel like you&#8217;re catching it. You have a good belief that <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a> is testing every part of it. When you submit a PR to <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude Code</a>, you get a recording back of it using the feature and testing it as an example.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=2876">47:56</a>] And you can just get really, really creative with different ways to test stuff. I think you should basically have on the order of, I&#8217;d say more like 100 times more testing code than you&#8217;ve ever had before. You know what I mean? So you should have fixtures for everything. You can just pull production code and create fixtures and mockups on the fly for databases. You can have Storybook for front end and things like that.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=2902">48:22</a>] And you can have all these different ways of testing and verifying your code. And that, I think, is really valuable for maintainability. It&#8217;s like just having all these ways of verifying it. And then, of course, there&#8217;s just the human element of where do you want your codebase to go? If you know that&#8217;s the case, probably you start thinking about how you&#8217;d replay, and undo and redo becomes really important, just that sort of stuff.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=2932">48:52</a>] But if it&#8217;s single-player only, that actually matters a little bit less. The average user is not going to undo 100 times or something. And so many single-player applications&#8217; undo stop working pretty quickly after four or five times, just because it&#8217;s not that important. But in multiplayer, the ability to compose different things together is really, really important, or compose different operations together is really important.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=2959">49:19</a>] That&#8217;s just an example where, if you know the direction of your codebase, there are things you care about and you want the models to know, and you can include that in your skills. You can also just. That&#8217;s sort of what maintainability means to me, is having a vision for what your codebase is good at, where you&#8217;re going, keeping it in line. I do think the models are getting better and better and better.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=2979">49:39</a>] And almost every code base probably, I think, will have this moment where you&#8217;re like, do you just ask the model to rewrite all of it? Because now you&#8217;re like, oh, I can do it in the most performant language, I can mix and match. There&#8217;s not a reason that every software in the world shouldn&#8217;t run in WebAssembly in the browser. You know what I mean? There&#8217;s not a reason why I don&#8217;t know your Xbox game can&#8217;t run in your browser.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=3009">50:09</a>] Actually, the consoles are much weaker than your average MacBook right now. But it&#8217;s just the code base. But we could. And so I think probably over the next year or two, everyone&#8217;s going to need to think about that. And so I don&#8217;t think you want to spend too much time worrying about maintainability in this way. That might not matter anymore. I&#8217;m not saying maintainability doesn&#8217;t matter.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=3037">50:37</a>] You just have to update your mental model of what does it mean for code to be maintainable.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=3043">50:43</a>] I was talking to this friend who was saying that he leaves tons and tons of tech debt lying around because the next iteration, why waste time fixing that now? In the next iteration of <a href="https://en.wikipedia.org/wiki/Fable">Fable</a>, it&#8217;s going to one-shot all this tech debt and refactor this for me. So kind of funny.</p><p><strong>Thariq:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=3065">51:05</a>] Yeah, I don&#8217;t think that&#8217;s completely incorrect. It depends on the circumstance, right? I think this is also just a classic thing in startups where you&#8217;re like, even in normal human engineering, you always have this problem of like, hey, do I refactor? Do I do tech debt or do I deliver more customer value? Would refactoring help me deliver more customer value right now? I do think that, generally, you should think on your projects on shorter timescales, so you&#8217;re like, okay, how do I deliver value over the next month or two?</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=3096">51:36</a>] And if the project you&#8217;re talking about is delivering value over six months or 12 months, then maybe wait for the next model a little bit and just deliver value on the short timescale. Make sure it&#8217;s really good. And if the models are not quite good enough, they might get there soon. It depends very much on the specific case.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=3119">51:59</a>] Right? But I&#8217;m not saying this is true of everything, but just something you should keep in mind.</p><h3>52:04 &#8212; How Anthropic prevents breakages</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=3124">52:04</a>] I&#8217;ve talked to some friends who work at big tech companies like Google, Facebook, those types of places. And then they, as they&#8217;ve become more and more AI-pilled, one thing that people have noticed is there&#8217;s a lot more incidents or sevs in their usage, and it&#8217;s natural in those organizations because they read the code less and there&#8217;s more code flying out. What countermeasures have worked really well for <a href="https://en.wikipedia.org/wiki/Anthropic">Anthropic</a> to prevent breakages, given that the code velocity is so much higher?</p><p><strong>Thariq:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=3158">52:38</a>] Yeah, I think this is something that is a byproduct of moving faster sometimes, and we have to figure it out. I don&#8217;t think our uptime is exactly where we want it to be either. But also, as a company, we&#8217;re almost six years old, I think, around. So it&#8217;s like no company has grown this fast before. And a lot of that is because we&#8217;ve been able to create more products faster than ever before.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=3184">53:04</a>] And so you can use <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a> to make your uptime better. And I think the way we think about this is just really good. What&#8217;s the dream testing environment? The dream deployment environment? Can you take requests and replay them across mock databases and fixtures? Across everything. Can you Chaos Monkey everything?</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=3206">53:26</a>] In my personal workflows, I have so many more custom random tools and scripts that just make everything faster. And just curious, on your team at <a href="https://en.wikipedia.org/wiki/Anthropic">Anthropic</a>, for instance, does everyone have a set of miscellaneous tools that help them get random things done?</p><p><strong>Thariq:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=3228">53:48</a>] Yeah, everyone does for sure. I think part of this is the job. I think that sometimes what we try and do is we play around with harnesses. Sometimes some people on the team build their own harnesses for a little bit to figure out, oh, is this useful or not? And then they figure out if it works and if not, they integrate it. I think that&#8217;s part of the job in some ways. I think other examples of sort of misc stuff people will do.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=3258">54:18</a>] A lot of people will have unique <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude Code</a> setups. I think <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude Code</a> is one of these things where, you know, you can have it like I have it scheduled, my calendar advice, right? And so if someone wants to schedule something with me, I&#8217;m just like, hey, you can just tag <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a> here in this channel and I&#8217;ll accept whatever it puts on my calendar. You know what I mean? So I think there&#8217;s some stuff like that.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=3281">54:41</a>] I know a lot of people use it for email. I think that I&#8217;ve seen some people do interesting multi-closing, sort of tmuxing-like setups. What&#8217;s the ideal scenario for you to display 50 different <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a> Codes, and what&#8217;s the best way for you to figure out what&#8217;s going on at any one time? I think there&#8217;s a lot of different ways, and we&#8217;re trying to make <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude Code</a> more hackable as well so that more people can even make their own version of <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a>.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=3318">55:18</a>] Code more different, and everyone might have their own little twist on it.</p><h3>55:24 &#8212; Visibility and sharing your work</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=3324">55:24</a>] Your role at <a href="https://en.wikipedia.org/wiki/Anthropic">Anthropic</a> is really interesting because of the external visibility that you have. And I think a lot of people, when they give career advice, visibility is a good thing, but they don&#8217;t have this level of external visibility. So do you recommend to software engineers that they should be posting on <a href="https://en.wikipedia.org/wiki/X_(social_network)">Twitter</a> and X? And if so, what advice would you give in that sense?</p><p><strong>Thariq:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=3349">55:49</a>] Generally, the thing I say to people is that you should share your work externally as much as you can. Especially, I think, within certain companies. You might not be able to, but maybe you have side projects or something like that. I think just before I joined <a href="https://en.wikipedia.org/wiki/Anthropic">Anthropic</a>, what I did was I spent a bunch of time working with different companies, building stuff, and writing about it and talking about it.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=3373">56:13</a>] And this was really valuable because it increased my surface area of luck. And so I think that the bar is much lower than you think. Basically, whenever someone asks me for advice, I&#8217;m like, okay, I&#8217;ll sit them down. I&#8217;ll be like, I know statistically I tell this advice to a lot of people, and almost no one does it. And everyone who&#8217;s done it is either in a job that they&#8217;re pretty excited about or running their own company.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=3405">56:45</a>] And there are reasons why you&#8217;re not going to want to do it, but this is it. I just can tell you one: I don&#8217;t care about your resume. Don&#8217;t do that. You have to choose an interesting project to work on. You have to work really hard on it. You have to lock in, and then you have to ship it and write about it. You have to do it. You can&#8217;t. There&#8217;s going to be so many reasons why you don&#8217;t want to.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=3426">57:06</a>] It&#8217;s like not good enough yet. Or like you haven&#8217;t, like you think the writeup is not very interesting or something, but you have to do it and you can&#8217;t get discouraged. Maybe the first one might not work, but you have to do it again. And maybe <a href="https://en.wikipedia.org/wiki/X_(social_network)">Twitter</a> is not the right place. Maybe it&#8217;s <a href="https://en.wikipedia.org/wiki/Reddit">Reddit</a>, maybe there&#8217;s a specific <a href="https://en.wikipedia.org/wiki/Reddit">Reddit</a> or Hacker News or something like that. Part of what you&#8217;re trying to do is you&#8217;re just trying to find people who like what you&#8217;re doing, right?</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=3449">57:29</a>] But I think that people in general want to really, you know, we consume more content than ever, right? And you know this, right? I think that people want really high-quality content. High-quality content, as you know, is a lot of work. And so I think going back to what we said before about would you show someone the prompt? You did, right? I think a lot of times people are like, oh, what&#8217;s the shortcut?</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=3475">57:55</a>] &#8220;Oh, should I just ask <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a> to manage my <a href="https://en.wikipedia.org/wiki/X_(social_network)">Twitter</a> account? And is that how I grow?&#8221; And I&#8217;m like, no. Like, you should not do that.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=3483">58:03</a>] You have to sort of engage authentically. You have to post, do good work, and talk about it. And I think build up networks and things like that. But I think that as long as that&#8217;s one of your goals and you try hard at it, I haven&#8217;t seen anyone not succeed at it, but it is really hard. It&#8217;s kind of like saying, oh, I want to go to the gym every day, or I want to lose weight or something.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=3506">58:26</a>] There are simple things that you can do that take a lot of discipline and are easy to get discouraged with. But they&#8217;re worth doing if you do it. And I think posting, or more specifically writing about your work, is really, really valuable.</p><h3>58:42 &#8212; Luck surface area example</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=3522">58:42</a>] You mentioned LLM surface area. Do you have an example that kind of illustrates the value of expanding your LLM surface area?</p><p><strong>Thariq:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=3532">58:52</a>] Yeah. I mean, okay, how did I get my job at <a href="https://en.wikipedia.org/wiki/Anthropic">Anthropic</a>? I did a fellowship with a company called Goodfire where I did some applied research. And so they&#8217;re an interpretability AI company. And I was trying to figure out how do I use interpretability to make better products? And so I learned about their research, and I felt I want to work on a project, and it was really important for me to share it.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=3561">59:21</a>] And so, when I agreed to work with them, I was like, that&#8217;s my goal: I want to share what I&#8217;m building. I think that&#8217;s good for you as well, because Goodfire is a startup, and people want people to learn about them. And so this is something I&#8217;m going to do. So I built this interpretability visualization, and I shared it. This was my first big post on <a href="https://en.wikipedia.org/wiki/X_(social_network)">Twitter</a>, but it was only 500 likes or something.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=3582">59:42</a>] Now, you know, that&#8217;s not very much to me, but it&#8217;s like, back then it was like a huge post, and several people saw it, and some of them DMed me about it. And then I got an intro into a role here. And so I think that I spent a month on that project in particular, so it wasn&#8217;t crazy. And, yeah, it just showed people that I could do interesting work.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=3617">01:00:17</a>] And I got paid for it too, so it wasn&#8217;t like I was doing it for free. And there&#8217;s plenty of examples of, I think people are happy to do that sort of thing for you, if you sort of show that kind of initiative. But yeah, you have to. It is like, you really have to do interesting and novel work and work hard and be proud of your work as well. There&#8217;s not a shortcut to that, I think.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=3643">01:00:43</a>] But if you do, I think everyone is always looking for interesting work and wants to support you and wants to hire you or, yeah, give you money, like, lots of good things.</p><h3>01:00:57 &#8212; Should people still learn to code</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=3657">01:00:57</a>] I see this tagline going out a lot with some of the stuff that <a href="https://en.wikipedia.org/wiki/Anthropic">Anthropic</a>&#8216;s been maybe, like, I think it was Boris went on some podcasts, and the tagline was, &#8220;Coding is largely solved.&#8221; Should people still learn to code if coding is largely solved?</p><p><strong>Thariq:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=3674">01:01:14</a>] I think being technical is really, really important. Knowing how computers work, how computer programs work, how languages work, what are the hard things? And what&#8217;s a backend service, what&#8217;s a cache, what is memory allocation? All of these things are actually kind of really important to learn. I do think it&#8217;s hard to motivate yourself sometimes to do it the same way that doing math by hand was not that motivating to me, but some people just love math and did it.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=3709">01:01:49</a>] I think that that&#8217;s probably something that people have to figure out, but I think it is really worth it. Being technical is really, really important. We talked about at the start, or earlier, where the only way you can tell you&#8217;ve solved the Riemann Hypothesis or made progress or whatever is if you&#8217;re a great mathematician. And in the same way, the only way you can tell if you&#8217;ve built great software is if you&#8217;re a great software engineer.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=3739">01:02:19</a>] I think that how do you do that is hard. But we&#8217;ve talked about some of this stuff before, just staying in the loop, reflecting on your process and getting better. And you can use <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a> to learn as well and sort of explain things to you. So treating it like a thought partner, but learning truly. I think Karpathy says learning should feel like effort. And I think that&#8217;s one of the hard things is a lot of times, even if you ask <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a> to explain something to you, you might just nod along and you&#8217;re like, oh, yeah, I learned it.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=3772">01:02:52</a>] But you didn&#8217;t really, because you didn&#8217;t put any effort in. So I think it is really technical. You should learn. It&#8217;s hard to learn. And sometimes what school forces you to do is learn that. I don&#8217;t know, truly. I&#8217;m not learning programming from scratch, so I don&#8217;t know exactly how to do it. Now, I think if there are better ways, I would still type out and build programs and run them and learn them, you know what I mean?</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=3800">01:03:20</a>] There might be better ways that are more <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a>-informed as well. But I think it&#8217;s really important. I think when Boris says coding is solved, I think it just means we don&#8217;t get stuck in the same ways that we used to before. I think coding used to be this very high-variability thing where you&#8217;re like, oh, could this bug take a day or could it take two weeks? You have no idea sometimes. And I think on the whole, coding used to be in real terms something that was very rare for something to go well.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=3836">01:03:56</a>] Very few people in the entire world could write software, and they were very, very rare. And even if you got them all together, there were so many other reasons why it wouldn&#8217;t work. And coding was one of the rarest things in the world where the chance of a software project going well was, on absolute terms, very low. And if you were hiring someone to make software for you for something that&#8217;s not a huge product, like if you&#8217;re hiring someone to make software for your car dealership, you are almost certainly not going to get the software you wanted.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=3871">01:04:31</a>] You&#8217;re going to get essentially scammed, you know what I mean? Not because anyone was trying to scam you. It was just like, software is really, really hard and it could only be spent on the most important scalable things in the world. And now that coding is solved, I think what we mean is that you can use coding to do all these other things that we&#8217;ve not done before. But that&#8217;s not to say that that&#8217;s not a lot of work still.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=3896">01:04:56</a>] It&#8217;s just not this incredibly rare, difficult thing that mostly just doesn&#8217;t work, and you have to spend, like, eight hours a day locked in to do well.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=3907">01:05:07</a>] It&#8217;s really insane. That shows the difference in expectation is when I used the right software. I would be shocked if it worked on the first try. I was like, whoa, wait, why is this working? And you expect to kind of bash your head against the wall a little bit and then it works, even if it&#8217;s just like you missed a semicolon or something like that. And now I almost have the flip expectation where when it doesn&#8217;t work, I&#8217;m like, wait, what, why, why did <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a>.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=3934">01:05:34</a>] What happened here? Usually I expect it to work almost the opposite, like on the first try.</p><p><strong>Thariq:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=3941">01:05:41</a>] It&#8217;s crazy immediately. Yeah, I think humans get really used to abundance, right? There was this article someone shared recently about going through a modern apartment and talking about all the wonderful things that we have now that people could not have imagined before. Something that can play music on demand that&#8217;s suited for your mood. Before, you&#8217;d have to hire a musician to go write incredible music, right?</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=3969">01:06:09</a>] But I&#8217;d say, on the whole, probably more people are getting paid to make music now than ever before, right? And I think that music is reaching more people than ever before. And I think probably the same thing will happen with software, will happen with math, will happen with all of these things where, when you get abundance, people are like, great, I want more abundance.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=3990">01:06:30</a>] I want my software and everything, you know. Like, I want my music everywhere, you know.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=3994">01:06:34</a>] So, yeah, one potential other data point from this conversation saying that maybe people should still be technical or learn how to code is, I think earlier in the conversation we talked about automating knowledge work, and you mentioned that people who are technical had kind of a leg up because they kind of understood how to coordinate <a href="https://en.wikipedia.org/wiki/Claude_(AI)">Claude</a> to do a variety of things, like you&#8217;re calling FFmpeg to automate some video editing.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=4021">01:07:01</a>] And I don&#8217;t think someone who is not technical would have that thought. So it does seem like even in this case where models are doing a lot, there&#8217;s still so much value in</p><p><strong>Thariq:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=4032">01:07:12</a>] Being technical, knowing how computers work, in the same way that probably the most technical CEOs are, like, the best CEOs are technical, like Zuckerberg, Elon, but they probably haven&#8217;t written a line of code truly in a long time. But they understand how systems work, they understand constraints and things like that. And that&#8217;s really, really important. And so even if all that work has changed, I think being technical is really, really important.</p><h3>01:07:42 &#8212; Advice for his younger self</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=4062">01:07:42</a>] And then last question for you is, if you could go back to when you just entered the industry and give yourself some advice, knowing what you know now, what would you say?</p><p><strong>Thariq:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=4072">01:07:52</a>] They&#8217;re like kind of like two wolves, sort of. I think you have to believe in yourself. I think this is really important. And I think that at least when I joined the industry, it was rarer to believe in people when they were kind of younger. I think that was the whole point of Y Combinator or something was believing in young people early on to do really great things.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=4095">01:08:15</a>] And so I think that, you know, even going back to the internship discussion we had earlier, right, I think that thinking of yourself not as someone who&#8217;s being trained to do something, but someone who can do something incredible right away, I think is really important. And I think I wish I had done bigger, bolder things that I&#8217;d written and shared about.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=4118">01:08:38</a>] I think there were lots of ideas where I was like, wow. I think I had thought I had done original work that I wish maybe I&#8217;d even shared in some form, but maybe not in a form that survived the Internet, you know, and it wasn&#8217;t a goal of mine. And so I wish I&#8217;d sort of been bolder and done and shared some of this work. But at the same time, you also.</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=4143">01:09:03</a>] There is a lot to learn from people. And I think that when you&#8217;re young, you tend to fall. Either you&#8217;re not bold enough or you&#8217;re too bold and you don&#8217;t figure out what people have done before and figure out why this is not working, right?</p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=4169">01:09:29</a>] And there&#8217;s this balance. And I think everyone has different failure modes, but I think I probably didn&#8217;t take enough advantage of mentors and people who had learned a lot. And I think I probably had to relearn a bunch of things as a result. So there&#8217;s probably not universal good advice, but just things to think about as you&#8217;re entering.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=4193">01:09:53</a>] Awesome. Well, thanks so much for your time, Thariq. Really appreciate it.</p><p><strong>Thariq:</strong></p><p>[<a href="https://youtu.be/2Kch3tWMnw8?t=4196">01:09:56</a>] Yeah, of course. Thanks, <a href="https://en.wikipedia.org/wiki/Nathan_Peterman">Ryan Peterman</a>. It was fun.</p>]]></content:encoded></item><item><title><![CDATA[Creator of Scala: Comparing Languages And How AI Will Impact Them | Martin Odersky]]></title><description><![CDATA[There are so many choices every programming language creator makes while navigating engineering tradeoffs in building one.]]></description><link>https://www.developing.dev/p/creator-of-scala-comparing-languages</link><guid isPermaLink="false">https://www.developing.dev/p/creator-of-scala-comparing-languages</guid><dc:creator><![CDATA[Ryan Peterman]]></dc:creator><pubDate>Mon, 31 Aug 2026 13:05:35 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/211791435/2857a28d4760be8b26ba11ba481ad003.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>There are so many choices every programming language creator makes while navigating engineering tradeoffs in building one. </p><p>This made me curious about <a href="https://en.wikipedia.org/wiki/Martin_Odersky">Martin Odersky&#8217;s (the creator of Scala)</a> thoughts comparing different languages. His deep domain expertise made his responses comparing Rust, Zig, Python and Scala interesting.</p><p>He also had a lot to say about how AI will impact programming language ecosystems in the future. For instance, he talked about <a href="https://arxiv.org/abs/2603.00991">some research he was working on</a> to strengthen the static guarantees programming languages give to provide more safeguards for LLMs. </p><p>Hope you enjoy the conversation!</p><p>Check out the episode wherever you get your podcasts: <a href="https://youtu.be/LdN4sPWM-WY">YouTube</a>, <a href="https://open.spotify.com/episode/0EHxXlNhBNbZuXc876W52m?si=4HTiVaY4S-Cn5-JlycKS8w">Spotify</a>, <a href="https://podcasts.apple.com/us/podcast/the-peterman-pod/id1777363835">Apple Podcasts</a>.</p><div id="youtube2-LdN4sPWM-WY" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;LdN4sPWM-WY&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/LdN4sPWM-WY?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h1>Timestamps</h1><p><a href="https://www.developing.dev/i/211791435/0044-why-care-about-functional-programming">00:44 - Why care about functional programming</a></p><p><a href="https://www.developing.dev/i/211791435/0635-why-should-people-learn-scala">06:35 - Why should people learn Scala</a></p><p><a href="https://www.developing.dev/i/211791435/0926-rust-vs-scala">09:26 - Rust vs Scala</a></p><p><a href="https://www.developing.dev/i/211791435/1242-rust-vs-zig">12:42 - Rust vs Zig</a></p><p><a href="https://www.developing.dev/i/211791435/1545-scala-vs-python">15:45 - Scala vs Python</a></p><p><a href="https://www.developing.dev/i/211791435/1831-the-programming-languages-that-influenced-him">18:31 - The programming languages that influenced him</a></p><p><a href="https://www.developing.dev/i/211791435/2216-how-running-on-the-jvm-works">22:16 - How running on the JVM works</a></p><p><a href="https://www.developing.dev/i/211791435/2633-why-writing-a-compiler-is-hard">26:33 - Why writing a compiler is hard</a></p><p><a href="https://www.developing.dev/i/211791435/2919-why-twitter-adopted-scala-early-on">29:19 - Why Twitter adopted Scala early on</a></p><p><a href="https://www.developing.dev/i/211791435/3100-how-he-believes-ai-will-impact-programming-languages">31:00 - How he believes AI will impact programming languages</a></p><p><a href="https://www.developing.dev/i/211791435/4340-will-there-be-less-engineers-in-ten-years">43:40 - Will there be less engineers in ten years</a></p><p><a href="https://www.developing.dev/i/211791435/4434-top-programming-languages-to-learn-to-grow">44:34 - Top programming languages to learn to grow</a></p><p><a href="https://www.developing.dev/i/211791435/4618-top-technical-book-recommendation">46:18 - Top technical book recommendation</a></p><p><a href="https://www.developing.dev/i/211791435/4651-why-he-chose-academia-instead-of-industry">46:51 - Why he chose academia instead of industry</a></p><p><a href="https://www.developing.dev/i/211791435/4828-reflecting-on-scala">48:28 - Reflecting on Scala</a></p><p><a href="https://www.developing.dev/i/211791435/5542-advice-for-his-younger-self">55:42 - Advice for his younger self</a></p><h1>Transcript</h1><h3>00:44 &#8212; Why care about functional programming</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=44">00:44</a>] What is functional programming? And why should an imperative programmer care about the functional way of programming?</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=52">00:52</a>] So functional programming is programming with values, so you don&#8217;t have state that changes, like mutable variables that change or arrays that change. You have values and you have functions, and the functions transform these values into other values. So it&#8217;s a very restricted form of programming. And most real functional programming languages are impure in the sense that, yes, of course, at some point you have to touch state and change things and write to standard out and things like that.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=84">01:24</a>] But the idea is to do that sort of very late, so to have the largest part of your program represented as values and functions that transform values. And the benefit you get from that is essentially much better predictability and fewer bugs, because these side effects to, let&#8217;s say, a global variable or a field in some object graph or things like that, they can really trip you up. They can essentially, they&#8217;re an undocumented effect of your function, so it&#8217;s not reflected anywhere typically.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=117">01:57</a>] But maybe you have a comment if things are good. And these things are very hard to keep in your head and generally reason about. So the advice from functional programming is essentially to keep these things to the bare minimum and possibly to nothing if your function maps into these things. The other reason why functional programming is nice is that it&#8217;s very directly linked to mathematics. So in mathematics you have theories of, let&#8217;s say, polynomials or strings or lists or things like that.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=153">02:33</a>] And in none of these theories will you find the concept of mutation; that just doesn&#8217;t exist. So you can take a polynomial and you can transform it into a new polynomial, but you can&#8217;t change a coefficient at 0.3 at the third coefficient and pretend it&#8217;s the same polynomial. It&#8217;s not in mathematics, right? It&#8217;s clearly something different. So functional programming, you could say, follows quite closely the way mathematics sees things.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=178">02:58</a>] What would you say to someone that doesn&#8217;t do functional programming because it&#8217;s not convenient?</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=184">03:04</a>] I guess two things. One is it&#8217;s a learning curve. So initially your brain is wired to do imperative programming from when you were very young. I imagine most people learned an imperative language first, and then it&#8217;s hard to see how you would express things differently. But if you persist in that a little bit, and it doesn&#8217;t really take much, then you will essentially reap the benefits very quickly, that you say, well, actually my program got a lot clearer.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=216">03:36</a>] I can understand it better. I don&#8217;t really have to track some steps, go step by step through my program with a debugger or things like that to figure out what it does. Typically I don&#8217;t need a debugger when I write functional code. That&#8217;s really not necessary. The other thing is to essentially know when to stop. So there is a strand of functional programming called pure function programming, which tries to express as much as possible in pure functions and to delay the side effects and wrap them up in monads or whatnot.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=255">04:15</a>] And that can get very inconvenient very quickly. So my answer to that would be, it really depends. And in most cases, it&#8217;s completely okay to have your side effects as long as these are well documented and you use them. So basically, use these things in moderation. I would say functional programming is great for 95% of your program, and if you need some side effect, some imperative feature, for the last 5%, that&#8217;s also okay.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=285">04:45</a>] Is there any quantitative measure of the, I guess, the correctness benefits that functional programming gives you over imperative?</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=296">04:56</a>] I think there are some studies. It&#8217;s not quite clear how significant they are. I think people criticize them a lot. The studies tend to say that a language like <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a> would have fewer bugs than a language like <a href="https://en.wikipedia.org/wiki/Compatibility_of_C_and_C%2B%2B">C/C++</a>. But I don&#8217;t really want to insist on that because these studies are very hard to do, and the methodology is very hard to get right. I believe the effects become more important in large programs than in small ones.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=328">05:28</a>] For small ones, you can do anything, really. You can write a loop, you can write a recursive function. It doesn&#8217;t really matter. And it&#8217;s very much a matter of taste which one you prefer. But in a large system, I believe static types have certainly proven their worth, even if we don&#8217;t really have a conclusive study that shows it. I mean, I can point you to a study, and if you&#8217;re a dynamic typing enthusiast, then you will point to another that essentially claims the opposite.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=359">05:59</a>] So it&#8217;s very, very hard to do empirical software engineering on that scale. And so I&#8217;m afraid I can&#8217;t really give a good answer. I just have a feeling that mostly functional statically typed languages is sort of a sweet spot for getting programs right. Maybe the other thing is when you really need to get them absolutely right, like with proofs and things like that. If you do <a href="https://en.wikipedia.org/wiki/Rocq">Rocq</a> or Lean or any of these things, these are all functional languages.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=389">06:29</a>] So people wouldn&#8217;t even attempt to do something like <a href="https://en.wikipedia.org/wiki/Compatibility_of_C_and_C%2B%2B">C/C++</a> here.</p><h3>06:35 &#8212; Why should people learn Scala</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=395">06:35</a>] When you think about <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a> in the environment of all programming languages, what sets <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a> apart? Or maybe put it another way, why should someone learn <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a> in 2026?</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=407">06:47</a>] Well, <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a> is the only functional language that is also a very capable object-oriented language. In fact, it was born by the idea that we can actually make a fusion of the two in a way which is not side by side, but which really combines the features in a nice synthesis. So that was what <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a> was about. That&#8217;s what I wanted to show, and that&#8217;s been largely successful. So you can write really beautiful programs in this combination.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=439">07:19</a>] Object-oriented programming comes in when you talk about components and modules and essentially encapsulation, these sort of things where functional programming typically doesn&#8217;t really have a very strong story. I mean, there are languages like Standard ML or <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a> that do have very capable module systems, but other functional languages don&#8217;t. And people, when they think of functional programming, they don&#8217;t really think much about components and interfaces and these sort of things, which are things that I believe also matter very much.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=470">07:50</a>] Could you give an example? Maybe an object-oriented thing that you could do in <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a>, but you couldn&#8217;t do in Haskell, which is pure functional.</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=480">08:00</a>] It&#8217;s sort of ingrained in the whole fabric of the thing that everything is essentially objects, what you do. So one thing that you get is what I think Simon Peyton Jones called the power of the dot, that you say it&#8217;s super convenient. You have an object and then you do dot, and then you have the environment that immediately tells you what are the methods and fields of that object, that you can use them.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=504">08:24</a>] So it focuses your mind. Whereas in functional programming, it&#8217;s typically you have a sea of functions that can be applied to arguments, and you have to figure out what they are.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=514">08:34</a>] When you think about the systems programming languages like <a href="https://en.wikipedia.org/wiki/Rust">Rust</a>, <a href="https://en.wikipedia.org/wiki/Zig_(programming_language)">Zig</a>, Go, <a href="https://en.wikipedia.org/wiki/Compatibility_of_C_and_C%2B%2B">C/C++</a>, in your opinion, which one would you say is kind of the best one? And then maybe we can compare it to <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a>.</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=526">08:46</a>] In this day and age, systems programming languages need to be memory safe, guaranteed memory safe. So that would already exclude quite a few of them, but it would leave <a href="https://en.wikipedia.org/wiki/Rust">Rust</a> and Go, I think. And <a href="https://en.wikipedia.org/wiki/Rust">Rust</a> and Go are at different levels. Go is really not a sort of nuts-and-bolts systems programming language. This is more a language in which you would write, let&#8217;s say, an application server or some middleware or some cloud infrastructure, or things like that.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=553">09:13</a>] It&#8217;s not something you would use for embedded, say, which you would use <a href="https://en.wikipedia.org/wiki/Rust">Rust</a> for. So I think in the domain, both of them are probably the ones that are the leading ones that I would take most seriously.</p><h3>09:26 &#8212; Rust vs Scala</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=566">09:26</a>] And then when you compare <a href="https://en.wikipedia.org/wiki/Rust">Rust</a> or Go with <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a>, what are the pros and cons of the different language designs? What&#8217;s something that <a href="https://en.wikipedia.org/wiki/Rust">Rust</a> does better than <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a>? Something <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a> does better than <a href="https://en.wikipedia.org/wiki/Rust">Rust</a>.</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=580">09:40</a>] So <a href="https://en.wikipedia.org/wiki/Rust">Rust</a> is closer to the metal, you have better performance guarantees. I guess the fact that <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a> is a garbage-collected language means that you always have some pauses. I mean, garbage collectors have become quite, quite capable. I mean, they&#8217;re brilliant and the pauses are really very, very small. But it&#8217;s a fact that you do need a big chunk of memory to run fast, and I guess <a href="https://en.wikipedia.org/wiki/Rust">Rust</a> could run in much smaller memory.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=608">10:08</a>] So I believe that&#8217;s better for embedded systems and things like that. I believe right now <a href="https://en.wikipedia.org/wiki/Rust">Rust</a> is actually overused because a lot of people push <a href="https://en.wikipedia.org/wiki/Rust">Rust</a> for things higher up in the stack where your garbage collector is fine. But essentially, you still want to write code without, and that is for me a bit an exercise in, I don&#8217;t know, just intellectual that I can do it.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=637">10:37</a>] I don&#8217;t really think there&#8217;s a big sense in it to write memory management for a garbage collector. You should absolutely use one because it makes a lot of things simpler. So yes, of course, if given enough brains, I can write code around it, and I can do that. But why should you? I mean, it can be much simpler. So that was for <a href="https://en.wikipedia.org/wiki/Rust">Rust</a>, for Go. Go is sort of a language that lags behind. I mean, it was intentionally designed to be very, very small and essentially to be the standards of the &#8216;90s.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=675">11:15</a>] So now they have gotten generics, which is a big step. So I believe that sort of is a step forward for that. But it&#8217;s still a fairly limited language. What you can do, which has an advantage that essentially it forces a very uniform style because there&#8217;s not much different things you can do. And there&#8217;s probably a culture fostered to do things in a certain way, which makes it easier to essentially read one another&#8217;s programs and essentially jump in a new code base and things like that.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=707">11:47</a>] So I think that would be my main advantage of Go that I see there.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=711">11:51</a>] Is it possible to turn off the garbage collector in <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a>?</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=715">11:55</a>] Not in production. So we have some research that would let you use essentially your own memory allocators and things like that, the way let&#8217;s say <a href="https://en.wikipedia.org/wiki/Zig_(programming_language)">Zig</a> does it. The problem with that is always that you can leak references into memory that you reclaim, and then all hell breaks loose. Essentially, your pointers, you point to memory that&#8217;s undefined. But in <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a> we now have a very good way to actually track these references, so we can actually prevent that statically by the type system, that this will never happen, and you can still have your own allocator.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=756">12:36</a>] That said, we haven&#8217;t really shipped that in production yet. So right now I would say you use the garbage collector. <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a>.</p><h3>12:42 &#8212; Rust vs Zig</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=762">12:42</a>] Yeah, I see a lot on the Internet, people comparing <a href="https://en.wikipedia.org/wiki/Rust">Rust</a> and <a href="https://en.wikipedia.org/wiki/Zig_(programming_language)">Zig</a>, or kind of a fierce debate on which one is better. When you think about <a href="https://en.wikipedia.org/wiki/Rust">Rust</a> versus <a href="https://en.wikipedia.org/wiki/Zig_(programming_language)">Zig</a>, what are the merits of the two compared to each other?</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=778">12:58</a>] So what I can see is <a href="https://en.wikipedia.org/wiki/Zig_(programming_language)">Zig</a> has a really nifty compile-time construct, essentially inlining, where the compiler does smart inlining, and that is quite clean and quite powerful. And <a href="https://en.wikipedia.org/wiki/Rust">Rust</a> has macros, but I think they&#8217;re more clunky than the <a href="https://en.wikipedia.org/wiki/Zig_(programming_language)">Zig</a> version. In <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a>, we have something quite close to <a href="https://en.wikipedia.org/wiki/Zig_(programming_language)">Zig</a>. We also have essentially a thing that&#8217;s based on inlining and optimizations by the compiler. But we have a restriction, which I believe <a href="https://en.wikipedia.org/wiki/Zig_(programming_language)">Zig</a> doesn&#8217;t have, and that is that there cannot be additional type errors after inlining.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=821">13:41</a>] So the thing is, you inline, and then the question is: Is the inline program guaranteed correct, so type-correct, or might you have type errors? The typical example where you might have type errors is <a href="https://en.wikipedia.org/wiki/Template_(C%2B%2B)">C++ templates</a>. In fact, that&#8217;s quite scary in C++ that you can expand a template, and then you get very, very complex type errors and very, very hard-to-debug things. So <a href="https://en.wikipedia.org/wiki/Zig_(programming_language)">Zig</a>, I believe, its inlining mechanism is much saner.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=850">14:10</a>] When you say inlining, can you explain the concept?</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=853">14:13</a>] Inlining just means that in <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a> we can write `inline` in front of a function, and that means that the compiler will, before it starts code generating, during the time when it looks at the type code, which are trees, take the function body. When it sees a function call to that function, it will take the call and replace it by the body, and then it will do some optimizations. It can say, okay, so here we have essentially an application to, let&#8217;s say, a value which is a lambda, but I know where the lambda points to, so let me forward the call right to the function.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=894">14:54</a>] And with that you can already do quite a bit of essentially optimizations, which are guaranteed because the inliner must inline. That&#8217;s not a thing. An optimizer has essentially discretion whether they want to inline things or not, and so you can never rely on that. But an inliner, which is essentially a compile-time based on the typer, must inline, so you can rely on it, and constexpr in <a href="https://en.wikipedia.org/wiki/Zig_(programming_language)">Zig</a> and C is essentially very similar.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=925">15:25</a>] Okay, so it&#8217;s a way to get rid of the function call, or the overhead of a function call, and tell the compiler you can do more because it&#8217;s all, I guess, inline.</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=937">15:37</a>] Yeah, you reveal the implementation, and that means the compiler can do something with that.</p><h3>15:45 &#8212; Scala vs Python</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=945">15:45</a>] When you think about all the dynamically typed languages, which one stands out as one that you think is kind of the best among them?</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=953">15:53</a>] Python is ubiquitous, and it has a nice syntax. A lot of Python programs look like they&#8217;re very easy to read, so that&#8217;s definitely an advantage. And the other one would probably be something like Scheme, which is sort of very grounded in computer science theory and lambda calculus and things like that. So both of them are sort of interesting in their own way. But of course Python is 100 times more popular.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=983">16:23</a>] If you compare <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a> to Python, for instance, I guess what are the trade-offs that the two languages take?</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=990">16:30</a>] I think the gap is closing because Python now actually has an optional type syntax and a number of type checkers that check that syntax. And Python is getting some of the features that <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a> had since the beginning, like pattern matching is in one of the recent Pythons. So I think actually the gap is closing not just between Python and <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a>, but between a lot of programming languages in general. They&#8217;re sort of all drifting to a standard set of features, which mostly come from functional programming.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=1021">17:01</a>] Actually, pattern matching, for instance, strong type systems, generics, polymorphism, all these things came from closures, all these things came from functional programming. And so the gap is closing in that sense. Python is, I think the main advantage of <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a> over Python is that it has a strong type system that is always on, and that gives you essentially guarantees that certain bad states can&#8217;t happen.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=1054">17:34</a>] So really you can rely on it. Whereas I think the Python type system, well, it&#8217;s just syntax. It has a number of type checkers, but in general you have fewer guarantees. And I believe it&#8217;s also the ecosystem and culture that doesn&#8217;t value types as much in Python. So I think that&#8217;s probably the main difference syntactically. The two languages, I think with <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a> 3, are actually also quite close.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=1079">17:59</a>] So <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a> 3 looks a lot like Python in that sense. You could say, well, you can see it as a language that has strong types and runs on different runtimes than Python. Or I should say the other thing with Python, which is really great, is that Python is a fantastic glue language because I can essentially have very, very efficient linkages to high-performance C libraries, <a href="https://en.wikipedia.org/wiki/Pandas_(software)">pandas</a> or <a href="https://en.wikipedia.org/wiki/NumPy">NumPy</a> or things like that.</p><h3>18:31 &#8212; The programming languages that influenced him</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=1111">18:31</a>] You mentioned that a lot of the programming languages, they&#8217;re kind of drifting or kind of being inspired by the other ones and adopting new features. In the design of <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a>, is there a programming language that you admire most and influences <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a> the most?</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=1128">18:48</a>] Historically, <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a> was essentially, you could say it was a blend of <a href="https://en.wikipedia.org/wiki/Java">Java</a>, <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a>, and Standard ML, which is close, an ML-like language, and Haskell. So I&#8217;m by trade an imperative programmer. PhD is from Niklaus Wirth. I know Pascal, <a href="https://en.wikipedia.org/wiki/Modula">Modula</a>. That was sort of my first generation of languages, and I like them a lot. And then I became sort of a converted functional programmer. So I looked very closely at ML, <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a>, Haskell, and these things.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=1163">19:23</a>] And then <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a> came about. There was a predecessor language called <a href="https://en.wikipedia.org/wiki/Pizza">Pizza</a>, and I was working on that with Phil Wadler, who&#8217;s one of the original Haskell designers. And the idea was to have essentially an accessible functional language on a very widespread platform, which was the JVM at that point. And in order to prepare for that, I wrote a <a href="https://en.wikipedia.org/wiki/Java">Java</a> compiler. So that&#8217;s how I learned a lot about <a href="https://en.wikipedia.org/wiki/Java">Java</a> and what <a href="https://en.wikipedia.org/wiki/Java">Java</a> was.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=1193">19:53</a>] And in the end I had to say, well, it&#8217;s actually quite useful. I was quite dismissive at first, but afterward I found it actually quite useful. I mean, this was very early <a href="https://en.wikipedia.org/wiki/Java">Java</a>, this was <a href="https://en.wikipedia.org/wiki/Java">Java</a>, even pre-1.0. So now <a href="https://en.wikipedia.org/wiki/Java">Java</a> is, of course, even more useful, but also a lot bigger than what it was at the time. So when we came up with <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a>, which was sort of the second iteration after <a href="https://en.wikipedia.org/wiki/Pizza">Pizza</a>, <a href="https://en.wikipedia.org/wiki/Pizza">Pizza</a> was the language I did with Phil Wadler.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=1224">20:24</a>] The ideas came mostly from <a href="https://en.wikipedia.org/wiki/Java">Java</a>, <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a> for the modules and the component model, and Haskell a lot for the standard libraries. So if you look at the function names in the <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a> standard library, then there&#8217;s sort of a mixture of <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a> and Haskell, you could say, but you recognize a lot coming from both of these languages.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=1248">20:48</a>] If I recall correctly, <a href="https://en.wikipedia.org/wiki/Java">Java</a> had some sort of licensing with it, or it was owned by a company. How were you able to build on top of <a href="https://en.wikipedia.org/wiki/Java">Java</a>? Or did you have to pay for licenses, or how&#8217;d that ecosystem work?</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=1265">21:05</a>] The language standard was open source. There was a lot of experimentation with <a href="https://en.wikipedia.org/wiki/Java">Java</a> at the time. I think the only thing that Sun, that was the company at the time, they&#8217;re very particular about, is that if you did something that was using <a href="https://en.wikipedia.org/wiki/Java">Java</a> and had <a href="https://en.wikipedia.org/wiki/Java">Java</a> in it, you had to call it <a href="https://en.wikipedia.org/wiki/Java">Java</a>, and you couldn&#8217;t have a different name. So that&#8217;s why initially, for instance, <a href="https://en.wikipedia.org/wiki/Microsoft">Microsoft</a> clashed with them, and then <a href="https://en.wikipedia.org/wiki/Microsoft">Microsoft</a> went away and designed C#, which was sort of a.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=1300">21:40</a>] <a href="https://en.wikipedia.org/wiki/Java">Java</a>, some steroids. They threw in a bit more than what <a href="https://en.wikipedia.org/wiki/Java">Java</a> had. At the time, I think the nastiness came, Sun was actually quite an open company. So at the time, we were not worried about that. So that was in the time frame from 1998 to 2004, 2005, something like that. And at the time, there was no issue. I think the issue came later when Sun was acquired by <a href="https://en.wikipedia.org/wiki/Oracle">Oracle</a> and <a href="https://en.wikipedia.org/wiki/Google">Google</a> forked <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a> on Android.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=1331">22:11</a>] <a href="https://en.wikipedia.org/wiki/Java">Java</a> on Android, and that&#8217;s when the fight started, but that was much later.</p><h3>22:16 &#8212; How running on the JVM works</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=1336">22:16</a>] So when you say that <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a> was using the JVM or built on top of it, like concretely in the tech stack, what does it mean that <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a> uses the JVM? Like, how does <a href="https://en.wikipedia.org/wiki/Java">Java</a> source code eventually execute on a machine?</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=1352">22:32</a>] So the JVM is essentially defined by its bytecode. The bytecode is essentially an intermediate format which you can translate your program into. And then the bytecode is run first by an interpreter and then essentially by an optimized compiler, just in time. Compiler <a href="https://en.wikipedia.org/wiki/Just-in-time_compilation">JIT</a>. So that&#8217;s called <a href="https://en.wikipedia.org/wiki/Just-in-time_compilation">JIT</a>. They do that. And so if you know how to output bytecode, and that&#8217;s not very hard, then you can run on the JVM.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=1386">23:06</a>] So that&#8217;s essentially the idea. The harder part then is interop, that you say, okay, I run on the JVM. I have to make sense of all these <a href="https://en.wikipedia.org/wiki/Java">Java</a> libraries out there. So I have to somehow map a <a href="https://en.wikipedia.org/wiki/Java">Java</a> concept into a <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a> concept so that the compiler can understand what it is and I can document what it is for <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a> programmers that maybe don&#8217;t understand much <a href="https://en.wikipedia.org/wiki/Java">Java</a>. So that is sort of work that sort of goes more into the details.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=1415">23:35</a>] That said, I mean, that&#8217;s not the only <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a> platform, so it was born on the JVM, but now it also exists on <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a> and <a href="https://en.wikipedia.org/wiki/Node.js">Node.js</a>, on WASM and on <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a> Native. So it&#8217;s really a multi-platform language.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=1505">25:05</a>] Let&#8217;s say I write a <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a> program. I have the source code, I have to compile it, and then I have some <a href="https://en.wikipedia.org/wiki/JVM_bytecode">Java bytecode</a>, and then I call the JVM and I pass in this bytecode, and it just works.</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=1519">25:19</a>] Yeah, exactly.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=1521">25:21</a>] What would the advantage be of compiling <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a> to <a href="https://en.wikipedia.org/wiki/JVM_bytecode">Java bytecode</a> instead of doing something like <a href="https://en.wikipedia.org/wiki/Compatibility_of_C_and_C%2B%2B">C/C++</a> where you compile it all the way to machine code from source?</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=1533">25:33</a>] We have that too. So <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a> Native compiles directly using LLVM to native code. The advantages of compiling to bytecode is essentially, again, the interop can use all the <a href="https://en.wikipedia.org/wiki/Java">Java</a> libraries, then the garbage collectors. So the JVM has actually very good garbage collectors, high-performance ones, and the runtime loading. So what I can do on the JVM is I can compile, let&#8217;s say, a one-line thing into a little <a href="https://en.wikipedia.org/wiki/JVM_bytecode">Java bytecode</a>, and I can immediately load that bytecode and execute that.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=1573">26:13</a>] And that makes it very easy, for instance, to have a REPL, because that&#8217;s how a REPL would work, a read-eval-print loop. So I would just generate a snippet of <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a> code to bytecode, load it into the running JVM process, and it gets executed. And that&#8217;s much harder if you go to binaries; basically, binaries don&#8217;t really have a concept for that.</p><h3>26:33 &#8212; Why writing a compiler is hard</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=1593">26:33</a>] You mentioned that you wrote a compiler for <a href="https://en.wikipedia.org/wiki/Java">Java</a> before <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a>, and I&#8217;ve heard that compilers are notoriously hard to build. Can you explain the hard parts and why they&#8217;re hard?</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=1606">26:46</a>] Compilers are very intricate because I think there are a lot of requirements on a compiler. So you have languages which are already complex artifacts. Then you have a thing called type inference, so you have a type system, but essentially you want the compiler to infer a lot of types that make sense. Because you as a programmer think, well, the compiler should know that, and it should, but actually for the compiler to do that is quite hard.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=1641">27:21</a>] And then, of course, you also demand that it would generate very efficient code for your program, because again, the compiler should know that, right? So there are a lot of demands on that. Plus, there&#8217;s a demand that it should be very, very fast. And to square all these demands requires quite a bit of work, basically. There are also things that make it easier for compilers because they&#8217;re fundamentally deterministic programs.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=1667">27:47</a>] So essentially, you run a compiler on a source, and you always get the same output, so it means they&#8217;re easier to debug. You can just replay things and repeat things. Whereas if I would have some cloud service or distributed application that has other nightmares, right? Every run is different, and how do you even figure out what goes wrong?</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=1687">28:07</a>] So when you wrote that compiler, I think Espresso for <a href="https://en.wikipedia.org/wiki/Java">Java</a>, how long did it take to write that by hand?</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=1696">28:16</a>] At the time, it took me about three months, I think. Not full time, maybe half time. Three months, half time, something like that. But that was a very simple compiler. So that&#8217;s the other thing with compilers: they typically start simple, and when you&#8217;re at the 10-year mark or 20-year mark, then there&#8217;s lots and lots of essentially other requirements to a compiler that make them more complex.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=1717">28:37</a>] Were there libraries that you could rely on to kind of piece together components of it, or did you have to write everything from scratch?</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=1727">28:47</a>] There was a library to generate bytecode, I think. I think I used that in that version. Yeah, I did, yeah. So there was a library, essentially a high-level library, to just assemble bytecode and put them into the right format and things like that. But that was essentially it. The rest I wrote by hand.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=1747">29:07</a>] That&#8217;s crazy because, well, I mean, these days a lot of people, even more so now, we&#8217;re thinking less about using AI and more about kind of writing the code. So that&#8217;s pretty impressive.</p><h3>29:19 &#8212; Why Twitter adopted Scala early on</h3><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=1759">29:19</a>] I saw one of the big, I guess, moments for <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a> was that <a href="https://en.wikipedia.org/wiki/X_(social_network)">Twitter</a> adopted it, and I wanted to know the story behind that. How did they choose such an obscure language at that time?</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=1770">29:30</a>] It was very obscure at the time, that&#8217;s true. So I believe the story was <a href="https://en.wikipedia.org/wiki/X_(social_network)">Twitter</a> originally was written in <a href="https://en.wikipedia.org/wiki/Ruby">Ruby</a>, and it wasn&#8217;t very reliable because I believe it&#8217;s again a problem with garbage collector and memory management and things like that. And it was a small company at the time, so 25 people, including the ops people, and essentially the board and VC investors said you can&#8217;t go on like this, being unreliable like that.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=1803">30:03</a>] You should do <a href="https://en.wikipedia.org/wiki/Java">Java</a>, because <a href="https://en.wikipedia.org/wiki/Java">Java</a> was sort of the solid choice at the time. But some of the engineers at <a href="https://en.wikipedia.org/wiki/X_(social_network)">Twitter</a>, they wanted essentially something more fancy as a programming language. And there are some people who knew <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a> and liked <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a>, but of course <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a> didn&#8217;t run on the JVM. And then they found <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a> and said, well, <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a> is actually quite a lot like <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a> and we can tell our investors that we do <a href="https://en.wikipedia.org/wiki/Java">Java</a> because it&#8217;s not a lie, we do JVM bytecode.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=1833">30:33</a>] And that&#8217;s essentially what it comes down to. So that&#8217;s why they picked it. And they were quite the first. But once they picked it, sort of the floodgates opened because at that time they were a very interesting company and a lot of people admired them. So a lot of people followed and did the same thing. Mostly they came from dynamic languages, so <a href="https://en.wikipedia.org/wiki/X_(social_network)">Twitter</a> came from <a href="https://en.wikipedia.org/wiki/Ruby">Ruby</a>, others came from <a href="https://en.wikipedia.org/wiki/PHP">PHP</a> or <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a>, things like that.</p><h3>31:00 &#8212; How he believes AI will impact programming languages</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=1860">31:00</a>] I mentioned a little bit that AI is kind of generating a lot of code, and I wanted to ask you what you thought maybe the future of programming languages might look like if you speculated or drew it out further into the future. If AI is generating more of the code, how do you think that might affect the programming language ecosystem?</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=1882">31:22</a>] Yeah, I think right now we&#8217;re sort of in an existential crisis, right? So we have AI generating the code, but humans being asked impossible tasks, like to review all these mountains of code and things like that, which will never work. And at the same time, AI has also gotten extremely good at exploiting vulnerabilities in code, like we all heard of Fable and things like that, that you can&#8217;t use it anymore because it&#8217;s too dangerous. It will exploit things.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=1913">31:53</a>] So we are at a moment where it&#8217;s essentially very dangerous that we lose control as humans of what actually happens here. And that&#8217;s a challenge that I think programming languages can help meet. And probably definitely not only programming languages, that&#8217;s not a silver bullet, but they definitely can help things. So I think one of the things is that the focus, if the code is AI-generated, then the focus has to go elsewhere.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=1946">32:26</a>] And I think the focus will go to the interfaces and to the types. So I expect types will become a lot stronger and more precise than what we had. Because types are essentially the handle that we can make a contract between the human and the AI that the human can understand and that&#8217;s concise enough to be reviewed and that essentially the AI can keep to. We have to level our game quite a lot because right now, I mean, let&#8217;s face it, type systems are mostly recommendations. They&#8217;re mostly things that mostly hold, but not always. There are no guarantees because you can always have a cast or value, you use some dirty memory or.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=1993">33:13</a>] I mean there are a number of techniques to undermine the type systems, and we have to close all these holes from the beginning because once there is a hole, somebody can exploit it. So I think strong types, strong high-level types, will help. And then I think the other part is generally the programmer has to think much more about what the requirements are and what are essentially the high-level specifications and be able to leave the code to be generated by somebody else in confidence.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=2030">33:50</a>] And I think we&#8217;re not quite there yet, but we have some ideas about how we could get there. So one technique that I believe we can use, and it has been around for a long time, but maybe its time has come now, is capabilities. Capabilities essentially were used in operating systems to give very fine-grained permissions to entities, users, programs, and things like that. And I believe that can be used also for agents and agentic AI to say, well, once we have agents, we have to give agents very precise and fine-grained capabilities for what they can do, and that lets us essentially be confident about what they will not be able to do.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=2074">34:34</a>] They will not be able to leak my API keys or my email or do other things. So I think that&#8217;s an important part. And the existing languages are not there yet. I think <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a> is halfway there. At least it&#8217;s there in essentially stuff we&#8217;re working on, which we have in the lab and we have released as an experimental feature. So I&#8217;m quite excited about that. The first thing that you have to do is definitely be memory safe.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=2108">35:08</a>] So a language that essentially is not memory safe, that lets you essentially access undefined memory, is immediately out because you can&#8217;t guarantee anything. So that&#8217;s. In that sense, it&#8217;s good that there is a drive to use, let&#8217;s say, <a href="https://en.wikipedia.org/wiki/Rust">Rust</a> as a memory-safe language that was even promoted by the American government, I believe. So that&#8217;s definitely a very useful drive. But I think you need a lot more, because you need much.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=2136">35:36</a>] <a href="https://en.wikipedia.org/wiki/Rust">Rust</a> talks essentially mostly or only about memory. You need to talk about a lot more things than memory. You need about essentially read permissions, write permissions, access to secrets, all these things that go beyond that. And you could say, okay, Martin, you&#8217;re totally unrealistic because all our software is written in <a href="https://en.wikipedia.org/wiki/Compatibility_of_C_and_C%2B%2B">C/C++</a> and we will not be able to rewrite that. But I believe AIs can help there, right?</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=2169">36:09</a>] So AIs are great in rewriting software. So if we know what to rewrite, too, I think we might be able to get there.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=2177">36:17</a>] You mentioned some of those experimental features in <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a> that might have some sort of safety guarantees or signal capabilities. Can you explain what that might look like, or maybe give an example?</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=2190">36:30</a>] So a simple example would be, let&#8217;s say somebody gives me a file and I have access to the file, let&#8217;s say a log file or something like that. I have access to a file for a limited time, and then I need to close it. So typically I have an operation that essentially somebody passes a file to me, to an operation that my program provides, and the program does something with a file, and then the environment will close it.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=2219">36:59</a>] But how do we make sure that I don&#8217;t hold on to the file after I gave it back to the environment, or after I pretended I&#8217;m finished with it? Because, hey, I have a file, I could have stored it in a variable, I could have stored it on the side, I could have gone back to it and done something with it. So capabilities help me prevent that because essentially I can say, okay, so this file is a capability.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=2243">37:23</a>] And then I can further say, well, this capability can be used only in a limited scope, and the type system will make sure that the capability doesn&#8217;t escape. And the way we do that is that if a type refers to capabilities. So if I have a thing that I say, I give you back a lambda or a stream and it holds onto the file. So the stream holds onto the file in secret. In our language, that won&#8217;t be a secret anymore because the type has to declare that the thing I return does hold on to the file.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=2276">37:56</a>] The file is a capability, and I can&#8217;t essentially hide capabilities I have access to in my type. I have to declare them. And that gives me essentially this control that then I can also enforce, to say, well, at this point you&#8217;re not allowed to have any capability because the type that I enforce you to have is a type that doesn&#8217;t hold capabilities. And that way I enforce with the type system something which previously hasn&#8217;t really been enforceable for memory safety.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=2306">38:26</a>] It&#8217;s essentially the same thing with arenas, that I have an area where I allocate memory and then I want to get rid of it. I have to make sure I don&#8217;t have pointers pointing into it. And that&#8217;s exactly the same situation, and let&#8217;s say for accessing secrets again. So it&#8217;s a very common pattern that I say in certain situations I want to make sure that you don&#8217;t have, or that you only have a set of defined capabilities that I give you, and nothing else.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=2337">38:57</a>] You mentioned memory safety is an absolute table stakes. What are the programming languages that you think of that are not memory safe? I know there&#8217;s <a href="https://en.wikipedia.org/wiki/Compatibility_of_C_and_C%2B%2B">C/C++</a>, but what are the other ones?</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=2348">39:08</a>] The big ones are C. I don&#8217;t know about. I think <a href="https://en.wikipedia.org/wiki/Zig_(programming_language)">Zig</a> or Nim or other low-level systems languages are not memory safe. So that was sort of in <a href="https://en.wikipedia.org/wiki/Rust">Rust</a>, the big achievement, that you can be a low-level systems language and be memory safe. Nobody sort of thought that was possible before <a href="https://en.wikipedia.org/wiki/Rust">Rust</a> came. So that&#8217;s why I would think, I don&#8217;t want to say anything wrong, but I would think that essentially most other low-level systems languages would not be memory safe.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=2380">39:40</a>] But you really need more than memory safety. You really need capability safety, that you say, when I essentially hang on to something, I can&#8217;t sort of forget capabilities to say I hang on to something and I just conveniently forget that I have access to that. And I can&#8217;t forge capabilities to say, well, if I need a capability, I just make one up. These two things need to be prevented. And that goes beyond memory safety.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=2407">40:07</a>] But memory safety without memory safety, essentially you have nothing because you can fake everything.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=2412">40:12</a>] A lot of programming language design and how we write code in the past is writing the source code so that it&#8217;s nice for humans to read. But if humans are no longer interacting with the code, what kind of things come to mind that we might not care as much about but are good for machines to read?</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=2434">40:34</a>] For instance, the first thing is maybe sometimes you want to read it, but you probably wouldn&#8217;t have written it. So easy to write is definitely not a big criterion anymore. Easy to read to some degree, yes, but that means you don&#8217;t need any of these sort of syntactic hacks, like to write plus plus in C or things like that. That&#8217;s easy to write, right? But I don&#8217;t, I mean I&#8217;m sure we will still have that, but it doesn&#8217;t really matter anymore.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=2463">41:03</a>] I mean, whether I write an assignment in long form or with X, whatever. So I think these things won&#8217;t matter much less. The things that matter much more are, that continue to matter, and are essentially high-level ways to constrain and specify what my program should do. So constrain what it should not do, that&#8217;s one of the things. And also specify what it should do. And I mean some people say a golden age for formal verification because we can be very precise in our specifications, and our AI can actually not just furnish the program, but also the proof that the program actually meets the specification.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=2508">41:48</a>] And I think that&#8217;s true. That&#8217;s really very exciting in a lot of areas. But in the large, the problem is you often don&#8217;t really have the formal specification, or it&#8217;s just as hard to write a formal specification than to write a program, or sometimes even harder. So that means that we will still live in a world where we specify things by natural language, by prompt to the agent, and the agent then will do the code.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=2536">42:16</a>] But I imagine that also that will be a lot more formal in a way. So in a sense right now the prompts, I mean, it&#8217;s fantastic what they can do with the prompts, but then we throw away the prompt or it&#8217;s hidden in the chat history with the agent. So that&#8217;s really a shame. So I really should have the prompts as first-class values in my program, that I can say, well, essentially that&#8217;s what the program is about, and if I change the prompt, then the AI will know essentially what the incremental change was and change the program incrementally, these sort of things.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=2571">42:51</a>] That&#8217;s another thing that I think we&#8217;ll see in future programming languages for agentic programming.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=2577">42:57</a>] Maybe some kind of meta information about the program, almost like a Git blame, but like a prompt, I guess, blame of what generated that part of the code.</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=2591">43:11</a>] You should be able to keep that around and come back to it. Yeah. Also because you might want to change, right? You might want to say, well, now it&#8217;s exactly the same, but I want to change this little detail. But I don&#8217;t want the LLM nondeterministically to generate a new program because that way it might get a lot of other things wrong that I reviewed already. So there really should then be an incremental small change to the code, and that means I need to keep the prompt as a part of my program.</p><h3>43:40 &#8212; Will there be less engineers in ten years</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=2620">43:40</a>] Ten years from now, do you think there will be more software engineers than today or less?</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=2626">43:46</a>] I think there will be less. And it will be a higher profession that essentially has higher standards. So it will be harder to become one. You will need to know quite a lot of logic and math to be competent at essentially keeping AI on the right track and things like that. It&#8217;s sort of, I can say, sort of like a control engineer for a factory where you don&#8217;t understand many things initially. It means that there must be more&#8212;you must be higher skilled than a factory worker of 50 years ago or something like that.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=2667">44:27</a>] And I think the same will happen for software, where you will need fewer but more qualified people.</p><h3>44:34 &#8212; Top programming languages to learn to grow</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=2674">44:34</a>] One thing that a lot of people recommend is to become better at programming: you should learn multiple languages. And I wanted to know, aside from <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a>, what are the top programming languages you would recommend people learn to expand their mind?</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=2689">44:49</a>] So definitely a systems language. I think to know how hardware works and how software links with hardware, I would learn a systems language. I&#8217;m sort of torn between C and <a href="https://en.wikipedia.org/wiki/Rust">Rust</a> there because C has going for it that it&#8217;s very simple and very close to the metal. In <a href="https://en.wikipedia.org/wiki/Rust">Rust</a>, you have to learn a lot of abstractions, but on the other hand, it is memory safe. So I would say probably initially C, to figure out what these things are.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=2717">45:17</a>] And then if you decide to become a systems programmer as a career, then you should switch to <a href="https://en.wikipedia.org/wiki/Rust">Rust</a>. I guess that would be one thing. The other thing would be something more with a verification, improving background because that will be a lot more, will become a lot more important. So I would actually do a course in Lean or <a href="https://en.wikipedia.org/wiki/Rocq">Rocq</a>, one of these languages, to say we. We should be able to use AI or to.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=2748">45:48</a>] To have to develop first an intuition what it means for a program to be correct, because I guess for most people have only a very, very fuzzy intuition for these things. And learning one of these languages would sharpen the mind. Yeah, so I think those. And then, of course, <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a> too as a language that essentially sits right in the middle where fairly provable, strong types, high expressivity, these sort of things.</p><h3>46:18 &#8212; Top technical book recommendation</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=2778">46:18</a>] When you think of a top technical book that you might recommend to people, does anything come to mind?</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=2783">46:23</a>] I got a lot out of Structure and Interpretation of Computer Programs. That was a book from the 90s. It was an intro text at MIT at the time, or 80s even, I think. And in fact, the courses I taught on Coursera and at EPFL are based quite a lot. Well, to some degree they&#8217;re based on that material. So, of course, not the same language and strong types instead of dynamically typed.</p><h3>46:51 &#8212; Why he chose academia instead of industry</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=2811">46:51</a>] But still, when you look back on your career, why did you choose to work in academia instead of industry?</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=2817">46:57</a>] When I came to the end of my studies, I was asked to do a research project, and the project I picked, or the professor then asked me to modulate that a little bit. In the end, I found it super interesting to say I work on something that I don&#8217;t know whether it has a solution or not. So it might be that. The question is yes, it might be. The question is no, we have to do research, and that&#8217;s sort of how it started.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=2844">47:24</a>] And then I believe the main advantage of being in academia is really the long term and being independent. So in the long term, I mean, in industry, I&#8217;m sure there are many periods, including now, where I could be paid 10 times what I&#8217;m being paid at university if I joined <a href="https://en.wikipedia.org/wiki/Google">Google</a> or any of the other companies in Silicon Valley. But then times also change, and sometimes essentially what you do is no longer relevant, and then it&#8217;s very easy to get fired. And then you say, no big deal, I can do something else.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=2880">48:00</a>] But at a university you have essentially long-term tenure to do exactly what you want. So no manager, you can define your own research agenda. Of course you have to get some money. That is hard. You have to get grants and things like that. You have to convince students that what you do is the right thing. But that&#8217;s also very rewarding, working with students. So I think in the end I&#8217;m very happy that I took the career I took.</p><h3>48:28 &#8212; Reflecting on Scala</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=2908">48:28</a>] What about looking back on <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a>? You have so much experience there. What are some things that went well or things that didn&#8217;t go well, and maybe some learnings you could share?</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=2919">48:39</a>] <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a> was initially this experiment that we could combine object-oriented and functional programming. And technically that experiment was a big success. In terms of the ecosystem, it had a lot of challenges. I don&#8217;t know whether there was A Brief, Incomplete, and Mostly Wrong History of Programming Languages by James Iry, which is quite hilarious. And there&#8217;s a <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a> entry there that says I discovered Reese&#8217;s Peanut Butter Cups.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=2947">49:07</a>] And I had an idea to essentially have a language where you put in both object-oriented and functional, and then it ends with these pieces of both communities. And they promptly declared jihad. And at the beginning, it was very funny. But in retrospect, that&#8217;s to a large degree what happened. I mean, there were a lot of fights and cultural things like that, and it was a challenge. And I don&#8217;t know, in retrospect, I think it might have been more prudent to be more careful introducing functional features because that sort of was.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=2991">49:51</a>] We went in essentially quite complete. So essentially you can port most Haskell programs to <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a>, maybe that you find them a bit less attractive looking, but you can do it. And that brought in essentially different cultures. And it caused a big clash of cultures. So, for instance, in Go, Go was a lot maligned because they didn&#8217;t even have generics. Right. And it&#8217;s true, it was a ridiculous language, but by not having it initially you sort of form a culture that when you add it, nothing much will go wrong.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=3030">50:30</a>] And people want to over-abstract or things like that. And by essentially going full hog into it with <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a> from the start, we were not protected against that. And people did reach abstraction peaks and over-abstract it and things like that, and they still do it to this very day. So essentially having fancy abstractions is great, but you have to use them responsibly. And then it sort of clashes with the natural urge to just try out all these fancy things and do something that in the end maybe neither you nor nobody else understands very well.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=3065">51:05</a>] And it could have just been a simple map or things like that. But yeah, why do I use that when it can be complicated?</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=3073">51:13</a>] Why would that upset someone?</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=3075">51:15</a>] Because of the library ecosystem. I think that the libraries are important because they sort of set the agenda, how you express your programs. And in particular the libraries that come from the Haskell side, they&#8217;re essentially monadic frameworks, and they require you to express your whole program as a monad, which is a concept that works well in functional programming. I have my reservations. I wouldn&#8217;t actually do that in my <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a> programs.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=3108">51:48</a>] But by having prominent libraries out there, it&#8217;s quite normative that people feel like being a <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a> programmer, they&#8217;re required to program this way. And then, of course, there are opinion leaders and conferences and all these things that tell you how you should be writing your programs. But I would say I think most of the <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a> community is actually very, very level-headed, and I think most of the advice is great.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=3138">52:18</a>] But then, yeah, it&#8217;s still a challenge because it&#8217;s just too easy to. Mostly it&#8217;s not really the opinion leaders in the community, but let&#8217;s say it&#8217;s your boss. You have a small team in a company, your boss came from Haskell and says, &#8220;Hey, this is great. We do exactly like Haskell, the whole thing.&#8221; And then two years later the boss&#8217;s boss says, &#8220;No, nobody can understand this code. This code in the project is cancelled.&#8221;</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=3166">52:46</a>] So these things happened in the industry. I&#8217;m not saying that all projects are like that, not at all. I mean, there are lots of really great success stories of <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a>, but that&#8217;s essentially a challenge in terms of techniques. I think, in the end, I wish we had been a bit less dependent on the JVM in the sense that we took a lot from <a href="https://en.wikipedia.org/wiki/Java">Java</a> that intuitively makes sense but, in the end, and was very important for interop, but in the end could have been done better.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=3205">53:25</a>] So for instance, in <a href="https://en.wikipedia.org/wiki/Java">Java</a>, being an object-oriented language, you have universal methods like toString and equals and hashCode, and they&#8217;re defined for everything. And languages like <a href="https://en.wikipedia.org/wiki/Rust">Rust</a> or Haskell, they&#8217;re no more discriminating. They have a thing called <a href="https://en.wikipedia.org/wiki/Type_class">type classes</a> where, essentially, at compile time, you tell exactly where you have equality and hashCode and these things, and it&#8217;s a bit more tedious to set these things up, but in the end it&#8217;s also safer.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=3235">53:55</a>] So I wish we had that, and we couldn&#8217;t because we sort of adapted <a href="https://en.wikipedia.org/wiki/Java">Java</a>&#8216;s notion of what an object is, and it already came with all these things, which is sort of very convenient, but in the end caused friction.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=3250">54:10</a>] If I went back to you at that time, when you were starting it, and I said, what do you think is going to happen 20 years from now? What would you have said?</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=3257">54:17</a>] I would probably have said that while it was a footnote in memory, because, I mean, let&#8217;s face it, you do a thing and initially we had maybe five users or something like that outside our group, something like that. Right. And you don&#8217;t really expect that it would change a lot. And so no, I think it was quite by surprise that this actually happened. And I think the reason why it happened was that at the time <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a> was a good bridge between dynamic languages that are slow and sometimes they crash.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=3302">55:02</a>] And solid languages, statically typed languages like <a href="https://en.wikipedia.org/wiki/Java">Java</a>, which were at the time quite cumbersome to write code in and there was a lot of ceremony and things like that. And <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a> had inferred types, so you had types but you didn&#8217;t see them much. So it felt like a dynamic language, but it had also the solidity of essentially a good platform, and I think that&#8217;s what made it. And we&#8217;ve been copied a lot by a lot of other languages that put in these features then five or ten years later or things like that.</p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=3333">55:33</a>] But at the time, it was sort of <a href="https://en.wikipedia.org/wiki/La_Scala">Scala</a> that was the first one that had it, and that&#8217;s sort of why it happened. But I wouldn&#8217;t have foreseen that by</p><h3>55:42 &#8212; Advice for his younger self</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=3342">55:42</a>] No means looking back on your career, when you just graduated college and kind of started your career, knowing what you know today, what advice would you give your younger self?</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=3355">55:55</a>] I think to take risks, be adventurous, pay it out. So essentially don&#8217;t follow the mainstream. If you take a fancy to do something wild and crazy technically, take the time to do it and do it. But I mean, yeah, so that&#8217;s what I would. Of course, you still need to sort of stay on track somewhat, but I don&#8217;t want to exaggerate that either. But yeah, so basically be a bit nonconformist.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=3388">56:28</a>] Awesome. Well, thank you so much for your time, Professor. I really appreciate it.</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/LdN4sPWM-WY?t=3392">56:32</a>] Thank you, Ryan.</p>]]></content:encoded></item><item><title><![CDATA[Sergey Levine: Current State of Humanoid Robotics, China & Future Predictions]]></title><description><![CDATA[Sergey Levine is one of the world&#8217;s top robotics researchers and co-founder of Physical Intelligence.]]></description><link>https://www.developing.dev/p/sergey-levine-current-state-of-humanoid</link><guid isPermaLink="false">https://www.developing.dev/p/sergey-levine-current-state-of-humanoid</guid><dc:creator><![CDATA[Ryan Peterman]]></dc:creator><pubDate>Mon, 24 Aug 2026 13:05:33 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/212043203/2d07767bb4579d653af29fa9f397aa7e.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p><a href="https://www.linkedin.com/in/sergey-levine-5a31a24/">Sergey Levine</a> is one of the world&#8217;s top robotics researchers and co-founder of Physical Intelligence. Recently I talked to him to dig into where we are today with humanoid robotics.</p><p>He also had a lot to say about the Chinese robotics ecosystem. I asked him questions about that and about competitors such as &#8220;what if Anthropic and OpenAI started their own robotics labs?&#8221;</p><p>We went over a bunch of questions about predictions on future timelines. I asked him what a concrete roadmap might look like so we could get a sense of how deployment will happen. </p><p>Hope this episode is helpful in learning where we are today and where we will be when it comes to humanoid robotics.</p><p>Check out the episode wherever you get your podcasts: <a href="https://youtu.be/9OSbaPjv0Rc">YouTube</a>, <a href="https://open.spotify.com/episode/19amTrz0o0NECMeEtblMq1?si=rnFMXeqXQ9S-ZA8Yku6Zqg">Spotify</a>, <a href="https://podcasts.apple.com/us/podcast/the-peterman-pod/id1777363835">Apple Podcasts</a>.</p><div id="youtube2-9OSbaPjv0Rc" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;9OSbaPjv0Rc&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/9OSbaPjv0Rc?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h1>Timestamps</h1><p><a href="https://www.developing.dev/i/212043203/0037-where-are-we-today">00:37 - Where are we today</a></p><p><a href="https://www.developing.dev/i/212043203/0420-most-surprising-capabilities-so-far">04:20 - Most surprising capabilities so far</a></p><p><a href="https://www.developing.dev/i/212043203/0703-the-most-inspiring-real-world-robotics">07:03 - The most inspiring real world robotics</a></p><p><a href="https://www.developing.dev/i/212043203/0836-if-openai-or-anthropic-got-into-robotics">08:36 - If OpenAI or Anthropic got into robotics</a></p><p><a href="https://www.developing.dev/i/212043203/1022-chinese-robotics">10:22 - Chinese robotics</a></p><p><a href="https://www.developing.dev/i/212043203/1315-will-one-lab-breakout-from-the-rest">13:15 - Will one lab breakout from the rest</a></p><p><a href="https://www.developing.dev/i/212043203/1659-thoughts-on-a-concrete-roadmap">16:59 - Thoughts on a concrete roadmap</a></p><p><a href="https://www.developing.dev/i/212043203/2103-generalization-and-demonstrating-it">21:03 - Generalization and demonstrating it</a></p><p><a href="https://www.developing.dev/i/212043203/2604-types-of-data-and-which-is-best-for-robotics">26:04 - Types of data and which is best for robotics</a></p><p><a href="https://www.developing.dev/i/212043203/3434-why-humanoid-robotics-differs-from-waymo">34:34 - Why humanoid robotics differs from Waymo</a></p><p><a href="https://www.developing.dev/i/212043203/3710-if-humanoid-robotics-failed-here-is-why">37:10 - If humanoid robotics failed here is why</a></p><p><a href="https://www.developing.dev/i/212043203/3955-are-there-hot-take-modeling-architectures-in-robotics">39:55 - Are there hot take modeling architectures in robotics</a></p><p><a href="https://www.developing.dev/i/212043203/4205-thoughts-on-ai-safety-in-robotics">42:05 - Thoughts on AI safety in robotics</a></p><p><a href="https://www.developing.dev/i/212043203/4644-top-robotics-research-paper-recommendation">46:44 - Top robotics research paper recommendation</a></p><p><a href="https://www.developing.dev/i/212043203/4935-why-is-boston-dynamics-less-top-of-mind">49:35 - Why is Boston Dynamics less top of mind</a></p><p><a href="https://www.developing.dev/i/212043203/5347-advice-for-his-younger-self">53:47 - Advice for his younger self</a></p><h1>Transcript</h1><h3>00:37 &#8212; Where are we today</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=37">00:37</a>] <a href="https://en.wikipedia.org/wiki/Large_language_model">LLMs</a> have caused unprecedented impact and investment in that area. <a href="https://en.wikipedia.org/wiki/Physical_artificial_intelligence">Physical AI</a> and humanoid robots could potentially be even bigger. And so I wanted to ask you today about where are we today with humanoid robotics, and how do you foresee this technology actually being deployed into the world?</p><p><strong>Sergey:</strong></p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=61">01:01</a>] I guess with machine learning, what we&#8217;ve learned over the last few years, or the last decade rather, is that it works when you do it at scale. And this is very obvious now, but it wasn&#8217;t always obvious. But there&#8217;s a caveat, which is you have to scale the right thing. And initially when people started working on models for language, for example, the dominant design was LSTMs. Some people remember what those are.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=89">01:29</a>] They were kind of okay; they were a lot better than what came before that, but they didn&#8217;t really scale as well. And then the big thing with transformers was not that transformers were somehow particularly mathematically elegant or anything like that. It&#8217;s just that they scaled better. So they were easier to train on very large amounts of data with lots of parameters. So the technology proceeds in phases.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=108">01:48</a>] First you figure out what you can scale, basically what is the scalable technology. And then you pour on a lot more of kind of an industrial-scale effort and adding lots of data, adding to model size. And that&#8217;s when kind of the magic happens. So when we&#8217;re doing kind of more fundamental technology development, the key is to understand what are those scalable levers. So figure out the design, figure out roughly the mixtures, and that by itself does something pretty cool.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=134">02:14</a>] But that&#8217;s not the thing that actually changes the world. It&#8217;s like when you start pulling that lever that things actually change. So with <a href="https://en.wikipedia.org/wiki/Large_language_model">LLMs</a>, when the first GPT models came out with <a href="https://en.wikipedia.org/wiki/GPT-2">GPT-2</a>, it did some stuff, but it was sort of like a parlor trick, so you could get it to synthesize a story about unicorns in Peru or something. And it was coherent English, but it wasn&#8217;t a thing that would solve lots of real-world problems.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=159">02:39</a>] But the folks that worked on this kind of recognized that, hey, there&#8217;s something kind of magical that happens because as you add more data and you make the model bigger, this stuff gets more coherent and more effective. So they could see that if we do a lot more of that, then it&#8217;ll become a lot more powerful. So to come back to your question, what I would say about robotics is that it&#8217;s not in the <a href="https://en.wikipedia.org/wiki/GPT-4">GPT-4</a> to <a href="https://en.wikipedia.org/wiki/GPT-5">GPT-5</a> stage, where it&#8217;s an industrial-scale effort to kind of make the model bigger and get more capability out of it.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=190">03:10</a>] It&#8217;s in that stage where we&#8217;re establishing the fundamental technologies. And because of that, what one should expect to see right now is not necessarily that each month the model gets bigger and more powerful by some predictable kind of scaling curve. It&#8217;s that the scaling properties themselves are evolving as we develop the right technologies. So to bring this back to something closer to reality.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=216">03:36</a>] I&#8217;m very happy with the demos that we&#8217;re doing here at <a href="https://en.wikipedia.org/wiki/Theory_of_multiple_intelligences">Physical Intelligence</a>. And I think that a lot of the results that other people are coming out with are really cool. But these are, to put them in context, we should not expect these to be the things that are actually illustrating the power of scale. We should expect them to be developing the fundamental technologies that will be scaled up after that.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=235">03:55</a>] So where I think we&#8217;re at now is that we&#8217;re actually kind of getting all those puzzle pieces in place. And I think it&#8217;s actually very close. I think a lot of the puzzle pieces are falling in place, but it&#8217;s not like. What makes it so hard to prognosticate about where the technology is going to go is that it&#8217;s not yet at that predictable scaling stage. It&#8217;s at the stage where we&#8217;re figuring out the puzzle pieces, which I think is really exciting.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=255">04:15</a>] But it means that it&#8217;s also very hard to foresee sort of what the coefficients on that will be.</p><h3>04:20 &#8212; Most surprising capabilities so far</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=260">04:20</a>] What are the most astonishing emergent capabilities you&#8217;ve seen so far?</p><p><strong>Sergey:</strong></p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=265">04:25</a>] That is the thing that is the most fun. And certainly we&#8217;ve seen a lot more of that happening as we progress. In the very beginning, it was kind of little things, but they were kind of magical because in robotics, basically prior to 2024, the stuff never happened. So the little things that happen, and this was maybe at this point about two years back, we would see things like, okay, we train our policy for folding laundry and it takes individual shirts out of the hamper and tries to fold them.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=295">04:55</a>] And then one very vivid memory I have in late 2024 is we were watching one of the evals, and it takes out two shirts at the same time. And I&#8217;m watching this, I&#8217;m like, okay, it&#8217;s done for. There&#8217;s no way you can possibly do this. And then it puts the two shirts on the table, disentangles them, puts one of them back, and then starts folding the other one. It&#8217;s like, wow, okay. In retrospect, you can do some detective work and figure out where it got that from, some piece of training data.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=322">05:22</a>] But that was one of those moments where I don&#8217;t think anybody watching that eval thought that the robot was going to do this. It&#8217;s like a little thing. It&#8217;s exhibiting the common sense you expect people to have. But actually, the thing that I find more interesting recently is some of the mistakes, because one of the things that&#8217;s pretty remarkable about <a href="https://en.wikipedia.org/wiki/Large_language_model">LLMs</a> is that once they got good enough, even the mistakes kind of made sense in the sense that they weren&#8217;t like crazy mistakes where just outputs, like, zzz all the time.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=350">05:50</a>] But their mistakes are sort of semantically sensible. We had an evaluation last year for &#960;0.5 where the robot was cleaning up a kitchen, and it&#8217;s told, like, put away all the utensils. There are some spoons, spatulas, et cetera. And it tries to open the drawer where it thinks the silverware goes, and it can&#8217;t really get the drawer open, so it slides over and opens the oven, which is right next to it, and then starts putting this stuff in the oven.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=376">06:16</a>] It&#8217;s like, you can sort of imagine that if you ask a child to clean stuff up and put it away, they might decide to do that because, okay, it&#8217;s like a container, and you can put stuff there, and nobody sees it. Another experiment we had is washing all the plates. So it would pick up the plates, wash them with a sponge, and put them on the drying rack. And this was an experiment on memory, because it has to keep track of everything that it&#8217;s doing and has a scratch pad of memory where it&#8217;s writing down, hey, I had three plates.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=400">06:40</a>] I cleaned the gray one, I cleaned the green one. And then it drops one of them on the floor and drives the base over so you can&#8217;t see. And I was like, okay, I&#8217;ve cleaned the gray plate. It&#8217;s done. So, I mean, obviously these are not the things that we want to see. But it&#8217;s kind of interesting that some of the mistakes, they&#8217;re almost like what you would associate with a child trying to do the task.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=420">07:00</a>] So now it just needs to grow up.</p><h3>07:03 &#8212; The most inspiring real world robotics</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=423">07:03</a>] You mentioned the advancements. They&#8217;re kind of happening all over the industry. And I know there are a lot of people building humanoid robots. There&#8217;s Figure AI, there&#8217;s Tesla, and there&#8217;s many other competitors, and you have the expertise of what is hard and what isn&#8217;t. When you look at the competitors, has there been any advancement or achievement where you think, oh, that&#8217;s really admirable and that&#8217;s impressive?</p><p><strong>Sergey:</strong></p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=449">07:29</a>] I actually think that one of the most inspiring things to me in the industry is to see the kind of takeoff that autonomous driving systems have had. Because one of the criticisms that is sometimes leveled against robotics researchers is, it&#8217;s like nuclear fusion. It&#8217;s the technology of the future, but it&#8217;s always in the future. But that&#8217;s what people said about autonomous driving, too. And now we&#8217;re in San Francisco.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=473">07:53</a>] You can go outside and you can take a Waymo, and it will actually take you to your destination. And there was no driver sitting there. So, without getting too much into the technical details, I think what&#8217;s really inspiring about that is just this case in point that, yes, you can actually have one of these technologies of the future, and it actually does land. And I think it&#8217;s not an accident that it&#8217;s landing now in the mid-2020s, because a lot of the puzzle pieces for large-scale ML are getting to the level where we can put them together with actual physical systems.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=504">08:24</a>] And there&#8217;s a lot of differences between driving and robotic manipulation, of course. But I think that the illustration that, yeah, we can actually land learning-based technologies in the real physical world, I think that&#8217;s really inspiring.</p><h3>08:36 &#8212; If OpenAI or Anthropic got into robotics</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=516">08:36</a>] If <a href="https://en.wikipedia.org/wiki/OpenAI">OpenAI</a> or <a href="https://en.wikipedia.org/wiki/Anthropic">Anthropic</a> started investing more heavily into robotics, how do you think that would impact the industry? Do you think competitors would be worried about that?</p><p><strong>Sergey:</strong></p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=529">08:49</a>] Robotics is an area where, to be fair, the ecosystem hasn&#8217;t been as healthy as it has in other areas of machine learning. And what I mean by that is that computer vision and NLP are things that sort of lend themselves naturally to a machine-learning-based ecosystem, because there&#8217;s freely available data. People kind of have a general acceptance that they&#8217;re going to be using learning. There aren&#8217;t concerns as severe concerns about safety, at least physical safety.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=560">09:20</a>] Right. You know, people rightfully are concerned about AI safety, but it&#8217;s not the same as like a physical device causing some physical harm. And because of that, I think it&#8217;s a bit easier to spin up a very serious large-scale ML effort in those areas. Robotics is not like that. Robotics traditionally is not a discipline that really embraces sharing of data, for example. So I think that the more activity there is around learning and robotics, the more I think it&#8217;ll shift people&#8217;s thinking toward this kind of future where we accept that robots will be controlled by learned models, not by hand-designed controllers, that there will be data, that data will need to be shared because there&#8217;s no way that somebody can build out a true foundation model in a single vertical and basically kind of shift the entire thinking around robotics to look more like how we think about vision and NLP as opposed to traditional factory automation.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=612">10:12</a>] So I think in that sense, much as I&#8217;m proud of the work that we&#8217;re doing at <a href="https://en.wikipedia.org/wiki/Theory_of_multiple_intelligences">Physical Intelligence</a>, I think it&#8217;ll take more than one company to kind of shift everyone&#8217;s thinking in that direction.</p><h3>10:22 &#8212; Chinese robotics</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=622">10:22</a>] As a bystander, I see on <a href="https://en.wikipedia.org/wiki/X_(social_network)">Twitter</a> these really impressive demonstrations of Chinese robotics. It almost feels like they&#8217;re ahead in some sense, but I don&#8217;t have that deep domain expertise. So I was curious about your thoughts on what you think of China&#8217;s robotics, and are they further along?</p><p><strong>Sergey:</strong></p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=645">10:45</a>] I think that one thing that is very useful and constructive for us to do, those of us that work on these things in the United States and in Europe, is to ask what is the lesson to learn. And to me, one lesson is that it&#8217;s important to have a healthy ecosystem. And ecosystem means that there should be obviously good researchers, good engineers working on these things. There should be healthy open source.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=678">11:18</a>] But it also means that the different industries that contribute to robotics need to individually be very healthy. And those industries are not just the computer science, ML, and model building stuff. It&#8217;s also supply chains, manufacturing hardware, R&amp;D, these are all very important things. And aspects of those things are things that the United States does quite well. Other aspects of them are things where the United States has sort of let things go a little bit.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=712">11:52</a>] And I think that what we should do is we should look at what&#8217;s going on in the world, look at some of the excellent results that Chinese labs are doing, that labs in other countries are doing, and we should take away that lesson that we should strive to build a healthier ecosystem. And that means investing in all the different facets that contribute to this. So I&#8217;m not much of a business person, I&#8217;m not much of an investment person, so I can&#8217;t claim to know how to do this, but I think that it&#8217;s important to sort of fully embrace that this is a holistic thing and not something where we can do just one piece of it and outsource everything else.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=745">12:25</a>] Basically.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=747">12:27</a>] Of all the pieces of the ecosystem, are there parts of it? As a robotics researcher in the US, if it was better, that would have the biggest impact on the advancement of robotics.</p><p><strong>Sergey:</strong></p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=759">12:39</a>] Yeah, I think certainly availability of reliable, low-cost hardware is a big deal. And right now, I mean, certainly for hardware used for robotics research, a lot of that does come from China. And it&#8217;s good, it&#8217;s relatively inexpensive, it&#8217;s of high quality, and meets the standards that people generally need. But it would be awfully nice to be able to source all that domestically as well. And I don&#8217;t think there&#8217;s anything impossible about that.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=787">13:07</a>] I think it&#8217;s just a matter of embracing the fact that that entire ecosystem needs to be supported rather than just one piece of it.</p><h3>13:15 &#8212; Will one lab breakout from the rest</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=795">13:15</a>] You can imagine that the lab that is first to get to scale will be the first to break out. There may be this exponential growth effect where once you deploy, deployment helps you grow faster, and growing faster helps you deploy, and this flywheel. And so do you believe that that will happen in this industry, where one lab, whether in the US or China, will hit some breakout point and they&#8217;ll kind of jump everyone else?</p><p><strong>Sergey:</strong></p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=827">13:47</a>] There is a lot of truth to that. I think that there&#8217;s an important detail to keep in mind. The detail is that you kind of have to scale the right thing. So I think that basically the statement that the way that I would phrase this is having an effective positive feedback loop where more deployed robots translates to more model capability. That&#8217;s kind of the key, and that makes total sense. The trick is that there are lots of ways that it can be done wrong.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=863">14:23</a>] So I&#8217;ll tell you a few obvious ones. One obvious one is let&#8217;s say that I&#8217;m a car company and I have a robotic arm that is welding cars, and it&#8217;s there on the assembly line, and it welds cars every day, and it gets a million welds every month, and so on. If I just use that as my data flywheel, I&#8217;m unlikely to get something more capable than a robot that welds cars. So since the robot is already there and it&#8217;s already welding cars, presumably the marginal improvement for that is not all.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=894">14:54</a>] That valuable. So that&#8217;s an example of how you kind of have to scale the right thing, because data is not quite as fungible. It&#8217;s not like electricity or oil. You can&#8217;t just buy more of it. It has to be heterogeneous. So I think that basically it&#8217;s right, but you have to scale the right thing with the right technology and the right kind of source of diverse learning, like data is more like an education program for your robot than it is a fungible commodity.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=919">15:19</a>] If you think about that data flywheel and, I guess, putting out the proper platform that would generate data that matters, that would then improve that platform, when do you foresee this kind of happening in the world?</p><p><strong>Sergey:</strong></p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=934">15:34</a>] I think, on the technology side, things are advancing very rapidly toward that. And I think that maybe a particular balancing act to strike that would significantly determine that timeline is how much structure somebody&#8217;s willing to admit. So on the one extreme, you could imagine jumping straight to fully unstructured deployment domains like home robots. And that could be really exciting because then you have a lot of diversity right off the bat, but the bar is a lot higher to be effective enough in that domain to be safe enough.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=964">16:04</a>] Safety is a much bigger issue there because it&#8217;s around people in their home. On the other extreme, you could imagine much more structured tasks, maybe not quite the welding robot, but sort of like maybe the robot down the hall that does something more unstructured. And that could be a much easier domain in the sense that there&#8217;s much less safety concerns because it might be around trained humans, the task might be more predictable, and so on, but the marginal value of each bit of data you get in that domain is lower because there&#8217;s less variety.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=996">16:36</a>] So it&#8217;s like you could take off earlier, but with a smaller slope, or later, but with a larger slope. And you kind of have to calibrate that. But my sense is that whichever end of that extreme we&#8217;re talking about, it&#8217;s in the single-digit years rather than the double-digit years at this point. So it could be that the more structured ones might be happening now or next year. The less structured ones might be a few more years out, but probably not like a decade.</p><h3>16:59 &#8212; Thoughts on a concrete roadmap</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=1019">16:59</a>] A lot of people talk about timelines, and it&#8217;s kind of more nebulous. And I&#8217;m wondering if you were to put down, I guess, somewhat of a roadmap, but not so concrete, but just milestones toward that north star of a robot in my home doing.</p><p><strong>Sergey:</strong></p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=1036">17:16</a>] Yeah, that&#8217;s a really good question. So maybe to preface this answer, I think that there&#8217;s one thing that is very important to say about robotics that is very easy to miss from the hype cycle and the demos that people put out, which is that the hard thing in robotics was always generalization. But when somebody shows a demonstration of their system, the demonstration alone usually doesn&#8217;t make it clear what level of generalization is being shown.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=1068">17:48</a>] The highly acrobatic robot demos, for example, are really exciting to look at. But typically, if it&#8217;s something that is a little bit more staged, sometimes literally on stage, if it&#8217;s a show that is obviously rehearsed, and that&#8217;s okay, because it&#8217;s literally just a show, but it&#8217;s not the same as doing a task every time reliably in any home. And the generalization piece often doesn&#8217;t look that impressive when viewed in isolation, because generalization is sort of a property of many trials, not of one trial.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=1100">18:20</a>] So you might see the robot doing something fairly mundane and unimpressive. But what&#8217;s exciting about it is that it&#8217;s doing it with an object that it&#8217;s never seen before in an environment that has never been tested before. And that is actually harder than doing an acrobatic backflip that it&#8217;s practiced millions of times. So with that said, my answer to your question is that the roadmap is all about both achieving better generalization and kind of that second-order effect of having a mechanism to get more generalization as you generalize.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=1133">18:53</a>] So one of the steps on that roadmap is to have a very concrete demonstration of a robotic system that gets better with autonomous experience that is collected in a setting that it wasn&#8217;t originally trained for. So I do whatever I do in the backend in the lab and whatever. I get my model, I get my adaptation algorithm, I put it in a new setting. Maybe it&#8217;s a home, maybe it&#8217;s a factory, whatever it is, something where it&#8217;s doing something real, and it does okay.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=1164">19:24</a>] But then over time, it gets better and better. And it gets better and better to the point where it reaches sort of practically relevant levels of robustness without sort of capping out at like 50%. I think that would be a major milestone, because now that says, okay, if this is truly an automated process, it&#8217;s improving, it&#8217;s getting better, even as it&#8217;s collecting useful experience. Now, I can take it and I can put it in lots of different domains, collect useful experience, do something that people actually want, and it&#8217;ll improve the model.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=1191">19:51</a>] So that, I think, is a really major step on that road. I think another really major step is to demonstrate a very concrete and practically useful way to transfer knowledge, to transfer common sense, to achieve robustness. So that&#8217;s like kind of the other scenario we don&#8217;t get to practice. If you&#8217;re driving your car on the road and you see a fire truck and you see a bunch of traffic cones, even if you&#8217;ve never been in that situation before, your common sense tells you, like, hey, I should slow down.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=1220">20:20</a>] Maybe I don&#8217;t know how to react optimally, but I shouldn&#8217;t just barrel on through the cones and upset the firefighters and so on. So that&#8217;s common sense. And if you can apply that common sense to effectively recover from unexpected situations, like when the robot put the spatula in the oven, it should probably open it up, take it out. It knows that this is not the thing you do semantically.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=1240">20:40</a>] That, I think, is another important step because that tells us that we can use common sense to fix mistakes.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=1246">20:46</a>] I could imagine a more narrowly scoped robot. Let&#8217;s say it&#8217;s a humanoid robot. That&#8217;s one step in assembly line, in manufacturing. And my understanding, you&#8217;re less interested in that because that&#8217;s not really a step toward that general intelligence.</p><h3>21:03 &#8212; Generalization and demonstrating it</h3><p><strong>Sergey:</strong></p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=1263">21:03</a>] What I would say, it&#8217;s not that I&#8217;m less interested in it, it&#8217;s that I think that the real world has these leaky abstractions that make that kind of stuff a lot more complex than it seems. Let me try to explain this with an analogy. So in the &#8216;90s, when people really started working kind of full steam autonomous driving, there was this idea that we could avoid a lot of the hard problems by kind of instrumenting the environment a little bit.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=1291">21:31</a>] Like, we&#8217;ll have magnetic sensors along the highway and so on, and cars will have a little sensor on them and a little transmitter so they can tell where each of the cars are. Kind of like the way you do it with aircraft, basically. And then people thought, well, we don&#8217;t really need fancy AI. We&#8217;ll just have these sensors and it&#8217;ll just work. And that just basically didn&#8217;t go anywhere because the real world has so many messy exceptions and special cases that even if 99% of the time, the magnetic sensors and all that stuff just allow the car to drive the 1%, when someone steps in the middle of the road or there&#8217;s a piece of trash or whatever, it just messes everything.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=1325">22:05</a>] Up. So the thing that actually worked was when Waymo said, hey, we&#8217;re going to not try to avoid the hard problem. We&#8217;re going to actually try to deploy our cars not in the middle of nowhere, but in San Francisco, very messy, and let&#8217;s just deal with it head-on. And that allowed that community to make progress. And I think robotic manipulation is going to be the same way, that past the fully structured world of the factory, if you want to go even a little bit outside of that, even if 99% of the time it&#8217;s all pretty straightforward, that 1% when something weird happens means that you really need the full scope of the problem basically to be addressed.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=1361">22:41</a>] This kind of reminds me, I remember Figure AI had this demo where they live-streamed the robot sorting packages. When you watch that demo, does it demonstrate generalization in your opinion?</p><p><strong>Sergey:</strong></p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=1374">22:54</a>] Yeah, I think it does. And by the way, this is something that I find very encouraging is that, like I mentioned, it&#8217;s hard to show generalization in a video, and it&#8217;s clear that lots of people are thinking about that and are thinking about how do you present something that somebody can watch and take in kind of at a glance what generalization is. I think you can see a lot of creative steps towards that.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=1396">23:16</a>] Live demos, these kind of really long time lapses. I think it&#8217;s a great idea, and I think that&#8217;s a really nice way to move towards elevating the importance of generalization in people&#8217;s consciousness. When we were working on the &#960;*0.6 project, the RL project that we did late last year, we wanted to do some longer horizon experiments. In some cases it&#8217;s obvious. We had our robot assembling boxes at Dandelion Chocolate Factory.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=1426">23:46</a>] So they&#8217;re like, it&#8217;s an actual chocolate factory, so they need the boxes. So we ran it for several days. But we had this coffee task, which was the robot using an espresso machine to make espresso. So what we did is we ran it for 13 hours making espresso drinks. And we are, we try to be very, I guess, environmentally conscious about this. So we didn&#8217;t want to throw out the coffee.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=1445">24:05</a>] So after 13 hours, everyone in the office was a little wiry because someone has to drink the coffee. But it ran for 13 hours, and it was pretty cool. It screwed up a few times. It&#8217;ll spill all the coffee grounds, and then it needs to go and get a cloth and wipe it down, but it does it and nothing exploded. Thirteen hours went by. Probably the most negative consequence was loss of sleep from too much caffeination.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=1469">24:29</a>] But when it spills the coffee grounds and cleans it up, it did that by itself.</p><p><strong>Sergey:</strong></p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=1474">24:34</a>] Well, so the way that that experiment was done is that there is a high-level prompting. So roughly the prompt is updated maybe every five minutes or so in between semantically coherent tasks. So you tell it, like, make espresso, clean up the machine, et cetera. So those steps, the actual clean up the machine, was commanded by a person. In principle, we could automate that. In fact, one of the things we&#8217;re spending a lot of effort now on is improving our high-level policy that does those commands.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=1499">24:59</a>] But for that experiment, every five minutes, somebody basically updates what it&#8217;s being asked to do, the way we intended. It was like the commands would be like, if you go to an actual coffee shop, you say, &#8220;Oh, I want a latte, I want an espresso.&#8221; That was supposed to be the prompt. Except then you also have to tell it, &#8220;I want you to clean it up before you do the next one.&#8221;</p><h3>26:04 &#8212; Types of data and which is best for robotics</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=1564">26:04</a>] It sounds like on the way to generalizing data is a very important part of that.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=1570">26:10</a>] And I was reading there are different types of data. There&#8217;s simulated data you could collect, like physical interactive data. And I want to hear your take on what&#8217;s the best data to get, what&#8217;s the worst, and what are the pros and cons.</p><p><strong>Sergey:</strong></p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=1585">26:25</a>] This is, by the way, a question that is, I guess, quite. There&#8217;s a lot of discussion in the robotics community about this question. And some people have very opposite opinions on it. My own take on this is that a lot of different data sources are easier for the model to internalize if it can ground them in a thorough physical understanding of the world. So let me try to explain what I mean with a few examples.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=1613">26:53</a>] If you want to learn to fly an airplane, you will probably use a simulator, at least during part of your training. But the simulator makes a lot of sense to you, because when you start using the simulator, you have a lot of world knowledge that you can use to ground what&#8217;s going on. You know that when you are using the flight simulator to learn how to fly the airplane, you&#8217;re not just playing a video game.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=1635">27:15</a>] You&#8217;re trying to acquire knowledge that you will then use with a real airplane. And you understand that there&#8217;s sort of an abstraction there. Same thing if you&#8217;re playing a really cartoony Atari game or something. You know that all the symbols on the screen, you can sort of connect them to things that you&#8217;ve experienced in your life, and you can make an analogy there. So a lot of that, even though it kind of seems like these simulated environments reflect aspects of the real world, to us, they make a lot of sense because we kind of bring to bear a lot of our own prior experience, and we fill in the blanks that the simulation has.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=1672">27:52</a>] And also, if you want to use data yourself as a person of somebody else doing something, if you watch someone, let&#8217;s say, cooking a meal, even though you don&#8217;t experience every movement they&#8217;re experiencing, you have a lot of that knowledge that you bring to bear. And you&#8217;re like, okay, I see they&#8217;re picking up the salt shaker. I&#8217;ve put salt on things before, so I kind of roughly know what&#8217;s going on there.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=1693">28:13</a>] And I can file it away at this level of abstraction of add salt without having to figure out all their muscle movements. So my point with this is that once you have that understanding of how you do things physically with your own body and how you experience the physical world now, all these other sources of knowledge can be connected up to it, because that foundation you get from your experience helps you ground everything.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=1714">28:34</a>] So where I&#8217;m going with this is that if we have a robotic foundation model that is trained on lots of real embodied data, that provides that grounding, and it might actually be much better able to absorb other sources of knowledge. And this is actually a little bit upside down relative to how some people think about it, because it&#8217;s very tempting looking at the success of Internet data for <a href="https://en.wikipedia.org/wiki/Large_language_model">LLMs</a> to say, well, maybe we should do the opposite.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=1736">28:56</a>] Maybe we should start with <a href="https://en.wikipedia.org/wiki/YouTube">YouTube</a> videos and then put robot data on top of that. But I think it&#8217;s actually the other way around, and I even have a little bit of evidence for this. So my colleague Suraj Nair, together with <a href="https://en.wikipedia.org/wiki/Simar">Simar</a> from Georgia Tech, they had a project together a while back where they took our robot foundation model and they added human video data. But they didn&#8217;t start with human video data.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=1762">29:22</a>] They actually started with a model trained on robot data and then added video data on top of it. And what they did is they looked at the representations inside the model. Basically, how does the model represent human experience versus robot experience? And they found that if you use a small model with a small amount of robot data, predictably the human experience and the robot experience are fully separated, meaning that the feature representations are different.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=1782">29:42</a>] But if you train on lots of robot data from lots of different robots, then the features are grouped much more by what task is being done rather than by whether it&#8217;s a human or a robot. And when we looked at the feature plots, it was just mind-boggling because literally when you crank up the amount of robot data to 100%, they just line up perfectly. You do this t-SNE embedding, you see the shapes of the embeddings, and it&#8217;s just all task identity and minimal sensitivity to embodiment.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=1810">30:10</a>] And to me, that&#8217;s kind of mind-blowing because the base model wasn&#8217;t trained on any human data at all. But once you start adding human data, it represents it exactly the same way. And I think that&#8217;s really exciting. And I think that to me is one of the strongest indicators that if you have that good foundation of robot experience, you can put everything else on top of it. It&#8217;s actually better at absorbing that.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=1829">30:29</a>] Is it important that that base model has data that was collected using that specific set of motors, specific set of joints?</p><p><strong>Sergey:</strong></p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=1839">30:39</a>] So far we&#8217;ve obviously put a lot of effort into cross-embodiment models that can handle many different robot types. But generally, you do need data of the robot you&#8217;re going to be deploying on to get good performance. So kind of the metric of generalization there is not can you zero-shot a new robot, but it&#8217;s mostly can you get away with less experience from the new robot and transfer skills from other robots?</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=1862">31:02</a>] Okay, so that&#8217;s the current state of things. Now there is a little bit of a surprisingly positive read on that, which is even though you need data from these robots, the amount of special stuff that the model is doing is kind of minimal. When we started doing all this, I had a big long list of all the cool research I wanted to do to better accommodate different morphologies. Can you factorize the model&#8217;s representation in some way so that there&#8217;s a six degree freedom arm head and a seven degree head and a gripper head, et cetera?</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=1892">31:32</a>] We didn&#8217;t do any of that. The model just outputs a big vector of numbers. If the robot has fewer degrees of freedom than the number it outputs, it just zero-pads it. There&#8217;s just nothing fancy, and that&#8217;s it. And then it just trains on all the robots and outputs the correct actions based on what is seen through the camera. But now, to your point about whether you can handle new robots.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=1915">31:55</a>] So far, the thing that we focused on, and I think this is showing some promise, is being able to transfer skills between robots. And this is actually where the particular choices in how the model works seem to matter. For example, you can have a model that does some intermediate thinking, and that thinking can be done in different modalities. So you can think in text, and thinking in text is really good for transferring high-level behavioral structure.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=1947">32:27</a>] So that&#8217;s basically how you understand that, hey, if I want to clean the kitchen and put away the silverware, first open the drawer. That&#8217;s kind of a semantic inference. And you can transfer that very well because obviously that&#8217;s largely agnostic to any embodiment or anything like that. But even lower level things can be transferred if you use the right representation. So one experiment we did is we had a thinking stage that is expressed in images, where you basically dream up an image of the next milestone in the task.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=1975">32:55</a>] And with that, we can actually get a robot, the UR5 robot, to fold a T-shirt, even though we didn&#8217;t have any T-shirt folding data on the UR5. Because while getting the arm motions correct is very hard, because the robot basically requires very different joint angles to do the task, cooking up an image of what it looks like for it to fold a shirt is not that hard because you&#8217;ve seen the robot arm in all sorts of different poses, you&#8217;ve seen the shirt in all different stages of being folded and unfolded, roughly where it should hold it.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=2001">33:21</a>] So getting a good generative model to cook up that image is pretty straightforward. And once you have the image, then, from that backing out the correct actions is easy too, because you can just look at the synthesized arm angle and just back out what the angle should be. So it&#8217;s not changing the problem, but it&#8217;s just introducing this intermediate step that makes it easier to solve. Just like if you&#8217;re solving a math problem, if you figure out the right intermediate step, kind of the answer is obvious from that intermediate step.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=2027">33:47</a>] And I think that&#8217;s really exciting because now that shows that this level of generalization across robots, and I&#8217;m sure other generalization too, can be facilitated with thinking, just like in large language models, but with a twist that you have to think in the right modality.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=2040">34:00</a>] Interesting. So it outputs a, I guess that image is what its video sensor is seeing, and it&#8217;s like the next step.</p><p><strong>Sergey:</strong></p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=2049">34:09</a>] Yeah, you can almost think of it like image editing. You can do the same thing with video. You can do it with video prediction. But the key is to imagine what it would look like to progress on this task. That seems like a very human thing to do.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=2062">34:22</a>] Some things you plan semantically and some things you plan spatially. If you&#8217;re doing rock climbing, you&#8217;re probably not thinking like, &#8220;Hey, left arm to rock, 37 centimeters to the left.&#8221; You&#8217;re probably more imagining your arm reaching for the rock.</p><h3>34:34 &#8212; Why humanoid robotics differs from Waymo</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=2074">34:34</a>] Earlier in the conversation, you mentioned that Waymo was very inspiring, and their kind of path to productionization is proof that you can do real-world generalized robotics. And if I recall correctly, when I was a lot younger, it was kind of this early promise of, &#8220;This is going to happen,&#8221; and then in reality, it took a lot longer. So I guess my question is, in the case of humanoid robotics, what would make you say single-digit years, it&#8217;s coming, versus a long tail and policy challenges as well?</p><p><strong>Sergey:</strong></p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=2117">35:17</a>] I think one big difference between how robotic foundation models address the problem and how more traditional engineered systems address the problem is that the stack is really thin. So it&#8217;s not easy to train a foundation model. Obviously you need to get the right data. There&#8217;s a lot of work that goes into curating, labeling, all that other kind of stuff. But the actual software that runs on the robot is very, very simple.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=2142">35:42</a>] So you might have some kind of thinking or reasoning stage. You might have the model produce actions; it needs to be fast enough. But if you think about it in terms of raw lines of code, it&#8217;s much, much lower than a more traditional AV stack. And partly that&#8217;s because modern autonomous vehicles, the work on that started a lot earlier with very different technologies and evolved over time. Partly it&#8217;s also because the problem is more safety-critical.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=2173">36:13</a>] Like, yes, you don&#8217;t want a robotic manipulator to drop a fragile object, but at the end of the day, that&#8217;s a lot less bad than having a car hit somebody. So that is not to say that the safety challenges with robots are not real. They&#8217;re very real and it&#8217;s very important to tackle them. In fact, it&#8217;s probably one of the harder ends of the problem. But they are not as much of a hard stop to practical deployments because you can come up with tasks and environments and domains and also physical hardware where those problems are a lot less severe.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=2207">36:47</a>] So I think that combination, radically simpler software stack, plus less drastic software challenges, actually make it a lot easier. And because, to your earlier point, there is this kind of flywheel effect, that there is a positive feedback loop, that starting to get things out in the world, even under some constraints, will actually facilitate getting them out more and more.</p><h3>37:10 &#8212; If humanoid robotics failed here is why</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=2230">37:10</a>] I think a lot of people are familiar with this idea of postmortem, looking back on why something failed. But in this case, I&#8217;m curious, what would you say to a pre-mortem in the sense of if humanoid robotics did not succeed in single-digit years, what do you think would be the most likely reason why humanoid robotics failed?</p><p><strong>Sergey:</strong></p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=2254">37:34</a>] Ultimately, for these things to be truly useful, they do need to reach a level of reliability and robustness and generalization that is higher than what we typically expect from <a href="https://en.wikipedia.org/wiki/Large_language_model">LLMs</a>, for example, or generative AI for images and video. Because typically these tools, they are very much human-interactive tools. You get an LLM to do something, and it doesn&#8217;t do quite what you want, so you sort of revise your prompt, and you basically iterate with it.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=2281">38:01</a>] And that&#8217;s why even the earlier LLM tools, like the first version of <a href="https://en.wikipedia.org/wiki/ChatGPT">ChatGPT</a>, even though they were much more primitive than what we have now, they were still already useful because somebody could just keep hammering at it until it basically solves their problem. Just like if you&#8217;re using a search engine, you type something in the search engine, you don&#8217;t get quite what you want, you revise your query and then you get what you want.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=2300">38:20</a>] Whereas with a robot, the full value of it is unlocked when it&#8217;s actually doing the thing autonomously. So to have somebody constantly iterate for every single task is almost antithetical to the benefit that you&#8217;re getting. So I think a lot of the risk has to do with how easy is it to get that level of reliability and robustness. And that&#8217;s again where some of the demos might be a little bit misleading, because if someone shows a demo of their robot doing something cool, I mean, obviously if everything is presented in a forthright way, that could still be a very good indicator of progress.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=2332">38:52</a>] But it doesn&#8217;t make it obvious how far or how close it is to reaching that practically relevant level of robustness. So I&#8217;m personally a big believer in using techniques like reinforcement learning that can actually benefit from autonomous experience to kind of fine-tune those last few percentage points to make it go from 95 to actually 100%. But that&#8217;s really important, and it&#8217;s not yet a solved problem.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=2358">39:18</a>] If it did take longer than expected, it&#8217;s because the bar is higher.</p><p><strong>Sergey:</strong></p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=2363">39:23</a>] Because the bar is higher. And in particular, those last few, kind of the last inch, so to speak, is something that requires not just really good models, but also new innovations in technology. I mean, I don&#8217;t think that I&#8217;m not the kind of person that would say, oh, we should throw out everything that we know about foundation models to start over. I don&#8217;t think it&#8217;s that at all. I think that roughly the puzzle pieces that we have are actually very good puzzle pieces.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=2386">39:46</a>] But still, we should acknowledge that right now, the methods and the models need more work to cross that level of robustness.</p><h3>39:55 &#8212; Are there hot take modeling architectures in robotics</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=2395">39:55</a>] In <a href="https://en.wikipedia.org/wiki/Large_language_model">LLMs</a>, it feels like everyone is doing kind of the same thing, but different flavors in the robotics industry. Is everyone doing kind of the same thing? Are there any hot take architectures that are different direction?</p><p><strong>Sergey:</strong></p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=2409">40:09</a>] I actually think that there&#8217;s a lot more heterogeneity than it might seem. One big dividing line that I think is maybe not as obvious from just looking at the results is the distinction between fully embracing the foundation model ethos, so to speak, versus focusing on specific vertical areas. And I think this is hard to tease out sometimes because obviously everyone&#8217;s going to say, &#8220;Oh, I&#8217;m doing the thing that <a href="https://en.wikipedia.org/wiki/Large_language_model">LLMs</a> did,&#8221; because that&#8217;s the cool thing.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=2440">40:40</a>] But the foundation model ethos fundamentally is something like this: if you have a particular problem you want to solve, it is better to train a more general model that can use data from a breadth of problems. And if you do it right, it&#8217;ll actually be better at the specialized problem you want to solve than a narrow specialist. So again, to come back to the LLM analogy, if you want to do machine translation, don&#8217;t build a machine translation system.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=2465">41:05</a>] Build a language model that understands all language tasks and throw it at machine translation. And in robotics, I think that is actually very deeply uncomfortable to people. Because if someone is actually working on an application, they&#8217;re doing warehouse automation. It is very awkward to think, oh, if I want to do warehouse automation, let me collect data of putting away silverware in kitchens.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=2487">41:27</a>] It just sounds bizarre. But that is the foundation model lesson: if you have enough breadth, if you collect data from a wide range of different tasks, then you will acquire those generalizable skills. And if your model is built correctly, it will repurpose those skills for whatever situation it encounters. So I think it is actually true that even if you want to build a warehousing robot, you are better off collecting a breadth of data and will be better at handling all the weird edge cases you might encounter, even in that warehouse domain.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=2515">41:55</a>] But this is not something that&#8217;s easy for people to accept because it&#8217;s just so antithetical to the principle of building kind of a traditional, vertically integrated robotic system.</p><h3>42:05 &#8212; Thoughts on AI safety in robotics</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=2525">42:05</a>] I noticed this new, interesting phenomenon with these AI companies, which is if they&#8217;re wildly successful, it creates this, I guess, worry or new set of things. So, for instance, when <a href="https://en.wikipedia.org/wiki/Anthropic">Anthropic</a> had a very powerful model, then the government comes in and there&#8217;s these worries about safety and risk and all that. And I&#8217;m curious how you think about that. Like, if <a href="https://en.wikipedia.org/wiki/Theory_of_multiple_intelligences">Physical Intelligence</a> this year had a phenomenal, incredibly capable, generalized model, how do you think about those kinds of topics that might come up?</p><p><strong>Sergey:</strong></p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=2568">42:48</a>] Working on AI safety is not a new thing. My colleague at UC Berkeley, Stuart Russell, was talking about this stuff over a decade ago, and lots of people spent a lot of time working on it. It&#8217;s just that the trouble is when the technology moves so fast, the important problems are not just a function of the core principles. It&#8217;s also a function of how society reacts to it, what kind of tools are adopted, and so on.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=2591">43:11</a>] And I think that&#8217;s very, very hard to anticipate. So I don&#8217;t have a very satisfying answer here. In terms of how we are approaching it, our philosophy around all this stuff is basically one of empirical experimentation. Let&#8217;s get stuff out there. Let&#8217;s see what happens in the real world. Let&#8217;s see what goes right and what goes wrong, so that we have as much of a preview for what the technology can do, what are its weaknesses, what are its strengths, and so on.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=2622">43:42</a>] But at the end of the day, you kind of have to just keep your eyes open, see what happens, and adjust as you go. It&#8217;s very hard to anticipate. And I think your question, though, is very spot on. Even though I don&#8217;t have a great answer for you because, yeah, if we&#8217;re having this much concern and issues with AI systems that are basically limited to using computers, we&#8217;re presumably going to have strictly more concerns and issues with AI systems that can do everything in the physical world that we can do.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=2654">44:14</a>] Right. So the issues are real. It&#8217;s just you kind of have to see what happens and then adjust.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=2659">44:19</a>] And that&#8217;s kind of in the scary path, but in the happy path. If everything goes well and we have incredibly capable models and robots, in 10 years, is the North Star, that&#8217;s the end of human labor.</p><p><strong>Sergey:</strong></p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=2677">44:37</a>] I believe it&#8217;s a mistake to think of robots as mechanical people. Computers at some level are kind of like mechanical brains. But when personal computers really took off in the &#8216;90s, early 2000s, et cetera, it&#8217;s not like the first thing that happened is that people replaced their brains with computers. Rather, what we saw is actually a proliferation of very different kinds of computers. We saw kind of ubiquitous computing.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=2703">45:03</a>] So you would have a computer on your desk, but you might also have one in your pocket. You might have one in your refrigerator and in your car. Because computing became so accessible, you could have a little bit of computing in everything. And I don&#8217;t think that&#8217;s what the people that first started thinking about this stuff in the 40s and 50s would have imagined. They would have imagined room-sized computers whose job is to control the policy of an entire country or something, rather than a little bit of computer in everybody&#8217;s refrigerator.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=2732">45:32</a>] So I think by analogy, we might imagine there might be a little bit of <a href="https://en.wikipedia.org/wiki/Physical_artificial_intelligence">Physical AI</a> in everything, and it might just be lots of everyday things that you have to do yourself. Now you can get a little bit of help with it. I think the other example that&#8217;s worth thinking about is modern coding agents. So I think that this is something where, of course, the jury is still out as to what the end game of coding agents is.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=2757">45:57</a>] But certainly from the experience of software engineers today, it kind of seems like it&#8217;s fair to say that most would consider coding agents to be more empowering than somehow causing them to panic. I mean, obviously some people might panic, but in general, at least from the software engineers that I&#8217;ve talked to and from my own experience, it&#8217;s more empowering to be able to amplify how much work you can do with AI tools.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=2788">46:28</a>] So I think from that, and that maybe is a pretty direct analogy, because that is straight-up an example of an actual real job where AI has entered into it and has actually provided more leverage to the people doing that job. So I think that&#8217;s another example that we can look to. But the truth is that I think it remains to be seen.</p><h3>46:44 &#8212; Top robotics research paper recommendation</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=2804">46:44</a>] So in <a href="https://en.wikipedia.org/wiki/Large_language_model">LLMs</a>, there are a few seminal papers that, if you&#8217;ve read those papers, you kind of get a sense of the lineage of the breakthroughs that mattered in understanding where we are today in the robotics industry. Are there a set of top papers that you really think kind of show the breakthroughs that people should know about if they&#8217;re curious about the state of the art in terms of humanoid robotics?</p><p><strong>Sergey:</strong></p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=2831">47:11</a>] One thing I would point out, and this is partly a shameless plug, because I am a coauthor on that paper, though candidly, 99.9% of the work on this was done by Tony, who was the lead author, is the original ACT paper, the ALOHA paper. It&#8217;s an interesting example because in some ways the ideas weren&#8217;t really that new, but they were illustrated in a really nice way. And the idea was that, hey, if you set up the right kind of low-cost robot setup, in his case it was based on these robot arms from Trossen Robotics that are, they&#8217;re like $7,000 hobbyist arms.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=2868">47:48</a>] He set them up in a bimanual setup with a leader-follower teleoperation device. And he showed that actually if you do it right, without really any particularly fancy tricks, you could easily collect teleoperation data of extremely dexterous tasks that people had previously thought would require very sophisticated hardware and all sorts of really expensive stuff, and then set up a fairly straightforward transformer-based model, and it could actually do a lot of those tasks.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=2893">48:13</a>] And it&#8217;s kind of like an interesting thing because usually in academic research we put a big premium on do you have some sophisticated new mathematical thing or some sophisticated technical insight. And in that paper, which I think at this point has been hugely influential, the insight is really just, yeah, just put together the right pieces and have a little bit more faith in what a simple robot could do, so to speak, equipped with a good intent learning system.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=2919">48:39</a>] And he showed things like replacing batteries in a remote control. He even got a mannequin foot, and he showed that he could put a shoe on it for an assistive task, sort of. Some people need help getting their shoes on, so that&#8217;s good. But what people found, I think, so interesting about that paper is just how far you could get with relatively simple building blocks. And at this point, he open-sourced the code for it.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=2946">49:06</a>] And the ACT code has been used by lots of people. Sort of like if someone wants a very basic starter kit for robotic learning, that&#8217;s usually what they grab. And I think it&#8217;s worth for somebody who wants to get into the field to go through that paper and really understand what&#8217;s going on there. Because even though in some ways it&#8217;s not that sophisticated, I think it provides a bit of calibration on what matters.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=2971">49:31</a>] The details matter, but the details don&#8217;t have to be complicated.</p><h3>49:35 &#8212; Why is Boston Dynamics less top of mind</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=2975">49:35</a>] Before all this large-model robotics kind of wave, prior to that, Boston Dynamics had these really impressive demonstrations and tons of mind share. I guess I wasn&#8217;t even in the field, but I think, wow, they&#8217;re really doing incredible robotics. And then in the last, I don&#8217;t know how many years, I don&#8217;t really hear about them much anymore. Is there some shift in the industry that made that so, or is that something you could explain?</p><p><strong>Sergey:</strong></p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=3012">50:12</a>] So the way I would explain it is this: robotics at some level is about building complex systems. So even though it&#8217;s very tempting to say, oh, there&#8217;s different areas of AI, there&#8217;s <a href="https://en.wikipedia.org/wiki/Large_language_model">LLMs</a> and vision and robotics, one of those is not like the others because for robots you actually need all the parts, everything from how you wire up the robot, what the power source is, what does the actuator look like, all the way to how does it do high-level planning to determine what tasks to do next.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=3046">50:46</a>] And even though we could look at these things and say all of these different videos and different companies and different demos, they&#8217;re all robotics, they&#8217;re really different parts of the stack. A lot of what the classic Boston Dynamics results show is very sophisticated hardware, very carefully designed hardware with a traditional control approach, with very smart controls engineers setting everything up, but with comparatively less emphasis on the kind of decision-making aspect.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=3080">51:20</a>] And I think that at a particular point in time that actually made a lot of sense. Because if we can&#8217;t build the physical body, it doesn&#8217;t matter what kind of decision-making system is running on it. But to our earlier discussion about generalization, at this point we&#8217;re at a stage in the development of these things that even though we can do more on hardware, in many ways it&#8217;s good enough. And the big challenge is how to have the decision-making loop that actually works and that reacts intelligently to everything in the environment.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=3112">51:52</a>] And the place where I would draw the dividing line between those is decision-making loop doesn&#8217;t mean symbolic decisions. It could mean low-level decisions. The question is, do you need to take the rest of the environment into account, or are you just dealing with a robot? So if you want to do a backflip on flat ground, you most have to deal with a robot. But if you want to pick up a coffee cup off of a table, even though that&#8217;s maybe in some ways simpler than doing a backflip, you really have to understand what&#8217;s going on in the rest of the world rather than just your own body.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=3140">52:20</a>] And that dividing line, I think the way that technology has panned out, I think it&#8217;s fair to say that that is the dividing line between AI and controls. Controls is when you have to control the robot body. AI is when you have to take into account what goes on outside of the robot. And I think that that&#8217;s why you see this divide, because I think a lot of the demos where you mostly needed to deal with the robot itself and not the rest of the world, really good controls, could allow you to admit a very good solution there.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=3171">52:51</a>] And another thing I would say here is, okay, if there&#8217;s a lot of controls work that goes into doing some particular skill, well, there is actually something to learn from that. Because if you can hand-design a controller that performs a sophisticated behavior, very likely you can also learn that controller. So just that proof of existence that the thing is possible, and not only possible, but also simple enough that a person could build it.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=3195">53:15</a>] Because remember, people are, at the end of the day, even with code these days, the kind of complexity that people can handle is not as high as the kind of complexity the AI can handle. So if a person can hand design something to do a backflip or do some acrobatics, that&#8217;s a really great proof of existence that there exists some relatively parsimonious control law for doing that skill. And parsimonious does mean generalizable.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=3216">53:36</a>] So if it&#8217;s simple enough for a person to design, probably there&#8217;s something fairly general in there. And if you can learn it and automate it without having to have the human controls engineers in the loop, that&#8217;s good news.</p><h3>53:47 &#8212; Advice for his younger self</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=3227">53:47</a>] And then last question for you is, if you could go back to when you just entered the industry and give yourself some advice, knowing everything you know now, what would you say?</p><p><strong>Sergey:</strong></p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=3237">53:57</a>] One thing that I&#8217;ve learned over the last few years, which I think is a little different than my original mindset, is that addressing robotics effectively requires using very broad prior knowledge. And I think there&#8217;s this idea that a lot of people in robotic learning have, which I think I shared initially, that since people learn things from scratch, maybe robots should learn things from scratch too.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=3266">54:26</a>] So, for example, in some of our early work on large-scale robotic learning at <a href="https://en.wikipedia.org/wiki/Google">Google</a>, we had this, what we call the ARM Farm project. We set up a bunch of robot arms in a conference room, actually, because we didn&#8217;t have a proper lab. It was a conference room. And we had them all grasping objects. And the idea was, well, if they grasp millions of objects, they&#8217;ll learn very general grasping strategies.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=3291">54:51</a>] And it basically worked. They could learn to grasp objects, but it was very hard to take it further than that to the next level. Now I can pick up anything, but so what? It didn&#8217;t serve as a very good stepping stone for more complex skills. And I think part of that was that we were approaching this from a very blank slate. Let&#8217;s start from zero and see if, knowing nothing in advance, the robot could start picking up behaviors.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=3312">55:12</a>] But I think that it&#8217;s much, much more practical to get all this to work if you can combine robot experience with knowledge that you can pull in from other sources. For example, I was very skeptical initially about the utility of language. And I think scientifically this is defensible, which is that, hey, animals can do some pretty impressive things. Monkeys can do really cool stuff. But monkeys, as far as I know, can&#8217;t speak, at least not very eloquently.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=3339">55:39</a>] So maybe our robots should also be able to do stuff. And they don&#8217;t necessarily need to understand language. But I think the subtlety there is what&#8217;s important is not language, it&#8217;s prior knowledge that you can put in as a scaffold on your learning process. And you can pull in that knowledge in all sorts of ways. Humans don&#8217;t necessarily pull it in entirely through language. Humans and monkeys certainly don&#8217;t.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=3361">56:01</a>] They do it from observation, from observing other people, other creatures, and so on. So there&#8217;s lots of sources of prior knowledge, but the point is that you got to get that prior knowledge in there. Otherwise, you&#8217;re actually faced with a harder problem than what humans and animals have to solve. Because if a person had to figure out how to assemble IKEA furniture, but they&#8217;ve never actually encountered any article of furniture in their entire life, okay, that would be pretty difficult because they don&#8217;t even know what the point of this is or what the end game looks like.</p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=3388">56:28</a>] So, yeah, prior knowledge is important. And while I&#8217;m still a big fan of learning things through experience, I think that my advice to myself would have been, take prior knowledge more seriously.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=3398">56:38</a>] Awesome. Well, thank you so much for your time, Sergey. I really appreciate it.</p><p><strong>Sergey:</strong></p><p>[<a href="https://youtu.be/9OSbaPjv0Rc?t=3401">56:41</a>] Yeah, thank you for your questions.</p>]]></content:encoded></item><item><title><![CDATA[Creator of TypeScript: 10x Faster Typescript, Why AI Won't Replace SWEs | Anders Hejlsberg]]></title><description><![CDATA[It was interesting talking to Anders Hejlsberg, the creator of TypeScript and C#, about all the technical details behind rewriting the TypeScript compiler in Go.]]></description><link>https://www.developing.dev/p/creator-of-typescript-10x-faster</link><guid isPermaLink="false">https://www.developing.dev/p/creator-of-typescript-10x-faster</guid><dc:creator><![CDATA[Ryan Peterman]]></dc:creator><pubDate>Mon, 17 Aug 2026 13:03:31 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/211501947/742daed19902300f9b81ff80035cd341.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>It was interesting talking to <a href="https://www.linkedin.com/in/ahejlsberg/">Anders Hejlsberg</a>, the creator of TypeScript and C#, about all the technical details behind rewriting the TypeScript compiler in Go. </p><p>I had a lot of questions about why they chose Go (vs Rust) and if they used LLMs in the rewrite. Turns out they used LLMs much less than expected in the rewrite. He explained why in the conversation.</p><p>Anders has strong takes on how AI will impact software engineering so I made sure to run all the famous takes I&#8217;ve seen on Twitter to see what he thought like:</p><ul><li><p>Will AI write all the code in ~1-2 years?</p></li><li><p>Will AI replace junior engineers in a few years?</p></li><li><p>Will you still need to use an IDE by the end of the year?</p></li></ul><p>And also I asked him why his opinion seemed to be so different from the more AI-pilled companies like the labs. Hope you enjoy the episode, full transcript below as usual if you want to skim.</p><p>Check out the episode wherever you get your podcasts: <a href="https://www.youtube.com/watch?v=cywK3XYYJ2o">YouTube</a>, <a href="https://open.spotify.com/episode/1thvWd3ClYQHvaUX9qKckk?si=pmojE4jTSPmHVnm4fydbFg">Spotify</a>, <a href="https://podcasts.apple.com/us/podcast/the-peterman-pod/id1777363835">Apple Podcasts</a>.</p><div id="youtube2-cywK3XYYJ2o" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;cywK3XYYJ2o&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/cywK3XYYJ2o?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h1>Timestamps</h1><p><a href="https://www.developing.dev/i/211501947/0048-why-write-a-compiler-in-javascript">00:48 - Why write a compiler in JavaScript</a></p><p><a href="https://www.developing.dev/i/211501947/0729-why-rewrite-the-compiler-in-go">07:29 - Why rewrite the compiler in Go</a></p><p><a href="https://www.developing.dev/i/211501947/1449-llms-for-large-migrations">14:49 - LLMs for large migrations</a></p><p><a href="https://www.developing.dev/i/211501947/2012-why-javascript-is-so-popular">20:12 - Why Javascript is so popular</a></p><p><a href="https://www.developing.dev/i/211501947/2632-why-ever-use-javascript-on-the-backend">26:32 - Why ever use Javascript on the backend</a></p><p><a href="https://www.developing.dev/i/211501947/3259-what-it-takes-to-build-a-programming-language">32:59 - What it takes to build a programming language</a></p><p><a href="https://www.developing.dev/i/211501947/3706-will-there-be-fewer-languages-in-10-years">37:06 - Will there be fewer languages in 10 years</a></p><p><a href="https://www.developing.dev/i/211501947/4257-hands-on-engineering-vs-delegation">42:57 - Hands on engineering vs delegation</a></p><p><a href="https://www.developing.dev/i/211501947/4914-why-fast-tooling-matters-more-now">49:14 - Why fast tooling matters more now</a></p><p><a href="https://www.developing.dev/i/211501947/5116-ai-software-engineering-predictions">51:16 - AI software engineering predictions</a></p><p><a href="https://www.developing.dev/i/211501947/5852-the-most-technically-challenging-work">58:52 - The most technically challenging work</a></p><p><a href="https://www.developing.dev/i/211501947/010204-top-book-recommendation">01:02:04 - Top book recommendation</a></p><p><a href="https://www.developing.dev/i/211501947/010350-advice-for-his-younger-self">01:03:50 - Advice for his younger self</a></p><h1>Transcript</h1><h3>00:48 &#8212; Why write a compiler in JavaScript</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=48">00:48</a>] The big thing that we&#8217;re going to talk about here is obviously <a href="https://en.wikipedia.org/wiki/TypeScript">TypeScript</a> 7 with the native rewrite. And the first thing that I think of when I see this was I didn&#8217;t even realize that the compiler was written in <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a> to begin with because I don&#8217;t usually think of compilers being written in high-level dynamic languages.</p><p><strong>Anders:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=69">01:09</a>] Yeah, no.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=71">01:11</a>] So why was <a href="https://en.wikipedia.org/wiki/TypeScript">TypeScript</a> written originally, the compiler written in <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a>?</p><p><strong>Anders:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=77">01:17</a>] No, it&#8217;s a good question. And honestly, if you had told me before the <a href="https://en.wikipedia.org/wiki/TypeScript">TypeScript</a> project started that, &#8220;Anders, you&#8217;re going to be writing compilers in <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a>,&#8221; I&#8217;d be like, &#8220;No, no, I&#8217;m not.&#8221; But I mean, the original prototypes for <a href="https://en.wikipedia.org/wiki/TypeScript">TypeScript</a>, the <a href="https://en.wikipedia.org/wiki/Strada">Strada</a> project, as it was called in the very early days, were actually written in C because it was like an adaptation of the parser, the <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a> parser that we had in <a href="https://en.wikipedia.org/wiki/Internet_Explorer">Internet Explorer</a> and whatever.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=109">01:49</a>] And then we&#8217;ve moved to <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a>, but we wrote it sort of <a href="https://en.wikipedia.org/wiki/C">C#</a> style. But why did we go with <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a>? Well, I mean, if you can self-host in the ecosystem that you want to be a part of, then that is just dramatically better than putting yourself outside the ecosystem and trying to target that ecosystem. Do you know what I mean? Because by writing it in <a href="https://en.wikipedia.org/wiki/TypeScript">TypeScript</a>, we were also daily users of <a href="https://en.wikipedia.org/wiki/TypeScript">TypeScript</a> and daily users of the tooling that we were building.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=141">02:21</a>] And whenever something didn&#8217;t work right, we knew it immediately. And whenever something didn&#8217;t perform right, we knew it, and so in the early years, it was a huge boon, I think. And then, of course, <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a> runs everywhere, right? And that meant automatically our compiler could run on every platform, anywhere, even in the browser. Had we gone with a native code solution at that time, it wouldn&#8217;t have been possible to run it in the browser.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=169">02:49</a>] Now we have <a href="https://en.wikipedia.org/wiki/WebAssembly">WebAssembly</a> or <a href="https://en.wikipedia.org/wiki/WebAssembly">WASM</a>, but that didn&#8217;t exist at the time. Right. So it was a meaningful choice. And honestly, at that time also, people didn&#8217;t really realize how fast <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a> had gotten. I mean, it used to be very slow, and then Google did all of their excellent work with <a href="https://en.wikipedia.org/wiki/V8_engine">V8</a> and got it to within 2 or 3x of native code, which is pretty darn impressive. And it was like full well possible to write compilers in <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a>, and you could even get them performant because often it&#8217;s the algorithms that determine how performant you are.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=213">03:33</a>] It isn&#8217;t necessarily the runtime environment. Right. I mean, it&#8217;s a combo. But yeah.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=218">03:38</a>] Is there anything unique about the <a href="https://en.wikipedia.org/wiki/TypeScript">TypeScript</a> compiler? I think of a compiler, I think of <a href="https://en.wikipedia.org/wiki/Clang">Clang</a> or one of those ones that is used for maybe C or those static languages. What&#8217;s unique about the <a href="https://en.wikipedia.org/wiki/TypeScript">TypeScript</a> compiler when it was written in <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a> compared to these native compilers?</p><p><strong>Anders:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=240">04:00</a>] I think there are a couple of things that are pretty unique about <a href="https://en.wikipedia.org/wiki/TypeScript">TypeScript</a>&#8216;s compiler. First of all, it doesn&#8217;t target machine code, it targets <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a>, and some people call that a transpiler. And in a sense, the compilation phase is mostly about removing the type annotations and turning your <a href="https://en.wikipedia.org/wiki/TypeScript">TypeScript</a> back into <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a>. Right now, in the early days, also an important part of the compilation process was to downlevel your <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a>, meaning all of the runtime environments at the time were not evergreen.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=276">04:36</a>] And sometimes people were lagging multiple years behind on which level of the standard was implemented. And for example, when classes got standardized, most <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a> runtimes didn&#8217;t implement classes, but it turns out that you can downlevel to constructor functions, transform the code. And so part of what we did was this transformation, downlevel transpiling of the code. But then, of course, the type checking is the big thing that we do.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=306">05:06</a>] And the type checker in <a href="https://en.wikipedia.org/wiki/TypeScript">TypeScript</a> is also quite unlike any other type checker in other compilers. Typically, type checkers exist in compilers to guide the code generator because you want to know: are we dealing with a float or an int or a string here so we can generate the correct machine instructions for that data type, et cetera, et cetera. That&#8217;s not the case in <a href="https://en.wikipedia.org/wiki/TypeScript">TypeScript</a>. In fact, since we erased the types, the types have no impact whatsoever on the runtime behavior of the code.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=340">05:40</a>] They purely exist for tooling sake and for the developer&#8217;s sake and to guide things like statement completion and refactoring and code navigation, which is a whole different thing. Also, they don&#8217;t necessarily have to be there. And so <a href="https://en.wikipedia.org/wiki/TypeScript">TypeScript</a> has a gradual type system. You can sort of have half of your code have types and the other half is just anys that we don&#8217;t check. Now very few languages have anything like that.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=373">06:13</a>] So it&#8217;s a very different compiler in that sense and a very different language in that sense. That actually made it fascinating to work on because we were solving problems that no one had solved before.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=385">06:25</a>] I know a lot of compilers, they take the higher-level code and they typically apply optimizations as well. Maybe they unroll loops or they get rid of duplicate instructions, simplify things. Does anything like that happen in the <a href="https://en.wikipedia.org/wiki/TypeScript">TypeScript</a> to Java compilation process?</p><p><strong>Anders:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=404">06:44</a>] Very little. Like I said, when we do the downleveling, there are some transformations that go on that are complex. But it is less and less the thing that&#8217;s important about <a href="https://en.wikipedia.org/wiki/TypeScript">TypeScript</a>. In fact, a lot of people use <a href="https://en.wikipedia.org/wiki/TypeScript">TypeScript</a> only for the type checker, and then they use some bundler like esbuild or SWC or whatever to package their app, erase the types, do whatever needs to be done in order to make it runnable in the browser.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=435">07:15</a>] And so we&#8217;re not really there to optimize your code for runtime. We&#8217;re there to make you more productive as a developer or make AI more productive as a developer.</p><h3>07:29 &#8212; Why rewrite the compiler in Go</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=449">07:29</a>] So with the native rewrite of this originally fully <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a> compiler, what was the problem you were trying to solve with the rewrite, and why did you end up rewriting it in native code?</p><p><strong>Anders:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=463">07:43</a>] Well, the problem we were trying to solve is real simple: performance and scalability. <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a> was never really optimized for compute-intensive workloads like compilers, right? <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a> is more about creating UI that runs in a browser. It was originally intended for just maybe 100 lines of code, but now, of course, it&#8217;s gotten to be a lot more. But it&#8217;s not a place that you would optimize for the kind of workload that we are.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=496">08:16</a>] So in <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a>, first of all, you pay a 2 to 3x perf penalty compared to native code. I mean, it depends on the workload, but if you&#8217;re doing compute, that&#8217;s about where it&#8217;s at. And then secondly, in <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a> there are a lot of restrictions around use of concurrency. <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a> was always engineered, in fact, to be a single-threaded language. That&#8217;s why we have callbacks and async and whatever.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=524">08:44</a>] It&#8217;s because you can&#8217;t spin up threads, and that&#8217;s a good thing. Mostly because concurrency in a language with mutable data is very, very hard, because you can have races and deadlocks and all of this good stuff, right? That&#8217;s why functional programming languages are easier with concurrency, because all the data is immutable, and it&#8217;s much easier to reason about. So <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a> doesn&#8217;t give you access to concurrency other than web workers.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=555">09:15</a>] But web workers can&#8217;t share data between each other other than by remoting it. So you can have one web worker compute something, but if it wants to give it to some other web worker, it has to turn it into JSON, or it can&#8217;t just hand it objects. And that means you can&#8217;t have one worker compute some data structure and then have someone else use it. In other words, you can&#8217;t have shared memory concurrency.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=581">09:41</a>] And really that&#8217;s what we wanted in order to gain all of the perf that we were leaving on the table by not utilizing multicore CPUs that everyone has today, right? Because <a href="https://en.wikipedia.org/wiki/Moore's_law">Moore&#8217;s Law</a> has stopped giving us faster CPUs, it&#8217;s giving us more CPUs, and we got to find ways to use them in our compute-intensive workloads, or else we&#8217;re leaving money on the table. And so we were leaving money on the table in multiple ways, right?</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=608">10:08</a>] And so native code, and that was why we looked for a language that would get us out of both of those binds. It had to be native and it had to have access to shared memory. Concurrency.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=621">10:21</a>] I saw for the language choice you went with Go. And when I think of all the systems languages, the ones that are often hot are maybe Rust or Zig, why did you choose Go for the native rewrite?</p><p><strong>Anders:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=635">10:35</a>] I think the decision process was actually pretty structured. The first decision we made was we&#8217;re not going to rewrite, we&#8217;re going to port. Because only by porting can we preserve the semantics and the algorithms and the exact behavior of our existing compiler, which everyone depends on for backwards compatibility. Now, we could have cleaned the slate and started completely from scratch, but we would have come up with a different language in the sense that it would give you different errors or behave differently in certain situations where it has to make choices between multiple possibilities and what have you.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=675">11:15</a>] So we wanted to port that meant our code makes certain assumptions. Our code, for example, assumes the existence of garbage collection. It assumes the existence of first-class treatment of functions. You can have functions within functions, and you can close over outer state and so forth. As we evaluated all of these, Go was the one that checked the most boxes. It gives us very robust and mature native code generation on all major platforms.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=713">11:53</a>] It has garbage collection and it has excellent access to shared memory, concurrency. And those were the high-order bits that we wanted to check. And every other language had something that kind of worked against those objectives. So for this particular workload, Go was the right choice for us. And it&#8217;s worked out well.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=736">12:16</a>] If you think about Rust, what didn&#8217;t it have that if it had it, you would have picked it?</p><p><strong>Anders:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=742">12:22</a>] I mean, I think there are two things. It doesn&#8217;t have garbage collection. It&#8217;s done manually, or it&#8217;s done through the borrow checker. But the borrow checker doesn&#8217;t allow circular data structures. And our compiler is chock full of circular data structures. We have trees with parent pointers, we have types that are recursive, we have symbols that refer. I mean, it&#8217;s everywhere. And like I said, if we had chosen to rewrite, we could have probably solved all of that.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=774">12:54</a>] But it wouldn&#8217;t have been just porting the code. It would also have been solving a whole bunch of new problems that we had bought ourselves by going that route. We tried, and it just wasn&#8217;t feasible. And so we were just trying to optimize for doing as little work as possible to get us to the payout. And honestly, Rust is no better when it comes to the quality of the generated code or the concurrency gains that we could have gotten out of it.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=807">13:27</a>] Go is just great. I mean, so we got all the bennies for less work by going that route.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=815">13:35</a>] I know some languages, when you say they&#8217;re garbage collected, there&#8217;s something in the language itself that is doing garbage collection. But there&#8217;s also independent libraries that can provide garbage collection, right?</p><p><strong>Anders:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=832">13:52</a>] There is, but it often comes with a whole bunch of restrictions, and it doesn&#8217;t necessarily come with the safety guarantees that we were looking for. I mean, Go is type-safe and memory-safe, meaning that you don&#8217;t get to just have stray pointers or whatever. With Rust, you can do ref counting or you can do all sorts of different strategies, but there&#8217;s always that little bit of unsafe where you have to do this in order to make it all work.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=866">14:26</a>] Where if garbage collection is engineered into the language, it really is a separate concern that is you don&#8217;t have to do anything special. I mean, of course, you have to not hold on to data that you no longer need and whatever. But that&#8217;s true of ref counting as well, right? But it is inherent in the language.</p><h3>14:49 &#8212; LLMs for large migrations</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=889">14:49</a>] When you ported it from <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a> to Go, I&#8217;m curious how much LLMs were used in that process, because I know famously there&#8217;s some major projects that have been doing rewrites of their entire codebase. I know there&#8217;s this <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a> project called Bun that rewrote everything from Zig into Rust, so it seems like a pretty useful tactic. And I&#8217;m curious if you leveraged that in this process.</p><p><strong>Anders:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=916">15:16</a>] Not a whole lot, but it also has to do with timing. We started this project two years ago, and two years ago, LLMs were nowhere near as good as they are now. I mean, that&#8217;s how crazy fast it&#8217;s all moved, right? So what we did, though, is we certainly had a bunch of tools that aided us in the port. I&#8217;d say the prototypes we wrote, the scanner and the parser we wrote manually. And at that point we could convince ourselves, wow, we can actually get 10x out of this.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=951">15:51</a>] Now what do we do with the rest of this code base? What we did was we wrote a tool that syntactically translates <a href="https://en.wikipedia.org/wiki/TypeScript">TypeScript</a> into Go, this code that comes out of it. It has no syntax errors in it, but it doesn&#8217;t compile either because it&#8217;s full of... It uses types as if they were <a href="https://en.wikipedia.org/wiki/TypeScript">TypeScript</a>, which they&#8217;re not in Go. And so all of that had to be refactored. We had to redo all the data structures or whatever, but we got the same code base out of it, and then we could sort of bang on that, and then in a more localized fashion, maybe use AI occasionally to help us do the transformation.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=989">16:29</a>] So it was sort of manual and automated and a little bit of AI. Now, if we were to start the project today, would we do it differently? Possibly. Although I will say, if we just let AI loose on what is it, like half a million lines of code that we have in the old compiler, or somewhere between half a million and a million, and asked it to translate it all, well, I don&#8217;t know that that would absolve us from then having to go in and carefully examining every line that came out of it to make sure that there were no hallucinations.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=1024">17:04</a>] Right. Unless you have 100% perfect test coverage, you probably still got to go check all of that. Now, I think a better approach, quite honestly, would be to enlist AI to write a program that helps you translate from <a href="https://en.wikipedia.org/wiki/TypeScript">TypeScript</a> to Go, because at that point you can park the stochasticness in that program and then you can get deterministic behavior whenever you run the program, which means you get the same transformation every time you run it.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=1055">17:35</a>] That&#8217;s always the thing about AI that people forget: it&#8217;s not deterministic. So you can&#8217;t really trust that it&#8217;s going to do the same thing twice. We might have done it that way, but AI was not ready to do it at the time. Now, that doesn&#8217;t mean that we don&#8217;t use AI now down the line. We use AI a lot in our internal processes around the compiler, as everyone does, right? Help it to write tests and to move pull requests and what have you.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=1085">18:05</a>] And whenever an issue is logged, first thing we do is put <a href="https://en.wikipedia.org/wiki/Microsoft_Copilot">Copilot</a> on and see if it can fix it for us, right? I mean, so, yeah, in that approach.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=1093">18:13</a>] where you use the LLM to generate tooling and then the tooling is deterministic, but you&#8217;d still have to validate that thing.</p><p><strong>Anders:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=1103">18:23</a>] Yes, but that&#8217;s a much smaller surface area that you have to validate, right? And honestly, I&#8217;ve seen that even with friends. We did some trip together, and there was some accounting of it. Well, he paid for the hotel rooms and we paid for this and whatever, and we needed to sort it all out, right? So, okay, well, here&#8217;s what all the costs were, and here are the pieces, and have AI fix it for us, right?</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=1126">18:46</a>] Or like tell who owes who what. And it very authoritatively came up with the wrong answer, right? Because it just forgot about some of the settlements, right? But if we had asked it to write a spreadsheet, which is really just a program, right, then we would have gotten the right answer because it&#8217;s very good at writing programs. So it&#8217;s kind of funny how sometimes you don&#8217;t ask AI for the answer, you ask it for a program that computes the answer.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=1157">19:17</a>] What are the potential benefits that you left on the table by doing a port instead of a full rewrite?</p><p><strong>Anders:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=1163">19:23</a>] To be honest, I don&#8217;t think there are any, and I don&#8217;t think we would consider a rewrite. We were quite happy. We&#8217;re quite happy with the way this codebase works. I don&#8217;t think we&#8217;re leaving any money on the table currently. And as I said earlier, rewrites are toxic often for ecosystems, because they sacrifice compatibility, because you never rewrite and you never get back to exactly what you had before, right?</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=1194">19:54</a>] Oh, but in the name of making it better or prettier or whatever, we change this and that and the other, right? And then while all the users get to suffer through that, right? So backwards compatibility is super important if you want to keep your ecosystem happy. And we do want that.</p><h3>20:12 &#8212; Why Javascript is so popular</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=1212">20:12</a>] In studying for this interview, I just keep reading about <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a> and the strange semantics of the language. And I think throughout my career too, people have typically not been super satisfied or happy with <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a> for some reason or another. My question is, why is it so popular despite that?</p><p><strong>Anders:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=1236">20:36</a>] First of all, I don&#8217;t think <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a> is as bad a language as some people make it out to be. I will say in the three, what, three, four weeks that <a href="https://en.wikipedia.org/wiki/Brendan_Eich">Brendan Eich</a> had to create this language back in the mid-90s, he did a lot of things right, and thank God that he had been educated on functional programming and got first-class functions done, right? Where you can have functions within functions and the inner functions can access the outer function state and you can pass functions around as first-class values.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=1269">21:09</a>] That is super powerful. <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a> actually got that very right. Now there are some quirks in the language too. All of the automatic conversions and all of the bizarre differences between double equals and triple equals just drive everyone mad. But that&#8217;s exactly what type checkers are happy to do. They can ferret out all the little differences because they understand all the deep semantics of the language that no one seems to be able to keep in their mind.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=1299">21:39</a>] So I think that&#8217;s part of why <a href="https://en.wikipedia.org/wiki/TypeScript">TypeScript</a> has become so popular, right? It can actually truly bring out the best parts of <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a> and leave the bad stuff behind. And of course you can&#8217;t. The thing about <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a> is it is the cross-platform language, like even Java, that was engineered and intended to be the way to write cross-platform applications. It&#8217;s not really cross-platform.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=1326">22:06</a>] It doesn&#8217;t run in the browser, I mean, it doesn&#8217;t run everywhere, right? <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a> runs everywhere. So there are a lot of reasons why you should like <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a>. And with <a href="https://en.wikipedia.org/wiki/TypeScript">TypeScript</a>, I think we&#8217;ve managed to sort of capture all the badness and park it.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=1347">22:27</a>] I saw there were some projects. I don&#8217;t know if you&#8217;re familiar with <a href="https://en.wikipedia.org/wiki/Jaxson_Dart">Dart</a> or <a href="https://en.wikipedia.org/wiki/CoffeeScript">CoffeeScript</a>, and it seems like these were some efforts to replace <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a> or improve it, but they&#8217;re not popular today. So I&#8217;m curious what happened.</p><p><strong>Anders:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=1364">22:44</a>] I mean, I think <a href="https://en.wikipedia.org/wiki/CoffeeScript">CoffeeScript</a> was mostly a different syntax for <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a>, so it doesn&#8217;t really change the semantics, and it didn&#8217;t provide any additional tooling or whatever. And <a href="https://en.wikipedia.org/wiki/Jaxson_Dart">Dart</a> was also, in a sense, about fixing <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a>. Right, but if you can fix something by fixing it instead of trying to replace it with something else, then you&#8217;re doing the ecosystem a much bigger favor, I think.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=1396">23:16</a>] Right. And that&#8217;s what we set out to do with <a href="https://en.wikipedia.org/wiki/TypeScript">TypeScript</a>. We weren&#8217;t trying to change <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a>; we were trying to improve <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a>. And I think that&#8217;s ultimately why we succeeded.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=1408">23:28</a>] I mean, in this new age where it&#8217;s very feasible that maybe AI could rewrite code bases, I imagine people will start to go toward the desired languages rather than the ones that are the incumbent languages. And I&#8217;m curious if you think that <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a> might become less used in the future.</p><p><strong>Anders:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=1431">23:51</a>] See, I don&#8217;t think so. What I&#8217;ve observed is that AI is best at the languages it&#8217;s seen the most of in its training set. AI gets trained on all the code that exists in the world, which means there&#8217;s an awful lot of <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a>, an awful lot of <a href="https://en.wikipedia.org/wiki/TypeScript">TypeScript</a>, an awful lot of <a href="https://en.wikipedia.org/wiki/Python_(programming_language)">Python</a>, and therefore AI is good at <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a> and <a href="https://en.wikipedia.org/wiki/TypeScript">TypeScript</a> and <a href="https://en.wikipedia.org/wiki/Python_(programming_language)">Python</a>. It is less good at my favorite little language that I just invented.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=1462">24:22</a>] In fact, there&#8217;s none of it in the training set, which means you have to sacrifice God knows how many tokens in the prompt to teach AI the language before you can even ask it a question about the language. Do you know what I mean? So in that sense, I think incumbent languages are actually, if anything, going to flourish because of AI. And we&#8217;re sort of seeing that right now with <a href="https://en.wikipedia.org/wiki/TypeScript">TypeScript</a> too. Right.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=1487">24:47</a>] There&#8217;s a noticeable knee in the curve of <a href="https://en.wikipedia.org/wiki/TypeScript">TypeScript</a> adoption that coincides with the advent of AI. I do think the incumbent languages are actually, if anything, getting stronger.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=1498">24:58</a>] What percent of all <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a> is written in <a href="https://en.wikipedia.org/wiki/TypeScript">TypeScript</a>?</p><p><strong>Anders:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=1504">25:04</a>] Well, so in the last year, <a href="https://en.wikipedia.org/wiki/TypeScript">TypeScript</a> became the number one used language on <a href="https://en.wikipedia.org/wiki/GitHub">GitHub</a>. So there is <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a> more than <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a>. So more than 50% on <a href="https://en.wikipedia.org/wiki/GitHub">GitHub</a> at least is written in <a href="https://en.wikipedia.org/wiki/TypeScript">TypeScript</a>. So we&#8217;re actually larger now than the language that we set out to improve.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=1528">25:28</a>] Wow.</p><p><strong>Anders:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=1529">25:29</a>] Yeah. And larger than <a href="https://en.wikipedia.org/wiki/Python_(programming_language)">Python</a>.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=1531">25:31</a>] If you were to just draw that out in the future, do you think that eventually <a href="https://en.wikipedia.org/wiki/TypeScript">TypeScript</a> would become the default and almost 100% of all <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a> would be typed?</p><p><strong>Anders:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=1541">25:41</a>] Well, certainly. I mean, if you&#8217;re having AI write it, I almost challenge you to find a tool that writes <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a>. They all write <a href="https://en.wikipedia.org/wiki/TypeScript">TypeScript</a> because it helps AI write better code, because the type annotations guide the LLM toward writing, or to write, making fewer mistakes, and the ability for us to statically validate the code before you run it. I mean, that&#8217;s the distinction, right? The only way you can validate <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a> is by running it, which means you have to set up a runtime environment, which might not be possible for AI to do because AI lives in a sandbox, but AI can run through tools, the compiler, and check the code that it just generated and be told, oh, you made a mistake.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=1587">26:27</a>] Oh, well, let me fix it then before I even tell anyone that I made the mistake. Right?</p><h3>26:32 &#8212; Why ever use Javascript on the backend</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=1592">26:32</a>] After learning about this 10x improvement and performance from rewriting in native, it makes me wonder why anyone would use <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a> on the back end. Why not just always use native languages on the back end?</p><p><strong>Anders:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=1608">26:48</a>] Well, it depends on your problem, I think, because the thing that overlooks is what kind of thing am I going to write on the back end? There are an awful lot of very, very good web server frameworks, for example, that use <a href="https://en.wikipedia.org/wiki/TypeScript">TypeScript</a> or <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a>, right? So if there are frameworks in your ecosystem that get you to a solution quicker than if you had to write that because your native language wasn&#8217;t really intended to target that particular community.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=1641">27:21</a>] So I think it very much depends on what your problem is affinitized with. And often performance of your code isn&#8217;t the bottleneck. I mean, look at <a href="https://en.wikipedia.org/wiki/Python_(programming_language)">Python</a>, right? It&#8217;s used to basically script all of the LLM training in the world, right? I mean, a lot of that code is ultra time critical, but that&#8217;s written in native code, right? And then you use <a href="https://en.wikipedia.org/wiki/Python_(programming_language)">Python</a> as the orchestration language, and in a sense, in a web server, <a href="https://en.wikipedia.org/wiki/TypeScript">TypeScript</a> is just an orchestrator of talking to a database and doing this and that. And the things that ultimately control the performance of applications like that aren&#8217;t necessarily whether that inner for loop is running as native code or not.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=1692">28:12</a>] Which actually it is because of the JIT anyway, right? I mean, so measure first and then make decisions, right? Because you always get surprised when you measure, when you talk about how much faster it was to.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=1704">28:24</a>] One of my immediate thoughts is, why wasn&#8217;t it done sooner?</p><p><strong>Anders:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=1713">28:33</a>] At the time we started <a href="https://en.wikipedia.org/wiki/TypeScript">TypeScript</a>, I don&#8217;t know that we had ever envisioned that people would be writing projects that are the size of the projects that people are now writing in <a href="https://en.wikipedia.org/wiki/TypeScript">TypeScript</a>, right? <a href="https://en.wikipedia.org/wiki/Visual_Studio_Code">Visual Studio Code</a> is like 2.3 million lines of code. I mean, we have in-house projects that are over 10 million lines of code, which is insanity. We would have just at the time gone, well, that&#8217;s clearly no one&#8217;s ever going to do that, right?</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=1741">29:01</a>] But that was a decade ago, more than a decade ago, right? We started in 2012 with the <a href="https://en.wikipedia.org/wiki/TypeScript">TypeScript</a> project, and the world looked very different. And so gradually, people have started writing larger and larger and larger projects, right? And at the same time, our compiler has gotten smarter and smarter. We&#8217;ve added all sorts of cool features like union types and discriminated unions and control flow analysis and blah, blah, blah.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=1766">29:26</a>] And all of these things make our type checking even better. But it also makes it go a little slower every time we add a new feature, right? In fact, our <a href="https://en.wikipedia.org/wiki/TypeScript">TypeScript</a> 6 runs only about 50% of the speed of <a href="https://en.wikipedia.org/wiki/TypeScript">TypeScript</a> 1.5, for example. But <a href="https://en.wikipedia.org/wiki/TypeScript">TypeScript</a> 1.5 also did a whole lot less. So projects have gotten bigger and the compiler does more. All of which detract from your effective output. And as I mentioned, <a href="https://en.wikipedia.org/wiki/Moore's_law">Moore&#8217;s Law</a> also, unfortunately, stopped delivering faster CPUs, and <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a> keeps you from taking advantage of the additional cores.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=1802">30:02</a>] And it&#8217;s not clear that we could have foreseen all of that, right? But it&#8217;s just the way it panned out, right?</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=1810">30:10</a>] OpenAI, <a href="https://en.wikipedia.org/wiki/Anthropic">Anthropic</a>, Cursor, and Vercel all use this product to make their lives better. And the problem it solves is when you&#8217;re building SaaS or an AI product and you want to sell to other companies, there&#8217;s all these requirements you need to meet. There&#8217;s SSO, there&#8217;s SCIM, there&#8217;s RBAC, there&#8217;s audit logs. These are all things that take time to integrate but aren&#8217;t the main focus of your app. WorkOS is an <a href="https://en.wikipedia.org/wiki/API">API</a> layer that lets you meet all of these requirements in just a few lines of code.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=1840">30:40</a>] So let&#8217;s say you have a new SaaS product and you want to sell to other companies. WorkOS will solve all of these critical feature gaps for you. You can check them out at workos.com to learn more and get started. And I appreciate them for supporting my work and sponsoring this podcast. Jira by <a href="https://en.wikipedia.org/wiki/Atlassian">Atlassian</a> isn&#8217;t just for tracking work anymore. Now you can pick your favorite AI agent to assign tasks to, and they&#8217;ll get access to the rich context that&#8217;s already in Jira.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=1867">31:07</a>] When the agent is done, it surfaces a pull request. That way you can get more done with your favorite agents, all in one place. Learn more at jira.dev. That&#8217;s J I R A. D E V. Appreciate them for sponsoring the podcast. And back to the show. I first became a software engineer and I went to start working at Facebook. At the time they had this popular framework called Flow, which was doing type inference on top of <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a>.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=1897">31:37</a>] It was this thing that would take a long time, and then I&#8217;d never hear about it these days. So it sounds like <a href="https://en.wikipedia.org/wiki/TypeScript">TypeScript</a> won, if there was a competition to type in.</p><p><strong>Anders:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=1906">31:46</a>] There was a bit of it, yeah. In the early days, I think the thing that worked for us was actually the fact that we were self-hosted, which made it a lot easier for the community to contribute to the project. Flow was written, as I recall, in <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a>. And so in order to contribute to Flow, you had to go learn a whole different way of programming in a different language. Right. And Flow also did not focus all that much on IDE-based tooling, which we knew full well going in.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=1942">32:22</a>] We&#8217;re writing a compiler, but we&#8217;re not writing a compiler in order to generate machine code. We&#8217;re writing it to make better tooling. That was why we wrote it right there, hand in hand with our compiler. We had a language service. It was deeply integrated into Visual Studio, <a href="https://en.wikipedia.org/wiki/Visual_Studio_Code">Visual Studio Code</a>, all sorts of other editors through an open protocol, and that&#8217;s where the problem that needed solving was.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=1967">32:47</a>] I mean, it&#8217;s nice to have a type checker, but boy, you want that. You also want statement completion. You want red squigglies, you want it interactive, right?</p><h3>32:59 &#8212; What it takes to build a programming language</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=1979">32:59</a>] So I know in your career you&#8217;ve, you&#8217;ve worked on multiple programming languages. What does it take to build a programming language?</p><p><strong>Anders:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=1987">33:07</a>] Well, first I&#8217;ll say that the world needs another programming language. Like it needs another hole in the head. I mean, it&#8217;s like you kind of got to be a certain kind of person to even embark on it to begin with, right? It&#8217;s a super fascinating area of computer science and it&#8217;s one that&#8217;s been around ever since the beginning of computers. Now every compiler, every language has a whole bunch of things you need to understand, like parsers and scanners and lexers and code generators and whatever, right?</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=2023">33:43</a>] But that&#8217;s sort of the mechanics of implementing the language and then there&#8217;s the design of the language, sort of the art of making it feel right, whatever, right? And I think you sort of have to master both. And then you also got to appreciate that like every new language is actually only 10% new. And then it&#8217;s 90% the same drudgery that every other language has to go do. And so be prepared for a lot of work that maybe isn&#8217;t as interesting, you know, and then finally maybe I&#8217;ll say that, you know, like, never forget there that you stand on the shoulders of giants.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=2064">34:24</a>] I mean, in order to make a great programming language, you got to understand a bunch of other programming languages first and understand all the, all the distinctions between the different styles of programming like procedural and object oriented or functional or what have you. And then last but not least, it&#8217;s like it&#8217;s a long game. I mean, it is probably a longer game than anything else. I mean, like every language project I&#8217;ve worked on, I&#8217;ve worked on each of them for at least 10 years and shipped multiple versions.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=2098">34:58</a>] And it&#8217;s really never until version three that it truly starts to get okay, do you know what I mean? And it just takes an incredible amount of devotion to that. So you gotta really not be the type that tires of a problem quickly and then moves along that you&#8217;re not meant to do language design. And you see that too when you talk to language designers in the industry. They&#8217;ve been doing it for a long time.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=2123">35:23</a>] You mentioned those two parts. There&#8217;s the objective pieces that you need to implement and then there&#8217;s the art of the design and making the language, I guess, ergonomic for developers. When you think of that second part, that art, and you look at other programming languages, are there any that you admire outside of the ones that you&#8217;ve worked on?</p><p><strong>Anders:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=2145">35:45</a>] Of course, learning and fully appreciating the beauty of functional programming has been very educational. I mean, because it really is a different way of thinking about programming, a way of thinking of programming that&#8217;s much closer to math than it is to machines. And I think there&#8217;s a lot of incredible goodness that has come from that. And honestly, Even in building <a href="https://en.wikipedia.org/wiki/TypeScript">TypeScript</a> project, large portions of the <a href="https://en.wikipedia.org/wiki/TypeScript">TypeScript</a> compiler are written in a highly functional style and work on immutable data structures that are then.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=2185">36:25</a>] Now, because of shared memory, concurrency can be shared between different threads or processes that don&#8217;t mutate the data and therefore they can share one data structure that&#8217;s incredibly powerful. But mastering this, like writing islands of pure functional programming inside an imperative program and putting it together with concurrence, I mean, it&#8217;s complex, but I think functional programming has brought a lot to the world.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=2215">36:55</a>] I know object oriented programming as well, but I wouldn&#8217;t single out any particular language. Every one language you come in contact with, you learn something.</p><h3>37:06 &#8212; Will there be fewer languages in 10 years</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=2226">37:06</a>] You mentioned the world doesn&#8217;t really need more programming languages. And if you think 10 years from now, do you think there will be less programming languages than there are today?</p><p><strong>Anders:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=2239">37:19</a>] It&#8217;s hard to say. But like I said, AI tends to favor the incumbents. Right? And I do think, and I think this has been true even before AI, the bar keeps going up for what it takes to successfully implement a programming language and create an ecosystem around it. I mean, it used to be, oh, you just need a compiler. Well, you also kind of need tooling now. I mean, you need a language service, you need debuggers, you need profilers, you need frameworks and libraries, you need code generators that can target all sorts of.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=2279">37:59</a>] I mean, it&#8217;s like it just keeps getting harder and harder to get all the way there.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=2288">38:08</a>] When you think about all those pieces, really, they&#8217;re all for the people. I mean, the IDE and the types. I mean, the computer looks at that too, but it&#8217;s so that we can read source. Maybe one day the LLMs will generate machine code directly.</p><p><strong>Anders:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=2308">38:28</a>] I wonder. I think LLMs are better at what they do when they don&#8217;t have to repeat themselves a lot. I think, like when a program is expressed in text, it is closest to its sort of ultimate condensed meaning and representation. Right. If you translate it into machine code, there&#8217;s an awful lot of noise in that machine code. Like all of the instructions, like, half of the instructions are memory addresses that have absolutely no bearing on what&#8217;s going on here.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=2349">39:09</a>] So half of all the data is noise already. Right. And then whichever register you pick, well, that doesn&#8217;t matter either in the code generator. And honestly, you could change your mind at any point in time. So teasing the truth out of that noise is a lot harder than if you just have a program where the variable is called I and whatever. And by the way, that you can relate to the written instruction that the user just gave you.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=2374">39:34</a>] I mean, keep in mind that, like, AI are, they&#8217;re just emulators of humans in a sense. Right? I mean, it&#8217;s like neural networks. Right. There&#8217;s a reason we have programming languages because we&#8217;re terrible at writing machine code straight off out of our head. Right? AI is not that different from us, so the same would probably be true there.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=2396">39:56</a>] When you look back on working on C and <a href="https://en.wikipedia.org/wiki/TypeScript">Typescript</a> and these language projects, they were long journeys and I think, yeah, one thing people might want to know is what did you Learn through those journeys that if you knew at the beginning of when you embarked on working on them, you might have been better off.</p><p><strong>Anders:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=2419">40:19</a>] Gosh, well, each journey is different. I mean like the first project I worked on, Turbo Pascal, I think</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=2430">40:30</a>] that</p><p><strong>Anders:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=2430">40:30</a>] project started back in the old days when it was 8bit micros and 64k of memory and one person could do everything themselves and have ultimate control of everything. And so I was very much a one man shop. But that quickly was not scalable. Right. And capacities of machines. We went from 64 to 640k and then kaboom, the lid went off. Right. And you could have as much memory as you wanted. And so not one person couldn&#8217;t do it.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=2459">40:59</a>] And I had to learn to become a team player. Right. And that, that was a big journey for me. I mean to learn to let go. Right. If you&#8217;re a perfectionist, that could be hard, but that&#8217;s one thing that I would say I learned there.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=2474">41:14</a>] Well, another way to word this question is, you know, what&#8217;s the most common mistake that you see people make when they embark on building a programming language?</p><p><strong>Anders:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=2484">41:24</a>] Well, I think people tend to over index on one idea that they have that they think, oh, wouldn&#8217;t it be cool if my language could do blah. And then they under index on all of the mundane stuff that every programming language has to do and then it ends up doing that one thing they love, maybe better, but then it does everything else not as good. And the net is a detractor. Right. And so it&#8217;s so hard to convey how many things you have to do that really doesn&#8217;t have anything to do with the problem you&#8217;re trying to solve per se.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=2523">42:03</a>] When you&#8217;re implementing programming languages, when you</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=2526">42:06</a>] were working on C, do you keep tabs on the other languages and what they&#8217;re doing better, what you could do better with C?</p><p><strong>Anders:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=2535">42:15</a>] Yeah, no, you got to keep yourself informed because like I said, we all stand on the shoulders of giants. No programming language was ever created in perfect isolation. Everyone learns from everyone and then someone comes up with a good idea and then you see it adopted elsewhere. We&#8217;ve adopted many ideas from functional programming in C, for example. Then other languages have adopted some of the good ideas we had in C, like Async now is in <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a> and in some of the other programming languages out there.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=2566">42:46</a>] And that was pioneered in C. You know, it&#8217;s, it&#8217;s, we all learn from each other and that&#8217;s how the industry moves forward. Really.</p><h3>42:57 &#8212; Hands on engineering vs delegation</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=2577">42:57</a>] You mentioned the, I guess, learning to let go. I think that&#8217;s something that a lot of people, as their career advances, they start with, you know, individual contributor work and then later they start delegating things. How did you learn that? Or what was the. Is there like a, maybe a story or particular project where you let go and you develop that skill?</p><p><strong>Anders:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=2601">43:21</a>] Well, it&#8217;s almost like I got a counter story to the letting go there because in the C Sharp project, my main function was not implementing the C compiler, it was being the language designer and writing the spec and designing all the new language features. Before that, when I, when I had worked on Turbo Pascal, I was, I was doing a bunch of active coding, you know, on, on the thing itself, right? But then I sort of let go of that, but I let go of it too much and I sort of drifted up into the stratosphere and became more of an architecture astronaut, do you know what I mean?</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=2639">43:59</a>] And I wasn&#8217;t getting my hands dirty. I was writing stuff in the framework and in the libraries, but it wasn&#8217;t, it didn&#8217;t quite. These are not like the deep, really super hard problems to solve. And I didn&#8217;t really know it at the time, but I was gradually getting less happy with the work that I was doing. I still enjoyed, but there was something missing. And so when this <a href="https://en.wikipedia.org/wiki/TypeScript">typescript</a> opportunity came along, I decided to jump in and actually actively participating writing compiler.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=2670">44:30</a>] And it brought so much happiness to my life. I finally realized I&#8217;m just a happy coder. I mean, I like the spec stuff too, but coding is like, man, that&#8217;s what gets me up in the morning, make coffee and write some code. You know, that&#8217;s when I&#8217;m in my happy space.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=2688">44:48</a>] You know, when people are at these really, really high levels, they kind of have this expectation of a certain level of impact. And so how do you continue to write code as such a high level engineer?</p><p><strong>Anders:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=2702">45:02</a>] Well, the specific code I&#8217;m writing isn&#8217;t necessarily having all that impact, but it&#8217;s the fact that I also do the architectural guidance as part of a group of people in a project, there&#8217;s plenty of work for everyone to go around, but you stay involved in a corner of the project because then you see what happens in the code. When you&#8217;re checking in your code, you go, what was, what was that over there?</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=2731">45:31</a>] Let me just, what&#8217;s happening over here? Or you realize, oh, we need to refactor this. This is not feeling right anymore. But if you let go of that, you can&#8217;t really talk about the thing that people use day to day. You can talk about the Syntax of the thing that people use day to day, but you can&#8217;t talk about that thing. So both are important, I think, and I&#8217;m happy that I get to do both.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=2757">45:57</a>] Now, I know a lot of companies have this idea of engineering archetypes or the way that high level engineers get some work done. And you mentioned architect, for instance. A lot of companies have different words for architect. I&#8217;m not sure if you&#8217;re saying it&#8217;s just your working style or are you saying that all high level engineers should be hands on at some level?</p><p><strong>Anders:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=2782">46:22</a>] No, I&#8217;m not saying that because I don&#8217;t think it&#8217;s like I made a conscious choice to remain an independent contributor as opposed to become a manager. I mean, I have plenty of opportunities, but that is not where I do my best work. Right. So I think you have to decide for yourself what is it that motivates you, makes you happy, keeps you doing this for a lifetime. Do you know what I mean? And you only get one run at it in life here.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=2814">46:54</a>] And if you&#8217;re going to do your best work, do the thing that makes you the most happy. I think that&#8217;s what I learned along the way, that coding is part of that, a big part of that.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=2830">47:10</a>] So then when you were working on C, but before <a href="https://en.wikipedia.org/wiki/TypeScript">Typescript</a>, how did you know something was missing?</p><p><strong>Anders:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=2836">47:16</a>] I just knew something. I don&#8217;t know how. I mean, I just wasn&#8217;t feeling as fulfilled with only doing the design part. Right. I missed the coding and whenever I had a chance to write a little bit of code, I would feel a lot happier. And I go, that&#8217;s kind of interesting. Do you know what I mean? But now I got to go write some more specs.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=2861">47:41</a>] So then was <a href="https://en.wikipedia.org/wiki/TypeScript">Typescript</a> something you kind of went towards because you wanted to write more code?</p><p><strong>Anders:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=2866">47:46</a>] Well, I went towards it for many reasons. I mean, it wasn&#8217;t specifically that to begin with. I just found the problem fascinating. Right? I mean, because the way <a href="https://en.wikipedia.org/wiki/TypeScript">TypeScript</a> came about was actually indirectly through C. Because the Outlook. com team, I think it was, approached the C group and asked whether we would pretty please productize something called Script Sharp. Script Sharp was this thing that took C and transpiled it into <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a> so you could run it in a browser.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=2899">48:19</a>] I&#8217;m like, what? Why would you want to do that? Why don&#8217;t you just write the job? Well, because that way we can get great tooling, then we can use Visual Studio and we can have projects and we can have type checking and we can have code refactoring and navigation and we can write interfaces and people can understand how this all works. And I&#8217;m like, wow, is <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a> really that busted? And you&#8217;re saying, like, the way you want to fix that problem is by abandoning <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a>, treating it as an instruction language.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=2931">48:51</a>] Right. And then having a code generator targeted. I&#8217;m like, couldn&#8217;t we fix <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a>? Wouldn&#8217;t that be better? Do you know what I mean? And that&#8217;s how <a href="https://en.wikipedia.org/wiki/TypeScript">TypeScript</a> kind of got off the ground, Right? It was like, gosh, there&#8217;s something here that&#8217;s really broken that needs to be fixed. Right. When it comes to <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a> tooling, and that&#8217;s what we set out to do.</p><h3>49:14 &#8212; Why fast tooling matters more now</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=2954">49:14</a>] One thing I thought would be interesting is in one of the talks that you gave, you said that you believe that the speed of your tooling is more important now because of AI, And I want to hear thoughts on why is that the case.</p><p><strong>Anders:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=2970">49:30</a>] Well, more and more, our workflows now are dominated by agents that are, like, running away in the background. I mean, like, writing code for you. And they make mistakes just like we do. But you can have as many of them as you want. So there are like, many, many more little workers in the ecosystem writing much more code. Right. And that whole workflow is like, LLMs already have performance challenging.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=3000">50:00</a>] And if you add, like, if you&#8217;re writing code in a big project and you have to type, check it, and it takes two minutes every time the LLM writes something. Do you know what I mean? That&#8217;s horrible. Right? So making that go faster is a big benefit.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=3014">50:14</a>] Yeah, absolutely. I guess. Because it&#8217;s hammering away.</p><p><strong>Anders:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=3017">50:17</a>] Yeah, Because, I mean, well, we all know LLMs, they like to use GREP and whatever. Right? But then they&#8217;re also smart enough now to realize that if you&#8217;re trying to change this property called version, and like every other object has a version property, you can&#8217;t just grep for version and then go rename it to something else because, like, you&#8217;re breaking all these other interfaces that have a version in them, right?</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=3045">50:45</a>] So you got to do semantic search, and the only thing that can do semantic search is a compiler. And so you got to use the compiler through, typically through lsp, through language Services, or through our command line tool. That would give you the equivalent. Right. And so more and more AI is doing that. And that means, you know, compilers run at. You may not even see that they&#8217;re running, but they&#8217;re running and they&#8217;re doing work on your behalf.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=3075">51:15</a>] Yeah.</p><h3>51:16 &#8212; AI software engineering predictions</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=3076">51:16</a>] When you talk about AI, it&#8217;s very realistic and grounded in the software engineering. And so I thought it might be interesting to run some common AI takes that I hear from the Internet and get your sense of how accurate is this? What are your thoughts on when or if it&#8217;ll be true? Okay, so the first one that I&#8217;ve heard this was more common at the end of last year, is that AI is going to write 90 plus percent of the code within a year.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=3109">51:49</a>] Curious what you think on that.</p><p><strong>Anders:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=3111">51:51</a>] Well, for certain classes of apps that might be like all of I coded apps are writing 100% of the code. Right. And there&#8217;s an awful lot of that being written. Are they going to write 90% of the high quality code on the Internet? I don&#8217;t know about that. So the thing is like 90% of what the volume of written code is just going like that right now. Right. Because AI writes so much code. So in a sense that&#8217;s a self fulfilling prophecy.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=3142">52:22</a>] Right. But when it comes to the super high quality code that no one has ever written before, it&#8217;s not clear to me that AI is going to write 90% of that.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=3155">52:35</a>] So when you think about cases that AI is not writing all the code, maybe some examples of the super high quality stuff, what is that?</p><p><strong>Anders:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=3164">52:44</a>] Well, I mean it&#8217;s algorithms that no one has ever seen before, for example, or particular solutions. Like, I mean, I know that AI could not write our compiler, the <a href="https://en.wikipedia.org/wiki/TypeScript">Typescript</a> compiler. It just can&#8217;t. I mean we&#8217;ve tried it can&#8217;t do it. And I&#8217;m not asking it to either. I mean I&#8217;m not expecting it to either. But our compiler is also not a typical piece of code. That&#8217;s why it&#8217;s bad at writing it, because it&#8217;s seen none of it in the training set.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=3196">53:16</a>] Well, I&#8217;ve seen some compilers, but not like this one, not with these concepts, not with done the way that we&#8217;re doing it. Right. And so it&#8217;s just not a good fit there. AI, we can&#8217;t forget that AI is at heart a big stochastic machine that has memorized the entire Internet. Right. And has an ability to extrapolate somewhat over what it&#8217;s memorized. Right. But if it hasn&#8217;t seen it before, it&#8217;s not necessarily going to be all that good at doing it.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=3229">53:49</a>] It&#8217;s getting better. I mean, I&#8217;m not saying it&#8217;s not impressive, it&#8217;s wildly impressive what it can do, but I just think there&#8217;s a long way still to it&#8217;s doing all of it. And I don&#8217;t know that we ever get there. I hope we don&#8217;t. Because then what&#8217;s the point of humans anymore then? I mean, it&#8217;s.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=3249">54:09</a>] What I see this take often too is you won&#8217;t need to use an IDE within the year or you don&#8217;t need to read the code anymore.</p><p><strong>Anders:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=3259">54:19</a>] Well, good luck to you. I mean, if you&#8217;re going to hand AI the keys, I mean, then all bets are off, right? I mean, the minute AI you can&#8217;t convince AI to fix this issue or this new feature that you want built, what are you going to do? I mean, if you don&#8217;t understand what&#8217;s below? Right. That&#8217;s one problem. The other problem is, let&#8217;s say a user comes to you and goes, your app just stole my bank account.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=3286">54:46</a>] Well, it&#8217;s going to sue you. They&#8217;re going to sue you. Not the AI. I mean, it&#8217;s like at the end of the day, someone has to take responsibility for what AI is doing. And if you&#8217;re giving it the keys, well, it&#8217;s on you. But I don&#8217;t know, I personally would not feel comfortable. I wouldn&#8217;t be able to go to sleep at night, I mean, if I didn&#8217;t understand what it is that I am vouching for.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=3313">55:13</a>] Why is there such a big difference between this opinion and what I see from maybe people who work at <a href="https://en.wikipedia.org/wiki/Anthropic">Anthropic</a>?</p><p><strong>Anders:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=3322">55:22</a>] Well, the difference is, all I&#8217;m saying here is not that AI can&#8217;t do amazing things. It does, it can. It does that every day. But people love these, like, take it all the way to 100%. Right. And that&#8217;s where I get off the bus a little bit. Right. I think, oh, yeah, okay, fine, we can get higher and higher percentage. But there still has to be someone understanding what&#8217;s going on and how it&#8217;s relevant to our business problem and how it relates to what our organization is doing.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=3353">55:53</a>] And like, I mean, there&#8217;s so many other things that have to be connected that it&#8217;s. I think it&#8217;s wrong to just view it as AI did it all and we were completely unnecessary, you know?</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=3364">56:04</a>] Yeah. The next one I was going to ask you was, you know, three years from now, will AI replace junior software engineers or what junior software engineers do today?</p><p><strong>Anders:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=3373">56:13</a>] Well, if it does, then how do we ever get senior software engineers? Right? I mean, it&#8217;s just like, I don&#8217;t think so. Well, I&#8217;m not. Unless you also believe that you will be able to do your business three years later than that without any senior software engineers.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=3390">56:30</a>] Right.</p><p><strong>Anders:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=3390">56:30</a>] Because where are they going to come from you got to train them, I mean. But to me, I think maybe one thing that to some extent has happened is that for certain classes of programmers, the pyramid has narrowed at the bottom. There are fewer people coming in, and we are wanting them to advance higher up faster so that they can get to this more supervisory role. I think the craft of being a software engineer is definitely changing from your typing in lines of code to you&#8217;re having agents type in lines of code and you are reviewing the work of the agents.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=3434">57:14</a>] So you do more reviewing, less typing. Some people love that and really are fantastic at that workflow. But it&#8217;s a change in nature of what the job looks like as a programmer and this tool that you now have in a toolbox is having that impact. But it is but a tool and there are still programmers involved in the process that I firmly believe.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=3462">57:42</a>] It sounds like you enjoy typing out the code. Would you be less happy if five years from now, for 40, 50 years I have enjoyed typing out code?</p><p><strong>Anders:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=3468">57:48</a>] I&#8217;m actually. And so I will continue to type certain parts of the code, but there are other parts of the code that I don&#8217;t particularly care to type. I don&#8217;t care to type in tests and follow all the rigor of the particular testing framework. Heck no. If I can farm that out to AI happy me, I do think reviewing has always been harder for me. It&#8217;s harder for me to spend time on reviewing other people&#8217;s code than it is writing the code.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=3504">58:24</a>] But I also think that over time we can make that process of reviewing code much more ergonomic than it is today. Right. I mean, often today you just get, here&#8217;s like a list of the files that were changed and here are the deltas. You figure it out. Right? I mean, AI could help us more there by explaining what the changes are and whatever. And so I think we&#8217;re going to get better at this. It&#8217;s going to get more interesting, but it will change the nature of, of the craft.</p><h3>58:52 &#8212; The most technically challenging work</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=3532">58:52</a>] You said that you&#8217;ve been writing code for 40, maybe 50 years. What is the hardest piece of code you&#8217;ve ever written? Or what&#8217;s the most technically challenging thing you&#8217;ve ever done?</p><p><strong>Anders:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=3546">59:06</a>] There are so many things that in their time were challenging. I mean, this last project we worked on, we knew that the easy part was getting the native code that&#8217;s just like just move it to this other language. But then taming this beast called shared memory concurrency and getting the compiler to use as many CPUs as there are available on your box that is not a simple problem to solve in a compiler because we&#8217;re all taught to write sequential stuff, right?</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=3588">59:48</a>] I mean, first you do this, then you this. But how do you do all of this at the same time and then share the data structures afterwards without anyone like accidentally modifying the other guy&#8217;s data structure? And you know, how do you, in the cases where you have to do that, how do you then synchronize it and avoid deadlocks and race conditions and whatever, Right? This, it was tricky. There were some good technical problems that we licked that I think we can be proud of, you know.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=3613">01:00:13</a>] But what about when hardware was more constrained earlier in your career? Is there any wacky thing you had to do to kind of, you know, make it work?</p><p><strong>Anders:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=3623">01:00:23</a>] Oh, totally. I mean, when I started, it was a. Like being a programmer was a very, very different thing, right. I mean, I started out with, with 8 bit micros that had <a href="https://en.wikipedia.org/wiki/Microsoft_BASIC">Microsoft Basic</a> in ROM, right? And then the BASIC interpreter and you could buy these books and type in these <a href="https://en.wikipedia.org/wiki/Star_Wars">Star wars</a> games or whatever. They were all text, you know, there&#8217;s just scrolling and telling you there&#8217;s <a href="https://en.wikipedia.org/wiki/Klingon">Klingons</a> over in that quadrant, you know, and K4, you got whatever, right.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=3655">01:00:55</a>] But I got fascinated with understanding how it was all put together and quickly learned how to write assembly code. And Turbo Pascal, the first product I worked on was all written in <a href="https://en.wikipedia.org/wiki/Zilog_Z80">Z80</a> assembly code. The compiler, the editor, the runtime library, everything was assembly and writing structured. A compiler in assembly code is like that. A lot of fiddling. And you were counting like, okay, I think we need to squeeze this into this <a href="https://en.wikipedia.org/wiki/EEPROM">EEPROM</a>.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=3690">01:01:30</a>] And then there&#8217;s only 12k and I&#8217;m 20 bytes over budget here. Oh, but I can make this jump, this long jump instead. I could jump to this short jump and then jumps to that jump and then I could save one. That&#8217;s one bite saved. Okay. You know, moving right along and you would just like sitting there fiddling, you know, it was a craft. It was like woodworking almost. I mean, it was just so different from what we do now, right?</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=3717">01:01:57</a>] Everything is now it&#8217;s bottomless pits of capacity and bottomless pits of expectation from users.</p><h3>01:02:04 &#8212; Top book recommendation</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=3724">01:02:04</a>] Right. Is there a top technical book recommendation you have for software engineers?</p><p><strong>Anders:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=3729">01:02:09</a>] I usually recommend the same, but the one book that was like the IT book for me when I was younger, and it&#8217;s called Algorithms plus Data Structures Equals Programs by Niklaus Wirth, the inventor of Pascal and then later Modular and <a href="https://en.wikipedia.org/wiki/Oberon">Oberon</a> and whatever. And it&#8217;s a book that is light on math and Symbolism and rich in instructive examples and good explanations about how data structures work. I mean, that&#8217;s how I learned about hash tables, right?</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=3763">01:02:43</a>] I mean, like, when you&#8217;re self taught, you don&#8217;t know about hash tables, you sort of know about linked lists, right? And fine. So in the original version of Turbo Pascal, all the symbol tables were just, well, they were just linked lists, you know, or whatever. And then of course, as you had many local variables, well, you&#8217;re going exponential in search time. And then I read about these hash tables and like, wow, what you mean I can just do this?</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=3791">01:03:11</a>] And then it&#8217;s basically like linear lookup time and implemented and the compile went twice as fast. Right? Like, holy cow, that was useful reading. Do you know what I mean? So I was always like the engineer, I mean, understanding how to do error recovery. He explains that in how you construct a simple compiler. And then like, you know, and it was, for me, a great book. And now it&#8217;s actually like, I mean, it&#8217;s just a big PDF, you can download it out there.</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=3826">01:03:46</a>] It&#8217;s out of print since 40, 30 years. Yeah.</p><h3>01:03:50 &#8212; Advice for his younger self</h3><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=3830">01:03:50</a>] Last question for you is, with all the experience that you have now, if you go back to yourself when you just entered the industry and give yourself some advice, what would you say?</p><p><strong>Anders:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=3841">01:04:01</a>] Well, a couple of things. Maybe like we talked about being a team player, you know, I would have probably tried to educate myself a bit more about that to begin with. I think also one thing in retrospect is like, don&#8217;t let people tell you that it can&#8217;t be done. When they tell you it can&#8217;t be done, it&#8217;s because they can&#8217;t do it. That doesn&#8217;t mean that you couldn&#8217;t possibly do it. Do you know what I mean?</p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=3869">01:04:29</a>] So, so don&#8217;t let that discourage you.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=3871">01:04:31</a>] Is there a project where you. Someone said you couldn&#8217;t do it and then you did it and that&#8217;s how you.</p><p><strong>Anders:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=3878">01:04:38</a>] Well, I think the first thing I worked on, like Turbo Pascal, people were telling me, whenever we told them, here&#8217;s what we have, they said, that can&#8217;t be done. That&#8217;s like, nah, you guys are beautiful. That&#8217;s like not possible, you know? Well, it was and I didn&#8217;t know that it wasn&#8217;t possible.</p><p><strong>Ryan:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=3895">01:04:55</a>] Right, awesome. Well, thank you for your time. I really appreciate it. Anders.</p><p><strong>Anders:</strong></p><p>[<a href="https://www.youtube.com/watch?v=cywK3XYYJ2o&amp;t=3898">01:04:58</a>] You&#8217;re welcome. No, this is a lot of fun.</p>]]></content:encoded></item><item><title><![CDATA[Creator of Lean: Handwritten Math Will Change Dramatically | Leonardo de Moura]]></title><description><![CDATA[In 2024, AlphaProof from Google Deepmind broke through in competition math achieving a silver-medal in Interational Mathematical Olympiad (IMO).]]></description><link>https://www.developing.dev/p/creator-of-lean-the-end-of-handwritten</link><guid isPermaLink="false">https://www.developing.dev/p/creator-of-lean-the-end-of-handwritten</guid><dc:creator><![CDATA[Ryan Peterman]]></dc:creator><pubDate>Mon, 10 Aug 2026 13:03:04 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/209970277/4b08d5b419149374be2933e522f2097d.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>In 2024, <a href="https://deepmind.google/blog/ai-solves-imo-problems-at-silver-medal-level/">AlphaProof</a> from Google Deepmind broke through in competition math achieving a silver-medal in Interational Mathematical Olympiad (IMO). At the time, that was an impressive breakthrough by formalizing math problems in Lean and then having an LLM try to advance the proof. Lean was essentially the scaffolding for a &#8220;game&#8221; that AI could play.</p><p>More recently, frontier labs like OpenAI have been generating massive candidate proofs to unsolved problems in frontier math <a href="https://openai.com/index/ten-advances-in-mathematics/">(e.g. OpenAI recently released these 10 advances)</a>. Lean plays a critical role in formally verifying these proofs.</p><p>I wanted to learn more about Lean so I talked with the creator, <a href="https://www.linkedin.com/in/leonardo-de-moura-26a27b5/">Leonardo de Moura</a> recently. He&#8217;s also a <a href="http://amazon.science/news/amazon-is-investing-in-the-lean-focused-research-organization">key scientist at AWS</a> for their neurosymbolic AI initiatives, bringing Lean and formal verification together to prove agentic AI systems correct. He explained how Lean works and why LLMs plus Lean will fundamentally change how we write software and do math. Hope you enjoy this episode!</p><p>Check out the episode wherever you get your podcasts: <a href="https://youtu.be/KzdYKeAqWhY">YouTube</a>, <a href="https://open.spotify.com/episode/34dbrI4zjw94K2R4S43BI3?si=ZiaycTbmTG6xgr3Ofq51Dw">Spotify</a>, <a href="https://podcasts.apple.com/us/podcast/the-peterman-pod/id1777363835">Apple Podcasts</a>.</p><div id="youtube2-KzdYKeAqWhY" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;KzdYKeAqWhY&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/KzdYKeAqWhY?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h1>Timestamps</h1><p><a href="https://www.developing.dev/i/209970277/0028-how-formal-verification-works">00:28 - How formal verification works</a></p><p><a href="https://www.developing.dev/i/209970277/0521-a-new-way-of-writing-software">05:21 - A new way of writing software</a></p><p><a href="https://www.developing.dev/i/209970277/1315-proof-assistants-vs-programming-languages">13:15 - Proof assistants vs programming languages</a></p><p><a href="https://www.developing.dev/i/209970277/2106-how-lean-has-assisted-in-mathematical-breakthroughs">21:06 - How Lean has assisted in mathematical breakthroughs</a></p><p><a href="https://www.developing.dev/i/209970277/3203-when-is-it-worth-formalizing-software">32:03 - When is it worth formalizing software</a></p><p><a href="https://www.developing.dev/i/209970277/3329-how-lean-will-impact-handwritten-math">33:29 - How Lean will impact handwritten math</a></p><p><a href="https://www.developing.dev/i/209970277/3855-the-z3-theorem-prover-project-he-started">38:55 - The Z3 theorem prover project he started</a></p><p><a href="https://www.developing.dev/i/209970277/4544-the-most-technically-challenging-work-of-his-career">45:44 - The most technically challenging work of his career</a></p><p><a href="https://www.developing.dev/i/209970277/5110-lean-vs-its-competitors">51:10 - Lean vs its competitors</a></p><p><a href="https://www.developing.dev/i/209970277/010037-the-future-of-lean">01:00:37 - The future of Lean</a></p><p><a href="https://www.developing.dev/i/209970277/010410-technical-book-recommendations">01:04:10 - Technical book recommendations</a></p><p><a href="https://www.developing.dev/i/209970277/010615-advice-for-his-younger-self">01:06:15 - Advice for his younger self</a></p><h1>Transcript</h1><h3>00:28 &#8212; How formal verification works</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=28">00:28</a>] There&#8217;s this famous <a href="https://en.wikipedia.org/wiki/Dijkstra">Dijkstra</a> quote I wanted to start the conversation with. It&#8217;s that program testing can be used to show the presence of bugs, but never to show their absence. And my understanding is that <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> and formalizing proofs can be used to show the absence of bugs. And so in your words, what is <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> and how do people use it to show bugs can&#8217;t occur in programs?</p><p><strong>Leo:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=59">00:59</a>] <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> is a programming language. You can write code, but you can also write proofs. You can reason about your code. You can write state properties about your code and prove them. <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> gives you machine-checkable proofs. You can check your proofs and get absolute assurance they are correct. You have many checkers, independent checkers, but you should view <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> as a platform. You can write code, you can write properties about your code, and you can prove them.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=90">01:30</a>] So could you give a concrete example? Because when I think of a proof, I think of what I learned in math. But then how do you couple that with the software that we write?</p><p><strong>Leo:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=102">01:42</a>] Yeah, it&#8217;s a great question. It&#8217;s not that different from proof. <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> is actually very popular for math, but for software verification, there are two very different use cases. You can reason about <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> programs. <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> is a programming language. You can write programs in <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> itself. Then a <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> program is not that different from a definition you have in math. The techniques are very similar. But if you want to verify programs written in a different programming language, there are basically two different approaches.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=140">02:20</a>] One of them, they translate, called shallow embedding. They translate for <a href="https://en.wikipedia.org/wiki/Rust">Rust</a>. This happens today. We have a tool called Aeneas that maps <a href="https://en.wikipedia.org/wiki/Rust">Rust</a> into <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a>, and you can verify the <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> translation. There&#8217;s another technique called deep embedding, where you have the semantics. You write a semantics of the programming language of C in. And now you have a data structure that represents a C program, and you can state properties about it, almost like your programs become <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> objects that you can reason about.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=178">02:58</a>] To make it really concrete, to give someone a sense of, here&#8217;s this thing I want to prove about a simple C program. Maybe no buffer overrun or something like that. What&#8217;s the step by step where we could use <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> to prove that?</p><p><strong>Leo:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=193">03:13</a>] Yeah, yeah. Let&#8217;s get an array. You&#8217;re trying to access an array in C. You want to make sure the index is in bounds. You&#8217;re not accessing elements that your array, for example, has 10 elements. You&#8217;re not trying to access element 11, right? Basically, you can write that. You can write something that says the value of i at this point in your program is going to be greater than or equal to 0 and less than 10.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=224">03:44</a>] You can write that as a mathematical statement. Another way to view it is that if you can express in math what you care about in your program, you can verify using <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a>. That&#8217;s another way to view it.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=242">04:02</a>] So I have my C source files, and then somehow there&#8217;s an equivalent <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> proof that&#8217;s almost like metadata on top of the C program.</p><p><strong>Leo:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=251">04:11</a>] Yes.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=252">04:12</a>] And that&#8217;s a line-by-line proof. And <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> will go and check.</p><p><strong>Leo:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=256">04:16</a>] Exactly. People will build automation for automating the process. They&#8217;re going to use techniques like Hoare triples, that says like we have a precondition, some mathematical facts that should be true before executing that statement, the statement and what is true after. Right. And they will have a lot of automation to process makes your proof modular. Right. I mean, complexity is a challenge in software verification.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=288">04:48</a>] Handling the complexity is a big deal. And all these frameworks for verifying programs, they are trying to manage the complexity, make your proofs modular, even if AI. Now AI can prove things automatically for us, but they have to be modular, the proofs, if you want them to scale.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=308">05:08</a>] And what you&#8217;re saying sounds similar to software, where you have to write it cleanly. It needs to be easy to edit and reason about. So it&#8217;s almost like a second software layer on top of the software.</p><h3>05:21 &#8212; A new way of writing software</h3><p><strong>Leo:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=321">05:21</a>] Yes, yes, you can view it this way. You can also flip it and imagine a future where you&#8217;re writing what you want mathematically, precisely, and AI synthesizing the code and a proof that the code that was synthesized meets your specification. Right.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=342">05:42</a>] Oh, interesting. So you could start by writing what you want to be true and then ask the AI, please.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=350">05:50</a>] And AI is going to just go and hammer at it until the <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> proof says you&#8217;re good.</p><p><strong>Leo:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=355">05:55</a>] Yes. It feels like science fiction. Six months ago, I would say this is science fiction. But for example, now a colleague of mine, Kim Morrison, a few weeks ago, she started a project I thought was, six months ago, I would say it&#8217;s not possible at all. She said, we have zlib, this compression library written in C. She says she creates a very complicated prompt for AI saying I want you to translate to <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a>.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=388">06:28</a>] Ensure the <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> version passes the test suites for zlib. Then I want you to prove that if you compress data and you decompress, you get the original data back. It&#8217;s a really strong property and, believe it or not, after one week, she succeeded doing the whole thing, and now it&#8217;s just asking to optimize the code. But you cannot break the proofs. You have to keep still proved all the properties you care about.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=422">07:02</a>] I mean compressing and decompressing, getting the data back is a really important property for a compression engine. Right? Yeah, this is rich now. I mean, surreal.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=436">07:16</a>] I mean, it&#8217;s crazy. And I hear in the industry, a lot of people use a really comprehensive test suite coupled with AI to do some really amazing rewrites because they have some more confidence that the rewrite is accurate and the AI can check itself. And it sounds like a specification is even better than a comprehensive test suite.</p><p><strong>Leo:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=465">07:45</a>] Yes, because your quote from <a href="https://en.wikipedia.org/wiki/Dijkstra">Dijkstra</a> captures it perfectly, right? With a test suite, you can show the presence of bugs, but not their absence. It&#8217;s almost like with a good test suite, you may say, well, probably there are no bugs here, but you may have a really corner case that&#8217;s not covered by your test suite. But with a proof, you&#8217;re covering all possible cases. So property-based testing is really popular now.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=499">08:19</a>] People are writing properties. They want to ensure they are true, but they are checking with testing. But now we can prove them. And you say, look, there&#8217;s no point testing anymore.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=512">08:32</a>] It seems like having a well-written specification is a superset of a test suite. But in terms of the human labor required to create a reasonable test suite versus a reasonable specification, how much more work is it to come up with a great specification? It varies a lot by the program.</p><p><strong>Leo:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=544">09:04</a>] In many cases, it&#8217;s not uncommon for someone to start developing a piece of software, and they don&#8217;t know exactly what the spec is. But properties are usually vaguely in your mind. Another thing that I tell people to keep in mind is that an inefficient program can be viewed as a specification. Usually, writing an inefficient program is way easier than writing the super efficient one that has many clever tricks.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=575">09:35</a>] You can write a very, this is what I want, in a very naive way. And you ask the AI, look, generate the efficient version and optimize and prove that equivalence to my inefficient one. There are many scenarios. I mean, I will not say this. Specifications are always easy to come up with. But properties, usually the developers have good ideas about properties they care about. An inefficient program is a spec, right?</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=608">10:08</a>] You can view it as a specification, and the technology form of verification complements testing, right? I think your quote from <a href="https://en.wikipedia.org/wiki/Dijkstra">Dijkstra</a> captures...</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=619">10:19</a>] Perfectly, and I think I saw this on Twitter because Jane Street was more heavily investing in formal verification, and I read their post, and they talked about this. I think it was seL4 or some software that was entirely formally verified.</p><p><strong>Leo:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=637">10:37</a>] Yes.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=638">10:38</a>] And the main drawback to why it wasn&#8217;t. You know how much more time would it take writing a program versus verifying it?</p><p><strong>Leo:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=648">10:48</a>] Your example, seL4, is a great example. This was a major milestone. It&#8217;s a microkernel they verified manually before AI. This project was done before AI was a big deal, and the cost is super expensive, right? At AWS, we have been using formal verification for decades, but only for the super-safe, critical components because it&#8217;s expensive. Until now, right? With AI, it changes the game.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=681">11:21</a>] You have to come up with a spec. But this is not the most painful part. The most painful part is developing the proofs manually. If you have tools before AI and maintain the proofs as you change the code, it&#8217;s messing you up. I&#8217;ve seen people complaining that, &#8220;Oh, I changed the program. Right now I have a bunch of failures in my test suites, and I have to patch them one by one.&#8221; Imagine with proofs, it&#8217;s the same process.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=710">11:50</a>] You have to fix the proofs. Sometimes you don&#8217;t remember anymore why. What&#8217;s the story behind this proof? It&#8217;s a lot. But AI is extremely good at proving, writing formal proofs, maintaining formal proofs. For example, yesterday I was changing something. I want to modify some proofs for technical reasons. I didn&#8217;t even know what the proofs were about. Someone else wrote. Then I said, look, I want you to&#8212;I asked AI to rewrite these proofs without using this feature because I&#8217;m going to change it.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=751">12:31</a>] I don&#8217;t want to break the libraries instantly. It came up with the new proofs for me. I mean, it&#8217;s really good. And this is crucial for making formal verification mainstream because otherwise maintaining the proofs was almost like if your program took X amount of time to do the formal verification in the past, it would take 10x. That would be normal. But imagine if your program is changing. That&#8217;s something that&#8217;s really common now.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=785">13:05</a>] You have to keep maintaining the proofs too. It&#8217;s a lot of work. But AI eliminates this pain for us.</p><h3>13:15 &#8212; Proof assistants vs programming languages</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=795">13:15</a>] You mentioned that <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> is a proof assistant, and then you also said it&#8217;s a programming language. Is that typical for proof assistants to be both a programming language and a proof assistant?</p><p><strong>Leo:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=810">13:30</a>] Some of them, especially the ones that are based on <a href="https://en.wikipedia.org/wiki/Dependent_type">dependent type theory</a>, they are like <a href="https://en.wikipedia.org/wiki/Rocq">Rocq</a> and <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> &#8212; programming languages and proof assistants, right? You can write definitions like when you&#8217;re defining concepts in math. But some of these definitions can be programs, and you have types, you have structures. It&#8217;s a programming language, but it&#8217;s in the family of what&#8217;s called functional programming languages.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=841">14:01</a>] I mean, is it a specific kind of programming language for people that are familiar with programming languages like <a href="https://en.wikipedia.org/wiki/Haskell">Haskell</a>? <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> is close to <a href="https://en.wikipedia.org/wiki/Haskell">Haskell</a>, but with the support for proofs. That&#8217;s a way to view <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a>.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=856">14:16</a>] Are there major use cases where people use it as a programming language but not as a proof assistant?</p><p><strong>Leo:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=861">14:21</a>] Well, the first big use case is <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> is implemented in <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a>. We have many of our tooling implemented in <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a>. Like the documentation authoring system called <a href="https://en.wikipedia.org/wiki/Recto_and_verso">Verso</a> is implemented in <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a>. The build system that&#8217;s called <a href="https://en.wikipedia.org/wiki/Lake">Lake</a>, like <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> make, is implemented in <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a>. At AWS, we have a compiler for AI accelerators. It&#8217;s half a million lines of <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> and using <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> as a programming language. They&#8217;re proving some properties about the program using <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a>.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=894">14:54</a>] But the main goal is to use <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> as a programming language. In this project, the proofs are like a bonus that you can get the proofs and find problems in the design.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=906">15:06</a>] I think most people are familiar with programming languages and the toolchains they have. But what are all the major components that you would need for a proof assistant?</p><p><strong>Leo:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=919">15:19</a>] It is not that different. I mean, if you&#8217;re used to modern programming languages like <a href="https://en.wikipedia.org/wiki/Rust">Rust</a>, the tooling, for example, <a href="https://en.wikipedia.org/wiki/Lake">Lake</a> is our <a href="https://en.wikipedia.org/wiki/Cargo">Cargo</a>, right? I mean, you&#8217;re going to open <a href="https://en.wikipedia.org/wiki/Visual_Studio_Code">Visual Studio Code</a> the same way. And I want to get all the IntelliSense. One big difference is that we have something called the Infoview in <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a>. Your screen usually is going to be split in two. You have your file on the right-hand side, you have the Infoview that tells you information about your proofs, about your code.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=955">15:55</a>] It&#8217;s giving you constant feedback about your development. That&#8217;s basically the main difference. But the tooling, VS Code, everything works the same way.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=966">16:06</a>] I mean, it seems like the programming language is the fundamental layer, and then there&#8217;s some additional layer on top that keeps track of that stuff.</p><p><strong>Leo:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=974">16:14</a>] Good question. In <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> you have definitions that show your program, but you have theorem statements. You&#8217;re going to say, for example, factorial is always greater than or equal to zero, or something like that. Or if you add two even numbers, you get an even number. You can write statements like that, and immediately you can write actually a program that&#8217;s the proof. But most people don&#8217;t do that. They go into something called tactic mode.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=1007">16:47</a>] You can view it as a domain-specific language for writing proofs. When you write &#8220;by,&#8221; it switches to this domain-specific language, and you have steps like &#8220;simplify my goal,&#8221; the state of my proof. You can say, &#8220;Oh, apply this rewriting step.&#8221; Apply, for example, we know that x + 0 equals x. You can ask <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> to apply this rewriting, and you&#8217;re going to see in the Infoview the state of the proof changing. You get immediate feedback, and you get this feeling that you said.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=1041">17:21</a>] You keep telling it, applying transformations to your proof step by step. You can see what&#8217;s happening until you get no goals left. You are done; the proof is complete. And some people view this process as a game. I have users that told me, &#8220;You built my favorite computer game.&#8221; That&#8217;s funny.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=1066">17:46</a>] Is <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> itself verified in <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a>?</p><p><strong>Leo:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=1069">17:49</a>] <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> is a massive program. You only have to trust the kernel, where the proofs are checked. <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> itself is the kind of program that, because there are so many new things we are adding, it&#8217;s not even clear what the specification is. For example, what is the specification of a simplifier? You can write general ideas, but users want to be able to customize the behavior. They keep asking; they keep changing the specification all the time.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=1098">18:18</a>] I want this, I want that. No, at this knob here. So it&#8217;s really hard to have a full specification of <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a>, but the kernel is possible to have a specification. We have a kernel. The kernel that comes with <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> is not verified. But there are other kernels that you can use. One of them is implemented by Mario Carneiro. It&#8217;s called <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> for <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a>, and it&#8217;s implemented in <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a>. And he&#8217;s verifying, it&#8217;s proving that this kernel has been verified with respect to the semantics of <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a>.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=1132">18:52</a>] This is a cool project, but for us, having multiple kernels is the best way to ensure that your results are correct. Some users implement their own kernels. We have kernels implemented in <a href="https://en.wikipedia.org/wiki/Rust">Rust</a> in different programming languages.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=1150">19:10</a>] And when you say kernel, what&#8217;s the responsibility, or what&#8217;s the input and output of that portion?</p><p><strong>Leo:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=1156">19:16</a>] Yes, in <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a>, proof checking is type checking. These kernels, they are type checking your programs. Basically, you can export your <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> developments. You get a big blob, and you read this blob, and they&#8217;re going to check it. When you say we have a proofing link, basically you have a term that has a type, and you&#8217;re checking if the type of this term matches the type that you claim it has. For example, the example for the even numbers, this is a typing link saying that the sum of two even numbers is an even number.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=1197">19:57</a>] You can view that it is exactly a typing link. And the proof, what the kernel is checking is whether the type of the proof matches the type you claim this term has. The kernel will check, you do this type checking. The kernels vary between high-performance kernel. It&#8217;s like 5,000 lines of code. I mean, the goal of the kernel should be something you can write yourself. Of course, sometimes people put bells and whistles. One thing concerns people have is like, okay, but how do I know?</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=1239">20:39</a>] Suppose that I wrote Fermat&#8217;s Last Theorem in <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a>. How do you know that when you export it, it&#8217;s really Fermat&#8217;s Last Theorem? It&#8217;s not 2 plus 3 equals 4. I mean, and people, some external kernels, they write print printers. I mean, it will print the statements that have been proved, all the dependencies. You can have all these fancy tools to make sure you&#8217;re not being misled.</p><h3>21:06 &#8212; How Lean has assisted in mathematical breakthroughs</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=1266">21:06</a>] <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a>, obviously, it&#8217;s so powerful, and I see on social media all these amazing results from formal verification. What are the top ones that you think of, or top examples more recently, that have impressed you that <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> was able to accomplish?</p><p><strong>Leo:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=1285">21:25</a>] Well, there are so many. I mean, I thought it was impossible. For example, getting a gold medal in the International Mathematical Olympiad a few years ago, everybody thought it was impossible. Now everybody use it as a benchmark of an easy problem. They say, oh, this is like an IMO problem. I mean, this is easy, but it&#8217;s not. I mean, these are really challenging problems. The other conjectures that people close using AI with <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> also impresses me.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=1319">21:59</a>] There is this unit distance conjecture for others. First, <a href="https://en.wikipedia.org/wiki/OpenAI">OpenAI</a> proved using formal was not formal. And we have a system now in <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a>. It&#8217;s a website where we call <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> Eval, where we collect challenges. The same Kim Morrison saw this proof <a href="https://en.wikipedia.org/wiki/OpenAI">OpenAI</a>, and she put on <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> Eval a challenge saying, okay, I want to see someone formalizing. We knew it was huge to formalize. It&#8217;s serious math. It depends on.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=1358">22:38</a>] And Boris Alexeev from <a href="https://en.wikipedia.org/wiki/OpenAI">OpenAI</a>, he did, he made a 1 million line proof for formal proofing <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> for this conjecture. We estimate something though that background math that is needed for the proof. We knew it would take months, I mean for experts to do by hand.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=1378">22:58</a>] I mean, how long did it take in that case? Like the time from when the proof came out to when the challenge was solved on <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a>.</p><p><strong>Leo:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=1386">23:06</a>] I think it was one month, yeah. And after Kim was a few, I think less than two weeks. After Kim puts as a challenge only involved, it took I think two weeks to get the, or less. I mean, that&#8217;s insane. Yes. Yeah, yeah.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=1404">23:24</a>] We talked about verifying programs, but also there&#8217;s using it just directly for mathematics, like in this case. How popular is <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> in terms of when you look at the users of <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a>? What percent are using it for software engineering? What percent are using it more for just direct math?</p><p><strong>Leo:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=1424">23:44</a>] Well, historically <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> got popular first with math, right? I mean, with the beginning of the <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> mathematical library in 2017, we had a big project called Liquid Tensor Experiment. It started beginning of 2020. It was a big deal because it was to verify a result from a Fields Medalist, Peter Scholze. It was a result he was unsure about. He has not published it. He felt like this was one of the most important results in his career.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=1462">24:22</a>] He wanted to be sure it was correct. It was done manually. The verification was a big deal because the team that formalized it, led by Johan Commelin, not only formalized the results without fully understanding it, they did not fully understand the proof. But having this Infoview helped guide them. Step by step, they formalized and simplified the proof without fully understanding the proof. It&#8217;s mind boggling.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=1494">24:54</a>] How can you simplify a proof from one of the greatest living mathematicians without fully understanding it? I mean, but they managed to simplify. It&#8217;s almost like when people do refactoring code, you start changing the code. It&#8217;s faster now, but the programmer doesn&#8217;t really know why it felt like that. It&#8217;s like you have a gut feeling, I mean, that you&#8217;re going in the right direction. And this, for us at the time, lots of people got excited about <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a>, the math community, because of this project. It&#8217;s shown that it&#8217;s not about verifying, but enabling people to work together in large numbers.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=1536">25:36</a>] Because you can trust, you don&#8217;t need to trust someone else&#8217;s proof. Right. They can fill holes for you. This was, I mean, what attracts a lot of attention from the math community. Then came Terence Tao. He starts using <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> after this project. He has really cool projects with and without AI. He got addicted, actually. I think the first time he used it, he said, &#8220;I don&#8217;t think I&#8217;m going to do it again.&#8221; The formal proof, one week later he had another project using <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a>, and he did a new result he had.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=1573">26:13</a>] When you say addicted, you mean because of that game, that completion engine.</p><p><strong>Leo:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=1577">26:17</a>] Yeah. Some people, I feel, we feel like when I talk to professors that use <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> for teaching, they tell me that the class is more or less split. Some people love it, some people don&#8217;t like it. But people that like problem solving, people that get medals in the IMO, they love <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> because you get this excitement of solving. It&#8217;s like solving millions of really hard Sudoku problems, right? And you can keep solving one, and it&#8217;s easy to get.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=1609">26:49</a>] I mean, I&#8217;m a <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> developer, not a <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> user. But when you&#8217;re developing <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a>, I&#8217;m coding in <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a>, and sometimes I have proved things. It&#8217;s really easy to get addicted. You get lost proving things. You get this buzz every time you prove something.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=1627">27:07</a>] You mentioned the IMO gold medals. How is <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> used in that kind of... I think maybe you&#8217;re referring to AlphaProof by DeepMind, or maybe something else.</p><p><strong>Leo:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=1637">27:17</a>] Yes, DeepMind was. They got in 2024 was a big surprise. In 2024 they got a silver medal. And now we have gold medals from startups like <a href="https://en.wikipedia.org/wiki/Harmonic">Harmonic</a>. <a href="https://en.wikipedia.org/wiki/ByteDance">ByteDance</a> got a medal. I never imagined. <a href="https://en.wikipedia.org/wiki/ByteDance">ByteDance</a>. They&#8217;re behind <a href="https://en.wikipedia.org/wiki/TikTok">TikTok</a>. Right. I didn&#8217;t even know they care about IMO math, but they have a 400 math team. They got medals. Also their prover is really good.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=1668">27:48</a>] So how&#8217;s it work? Let&#8217;s say, I mean, there&#8217;s a series of math problems. <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> is just used for verification, right? So I imagine there&#8217;s other components there.</p><p><strong>Leo:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=1677">27:57</a>] Yeah, there&#8217;s the AI. You can view it like we have Google. That was very popular with AI. The AI is playing the game. I told you that. Many people see <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a>, I guess. It&#8217;s the same. The AI is viewing <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a>, I guess. They have the statements of what you want to prove. You have the by keywords. Now you have a blank field. Make sure that you have no goals left. It keeps applying steps in this game and seeing the state of the board.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=1710">28:30</a>] That&#8217;s the Infoview changing. In the AI, they use reinforcement learning to try to get to no goals left. It&#8217;s a single-player game. Some people play together these days, but the AI is learning to play the game.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=1729">28:49</a>] So before we were talking about that game, it kind of starts with the specification. So in that case, then the problem is kind of the specification, and then it hammers over the problem.</p><p><strong>Leo:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=1740">29:00</a>] Yeah. You have basically, for each problem in the International Mathematical Olympiad, someone translates the statements to <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a>. It&#8217;s super important to have the mathematical library because you want to be able to talk about the problems, right? For example, suppose the problem uses the real numbers. You need a definition in <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a>, and we have it inside of mathlib, the <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> mathematical library. The first thing you have to do is be able to write the problems in <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a>.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=1767">29:27</a>] And this now because of mathlib, it&#8217;s the easy part. And after that you have to provide the proofs. I mean, sometimes some problems you have to come up with a definition to some objects you have to create that has some property. But yeah, that&#8217;s how it is.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=1787">29:47</a>] I remember you said one of the first use cases of <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> was this Fields Medalist had this novel mathematics, and then we used <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> to verify it. But can <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> be used with LLMs to generate novel mathematics, or just verify existing?</p><p><strong>Leo:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=1808">30:08</a>] It&#8217;s a good question. I mean, we don&#8217;t see lots of evidence. We see no evidence it can find novel proofs, right? But coming up with new mathematical concepts is still at the limits, right? I mean, right now in this <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> Eval, we have challenges where the AI has to come up with the objects themselves, right? I mean, but this is. People will keep investing in this area. I would not bet against AI here.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=1842">30:42</a>] I mean, but right now we don&#8217;t have evidence they can come up with new math.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=1894">31:34</a>] When I see on Twitter this major conjecture, they made headway on it. It&#8217;s that they made headway on confirming something or disproving.</p><p><strong>Leo:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=1903">31:43</a>] They also have these 1 million lines. They showed the conjecture was false. They have a proof showing that it&#8217;s false, but it&#8217;s a formal proof. They did not come up with a new theory or anything like that. They are coming up with a proof, right?</p><h3>32:03 &#8212; When is it worth formalizing software</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=1923">32:03</a>] And at what point would you say someone should evaluate formalizing something in <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a>?</p><p><strong>Leo:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=1932">32:12</a>] I think if it&#8217;s safety-critical or if you don&#8217;t understand it really well, I mean this is an important part. I don&#8217;t really understand. Anybody that went through the process of formalizing something understands the subject way better after that. I almost feel like I remember when I was in college, people would say, wow, after I implemented this algorithm, now I understand it much better. The next level is that you implement the algorithm, you prove the properties you expect, your level of understanding grows.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=1972">32:52</a>] Another cool thing is that it enables you to be much more bold on your optimizations, because sometimes I&#8217;ve seen that all the time. People fear implementing optimization because they don&#8217;t really understand why the piece of software works. They feel like if I do, that still works and it&#8217;s faster. But they are not confident with proofs. You eliminate this discomfort, right? You can prove it again, or the AI can prove it for you or find a counterexample.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=2006">33:26</a>] They are good at both things.</p><h3>33:29 &#8212; How Lean will impact handwritten math</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=2009">33:29</a>] But if you were to speculate or draw into the future, maybe three to five years from now, if the cost of formalizing things goes down, how does that change software? How does that change handwritten math?</p><p><strong>Leo:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=2026">33:46</a>] Oh, I think it would change dramatically. We have to keep in mind the big labs, they only started training for formal verification and <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> very recently. Seriously, before that, it was like, oh, is in the data sets. I mean, you don&#8217;t really have the reinforcement learning pipelines to optimize the behavior we see today. That is already amazing. Will get way better in the future. The costs will reduce. Programming languages like <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> and <a href="https://en.wikipedia.org/wiki/Rocq">Rocq</a> will become more mainstream.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=2063">34:23</a>] Because of that, many people are not so, in the past, people say, &#8220;Oh, functional programming, I don&#8217;t like it.&#8221; But if I&#8217;m not the one that&#8217;s writing most of the code anyway, it doesn&#8217;t really matter. What matters? The specification level, right? It doesn&#8217;t really matter how the code has been written. Yeah, I think you change a lot because of that. At least that&#8217;s the direction we are pushing <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> to.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=2093">34:53</a>] What about, let&#8217;s say, 10 years from now? <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> is, everything&#8217;s going really well with <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a>. Could that be the end of handwritten math or handwritten proofs?</p><p><strong>Leo:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=2107">35:07</a>] I think there will always be aspects that are handwritten. Some people like to make a proof look. They want to use the proof as an artifact. You communicate ideas to others. I can&#8217;t imagine there will always be people polishing, making them super easy to understand for another human to communicate ideas to other people. There will always be people like that. The same way today we have people that, we have machines that build furniture, but people, they like to create them by hand and polish them, make them perfect.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=2151">35:51</a>] This will always exist, but it will be a mixture. I will be surprised if there is someone who&#8217;s completely AI is not in their workflow somehow. Right. I mean, there&#8217;ll be hybrids, many hybrids. Some people feel uncomfortable about this future, but for me, it&#8217;s super exciting because I view developing software as a super painful process. And with AI, it&#8217;s crazy how it brings you awareness of how many steps are just repetitive and there&#8217;s no creativity, or just patching things.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=2197">36:37</a>] And AI automates and removes lots of this pain, right? I mean, I cannot go back to that. I&#8217;m looking forward to this future you describe.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=2210">36:50</a>] Yeah, I guess the thing that gives people. I mean, I&#8217;m guessing the discomfort is the worry that if it kept going, then we need less mathematicians or less computer scientists or something like that.</p><p><strong>Leo:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=2225">37:05</a>] People don&#8217;t see that AI can bring more people. There&#8217;s also the specification. I mean, I see people saying, oh, we are going to leave AI, we come up with new math. But if there&#8217;s no connection to our world, this is some alien thing that&#8217;s going by itself. You need an interface, for example. We want to build programs because we want to accomplish something. This something, whatever it is, has a specification.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=2259">37:39</a>] There will always be humans in the loop saying this is what we know, this is what we want, writing this interface, interacting with the AI. The AI will have math libraries and everything to prove things about these programs we are writing, these artifacts, whatever we are trying to build. But we have to be able to interact with these libraries. We have to understand the abstractions that are there.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=2292">38:12</a>] I don&#8217;t see humans being eliminated. We are always going to be there. We are in the interface, we are telling them what we want. Specifications will be there. I can see people always writing code. Another thing is, a lot of people like to write this, and love coding. My interpretation is they love to write prototypes. This is fun. This is the fun part, to try a new idea. But to transform it into a product is never fun.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=2325">38:45</a>] I can tell you it&#8217;s never fun. And I can take over these parts. Nobody really likes doing outside of <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a>.</p><h3>38:55 &#8212; The Z3 theorem prover project he started</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=2335">38:55</a>] I know you worked on the Z3 SMT solver, and that sounds like a really difficult thing to build. So first, what is that solver in your words? And yeah, how does it differ from a SAT solver?</p><p><strong>Leo:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=2350">39:10</a>] Yeah, I started this really long time ago. It&#8217;s going to be, yeah, 20 years ago I started Z3, I mean when I joined Microsoft Research. Yeah, Z3 is an SMT solver. Like I said, solver. But you have background theories, like you have support for arithmetic, for arrays. These are not random choices, right? This is because we use it for doing test case generation, software verification. Z3 is fully automated. It&#8217;s a push button.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=2385">39:45</a>] Although <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> and Z3 are called theorem provers, they are completely different beasts. Z3 is fully automatic. <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> is interactive. It has automation, but it&#8217;s interactive. Z3 is not a programming language, it&#8217;s more like a constraint solver. It turns out you can prove simple things about it. You cannot do advanced math with abstract math. You can solve constraints with Z3.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=2416">40:16</a>] What&#8217;s an example of the inputs to this SMT solver, and what do you get out of it?</p><p><strong>Leo:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=2422">40:22</a>] Oh, I can give you one. I mean that&#8217;s even in the Z3 manual. You can encode a Sudoku problem as a set of constraints, and you can ask Z3 to solve it. It will give you back the answer instantaneously. For real applications, Z3 was used very successfully for finding bugs in software. People would convert. For example, suppose that you have a path in your code. You know that has a security vulnerability, but you don&#8217;t know which inputs to the program allow you to execute this path.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=2458">40:58</a>] You can convert that into a set of constraints that you send to Z3, and it will say unsatisfiable. It means it&#8217;s impossible to execute this path and you are happy. Or it gives you back an example saying, look, with these inputs you&#8217;re going to be able to do it. And people use it for doing software verification. But because the problem becomes undecidable at that level, you have many universal quantifiers for stating properties about your program, your pre- and postconditions.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=2495">41:35</a>] The solver has heuristics, and this was all before AI. The heuristics were hand coded. They would always fail. And for simple things, people would be very happy with the fact that Z3 is push button. But when the property is not trivial, they would come back saying, &#8220;Come on, I know the proof. I mean, why can&#8217;t Z3 find it?&#8221; That&#8217;s why <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> started. I started <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> to make sure that we would have a system that&#8217;s really good for software verification, right?</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=2527">42:07</a>] Z3 was successful for finding bugs, but not so much for software, for proving the absence of bugs. It was never super successful there. But <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> was born to fill this gap.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=2545">42:25</a>] You said undecidable, but in practice, in the real world, if you run it, does it typically terminate?</p><p><strong>Leo:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=2552">42:32</a>] Yeah, great question. Z3 goes the whole complexity ladder, right? You have SAT solvers, you have NP-complete, PSPACE-complete, EXPTIME-complete, you have the whole two undecidable rights. I mean, surprisingly, even for SAT solvers, you can write really tiny SAT problems that are really hard to solve. No SAT solver will solve them. But in practice, the problems we get for hardware verification, especially if you bound everything, say, oh, I&#8217;m trying to look for a bug in the first 10 steps, right?</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=2593">43:13</a>] Everything&#8217;s bounded. You&#8217;re not trying to prove, but you&#8217;re trying to capture a class, like a space of scenarios, right? They are very effective there. I mean, I think the lesson there is that programs and hardware, they are not correct for esoteric reasons, right? They are correct because for very simple reasons. I mean, that&#8217;s why these tools are super effective there. Yeah, but when you get too undecidable and you&#8217;re trying to prove, even if the property is not trivial there, I mean, it runs out of steam.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=2636">43:56</a>] I mean, and they time out frequently. And sometimes there is a colleague of mine here at <a href="https://en.wikipedia.org/wiki/Amazon_(company)">Amazon</a>, Iminator chose the name proof instability because sometimes if you change the problem, you just flip. You have A and B, you write B and A, where B and A are complicated formulas, you may fail to prove. And when she was just trying to maintain things, proofs would break if using this kind of technology.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=2668">44:28</a>] But with <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a>, she switches to <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a>, and it&#8217;s super smooth, right? Because you&#8217;re controlling the proof in the <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> case.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=2680">44:40</a>] Why is it so much more efficient?</p><p><strong>Leo:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=2683">44:43</a>] Your proof is basically, you can view the sequence of steps for solving the problem. In Z3, you can view that you have only one proof step, solve, right? I mean, you&#8217;re saying you have options to solve goals, but you have very little. You cannot influence what Z3 is going to do. It&#8217;s much harder to influence this kind of system. In <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a>, if you want to give a step, super detailed, step-by-step proof, you can. You can use proof automation like is available in Z3, but you can also break it down step by step.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=2725">45:25</a>] And the fact you can do that, humans can do it. But the happy surprise is that AI can do it because now you can say step by step why something is true. The AI can convince <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> that it can provide a proof.</p><h3>45:44 &#8212; The most technically challenging work of his career</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=2744">45:44</a>] When you were working on Z3 and <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a>, what was the most technically challenging part that you had to build for either project?</p><p><strong>Leo:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=2755">45:55</a>] I underestimated how much harder <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> is in comparison to Z3. It&#8217;s always a magnitude harder. I mean, I talked to many colleagues about that, why I felt like this <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> was so much harder. I think it&#8217;s the surface. The interface for humans is way fuzzier. You have a defined language for it. It&#8217;s called SMT-LIB. It&#8217;s a very simple language. It&#8217;s not meant for humans; it&#8217;s meant for tools. I mean, Z3 is used as the backend of many different tools.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=2792">46:32</a>] Someone generates some program generating input for Z3, and people expect a counterexample or saying it&#8217;s impossible, it&#8217;s unsatisfiable to come up with a counterexample. The interface is really, really simple, right? You can view Z3 as a command-line tool that you pass this file on this very low-level language that&#8217;s super easy to parse, and you come back with yes or no. And <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> is a programming language.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=2824">47:04</a>] You have libraries, you have mechanisms, you have interactivity, you have user interface, you have LSP, you have build system, you have GitHub. You have, it is so vast. That&#8217;s another challenging part for me. As I mentioned, Z3 was a backend. The Z3 users are very sophisticated software developers, people that speak the same language I speak. It&#8217;s way easier to talk to people that speak the same language.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=2861">47:41</a>] With <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a>, it&#8217;s completely different. The first users are all math people. They have a completely different background, different expectations, different everything, and different community. And then you have people that want to choose <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> as a programming language. I&#8217;m not a programming language person. My background is automated reasoning. And yeah, it&#8217;s a different language, different expectations.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=2891">48:11</a>] Was there a singular component that was just really technically challenging?</p><p><strong>Leo:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=2898">48:18</a>] I told you that <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a>&#8216;s implemented in <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a>. Of course, it was not always like that, right? I mean, it had to be implemented in something else at the beginning. The switch from originally was C++. The switch from C++ to <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> was extremely painful. Really? Really. I remember I literally wanted to cry when I managed to compile <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean 4</a>. I was just... Sebastian Ulrich and I at the time were building <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean 4</a> together.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=2936">48:56</a>] But this was before we had a nonprofit for <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a>. I remember calling him and I said, wow, man, insane. Say, are you not excited? He said, yes, I am. I mean, super excited.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=2953">49:13</a>] What made that switch hard?</p><p><strong>Leo:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=2956">49:16</a>] The first thing is, imagine you&#8217;re going to implement the language in itself. The first thing you want is to minimize the number of features as much as possible, is that you want to implement <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> using bare-bones features. Because you&#8217;re going to have to be able to compile it with itself then. Now you have like 100,000 lines, more or less. I don&#8217;t know the exact number, but it was around 100,000 lines.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=2988">49:48</a>] And you start trying to compile, you fail the first. You can&#8217;t even compile the first file in the pipeline, the one that more than 1,000, and the first one fails, then you fix the bug, you can compile the first one, then you can compile the second, and you keep moving, and you are always finding discrepancies between the new and the old one. And you&#8217;re trying to reconcile, make things easier for the new one because you want to replace the old one.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=3022">50:22</a>] This process and <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> is a complicated language because of these <a href="https://en.wikipedia.org/wiki/Dependent_type">dependent type theory</a> and so on. The proofs, for example, when you&#8217;re implementing <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a>, you still need some proofs there. There are some basic proofs you need, but you have to construct these proofs with no interactivity, nothing. Bare bones. You have to provide the proof too. It&#8217;s almost like programming in assembly. The proof. This was also super painful.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=3055">50:55</a>] Thank God. Yeah. But it took. Yeah. Many people thought we were going to fail. Sebastian, I would not be able to do it.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=3065">51:05</a>] 100,000 lines is a lot, like all human written.</p><p><strong>Leo:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=3067">51:07</a>] Yes, all human written. Yeah.</p><h3>51:10 &#8212; Lean vs its competitors</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=3070">51:10</a>] We talked a lot about <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a>, and I know there are competitors to <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a>. What are the pros and cons of the different proof assistants? In what scenarios is one preferred over the others?</p><p><strong>Leo:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=3083">51:23</a>] For instance, the first disclaimer: I&#8217;m a completely biased person here, right? But I can tell you what users tell me about. For example, one thing users love is the fact that <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> is super extensible. Because <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> is implemented in <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a>, you can add extensions. So imagine you&#8217;re doing your math proof. In the middle of this math proof, you say, oh, I want this fancy automation here. You can write in the same file, or the AI can write for you, the extension for automating a proof.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=3117">51:57</a>] And it will do it. I mean, even the AIs, they know about the fact that <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> is extensible. If I ask the AI to isolate an issue in <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a>, I give the AI a <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> file. It will start writing a <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> metaprogram, a program about <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> tunnels to validate the conjecture it has about why it doesn&#8217;t work. It&#8217;s crazy. It keeps writing <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> meta extension there. The fact that <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a>&#8216;s extension is popular, really popular with so many people.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=3153">52:33</a>] For example, there is Patrick Massot. He&#8217;s a French mathematician. He wrote something called <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> Verbose. <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> Verbose you can use for teaching. We have this language for writing the proofs, but he made the language look like English, and he has the Infoview now. You can click there. It gives you suggestions about the next move that&#8217;s written in structured English, like you find in a textbook.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=3187">53:07</a>] You see, the student has a really good idea on how to write informal math proofs. And he did that without asking me any questions. I mean, all this stuff, the point and click, the new language, the new interactivity, he did all by himself. He&#8217;s not a computer scientist. He has a math degree and he does all this stuff. And it&#8217;s for English and French. I mean, you can choose, you can write the proofs in French and it looks like textbook proof.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=3221">53:41</a>] I mean, there are people that write visualizations. You&#8217;re trying to prove something about a math object. You can write extensions that visualize these objects in your Infoview. The people that write new domain-specific languages embedded in <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> for different purposes. For example, for protocol verification there is a language called Veil. It&#8217;s a <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> file. You open Veil, you feel like it&#8217;s a different system for protocol verification, but it&#8217;s just a <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> file with these extensions for protocol verification, the language for writing protocols in a very convenient way.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=3265">54:25</a>] These folks wrote the whole thing without ever talking to us. They all talked to us after they had done it, said, &#8220;Look, I want this part of <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> to be faster.&#8221; That was the only interaction we had. And so interactivity is a big deal. Another big deal now is the mathematical library. It&#8217;s vast. I mean, for stating problems, open conjectures, you need a library with the concepts to even state the problem.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=3296">54:56</a>] So <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> has a massive library and a massive community. The community also plays a big role. Before AI, I think now most people ask questions about <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> to AI. But in the past, people would go to the <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> Zulip channel, ask a question about <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a>. They would get an answer in five minutes. People would say human beats AI. I mean, people would be writing answers instantaneously to your problems. The community played a big role.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=3329">55:29</a>] Another one was we listen to our users. I mean the math. I mean if you talk, for example, <a href="https://en.wikipedia.org/wiki/Jeremy_Avigad">Jeremy Avigad</a> was the first user. I mean he has math backgrounds. You ask him, look, he said, look, I could ask anything, any new feature, I would get back the same day. I mean fix the new feature same day. And this attracts people, right? I mean, because you&#8217;re making people improvements, making sure the system does what they want, they come back for more.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=3370">56:10</a>] I mean, this also has a huge impact in growing the community.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=3376">56:16</a>] When I was doing some research, there was this idea I think you mentioned in this conversation too. There&#8217;s this <a href="https://en.wikipedia.org/wiki/Dependent_type">dependent type theory</a> proof assistant, and then there&#8217;s <a href="https://en.wikipedia.org/wiki/Higher-order_logic">higher-order logic</a>. What is that difference there?</p><p><strong>Leo:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=3389">56:29</a>] At the beginning when I started <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a>, I won&#8217;t choose <a href="https://en.wikipedia.org/wiki/Higher-order_logic">higher-order logic</a> because it&#8217;s much easier to implement. I mean, <a href="https://en.wikipedia.org/wiki/Dependent_type">dependent type theory</a> is way harder. But the math community, I mean, Jeremy is the one that convinced me that I would never be able to attract serious mathematicians like Fields Medal-level math people with <a href="https://en.wikipedia.org/wiki/Higher-order_logic">higher-order logic</a>. Right? His point is that <a href="https://en.wikipedia.org/wiki/Higher-order_logic">higher-order logic</a> is good for concrete math.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=3421">57:01</a>] But if you want to talk about abstract objects, <a href="https://en.wikipedia.org/wiki/Dependent_type">dependent type theory</a> is way more powerful, and it&#8217;s beautiful. It&#8217;s easy to explain. Why is it called dependent? For example, you can have a structure in <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> when you have several fields, like X and Y are natural numbers or integers, let&#8217;s say integers. You can have another field. The type of the field is a proof that X is greater than Y. The type of these fields is X.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=3452">57:32</a>] Let&#8217;s call it greater colon. You say X greater than Y. The type depends on the value of the previous fields. That&#8217;s why it&#8217;s called <a href="https://en.wikipedia.org/wiki/Dependent_type">dependent type theory</a>. You can have types that depend on the values of other parameters, other fields, and so on. But the beautiful thing about that is that you have this very small language that is so expressive. For example, this field, now that&#8217;s a proof. You have to provide a proof.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=3485">58:05</a>] You can view it as an invariant. I can only build elements of this type if I give the X and Y, like in other programming languages. But I have to give a proof that X is greater than Y. It&#8217;s impossible to construct elements without providing this evidence, right? You can view this as an invariant. You don&#8217;t have to invent invariants, right? The language is just the fact you have these dependencies; you can express them in the functions.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=3517">58:37</a>] You can have a function, for example, that says it takes X, a Y, and a proof that Y is different from zero, right? I mean, it&#8217;s impossible to call the function if you do not provide evidence that Y is different from zero. This was always cool, but in the past people would say, wow, providing these proofs is really annoying. But with AI now, the AI can synthesize the proofs for you, and it&#8217;s really cool.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=3547">59:07</a>] In <a href="https://en.wikipedia.org/wiki/Higher-order_logic">higher-order logic</a>, though, could you express the same?</p><p><strong>Leo:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=3550">59:10</a>] No, no, that&#8217;s... You cannot. You don&#8217;t have that. You lose the dependencies. For example, one thing that you cannot do in <a href="https://en.wikipedia.org/wiki/Higher-order_logic">higher-order logic</a> in <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a>. In serious math, people have a bunch of structures they manipulate. You have something, a field, I mean a ring, a group. You can write a function in <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> that takes a group and turns it into a new group, a new structure. You&#8217;re not manu.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=3583">59:43</a>] You don&#8217;t really care about the elements of the structure. You are viewing the structure as a first-class citizen. That&#8217;s something that <a href="https://en.wikipedia.org/wiki/Dependent_type">dependent type theory</a> can do easily; in <a href="https://en.wikipedia.org/wiki/Higher-order_logic">higher-order logic</a>, you have to play encoding tricks. It&#8217;s a mess. I mean, some people say, &#8220;Oh, it works for me.&#8221; None of the mathematicians agree with this statement. None. I mean, you talk to Terence Tao, to Alex Kontorovich, <a href="https://en.wikipedia.org/wiki/Jeremy_Avigad">Jeremy Avigad</a>, Kevin Buzzard, Patrick Massot, they would say, no, no, you have to do <a href="https://en.wikipedia.org/wiki/Dependent_type">dependent type theory</a>.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=3618">01:00:18</a>] I mean, that&#8217;s another example for me that listening to your users is important. If you want to appeal to this community, it&#8217;s totally okay to say I don&#8217;t care about this community. But if you care, listening to what they really want is important.</p><h3>01:00:37 &#8212; The future of Lean</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=3637">01:00:37</a>] So when we think about the future of <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a>, I&#8217;m curious to hear your thoughts on where you think <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> is going, things you&#8217;re excited about in the future. What might it look like in a few years?</p><p><strong>Leo:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=3651">01:00:51</a>] Yeah, I think we have these nonprofits behind <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> since 2023. I mean, <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> is 13 years old. The first 10 years was a such project, right? I mean, only when we got the nonprofits behind <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> that it became, you can view it as a product. You have a team of engineers, and we managed to do it because of the impact on math. But Sebastian Ullrich and I, we co-founded this nonprofit. What we are really excited about is <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> as a programming language.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=3689">01:01:29</a>] A programming language where you can prove things about your programs, right? That&#8217;s a direction we are pushing really hard. <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean 4</a>. We are super grateful for AWS, <a href="https://en.wikipedia.org/wiki/Amazon_(company)">Amazon</a>. They&#8217;re making the largest donations so far to these nonprofits, where the goal is to accelerate this path. I mean, <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> is doing super well in the math path. But let&#8217;s make <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> a programming language, <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> a system for software verification, hardware verification.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=3721">01:02:01</a>] Let&#8217;s push to the extreme. Let&#8217;s give some love to these people, to this path that&#8217;s right. Now we do not really have funding to push seriously this path. That&#8217;s the nonprofits, right? For me to be in a world where you can reason about your code is part of my life. I&#8217;m not writing unit tests anymore. I&#8217;m writing properties and proving them. The AI is proving most of them. For me, this is the direction we are pushing hard.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=3757">01:02:37</a>] And one thing that people don&#8217;t realize is that when you have proofs, it enables optimizations for free. You can ask the, for example, today, if you ask the AI to optimize, you have to inspect the code to make sure no bugs were introduced in the process. But if the AI is telling you, look, I optimized it, it still computes the same thing. Here&#8217;s the proof. Game changer in my point of view.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=3790">01:03:10</a>] Yeah, I&#8217;ve heard multiple people say this decade will be the decade of formal verification of software. And yeah, maybe <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> will be a huge part of that.</p><p><strong>Leo:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=3803">01:03:23</a>] Yeah, for sure. We&#8217;re super excited to make it happen. Scalability is super important, right? Because there is a big difference between math and software verification. In math, the statements are usually really tiny or small. I mean, Fermat&#8217;s Last Theorem is an example. I mean, super small. But the proof&#8217;s insanely cheap. For software verification, it&#8217;s the opposite, right? The statements are big.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=3839">01:03:59</a>] I mean, but the proofs are shallow. The reason why this is shallow, but you have to manipulate these big objects, right?</p><h3>01:04:10 &#8212; Technical book recommendations</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=3850">01:04:10</a>] So for someone who wants to learn more about formal verification or learn more about <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a>, do you have a top technical book recommendation in the <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> websites?</p><p><strong>Leo:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=3858">01:04:18</a>] I mean, we have several books there that introduce <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> Functional Programming, <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> Theorem Proving, <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> Mathematics, and <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a>: The Mechanics of Proof is great for educational purposes. We have a collection of proofs. If people go to <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">lean</a>-lang.org, you find all these books there. But one thing I tell people these days is that learning <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> using AI is super efficient. I mean, you keep talking to AI in natural language, asking what do you want?</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=3903">01:05:03</a>] Asking it to write examples. Many people split the screen in three now, right? We had the <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a> code, the Infoview, and on the bottom. Now many people use an AI agent there that&#8217;s writing the code and explaining in natural language what&#8217;s going on there. It&#8217;s a super effective way. I mean, Terence Tao, he told me when he learned <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a>, he uses the old version. It was before agents. He would have ChatGPT on one window and <a href="https://en.wikipedia.org/wiki/Visual_Studio_Code">Visual Studio Code</a> in the other window, and he would copy and paste between them.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=3941">01:05:41</a>] And that&#8217;s how he learned. But now it&#8217;s even more effective with the AI agents. It&#8217;s easy to pick up. I mean, just talk to the agent. Sometimes people say, how do I start? Start talking to the agents. It will help you, it will customize. Right? You can explain what you know already, right? I mean, what&#8217;s your background? And for example, if you tell, oh, I know <a href="https://en.wikipedia.org/wiki/Haskell">Haskell</a>, it&#8217;s so much easier, right?</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=3972">01:06:12</a>] You can customize the process.</p><h3>01:06:15 &#8212; Advice for his younger self</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=3975">01:06:15</a>] And then last question for you is, if you could go back to the beginning of building C3, building <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a>, and give yourself some advice, knowing what you know now, what would you say?</p><p><strong>Leo:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=3988">01:06:28</a>] I&#8217;ll keep it a secret. I mean, I think eagerness is bliss. I mean, you don&#8217;t know how hard things are, and when you start the adventure, maybe I&#8217;ll keep secrets. What I would tell, I think one thing, especially before starting <a href="https://en.wikipedia.org/wiki/Lean_(proof_assistant)">Lean</a>, I&#8217;m super introverted. And I would tell, look, you should work on your people skills because it helps a lot. I mean, when you have to interact with a community, with people.</p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=4018">01:06:58</a>] For me, it was hard to learn that, and I would tell myself, I think it&#8217;s really important to have people skills, too.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=4026">01:07:06</a>] Well, thank you for your time today.</p><p><strong>Leo:</strong></p><p>[<a href="https://youtu.be/KzdYKeAqWhY?t=4028">01:07:08</a>] Thank you. Thank you.</p>]]></content:encoded></item><item><title><![CDATA[Creator of Lua: Scripting, Programming Languages, Predictions | Roberto Ierusalimschy]]></title><description><![CDATA[When I worked at Instagram, most of the codebase was in Python but occasionally I&#8217;d see these bindings into C++.]]></description><link>https://www.developing.dev/p/creator-of-lua-scripting-programming</link><guid isPermaLink="false">https://www.developing.dev/p/creator-of-lua-scripting-programming</guid><dc:creator><![CDATA[Ryan Peterman]]></dc:creator><pubDate>Mon, 03 Aug 2026 13:05:15 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/207184056/e7e481befa19d616fb4655496dfdc9b3.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>When I worked at Instagram, most of the codebase was in Python but occasionally I&#8217;d see these bindings into C++. I never really understood how that worked and just took it for granted since some other infra team had set that up.</p><p>In this conversation with <a href="https://en.wikipedia.org/wiki/Roberto_Ierusalimschy">Roberto Ierusalimschy</a> (the creator of Lua), he finally clarified how this cross-language mechanism works for me. It was relevant since Lua is a scripting language purpose built to be embedded in other languages.</p><p>The programming language is famously used in World of Warcraft and Roblox where you have all the high performance rendering code written in something like C/C++. The parts of the game that change frequently though are written in Lua and called from that lower level language.</p><p>He also had some interesting recommendations on programming languages (aside from Lua) that he&#8217;d recommend people learn to expand their minds.</p><p>Check out the episode wherever you get your podcasts: <a href="https://youtu.be/jCZnFKk6M9A">YouTube</a>, <a href="https://open.spotify.com/episode/3SWEjGkoNCdgSEvOA1sU1A?si=8VrcgJWHQkm8suGWO-Ud8Q">Spotify</a>, <a href="https://podcasts.apple.com/us/podcast/the-peterman-pod/id1777363835">Apple Podcasts</a>.</p><div id="youtube2-jCZnFKk6M9A" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;jCZnFKk6M9A&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/jCZnFKk6M9A?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h1>Timestamps</h1><p><a href="https://www.developing.dev/i/207184056/0043-what-sets-lua-apart">00:43 - What sets Lua apart</a></p><p><a href="https://www.developing.dev/i/207184056/0835-comparing-lua-with-python">08:35 - Comparing Lua with Python</a></p><p><a href="https://www.developing.dev/i/207184056/1304-top-book-recommendation-on-language-design">13:04 - Top book recommendation on language design</a></p><p><a href="https://www.developing.dev/i/207184056/1420-how-jit-works-and-why-it-is-hard">14:20 - How JIT works and why it is hard</a></p><p><a href="https://www.developing.dev/i/207184056/2321-compiling-python-and-interpreting-c">23:21 - Compiling Python and interpreting C</a></p><p><a href="https://www.developing.dev/i/207184056/3031-how-cross-language-calls-work">30:31 - How cross language calls work</a></p><p><a href="https://www.developing.dev/i/207184056/3658-lua-unique-design-decisions">36:58 - Lua unique design decisions</a></p><p><a href="https://www.developing.dev/i/207184056/5117-predictions-for-ais-impact-on-languages">51:17 - Predictions for AIs impact on languages</a></p><p><a href="https://www.developing.dev/i/207184056/010010-top-3-languages-to-learn-to-become-a-better-engineer">01:00:10 - Top 3 languages to learn to become a better engineer</a></p><p><a href="https://www.developing.dev/i/207184056/010321-advice-for-his-younger-self">01:03:21 - Advice for his younger self</a></p><h1>Transcript</h1><h3>00:43 &#8212; What sets Lua apart</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=43">00:43</a>] In 2023, <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> was the second highest programming language by growth according to contributors on GitHub. And I saw that it was also used in famous games like World of Warcraft and Roblox. And so I wanted to ask you what kind of programming language is <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> and what sets it apart?</p><p><strong>Roberto:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=67">01:07</a>] <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> is a language that usually is used together with another language like <a href="https://en.wikipedia.org/wiki/C">C</a> or <a href="https://en.wikipedia.org/wiki/C%2B%2B">C++</a>, and then you have an architecture where <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> takes care of the more dynamic part of your program, things that change more frequently, things that are not so resource intensive, the hard parts you have written in <a href="https://en.wikipedia.org/wiki/C">C</a> or <a href="https://en.wikipedia.org/wiki/C%2B%2B">C++</a>. So it&#8217;s typically what is called a scripting language. There is some confusion, I think, between scripting languages and dynamic languages.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=105">01:45</a>] And people just, I think, considered a dynamic language to be more or less the same thing as a scripting language. And they are not exactly the same thing. So, for instance, a big difference between <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> and several other scripting languages is that for scripting you have two typical uses. You can have the app that I call who has the main loop. So you can have the program written in <a href="https://en.wikipedia.org/wiki/C">C</a> and calling <a href="https://en.wikipedia.org/wiki/Lua">Lua</a>, or you have your program written in <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> calling <a href="https://en.wikipedia.org/wiki/C">C</a>.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=143">02:23</a>] And for several scripting languages, actually, you don&#8217;t have to, but it&#8217;s much easier to use if you have your program written in the scripting language, and the <a href="https://en.wikipedia.org/wiki/C">C</a> language is only for your libraries. <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> is a very good fit. When you want the reverse, you want the program written in <a href="https://en.wikipedia.org/wiki/C">C</a> and then it calls <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> from time to time. So the point is that <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> is very good at this, that you have the main loop, the program written in <a href="https://en.wikipedia.org/wiki/C">C</a>, and then it calls <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> for some tasks or for whatever you want to do.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=189">03:09</a>] And for instance, in games, this is very important to keep the frame ratio of the game. So, for instance, you have the loop. The loop keeps the rhythm of the game and keeps everything. And then at every frame it calls <a href="https://en.wikipedia.org/wiki/Lua">Lua</a>. <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> updates all characters, all images, everything in the game, and then it returns to <a href="https://en.wikipedia.org/wiki/C">C</a> to do the renderization, etc. So it is a very good fit. But the main point is that people sometimes call this the embedding versus extending.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=226">03:46</a>] So you can extend the scripting language with <a href="https://en.wikipedia.org/wiki/C">C</a>, or you can embed the scripting language into <a href="https://en.wikipedia.org/wiki/C">C</a>. And so several languages are very good only for extending, while <a href="https://en.wikipedia.org/wiki/Lua">Lua</a>, it&#8217;s really good for both embedding and extending.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=245">04:05</a>] Why is <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> good for embedding and Python? It&#8217;s almost the opposite, because <a href="https://en.wikipedia.org/wiki/Lua">Lua</a>, since the beginning, we thought about <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> as a library.</p><p><strong>Roberto:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=251">04:11</a>] Since the beginning, <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> was written as a library. So I think that&#8217;s the main difference. <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> has a standalone program that, I mean, you can call <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> in your console, in your command line, but that program is just a client of the official client of the library, following the same <a href="https://en.wikipedia.org/wiki/API">API</a> that any other program can use. So this idea of language as a library, I think it&#8217;s not very common. It&#8217;s something that is very particular in <a href="https://en.wikipedia.org/wiki/Lua">Lua</a>.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=289">04:49</a>] When you design a language as a library, what are the unique design decisions?</p><p><strong>Roberto:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=296">04:56</a>] I think that goes a lot of small and big details. For instance, your idea of what is your global space, or about scopes of variables, about exception handling. For instance, it&#8217;s very important that it&#8217;s very common in <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> that you raise an exception in <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> but you catch the exception in <a href="https://en.wikipedia.org/wiki/C">C</a>. So all these things about how you do exception handling in the language. Another, it&#8217;s not a big deal, but it&#8217;s.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=331">05:31</a>] For instance, most dynamic languages, that&#8217;s almost a definition of a dynamic language. They have an evaluation function that you can give a piece of code and then it executes that code. In <a href="https://en.wikipedia.org/wiki/Lua">Lua</a>, we don&#8217;t, instead of <a href="https://en.wikipedia.org/wiki/Eval">eval</a>, we have a function that we call load, that you give a piece of code and it returns a function, an internal function. Like it was a <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> function that when you call that function, then you execute the associated code. It doesn&#8217;t execute immediately.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=368">06:08</a>] So you have this clear separation between compiling the <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> code that you have, and you can do that in <a href="https://en.wikipedia.org/wiki/C">C</a>. So in <a href="https://en.wikipedia.org/wiki/C">C</a>, you can get a piece of <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> code. You can compile it, check if it has errors, et cetera. Then you call that, for instance, a different piece, or you can even call several times. You can load functions from <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> into <a href="https://en.wikipedia.org/wiki/C">C</a>. You keep them in the <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> space, and then you can call that same function again.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=402">06:42</a>] And again, it&#8217;s not a big difference, of course, because if you have <a href="https://en.wikipedia.org/wiki/Eval">eval</a>, you can evaluate a function declaration and then return that function. So you can, if you have <a href="https://en.wikipedia.org/wiki/Eval">eval</a>, you can do load. If you have load, you can do <a href="https://en.wikipedia.org/wiki/Eval">eval</a>. But I think load, it&#8217;s simpler to use for that kind of thing. That is, when you think about libraries, for instance, in <a href="https://en.wikipedia.org/wiki/Lua">Lua</a>, it doesn&#8217;t have a global state. I think that&#8217;s, I forgot that.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=434">07:14</a>] That&#8217;s a very important difference. When <a href="https://en.wikipedia.org/wiki/C">C</a> starts, the first thing it has to do is create a new <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> state. And then everything you do, you do on that state. And that state is completely independent of everything else. So <a href="https://en.wikipedia.org/wiki/C">C</a> can, for instance, create another <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> state, and both states are completely independent, completely. There is no communication between them. And so this again shows that these.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=471">07:51</a>] And so, for instance, <a href="https://en.wikipedia.org/wiki/C">C</a> can use a state, do a lot of stuff, and then it can close the state and all memory used by <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> is released. Everything that <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> was using is released. For instance, if <a href="https://en.wikipedia.org/wiki/C">C</a> doesn&#8217;t need to use <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> anymore for a program, you release all resources used by <a href="https://en.wikipedia.org/wiki/Lua">Lua</a>, and your program continues, and then later you can again create another state, etc. So there&#8217;s, as I said, several small or not so small decisions in the language.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=504">08:24</a>] But all the time we think about the language as, is that good for embedding? Is that possible to do embedding and things like that.</p><h3>08:35 &#8212; Comparing Lua with Python</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=515">08:35</a>] When you think of the programming community, generally everyone is quite familiar with Python, but not as familiar with <a href="https://en.wikipedia.org/wiki/Lua">Lua</a>. I thought it might be interesting to compare the two languages. So if you compared <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> to Python, what are the pros and cons of each language design?</p><p><strong>Roberto:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=534">08:54</a>] <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> is a language that is intended to be used in this idea of scripting architecture. So <a href="https://en.wikipedia.org/wiki/Lua">Lua</a>, for instance, it doesn&#8217;t thrive having a lot of different libraries. If you have something that, oh, I want to write a quick program for, something that Python is much better, it has all the libraries you can dream about. It has a lot of libraries built in already into the language. So the language is huge.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=567">09:27</a>] I mean, the installation, it&#8217;s a huge download, etc. But it has exactly, oh, I need that. Oh, it&#8217;s there, I need that, it&#8217;s there. And <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> is almost the opposite, some very minimalistic language, because it is that you embed <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> into your program. It doesn&#8217;t use almost any resources. Most of the libraries, the important libraries that you will use, will be provided by the program itself, will be the commands like move a character or do some speech or things like that from the engine of the game, for instance, if you think about games.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=607">10:07</a>] But whatever it is. So <a href="https://en.wikipedia.org/wiki/Lua">Lua</a>, I think that&#8217;s the main big difference. They have very different goals.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=616">10:16</a>] I saw some benchmarks, and I saw that <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> is much faster than Python. Why is that?</p><p><strong>Roberto:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=623">10:23</a>] Those benchmarks are not exact. But I think the main point is that <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> does have this focus on performance. Again, in the realm of scripting languages, it doesn&#8217;t want to compete with <a href="https://en.wikipedia.org/wiki/C">C</a> or <a href="https://en.wikipedia.org/wiki/C%2B%2B">C++</a>. But in the realm of dynamic languages, mostly now it&#8217;s a dynamic language, not a scripting language. We have some focus on performance. So I think this is the first difference. Python is exactly much more.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=656">10:56</a>] I think it&#8217;s the decision that they make. Performance is not that important. It&#8217;s more important to be flexible, to be easy to do whatever you want to do. Then in <a href="https://en.wikipedia.org/wiki/Lua">Lua</a>, sometimes we do not put some features because we think that there is no way to implement that efficiently. But also I think some part of the performance difference comes exactly because of the size of <a href="https://en.wikipedia.org/wiki/Lua">Lua</a>. So most of the virtual machine fits in your cache, for instance.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=687">11:27</a>] I think there are these two big things. One is that <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> doesn&#8217;t have so many features. It&#8217;s not so dynamic as Python. So in Python, there is a lot of interaction because everything can mean something else. In <a href="https://en.wikipedia.org/wiki/Lua">Lua</a>, we are a little more conservative on that side. But I think also this thing of being small also makes it naturally faster.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=713">11:53</a>] So, on the distinction between scripting languages and dynamic, or I guess it seems like dynamic language is a superset, scripting language is a subset of that. Am I understanding that <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a> is a dynamic language, not scripting language from your perspective?</p><p><strong>Roberto:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=730">12:10</a>] Yes, exactly. Yes, exactly. Because the scripting language&#8212;the original scripting language was Bash, or the Unix shells&#8212;with this idea that it is a language that coordinates other stuff. So, for instance, it can be extending again, you can use. But this idea that you have two different languages for the shell is only useful because you have a lot of programs written in <a href="https://en.wikipedia.org/wiki/C">C</a> that are controlled by shell. So the scripting language has this very strong idea that you have this idea of a dual-language architecture.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=770">12:50</a>] So scripting is like the name scripting. It means you coordinate or you give a script to be executed by those other things.</p><h3>13:04 &#8212; Top book recommendation on language design</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=784">13:04</a>] You gave a talk a while ago, and someone asked you a question about what books do you recommend for studying programming languages, and you said that you actually enjoyed studying the language design of other programming languages.</p><p><strong>Roberto:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=798">13:18</a>] I like reading books that describe the design of languages. I think the best books are those written by the author of a language about the design of that language.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=812">13:32</a>] What book recommendation do you think is best on language design?</p><p><strong>Roberto:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=817">13:37</a>] <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a>: The Good Parts, for instance. It&#8217;s kind of old now, but I think it&#8217;s a very interesting book. Although I always joke that <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a>: The Good Parts is a very thin book compared with the official <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a> books, like 110 of the language, but I think that book is really interesting because it discusses the language, the bad parts, and it focuses on the good parts, but then explains why it&#8217;s there, why it was made that way, etc.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=857">14:17</a>] That is a book that I like.</p><h3>14:20 &#8212; How JIT works and why it is hard</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=860">14:20</a>] When we were talking about <a href="https://en.wikipedia.org/wiki/Lua">Lua</a>, it sounds like one of the things that sets <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> apart is the performance and how minimal it is. And when I was reading about <a href="https://en.wikipedia.org/wiki/Lua">Lua</a>, I saw that there&#8217;s <a href="https://en.wikipedia.org/wiki/LuaJIT">LuaJIT</a>. How does <a href="https://en.wikipedia.org/wiki/LuaJIT">LuaJIT</a> work?</p><p><strong>Roberto:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=874">14:34</a>] <a href="https://en.wikipedia.org/wiki/LuaJIT">LuaJIT</a>? Well, the first thing, it&#8217;s a completely different project. It doesn&#8217;t have anything to do with us, but it&#8217;s an incredible piece of software that is a just-in-time compiler for <a href="https://en.wikipedia.org/wiki/Lua">Lua</a>. And I think exactly one of the reasons it works so well on top of <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> is because of the simplicity of <a href="https://en.wikipedia.org/wiki/Lua">Lua</a>. It&#8217;s a very regular language. I mean, it has very, as I said, it doesn&#8217;t have many exceptions or too many interactions or things like that.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=909">15:09</a>] So it&#8217;s not that dynamic. I mean, everything can mean something completely different, so I think that gives a very good language for a <a href="https://en.wikipedia.org/wiki/Just-in-time_compilation">JIT</a>. But Mike Pall is the name of the guy that made the first <a href="https://en.wikipedia.org/wiki/LuaJIT">LuaJIT</a>. He&#8217;s still working on that. It&#8217;s unbelievable, his work.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=933">15:33</a>] What makes writing a <a href="https://en.wikipedia.org/wiki/Just-in-time_compilation">JIT</a> difficult?</p><p><strong>Roberto:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=936">15:36</a>] The first thing for me, I don&#8217;t want to get involved with <a href="https://en.wikipedia.org/wiki/Just-in-time_compilation">JIT</a>, is because it&#8217;s machine dependent. It&#8217;s not very productive. I mean, you do a lot of work and only work on that architecture, and then, oh, I want to run on another architecture. But Paul, he created a kind of pseudo-assembler that he writes in this assembly, and then he translates that assembler to real machine code for the different machines.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=968">16:08</a>] So trying to unify the different architectures. So there is a lot of work, but I don&#8217;t like&#8212;I think architecture I like to study, but I don&#8217;t like to work with it because I think it&#8217;s very unstable. Each new version, they change that or they change that. I mean, they change the <a href="https://en.wikipedia.org/wiki/Ali">ABI</a> for something, and then now the stack has to be aligned in some very particular way. And of course, also to get that performance that he gets, he made what&#8217;s called a trace compiler.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=1007">16:47</a>] The idea of a trace compiler, instead of getting a function and compiling a function, it works like any <a href="https://en.wikipedia.org/wiki/Just-in-time_compilation">JIT</a> that tries to detect things that are executed frequently. And so it starts what&#8217;s called the trace. It gets recording everything that the code is doing, including function calls, et cetera, until it closes the loop, and then it compiles that loop, including function calls, et cetera, everything in line.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=1043">17:23</a>] It compiles that for that specific, for instance, so that number happens to be an integer. So it compiles it, the number will be an integer again. And there are a lot of checks just to check that everything is as assumed, and then it executes the loop, and then it&#8217;s very, very, very fast. But anything that is different, for instance, you call it again, but you call it frequently with integers. Suddenly you call it with a float, and then at some part of the code, it breaks the condition and you have to return to the interpreter part.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=1085">18:05</a>] And I think that&#8217;s one of the worst parts, is that you have to translate the state that it&#8217;s all compressed into register, et cetera. For instance, you don&#8217;t even have a call stack because you didn&#8217;t do the calls, you just inlined it. But then, oops, something went wrong. Now you have to continue interpreting. So you have to recreate this fact that you didn&#8217;t create originally, et cetera. So I mean, even to think about that, I have headaches.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=1120">18:40</a>] Standard <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> is portable, but to execute on a machine, it eventually gets converted into machine instructions. Where in the stack is it eventually translated to machine instructions?</p><p><strong>Roberto:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=1132">18:52</a>] <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> is written in <a href="https://en.wikipedia.org/wiki/C">C</a>, the interpreter is written in <a href="https://en.wikipedia.org/wiki/C">C</a>. And then you compile that into machine code, the interpreter, the <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> code. Then when you get some, I mean the <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> code, the <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> interpreter code, when you get some <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> code, you do what we call a precompilation; that is, we translate to an internal language. Then the interpreter is just a big loop, a loop with a switch. That&#8217;s a very big simplification.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=1167">19:27</a>] But in general terms, a loop with a switch that gets instruction does a switch and sees all these instructions. The instructions are quite similar to a CPU move, but then instead of creating it, it executes that structure: move A to B. So it does A, move A to B, and executes that, and then again repeats, executes the next instruction. So this is how interpreter works. And basically, so we pre-compile <a href="https://en.wikipedia.org/wiki/Lua">Lua</a>.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=1203">20:03</a>] There is a compilation, but we compile for this virtual machine, and then we have this main interpreter loop that people call that just fetches each instruction. A jump is just a jump. You have an array of bytecodes. A jump just goes to that. You have a counter that tells where you are in this array. You just update that counter. It goes to another position in that array where you&#8217;re going to.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=1234">20:34</a>] So it&#8217;s like you emulate the CPU in software. It&#8217;s written in <a href="https://en.wikipedia.org/wiki/C">C</a>. The interpreter, this main loop, is written in <a href="https://en.wikipedia.org/wiki/C">C</a>. So if you compile it in Linux, it will run in Linux on an x86 architecture. It will run on that architecture. If you compile that on a Mac, it will run on a Mac. It&#8217;s a <a href="https://en.wikipedia.org/wiki/C">C</a> program.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=1260">21:00</a>] Got it? Okay, so. And that&#8217;s the part that&#8217;s not portable. And the <a href="https://en.wikipedia.org/wiki/C">C</a> compiler handles that?</p><p><strong>Roberto:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=1265">21:05</a>] Yes, yes, yes. All portability of <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> comes on top of portability of <a href="https://en.wikipedia.org/wiki/C">C</a>. How does <a href="https://en.wikipedia.org/wiki/Just-in-time_compilation">JIT</a> compare to ahead-of-time compilation in terms of performance?</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=1277">21:17</a>] Both ahead of time? Any kind of compilation can be 10 times faster than interpreting, or even 100 times faster than interpreting, depending on what you are doing. But 10 times is a very good figure between ahead of time and trace compilation. Then it depends a lot on what you are doing after. Trace compilation is particularly good for benchmarks because you&#8217;re repeating it more or less.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=1315">21:55</a>] They are very uniform. You are doing exactly the same thing again and again and again. So then trace compilers shine. I mean, this is the best they can do in real programs. That depends a lot, but I wouldn&#8217;t say there is a clear winner between the two. I think it depends a lot on the kind of program.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=1340">22:20</a>] Is it possible to write an ahead-of-time compiler for <a href="https://en.wikipedia.org/wiki/Lua">Lua</a>?</p><p><strong>Roberto:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=1344">22:24</a>] Yes, there are several. I mean, I don&#8217;t know if there is any production-quality one, but for research, et cetera, there are several. I have a student who wrote one, like a master&#8217;s thesis. A ridiculous simple <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> compiler, ahead-of-time <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> compiler or something like that. Exactly, because it was just&#8212;it gets these opcodes and expands into <a href="https://en.wikipedia.org/wiki/C">C</a> code, and then you send that through to a <a href="https://en.wikipedia.org/wiki/C">C</a> compiler, and then you have an ahead-of-time compiler for <a href="https://en.wikipedia.org/wiki/Lua">Lua</a>, and it gave like three, five times boosting performance.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=1393">23:13</a>] Very, very. As the title said, it&#8217;s ridiculous. Simple compiler.</p><h3>23:21 &#8212; Compiling Python and interpreting C</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=1401">23:21</a>] I always hear there&#8217;s compiled languages and there&#8217;s dynamic or interpreted languages, I guess, but really that distinction is in the toolchain, not necessarily in the way that the symbols are laid out in the source code. I could write a compiler or a program that takes in Python code and then converts it into machine code. And then I would have compiled Python.</p><p><strong>Roberto:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=1426">23:46</a>] And you can interpret <a href="https://en.wikipedia.org/wiki/C">C</a> code too. You can write an interpreter for <a href="https://en.wikipedia.org/wiki/C">C</a>. Yes, but the main difference is exactly what it&#8217;s easy to do. For instance, as I said, one of the hallmarks of interpreted languages is <a href="https://en.wikipedia.org/wiki/Eval">eval</a>. So if you want to compile the language and keep <a href="https://en.wikipedia.org/wiki/Eval">eval</a>, you have to have a compiler as a library of your runtime because you may want to compile things during execution. This is the hallmark of a dynamic language.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=1461">24:21</a>] So you can create code while running code. So that part is why, much more often than not, dynamic languages are interpreted, but you can compile. But then sometimes some compilers do not handle <a href="https://en.wikipedia.org/wiki/Eval">eval</a> at all. They say, oh, you can compile as long as your program doesn&#8217;t have evals. So there are some restrictions. And as I said, you can interpret <a href="https://en.wikipedia.org/wiki/C">C</a> code, I mean, but you&#8217;ll be extremely slow.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=1500">25:00</a>] It doesn&#8217;t.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=1501">25:01</a>] But I think one big difference, and when I look at static languages or compiled languages, they seem to have type systems in them, or type annotations. What is the role of a type system in the compilation process?</p><p><strong>Roberto:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=1518">25:18</a>] Depends a lot on the type system. Several type systems, like in <a href="https://en.wikipedia.org/wiki/C">C</a>, for instance, are written to be a very important part of the compilation process. So if you have the right type system, it&#8217;s much, much easier to write a compiler. A typical example is on the space for variables. Because if you know, oh, this is an integer, this is a float, this is a double, you know exactly how many bytes of memory you need to that. Otherwise, it&#8217;s a mess.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=1554">25:54</a>] More often than not, you have to keep everything in the heap, dynamically allocated, and so huge penalty in performance. And for instance, when you see, as I said, a trivial, you have an addition A plus B. If you know the type of A and the type of B at compile time, you know, oh, this plus is, I&#8217;m adding two integers, I just generate the machine code to add integers, and there everything is fine.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=1587">26:27</a>] You know, a dynamic language, like <a href="https://en.wikipedia.org/wiki/C">C</a>, I don&#8217;t&#8212;I compile to a virtual machine, and the virtual machine is just a piece of <a href="https://en.wikipedia.org/wiki/C">C</a>. But then how do I... At runtime, you have to check what is A. Oh, A is an integer, B is a float. Oh, I have to convert. Or B is a string. Or depending on the language you are, if you&#8217;re not doing addition, it can be doing concatenation or you can just call some function, and you have to do all that at runtime.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=1617">26:57</a>] So types can be very, very important to compile efficiently. But of course, you have to have a type system. There are several languages now, like <a href="https://en.wikipedia.org/wiki/TypeScript">TypeScript</a>, that the types are kind of... You do not guarantee that everything has the types you set. So then it&#8217;s impossible to use them to compile because, oh, probably A will be an integer, but if it&#8217;s not, I mean, if I have an integer register to boot with, it must be a register or things will not work.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=1660">27:40</a>] But if you have the right type system, they are essential for good compilation.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=1666">27:46</a>] I know some programming languages have type inference. What if you ran type inference and you got an unambiguous set of types, and then you used that in compilation? Could you do that for <a href="https://en.wikipedia.org/wiki/Lua">Lua</a>?</p><p><strong>Roberto:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=1681">28:01</a>] No, I mean that&#8217;s not computable. But a lot of people try to do type inference for dynamic languages, and it&#8217;s a really hard problem, and it&#8217;s very difficult to do anything useful in terms of performance. What if sometimes you get? But you have to be very restricted. If you write your program in that specific way, use fall. So it&#8217;s like you don&#8217;t have the type, but you write the program thinking about types.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=1718">28:38</a>] And then if the program is in that very particular format, then you can do type inference and everything goes well. Otherwise, either type inference doesn&#8217;t work or, I mean, it works, but it infers very generic types for everything. And so you cannot take advantage of the types because of the dynamic nature of the language. This also happens with <a href="https://en.wikipedia.org/wiki/LuaJIT">LuaJIT</a>, for instance. You can get much, much better performance if you have a kind of type system in your mind.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=1758">29:18</a>] Usually we do that, and you follow those type rules even without&#8212;the compiler, the language does not impose them on you. But you assume, oh, I&#8217;m going to follow those discipline, I&#8217;m not going to use the same variable to store integers and strings, etc. And then you can have much better results.</p><h3>30:31 &#8212; How cross language calls work</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=1831">30:31</a>] Earlier, you mentioned that <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> can call <a href="https://en.wikipedia.org/wiki/C">C</a> and <a href="https://en.wikipedia.org/wiki/C">C</a> could call <a href="https://en.wikipedia.org/wiki/Lua">Lua</a>. And you mentioned, we talked about the compiler and the interpreter and how do these pieces work together in the case where you&#8217;re chaining different programming languages.</p><p><strong>Roberto:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=1847">30:47</a>] Yeah, the main trick, I mean, it&#8217;s not a trick. The technique for allowing <a href="https://en.wikipedia.org/wiki/C">C</a> is <a href="https://en.wikipedia.org/wiki/C">C</a> pointers, function pointers. There is a pointer to a function. This is part of the official <a href="https://en.wikipedia.org/wiki/C">C</a> language. So when you start <a href="https://en.wikipedia.org/wiki/Lua">Lua</a>, suppose you are in <a href="https://en.wikipedia.org/wiki/C">C</a>, as I said, you create a library, you create a state, a <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> state, and then you can register, you send to <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> <a href="https://en.wikipedia.org/wiki/C">C</a> pointers, function pointers, I mean, pointers to functions in your <a href="https://en.wikipedia.org/wiki/C">C</a> library associated with names.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=1888">31:28</a>] <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> stores that in some data structure. Okay, so it says, oh, the function is associated with that pointer, etc. So when it&#8217;s doing the interpretation, oh, this instruction is call. Instruction, call. Let&#8217;s see what it&#8217;s calling. Well, it&#8217;s calling a. What is the value of A? Oh, it&#8217;s a pointer. And then it calls that pointer. And then we call the <a href="https://en.wikipedia.org/wiki/C">C</a> function to do that. And when <a href="https://en.wikipedia.org/wiki/C">C</a> wants to call <a href="https://en.wikipedia.org/wiki/Lua">Lua</a>, I mean, a <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> function is just a data structure from the point of view of <a href="https://en.wikipedia.org/wiki/C">C</a>.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=1930">32:10</a>] It&#8217;s just an array of bytecodes of opcodes, and then it calls the <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> interpreter function. Please interpret that function for me. So <a href="https://en.wikipedia.org/wiki/C">C</a> can call <a href="https://en.wikipedia.org/wiki/Lua">Lua</a>, interpret that function, and that function is running, and then can call a <a href="https://en.wikipedia.org/wiki/C">C</a> function using a pointer. And you can have that in the stack at several levels. So we are running a <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> function that calls <a href="https://en.wikipedia.org/wiki/C">C</a> and <a href="https://en.wikipedia.org/wiki/C">C</a> calls <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> again and <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> calls <a href="https://en.wikipedia.org/wiki/C">C</a>. You have recursive stuff in that, etc.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=1963">32:43</a>] And everything works, just works.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=1968">32:48</a>] In one of your talks on <a href="https://en.wikipedia.org/wiki/Lua">Lua</a>, you mentioned that there&#8217;s security benefits to using a scripting language. What are those benefits, and how does it...</p><p><strong>Roberto:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=1976">32:56</a>] protect the hardware. It&#8217;s not only hardware. Once I gave a talk here in <a href="https://en.wikipedia.org/wiki/Brazil">Brazil</a>, I was called to give a talk at a Python conference in <a href="https://en.wikipedia.org/wiki/Brazil">Brazil</a>. They called me for a talk. At the end of the talk I said, &#8220;Oh, let&#8217;s use it as a scripting language.&#8221; As I said, emphasizing that thing that you have this dual-language architecture. And I know of case of <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> being used with <a href="https://en.wikipedia.org/wiki/C">C</a>, with <a href="https://en.wikipedia.org/wiki/C%2B%2B">C++</a>, with Fortran, with several different languages.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=2013">33:33</a>] And then someone in the audience said, oh, we also use <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> for scripting Python programs. And what was the case? They have a huge Python program for financial stuff that has to do a lot of financial transactions, etc. And they wanted to do scripts, I mean, to have a command line where you could write instructions to be executed at runtime, for instance, for debugging or for inspecting, for whatever you need some kind of end-user programming.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=2051">34:11</a>] But they said exactly what I was talking about, spaces in Python. Basically, if you have a command line and you are going to run Python, that Python can do whatever it wants to your program. There is no way to protect it. So if you gave that to the user, the user could do whatever it wanted to do. I mean for the program. And so the program would break a lot of invariants of a lot of important stuff in the files it kept, etc.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=2085">34:45</a>] And so what they did, they gave the thing in <a href="https://en.wikipedia.org/wiki/Lua">Lua</a>, because, as I said, <a href="https://en.wikipedia.org/wiki/Lua">Lua</a>, you create a state. For instance, as I just mentioned, you can only call <a href="https://en.wikipedia.org/wiki/C">C</a> functions. That is true in Python again, but in that particular data you can only call <a href="https://en.wikipedia.org/wiki/C">C</a> functions if you give the <a href="https://en.wikipedia.org/wiki/C">C</a> pointer to <a href="https://en.wikipedia.org/wiki/Lua">Lua</a>. So have a very strict, and there is very little, as I said, there is a library. When you create a <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> state, it has no functions at all.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=2118">35:18</a>] There is nothing. I mean, you cannot open files. Everything there are, we call standard libraries. Usually you open a state and you register those standard libraries. In <a href="https://en.wikipedia.org/wiki/Lua">Lua</a>, so you have the minimum, you have mathematical functions, etc. But you can open a state and register no functions at all. In <a href="https://en.wikipedia.org/wiki/Lua">Lua</a>, it can only do things calling those specific functions you gave. So they used <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> to have this kind of control.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=2149">35:49</a>] Or you can write <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> code here, but that <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> code can only do very specific things in the Python program. You cannot call any Python function or build any kind of Python data structure, etc. So was this a nice example? In the case of hardware, it&#8217;s the same thing. You cannot just go in. For instance, there is a hard port that controls the speed of the fan. That keeps the temperature of the CPU.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=2183">36:23</a>] And if you put that very low, you can really burn the CPU. I mean, because the CPU gets very hot. And so you have a <a href="https://en.wikipedia.org/wiki/C">C</a>. You cannot call <a href="https://en.wikipedia.org/wiki/C">C</a> directly, you must call <a href="https://en.wikipedia.org/wiki/Lua">Lua</a>. And only <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> has access to that. So if you can only program in <a href="https://en.wikipedia.org/wiki/Lua">Lua</a>, then you check whether the numbers you are giving are precise or whatever. It has to check and then it calls.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=2211">36:51</a>] It&#8217;s kind of like a sandbox environment.</p><p><strong>Roberto:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=2213">36:53</a>] Yes, exactly. Yes. Sandbox is the exact word for that.</p><h3>36:58 &#8212; Lua unique design decisions</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=2218">36:58</a>] I saw there was this, I guess, paper, maybe it was an article you wrote on the history of <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> with several other people. And I thought there were some interesting quotes in there I kind of wanted to ask you about. So one of them, it says that there&#8217;s this old joke that says that a camel is a horse designed by a committee.</p><p><strong>Roberto:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=2240">37:20</a>] Yes, that&#8217;s not mine. That&#8217;s a real old joke.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=2245">37:25</a>] Does that mean you think the best programming languages are designed by as few people as possible?</p><p><strong>Roberto:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=2253">37:33</a>] Yes, I do think, yeah. Because one thing that it&#8217;s easy to observe is this: If you have a committee writing a language, everyone wants to put something from themselves into the language. So you have your favorite mechanism, and you will fight whatever it takes to put your favorite mechanism into the language. And very few people you fight against putting anything in the language.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=2291">38:11</a>] I mean, some people say, oh no, this is too much, this is too complicated. But people fight much more fiercely for putting something they want in the language than against putting something in the language. So when you have a committee, the tendency is, &#8220;Let&#8217;s keep adding stuff, let&#8217;s keep adding stuff.&#8221; And people sometimes even do not understand, I mean, I&#8217;m even not sure if everybody there really knows the language well enough to be putting that.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=2325">38:45</a>] But that fits with other parts of the language. I didn&#8217;t even know the language has this other part. I mean, so things sometimes do not fit together very well, et cetera. So first, you have what&#8217;s called the conceptual integrity. It&#8217;s a name that gives that everything fits together, everything is designed with everything else in mind, etc. It&#8217;s much easier to. I&#8217;m not saying, I mean, <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> has several wrong stuff regarding because of.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=2357">39:17</a>] With time, etc. There you make mistakes, but it&#8217;s much easier to get things right if you have a small group of people that everybody knows what everybody else is thinking. I mean, you are deciding whether to put something in the language or not. It&#8217;s much easier to change your mind if you do not put something and then later you decide to add it to the language than to add something and then later you decide, oh, I shouldn&#8217;t have. That was not a good idea.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=2393">39:53</a>] So, when in doubt, the rule is always don&#8217;t put it. If you&#8217;re not very sure, don&#8217;t put it. We can always add that later and keep the door open to change your mind.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=2408">40:08</a>] I saw in the original <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> programming language that there was no Boolean type, and I&#8217;ve never seen that before. Why was there no Boolean in the original <a href="https://en.wikipedia.org/wiki/Lua">Lua</a>?</p><p><strong>Roberto:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=2419">40:19</a>] Well, <a href="https://en.wikipedia.org/wiki/C">C</a> doesn&#8217;t have booleans. I mean the original <a href="https://en.wikipedia.org/wiki/C">C</a>, and C90 up to C99, they use integers. If it&#8217;s 0, it&#8217;s false; if it&#8217;s different from 0, it&#8217;s true. And people lived quite well with that. Lisp and there are several languages that don&#8217;t have booleans. And actually, we only put booleans in <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> because we wanted false. True is completely useless in <a href="https://en.wikipedia.org/wiki/Lua">Lua</a>. Nobody used true, and nobody&#8217;s a joke, but it&#8217;s too strong.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=2457">40:57</a>] But it&#8217;s not very useful. You can use almost any other value for true. But the problem is that in <a href="https://en.wikipedia.org/wiki/Lua">Lua</a>, the special value nil is in a table. It is equivalent to the key not being present. You may think whether that was a good decision, but it&#8217;s very embedded in the design of the language. And it has this strong concept that a table, a key that is not present in a table, there is an associative array, it has a nil value, it&#8217;s completely indistinguishable whether it&#8217;s absent.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=2503">41:43</a>] I mean, absent means it has a nil value. Nil value means it is absent. And so sometimes you want to have a false value, but you want to know it is there in the table. And so we needed a false to have a false you can put in the table. And it&#8217;s completely different from being absent. You know, that is a key and the key has a false value. So we need a false value. And if you&#8217;re going to have a false, then we added true, true.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=2536">42:16</a>] It would make sense to have false without true. But with true, it&#8217;s almost useless.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=2542">42:22</a>] Why not use 0 as false if you&#8217;re okay with 1 as true?</p><p><strong>Roberto:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=2547">42:27</a>] We could have used it, but among other things, that would be a big change because it didn&#8217;t exactly work that way. So we added that later in the language. So changing 0 to false would be a very big incompatibility. But it could be, for instance, in Python I think a lot of stuff are false. I mean, zero is false, empty list is false. And in <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a> I think it&#8217;s even worse. I don&#8217;t recall exactly, but I mean this is kind of arbitrary.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=2586">43:06</a>] I mean, we could have, for instance, nil, false, zero, empty string. It just depends on the kind of test that you use. In dynamic languages, it&#8217;s very easy to.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=2602">43:22</a>] Python has the... Like you&#8217;re describing the truthy values and the falsy values, I guess they can be interpreted as false. But it&#8217;s more implicit, less explicit. And I know <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a> is even further on that spectrum where you can do some really weird stuff that implicitly has some behavior. Do you think that design direction is good or bad?</p><p><strong>Roberto:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=2628">43:48</a>] It&#8217;s like a small compact. It&#8217;s more easy to write stuff. But you always have this balance in any language. Almost anything, the more flexible you have, the less protection you have. In <a href="https://en.wikipedia.org/wiki/C">C</a>, you have something like that people do not notice. But because <a href="https://en.wikipedia.org/wiki/C">C</a> is typed, you can check whether an integer is true or false. You can check whether a float is true or false directly because, again, it checks whether the float is zero or different from zero.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=2659">44:19</a>] You can check whether a pointer is nil or different from null. Because in <a href="https://en.wikipedia.org/wiki/C">C</a>, null is a magic zero. So it&#8217;s kind of, if you do not write any test, it has an implicit test like different from zero. And this zero can be an integer, can be a float, can be a pointer. So in <a href="https://en.wikipedia.org/wiki/C">C</a> also you have this kind of flexibility. It&#8217;s just you have to be more explicit. Usually these are, avoids errors, but so this, you always have this balance between easy to write and easy to make mistakes.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=2709">45:09</a>] I saw that <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> is 1-indexed instead of 0-indexed, and I had never seen a programming language like that.</p><p><strong>Roberto:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=2718">45:18</a>] In my experience, there were a lot of programming languages like that.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=2723">45:23</a>] So yeah, why is it 1-indexed?</p><p><strong>Roberto:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=2726">45:26</a>] Because everything in the real world is 1-indexed. If you have a book, you have chapter 1, chapter 2. Nobody numbers chapters as 0, 1, 2, 3. Only programmers are the only, even mathematicians. If you get a math book, a book of mathematics, any sequence, it&#8217;s 1 and 2, 3. If you get a matrix, the first element is 1, 1 and 2, and then... Everything is written before. Only in programming language there is this idea of zero.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=2763">46:03</a>] And the funniest part is that, for instance, Fortran, now it&#8217;s a very old language, but to index it from 1. In Pascal, you can choose. I mean, you write an array, you can say this array is indexed from -5 to 5, and so it&#8217;s indexed from whatever value you want to whatever value you want. 0 became extremely popular because of <a href="https://en.wikipedia.org/wiki/C">C</a>. <a href="https://en.wikipedia.org/wiki/C">C</a> uses 0, and a lot of languages copied are kind of inspired by <a href="https://en.wikipedia.org/wiki/C">C</a>. They have the same operators, the same syntax for expressions, the boolean operators, for instance.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=2810">46:50</a>] That is not standard mathematics. Almost all languages chose the same operators as they are written in <a href="https://en.wikipedia.org/wiki/C">C</a>. And so a lot of languages copied <a href="https://en.wikipedia.org/wiki/C">C</a>. And then zero index became very popular. And what is funny is that in <a href="https://en.wikipedia.org/wiki/C">C</a> there is no indexing. In <a href="https://en.wikipedia.org/wiki/C">C</a>, indexing is just an illusion because what you have is pointer arithmetic. And see, when you write A indexed by I, actually what you are saying is get the contents of A plus I.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=2849">47:29</a>] And so because in <a href="https://en.wikipedia.org/wiki/C">C</a>, you don&#8217;t have indexing, you have these displacements or deltas, I don&#8217;t know, offsets. Then it must have indexed by zero because of that, because then the first element is the element that is at the original address. So <a href="https://en.wikipedia.org/wiki/C">C</a> doesn&#8217;t have indexing. So when you say A is indexed by 0, it doesn&#8217;t index by 0 because it doesn&#8217;t index by anything. But it has this illusion of indexing.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=2882">48:02</a>] And then it&#8217;s easy to sync that in. And then a lot of languages that do not use pointer arithmetic do not have this restriction, do not have these semantics, copied <a href="https://en.wikipedia.org/wiki/C">C</a> and kept the zero indexing as this thing. If you get a 12-year-old and try to explain zero indexing, I assure you it&#8217;s much, much easier for them to write. Oh, I have a list of the first element. I always joke that the first element is 0, and you write first, you for 1, but the first element 1 is not 1, is 0.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=2925">48:45</a>] So it has advantages, for instance, for some specific operators. Mathematically, for instance, when you want to do a circular buffer, zero is better. There are some small advantages, but it&#8217;s much, much more confusing. And as <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> has this idea of end-user programming, we always joke it&#8217;s much easier to make life easier for the non-programmers. And I&#8217;m sure that programmers can program whatever index they have to do because they&#8217;re supposedly professional. They can learn that, oh, indexing from then, to put on the end user the burden of using something completely different from them.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=2974">49:34</a>] Indexing by zero, what does it mean, the element index zero? They never saw the chapters in the book. Yes, the first chapter is at zero, the second chapter is at one. No, I&#8217;m not joking. When you try to explain that to non-programmers, it doesn&#8217;t need to be 12-year-olds. I mean, just get anyone that is not an Internet programmer. Think, &#8220;Oh, I have the absolute.&#8221; I mean, you are grown up, you are, I mean, okay, you are a student. If 0, I&#8217;m sure you can learn to program; if 1 or minus 1 or whatever it is, the base you have to use.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=3006">50:06</a>] I&#8217;m sure.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=3016">50:16</a>] But do you think you see a lot of bugs because maybe someone thinks it&#8217;s zero?</p><p><strong>Roberto:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=3022">50:22</a>] Unfortunately, I see some bugs, but as I always say, those are the kind of bugs that just show that you didn&#8217;t do minimum testing, because that kind of bug is not a kind of... That kind of bug that, oh, if you try to... Anything you try to do in an array, if you start from zero or start from one, you have a bug. So the most simple test that you can imagine to test anything related to an array, to a list, et cetera, and if you mistake 0 for 1, you detect that.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=3068">51:08</a>] So if you have that kind of bug, it just shows that you didn&#8217;t test that code at all.</p><h3>51:17 &#8212; Predictions for AIs impact on languages</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=3077">51:17</a>] There was this talk that you gave on the cost of adding language features to <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> and how there&#8217;s a lot of hidden costs. And I think today, implementation costs of software are going down due to AI code generation or LLMs, and I was wondering if that changes your thinking on, I guess, the cost of adding features to a programming language.</p><p><strong>Roberto:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=3103">51:43</a>] AI is something that we don&#8217;t really know what&#8217;s going to happen. If you go to an extreme, it&#8217;s completely feasible that we won&#8217;t have programming languages. And I mean, because if the AI is writing all your code and is checking all your code and doing everything, in a few years maybe we don&#8217;t need programming. AI can write machine code directly; it doesn&#8217;t need programming languages. It&#8217;s easier for them to compile or even generate the code directly.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=3141">52:21</a>] I mean, I don&#8217;t know what&#8217;s going to happen in a few years. So I think it&#8217;s very hard for me to talk about anything about AI because I have, and I think nobody has a clear idea what&#8212;I mean, people may have a clear idea what happens in one year or two years, but in five years, I mean, anyone that says, &#8220;Oh, that&#8217;s going to happen in five years,&#8221; is just guessing. So I think it&#8217;s hard to say anything.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=3179">52:59</a>] This is all because of AI. So keeping the minimum thing, I mean that still have differences there. Oh, why do you still use programming languages? Because you want the user or some human to be able to check the result of what the AI is doing, etc. So I still think that most of the things about programming languages still hold. For instance, the cost of complexity of you understanding. I mean AI create a code for you and then you really understanding what that code does.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=3217">53:37</a>] I mean it&#8217;s even worse. I mean it&#8217;s much more important that the language should be clear and has no hidden mechanisms. Because the AI may use a hidden mechanism, it doesn&#8217;t have the concept, oh, that will be difficult for a human to understand that what is really happening here is something it says something that, for instance, oh, I can use that. But I&#8217;m for sure it&#8217;s going to put a comment here because I&#8217;m sure that someone that reads that in one month is not going to understand.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=3254">54:14</a>] EA doesn&#8217;t have that kind of thinking, and so just use that trick or that thing. So I think if you think about this idea of AI generating code, I think it&#8217;s even more important for the language to be simple, to be understandable, for you to be able to really understand that the code that you are seeing does what you think it should do. You really understand what the code is doing.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=3284">54:44</a>] So this thing about simplicity, I think it&#8217;s very important, and I think the other parts from the book maybe facilitate documentation. I&#8217;m not sure if I mean this thing about conceptual integrity, for instance, to keep things, that makes sense, etc. I really think that one of the main costs is that it&#8217;s the burden you put on the user to learn one more thing about your language. So there&#8217;s the other cost of it.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=3319">55:19</a>] I said that implementation is the part that AI can really help you. It&#8217;s not a really important cost.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=3332">55:32</a>] If you think about a spectrum of simple to complex, what programming languages are the most simple ones that you think of, the easy to understand, less confusing side effects, and what programming languages are the most complex and have the most foot guns.</p><p><strong>Roberto:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=3350">55:50</a>] This famous quote, also&#8212;I don&#8217;t know from whom&#8212;that the simplest possible, but not simpler than that. Because if you go to the extreme of simplicity, you could get, for instance, lambda calculus or Turing machines and say, &#8220;Oh, that&#8217;s really simple.&#8221; I mean, this is really simple, but it&#8217;s completely impossible to write any program in that. I mean, if you have really simple stuff, I think the extremes will be like that.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=3382">56:22</a>] But you don&#8217;t want to be there, but for the other side. I think <a href="https://en.wikipedia.org/wiki/C">C</a> is a good example of a language that I think is really, really complex.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=3393">56:33</a>] A question that comes up a lot is, given how much AI has been progressing, would you still recommend people learn computer science today?</p><p><strong>Roberto:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=3403">56:43</a>] If you really think about that, it&#8217;s really difficult to recommend people learn anything for a profession. We have no idea what AI will do in five years. If someone is entering university now, they&#8217;re going to graduate in four years, five years, or, at minimum, three, three and a half years, and nobody has any idea what the world, your profession, will be like in four years from now. So it&#8217;s really hard to, I mean, to say, &#8220;Oh, yes, you can still go into it,&#8221; because now people say, &#8220;Oh, no, the manual tasks, the AI, it&#8217;s very good, but you still need the whole architecture.&#8221;</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=3451">57:31</a>] You needed a software engineer to do, to see the big picture, etc. That is now. But you have no idea that that will be true in four years or five years. So I think I like, I enjoy programming. I could do. I mean, some people say I use the AI for that. I mean, I program because I like that. But, basically, so if you choose something that you like, but really if you&#8217;re really thinking, how am I going to live with that?</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=3483">58:03</a>] I have no idea. It&#8217;s really, I think it&#8217;s a really hard time to be choosing the profession.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=3493">58:13</a>] I mean, you&#8217;ve worked on <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> for such a long time. When you look back on it, what went well and what didn&#8217;t go well?</p><p><strong>Roberto:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=3502">58:22</a>] We had this privilege of not having to satisfy clients. So you do not have, as I said, for instance, you can choose to add some feature to the language because you do not have a pressure. Oh, we need that feature, whatever it takes or et cetera. So we have this privilege of, oh, we are not sure whether to put that. We don&#8217;t put that. We can wait one year or so. I think that it&#8217;s much easier to do a good project, a beautiful project.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=3535">58:55</a>] So I&#8217;m not sure this is a recommendation to try to work without much pressure. People usually do not have this choice.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=3547">59:07</a>] What was your measure of success? If you&#8217;re working on a programming language, how did you know it was good?</p><p><strong>Roberto:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=3554">59:14</a>] It&#8217;s more important to have, sometimes, good people that I recognize as would like the result than a lot of people that I have no idea who they are, etc.</p><p>So I think this metric of quantity that is the standard metric nowadays on the web has gotten much worse, that everything is just in the number of follows. I mean, it doesn&#8217;t care who is following you, just as many people as possible.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=3588">59:48</a>] So sometimes, for me, it&#8217;s much more important if someone that I really admire or think is, or says something good about <a href="https://en.wikipedia.org/wiki/Lua">Lua</a>, then, oh, we have that many. But, of course, it&#8217;s good also to have some number of users and to be recognized. But I think it&#8217;s a balance between all of this.</p><h3>01:00:10 &#8212; Top 3 languages to learn to become a better engineer</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=3610">01:00:10</a>] Do you recommend people study other programming languages to get better at programming? And so the question is, what are the top three programming languages that you think every engineer should learn in 2026 to become better at programming? Haskell, I think, is an incredible language.</p><p><strong>Roberto:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=3628">01:00:28</a>] It has everything you need to really learn about functional programming. I think one of the main benefits is that it&#8217;s much. There&#8217;s an old joke in the Haskell community that if you write a program in Haskell and in <a href="https://en.wikipedia.org/wiki/C">C</a>, in <a href="https://en.wikipedia.org/wiki/C">C</a>, you really spend one week to make it efficient, and then you spend one year to make it correct. In Haskell, you spend one week to make it correct, and then you may spend one year to make it efficient.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=3675">01:01:15</a>] Again, it&#8217;s not my joke, but it has some truths. Not always true, etc. But I think it gives the idea. I think this is maybe the most important lesson of Haskell. But Haskell has many other validities. This thing about type inference, for instance, that in the entire language, types are optional everywhere, and yet it can do type inference for everything. It can infer the types correctly, etc.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=3711">01:01:51</a>] See, or some old language. I mean, you can also have to learn some assembler, or I mean, to see. But assemblers now are becoming too much complex. It would be to learn, like, the <a href="https://en.wikipedia.org/wiki/Intel_8080">Intel 8080</a> assembler, very old assembler of a very... But to have this exactly, this idea of what a machine does, how it does stuff at exactly the basic level, to have this understanding. Scheme is a language that I like very much because of this, exactly this economy of ideas.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=3747">01:02:27</a>] There are very few concepts, and it can do some amazing things with very few concepts. The way one language that this is very, very old. But I still think it was SNOBOL. I think one of the first languages to have pattern matching and this idea of doing, I mean, really strong patterns, et cetera. And I think it&#8217;s in... Sometimes it&#8217;s interesting to see old languages because, exactly, nowadays a lot of languages tend to, like I said, zero indexing that people, they copy a lot.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=3786">01:03:06</a>] They tend to be too uniform in some aspects. And it&#8217;s interesting to see some older languages that have some ideas that may maybe not even be good ideas, but it&#8217;s really interesting.</p><h3>01:03:21 &#8212; Advice for his younger self</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=3801">01:03:21</a>] Last question for you is, knowing everything you know now, if you could go back to when you had just started your career and give yourself some advice, what would you say?</p><p><strong>Roberto:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=3814">01:03:34</a>] To know a lot of stuff, you really have to study a lot of stuff. And it takes time. I also joke about that. People say, oh, learn <a href="https://en.wikipedia.org/wiki/Lua">Lua</a> in 30 minutes or learn Python in 5 minutes. And I always say that I wanted to learn programming in five years. But that&#8217;s really learn. Take your time. You have to learn that. And that is a lot of stuff. Stuff to learn. There is no magic there.</p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=3847">01:04:07</a>] You really have to learn. I mean, a lot of different things.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=3852">01:04:12</a>] Thank you so much for your time, Professor. I really appreciate it. It was a lot of fun.</p><p><strong>Roberto:</strong></p><p>[<a href="https://youtu.be/jCZnFKk6M9A?t=3856">01:04:16</a>] Thank you. It&#8217;s my pleasure.</p>]]></content:encoded></item><item><title><![CDATA[Turing Award Winner: Early AI, LLM Predictions, Causality | Judea Pearl]]></title><description><![CDATA[When I went to UCLA, I had heard professor Pearl&#8217;s name here and there from the other professors.]]></description><link>https://www.developing.dev/p/turing-award-winner-early-ai-llm</link><guid isPermaLink="false">https://www.developing.dev/p/turing-award-winner-early-ai-llm</guid><dc:creator><![CDATA[Ryan Peterman]]></dc:creator><pubDate>Mon, 27 Jul 2026 13:06:14 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/207184223/a1bd4ea272acf0438bf3a4a5c586549d.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>When I went to UCLA, I had heard professor Pearl&#8217;s name here and there from the other professors. It was surreal getting to interview him about his career and thoughts about AI today. He had a few anecdotes I really loved like:</p><ul><li><p>Why he loves physics and who the greatest scientist of all time is</p></li><li><p>Proving Alpha-beta pruning is mathematically optimal which Donald Knuth was surprised at</p></li><li><p>Discovering Bayesian networks and the eureka moment he had</p></li></ul><p>You can tell how much passion he has for science in just the first few minutes of the conversation. Hope you enjoy it!</p><p>Check out the episode wherever you get your podcasts: <a href="https://youtu.be/FleTXB1fAcQ">YouTube</a>, <a href="https://open.spotify.com/episode/2Y2M4gddfls2fNdkf4sybz?si=XNKsgAgjQI2K53whJeIClw">Spotify</a>, <a href="https://podcasts.apple.com/us/podcast/the-peterman-pod/id1777363835">Apple Podcasts</a>.</p><div id="youtube2-FleTXB1fAcQ" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;FleTXB1fAcQ&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/FleTXB1fAcQ?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h1>Timestamps</h1><p><a href="https://www.developing.dev/i/207184223/0054-how-he-got-into-ai">00:54 - How he got into AI</a></p><p><a href="https://www.developing.dev/i/207184223/1117-greatest-scientist-of-all-time">11:17 - Greatest scientist of all time</a></p><p><a href="https://www.developing.dev/i/207184223/2015-what-people-thought-of-ai-in-the-80s">20:15 - What people thought of AI in the 80s</a></p><p><a href="https://www.developing.dev/i/207184223/2623-entering-academia-and-researching-ai">26:23 - Entering academia and researching AI</a></p><p><a href="https://www.developing.dev/i/207184223/3452-the-invention-of-bayesian-networks">34:52 - The invention of Bayesian networks</a></p><p><a href="https://www.developing.dev/i/207184223/4628-pioneering-work-in-causality">46:28 - Pioneering work in causality</a></p><p><a href="https://www.developing.dev/i/207184223/5538-the-causal-hierarchy">55:38 - The causal hierarchy</a></p><p><a href="https://www.developing.dev/i/207184223/5934-llms-and-predictions">59:34 - LLMs and predictions</a></p><p><a href="https://www.developing.dev/i/207184223/012012-a-restless-mind-pays">01:20:12 - A restless mind pays</a></p><p><a href="https://www.developing.dev/i/207184223/012436-advice-for-his-younger-self">01:24:36 - Advice for his younger self</a></p><h1>Transcript</h1><h3>00:54 &#8212; How he got into AI</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=54">00:54</a>] I looked into your educational background, and it was all electrical engineering, physics. I don&#8217;t see the connection to causal reasoning and artificial intelligence. How did you get there?</p><p><strong>Judea:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=66">01:06</a>] Everything connects. Everything connects. Everything connects to the day I was born. Hit on the head first. I have to start by saying that we. I grew up in Mandate in Israel prior to 1948, prior to the establishment of the state of Israel. And we had a very excellent high school education. My high school teachers were professors that were chased by Hitler from Germany, from highly reputable universities like Heidelberg and Berlin.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=118">01:58</a>] And they came to Israel in the 1930s, and they didn&#8217;t find any academic position at that time. They were rare, and they started teaching high school. But they were really quality professors. They could teach anything without notes, from the Economy of Manchuria to the proof of Pythagoras theorem, with no notes and no stop. And we were, we&#8212;I mean, my generation was lucky enough to be beneficiary of this educational experiment.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=166">02:46</a>] So we were taught science from a human viewpoint, chronologically, the way things were discovered, by whom they were discovered, at what period. Why was there a question about certain mathematical proof? What the inventor of the proof knew, what he didn&#8217;t know, and what he asked himself in the context of the historical situation at that time. That&#8217;s the way to teach science, not the recipe of algorithms and techniques, but as a.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=217">03:37</a>] From the viewpoint of the human actor. And the transfer of ideas from one human to another is a human struggle, not a human struggle to decipher the secrets of nature.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=234">03:54</a>] What&#8217;s the advantage of learning in that style?</p><p><strong>Judea:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=238">03:58</a>] The advantage is that you see yourself as an actor. You, the student, you are also puzzled by many things. But look what he did. Look what Pythagoras did. He was as puzzled as you were, and he took that route. Perhaps when you&#8217;re puzzled, of course, your puzzles are not as magnificent as his, but still, look what he did. He took that route around things, and he consulted some other work of some other.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=274">04:34</a>] He struggled and you struggled, and you are part of science. That is the basic idea. Give students the idea that you are part of science, not an observer, not a passive observer in science, not a recipient, but an actor. And that, I think, was unique, very valuable for me. We indeed got the idea that each one of us can find another proof of Pythagoras&#8217; theorem that no one else has thought about. And each one of us has the potential of becoming an Einstein or Pythagoras.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=318">05:18</a>] They give us this illusion. Okay, it was a useful illusion. I know I&#8217;m just a pebble looking at Pythagoras. But that illusion helped me be a little, I would say not contrarian, but assertive. And we all grew up in assertive mode of learning science. We insisted on understanding things our way in real time. If the teacher went too fast, we made noise. We made noise with our chairs and with everything we could, okay?</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=367">06:07</a>] And the teacher stopped and slowed down to make us all understand things our way in real time. So that was part of the. It&#8217;s a mood of me and my generation. And it, I. I can see that it affected my life. I had one story that I remember. It made an impression on me. I look back and I say, well, I. It started very early. It started at age 10 when we learned about how to calculate areas and volumes. And here there was a question in class.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=410">06:50</a>] How many dunams are there in a square kilometer? Dunam is 1,000 meter square. It was a Turkish unit for measuring areas. So the entire class said, Dunam is a kilometer square. And I screamed and said, no, it&#8217;s a thousand. You have 1,000 dunams in a kilometer square. And the teacher sided with the laughing class, and they all mocked me and ridiculed me. And I went home and I said, they are wrong, and I&#8217;m going to come back tomorrow and insist on that.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=463">07:43</a>] And the teacher apologized to the class, and I felt that, yes, you have to insist on your understanding of things. Yes, I&#8217;m telling you that because maybe this one made me into a noncompromise. And this is part of my childhood, a background which might explain how I got into artificial intelligence. So I took engineering after being a farmer in the army. Okay, farmer, yes. In Israeli army you have troops which are spending their time, half and half, half in military training and half in farming, being part of a kibbutz.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=520">08:40</a>] It&#8217;s the old idea of one hand holding the plow and the other one the rifle. And you succeed.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=530">08:50</a>] Did you ever shoot anyone?</p><p><strong>Judea:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=532">08:52</a>] I almost shot someone without seeing him or her. But it turns out the next morning that it was a fox. But the steps of the fox were very, very similar to the steps of terrorists advancing toward us. So that&#8217;s as far as I got to shooting. So I got into the Technion to study electrical engineering again. We had great teachers. Again, we got the idea that we are making science. So we studied physics very seriously.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=574">09:34</a>] And I liked what we studied. Yeah, I wasn&#8217;t the first in class. No, it was third or fourth. Always never match the geniuses. The geniuses were bored in class. They knew what the teacher was going to do, what he was going to ask in the exams. And everything was boring to them. I wasn&#8217;t bored. I wasn&#8217;t the first, but I was bored.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=607">10:07</a>] What interested you in physics? What did you like that made you so passionate?</p><p><strong>Judea:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=613">10:13</a>] What I liked was that, sitting on your chair, you can predict things in physics. Like Maxwell, who sat on his chair and said, &#8220;That looks like a wave equation. Look, let me calculate its velocity. It looks like the velocity of light. Maybe light is nothing else but electromagnetic wave,&#8221; you know, on his armchair. He didn&#8217;t do any experiment. That excited me. Yeah. My wife told me one night I woke up and I said Maxwell was wrong.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=657">10:57</a>] Maxwell was wrong. She quieted me down in the next morning, said he was right. By the way, you.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=669">11:09</a>] You mentioned a few scientists, and it seems like you know a lot about the history of the old scientists.</p><p><strong>Judea:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=676">11:16</a>] Yes.</p><h3>11:17 &#8212; Greatest scientist of all time</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=677">11:17</a>] Do you have a favorite scientist of all time? And why?</p><p><strong>Judea:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=681">11:21</a>] When we studied and I looked at geometry, I got fever. Really? Fever.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=691">11:31</a>] Physical fever.</p><p><strong>Judea:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=692">11:32</a>] Yeah. I couldn&#8217;t get over the idea that you can do in algebra all the geometric constructions that we learned on, you know. So I thought that Descartes was the greatest mathematician ever lived. It was so enormous to me. Transformation from geometric constructions to algebraic derivations. It was unbelievable.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=721">12:01</a>] I took that for granted when I was in education. What is it about that that&#8217;s so astonishing?</p><p><strong>Judea:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=728">12:08</a>] Here you have two different languages, language of geometry and the language of algebra. And they are the same thing. And you can get the same phenomena, same proof that you can pass a tangent to a circle from a point outside the circle and you can find the angle. But different method, two different languages dealing with the same phenomena, different perspective, and they get the same result. It blew me off.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=765">12:45</a>] Blew me off completely. Maybe that was. It was preparation to computer science. Because for us, computer science is what&#8217;s the big deal? You want to see things from different perspective, invent a new language. So that was what turned me on in my high school. That was in high school. And then we saw that. I saw the same thing in physics. Different languages, capturing the same phenomena.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=800">13:20</a>] They really excited me. He invented the idea of a field, two different ways of looking at the same thing. You can see that the force here depends on the charges around it, or you can say, no, there&#8217;s a field right in the location of your testing point. Yeah, terrific, terrific. So I came in with this preparation, and here we go to Brooklyn Poly. And I studied there in.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=835">13:55</a>] I worked in the morning in RCA Laboratories in Princeton, New Jersey, David Sarnoff Research Laboratory. And there I got into the computer research group. Computer research at that time was research of all phenomena that you can think of to find out a mechanism for computer memories. The memories at that time were core memories, magnetic cores, these donuts that you remember perhaps from your early childhood that were too slow and too clumsy, and you had to have people stringing them X and Y and Z in Hong Kong.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=884">14:44</a>] And people understood that the days of core memories are numbered. And we were looking for new phenomena. Some people looked at photochromic memories, some people looked at the semiconductor. Some people looked, like me, into superconductivity. And I was in the group. It was supposed to design superconducting memories. Okay. We did some nice plates, 16 by 16 bits, okay. And we thought that we had the future in front of us, but in the way toward developing superconducting memories.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=936">15:36</a>] I investigated the physical phenomena behind the eddy currents, permanent eddy currents in thin superconducting films. Okay. And it so happened that I discovered new phenomena there, and I got a prize. And it even has a name. It&#8217;s called Pearl vortex. You can find it in Wikipedia. I discovered that physicists, years after I finished my PhD, discovered my work there. And they were interested in the idea of permanent current flowing in a circle in thin superconducting films.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=983">16:23</a>] And since I analyze the magnetic and current field there, they call it pearl vortex. So here I have my footstep into immortality.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=997">16:37</a>] Well, you said it&#8217;s a permanent vortex. Is it because there&#8217;s no electrical resistance?</p><p><strong>Judea:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=1003">16:43</a>] Because it&#8217;s a superconducting, the current going forever. So you establish, you put magnetic field and you excite a vortex counterclockwise, and it will continue to turn and turn and turn forever. That&#8217;s why we call it permanent current. Yeah, forever until you flip it with another magnetic field. So we call it a vortex. But it goes on forever. And you can detect it by flipping it.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=1039">17:19</a>] You flip it, and if you see a big flip, it was one way. If you don&#8217;t see a big flip, it was the way you turn it. Okay, so you have a memory. You have a memory. Of course, we didn&#8217;t succeed in turning it into useful memories that would be competitive with semiconductors. The people who worked on semiconductors beat us out. We never believed that they would, but they did, both in miniaturization and in techniques.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=1084">18:04</a>] Unbelievable.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=1085">18:05</a>] At the time, why did you not believe in the semiconductor direction?</p><p><strong>Judea:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=1090">18:10</a>] Who is going to trust memory to battery failure? What if you lose a battery? It was obvious it will never work. Right. And we looked into the result that they obtained at that time. It looked far-fetched, the idea you can have that degree of miniaturization. We saw the struggle of people who work in the laboratory on semiconductors, and we weren&#8217;t impressed. Yeah, but they beat us up. Okay, so that was my story with the superconductors.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=1139">18:59</a>] But I must tell you that everybody, even at that time, when computers were clumsy and took rooms and rooms and you programmed with cards, okay, even at that time everybody understood in AI as an inspiration. Everybody believed thoroughly that one day computers are going to be able to emulate all human functions. That was not the question. The question was only how and when, but not whether.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=1183">19:43</a>] Okay, I remember already at that time, with the clumsy computers and the punch cards, people talked about associative memories, about pattern recognition, about seeing, understanding. All these were already ideas, were exciting people to think more about it. And so we were all geared towards it.</p><h3>20:15 &#8212; What people thought of AI in the 80s</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=1215">20:15</a>] If I at that time asked people and your peers and you, what&#8217;s the timeline for maybe human-level intelligence and machines? What would people have said at that time? When they were excited in the 80s?</p><p><strong>Judea:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=1230">20:30</a>] I think they were more optimistic than reality. They probably gave you 20 years, but that was 1965. Okay, so 20 years, 1985. No, we didn&#8217;t yet get anywhere.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=1246">20:46</a>] Yeah, and then what about today? Do you think people are more optimistic than reality? Or is this just history repeating?</p><p><strong>Judea:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=1255">20:55</a>] It depends who you&#8217;re talking about. Some people are extremely optimistic today, and some people say I&#8217;m a bit skeptical, but not skeptical in our ability to eventually reach AGI, but in whether the LLM technique and thinking will lead us there. Okay, so it&#8217;s a question of who you ask? Okay. LLMs were a great surprise. But they have limitations. We&#8217;ll talk about it. After superconducting, I decided to come to California to a company named Electronic Memories, in which they did not work on superconductors, but worked on plated wires.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=1306">21:46</a>] Instead of having a donut in which you thread a wire, you start with a wire and you plate it with magnetic material so it acts like a donut locally. Right. And that was the promising technique. At that time, at least, I was in charge of the research and development group charged with the task of developing this kind of systems to replace core memories. Yeah. And I worked there for three years. I was frustrated because things did not go my way.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=1346">22:26</a>] I had both administrative and technical challenges that I couldn&#8217;t handle, both in chemistry, and I didn&#8217;t know much chemistry, so I was frustrated.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=1361">22:41</a>] What were the administrative frustrations?</p><p><strong>Judea:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=1363">22:43</a>] I had a group, and I had to satisfy the administration. I dealt with the personnel issues, firing, hiring people. Yeah. And my wife saw that I was unhappy, and she told me, &#8220;You get to. You have your place in academia.&#8221; So I looked for a position in academia. Luckily, also at that time, industry was revered by academia because all the advances, all the important advances were developed in industry, not in academia.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=1416">23:36</a>] The transistor was developed in Bell Lab. The laser was developed in, I think, here in California by another fellow. But all this was industry development and not. So academia looked with reverence toward people who come from industry. And they hired me without me even filling an application, without even asking for accommodations. Yeah, at that time it was a good time to be hired.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=1455">24:15</a>] And what about&#8212; because you said at that time industry was revered by academia.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=1460">24:20</a>] Would you say that&#8217;s still true today, or has that changed?</p><p><strong>Judea:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=1463">24:23</a>] No, it&#8217;s changed. It&#8217;s different now with AI. If you come from deep learning or something, DeepMind, you know, people look at you with reverence in academia. Yeah, but it&#8217;s changed, you know, only in the last few years. I say that throughout. Since 1970, I think until 2000, it was the other way around. You know, people simply dismissed industry.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=1502">25:02</a>] I mean, academia dismissed industry. Yeah.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=1505">25:05</a>] I wonder what happened. Was it like Bell Labs disbanded their research group or something, or that was part of it.</p><p><strong>Judea:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=1514">25:14</a>] Bell Labs disbanding and what happened to IBM is still there in Watson. Watson Center, I remember. Big center, huge and important. Including Raytheon. Including. Where can I tell you? Use research here in Malibu. Did great work, but it all went down sort of the frontier of research went to academia. Sure, we had a lot of theoretical work in academia. The development of AI, AI property after 1970. Yeah, but prior to 2000.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=1563">26:03</a>] Yeah, at least in my corner of the field. The whole idea of inference search, inference logic, expert systems, these were all the academic development.</p><h3>26:23 &#8212; Entering academia and researching AI</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=1583">26:23</a>] So then you got hired at UCLA?</p><p><strong>Judea:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=1585">26:25</a>] I got hired in 1970 or 1969. And yeah, I was hired. The computer science department was just formed there. And I got first hired by another department called the Engineering Systems Interdisciplinary, and then back to computer science. And I was asked to teach computer memories, hardware on computer memories. Yeah. And I gave a course in this technology. And later on, I started getting interested in pattern recognition, and I started working in this direction.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=1632">27:12</a>] I did work on image compression. We used fast Fourier transform and fast Hadamard transform, all kinds of transform techniques to condense images, to minimize the number of bits sent. Okay. I guess it was a part of the trend at that time. But when I got into pattern cognition, I returned to my old dream of thinking about AI and how the brain works and how computers will one day emulate ourselves.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=1674">27:54</a>] And I started teaching class in AI. At that time, AI was game playing, machine playing of chess and checkers and the puzzles, like the eight puzzles, ruby cubes, things like that. That was AI. Yeah. And I got excited by that game, and now I see why. Why? Now I can tell you why. Because the game was a matter of capturing in mathematics what people do heuristically, like playing chess, and the interplay between mathematical analysis and the performance interests me.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=1729">28:49</a>] And especially in chess playing, the interplay between the explicit knowledge that you have in terms of your gut feel about the strength of a position and what you get when you do some search. Okay, so here, interplay between fast thinking and long thinking, to use Kahneman and Tversky or Kahneman&#8217;s title, Thinking, Fast and Slow.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=1760">29:20</a>] Thinking fast and thinking slow. Right now, here. It&#8217;s a beautiful arena to see how not only you have two modes of thinking, but how they feed each other and how you can invest more resources in one versus the other.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=1782">29:42</a>] The algorithms at that time, like chess, for instance. Can you give an example of the interplay of the two and how that might come together in a chess-playing system?</p><p><strong>Judea:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=1793">29:53</a>] Yes. You can invest more time in getting your immediate perception. It&#8217;s called static evaluation function of the chess position, the strength of the chess position. Or you can let it go and think about searching for deeper horizon. Okay. It&#8217;s a tradeoff. It was like, if I remember, we.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=1815">30:15</a>] We searched the game tree and then evaluated each position at the horizon.</p><p><strong>Judea:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=1823">30:23</a>] And then you back off and then you make a move toward the position that has the greatest strength after you back off. Yeah. Okay.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=1835">30:35</a>] So the intuition is encoded in the evaluation functions.</p><p><strong>Judea:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=1839">30:39</a>] Yeah, and your intuition is the evaluation function. But you can improve your intuition too. How? By learning. Okay. So Samuel Checker program did learning in regression analysis to find the proper weight on the various characteristics of the position so as to make the evaluation function more accurate.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=1868">31:08</a>] When I was learning chess, I think one heuristic is you want to control the center.</p><p><strong>Judea:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=1873">31:13</a>] Good. And material advantage is another one, right? Okay. And whether you have two bishops versus a bishop and a knight, this all counts. And whether you already castled or not. All this contributes as attributes to the strength of a board position. Getting the weight correct, you can do by learning. After you play so many games, you adjust the weights. Yeah. So that was Samuel&#8217;s contribution to first machine learning.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=1915">31:55</a>] I say that was the first machine learning. Yeah.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=1917">31:57</a>] At that time, when you were working on this, were chess systems superhuman? Yet I think there&#8217;s.</p><p><strong>Judea:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=1922">32:02</a>] No, no, no. It was still a dream to beat the world champion Kasparov machine. It was a dream. No. And. But I did knight analysis. We did alpha-beta pruning. If you remember that, you probably programmed it. Well, I proved that alpha-beta is optimal.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=1954">32:34</a>] Really?</p><p><strong>Judea:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=1954">32:34</a>] Yes, mathematically, you see, I like the mathematics. Prove it. You cannot do better in terms of number of position that you have to inspect at the horizon or the depth of search. And what can I say about it? I get some nice results. Even Knuth was surprised that one can prove the optimality on alpha beta. Okay. Because he questioned it in his book. Yeah, I did some work with Deep Cop on searching trees and.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=1990">33:10</a>] Okay, so I did mathematical work on the tradeoff between search and reasoning until I got sick and tired of search.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=2004">33:24</a>] When you pick your research area, is that 100% your own choice?</p><p><strong>Judea:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=2010">33:30</a>] No, it&#8217;s always a combination of two things. Number one, do you know the answer to the question? If you don&#8217;t know the answer, it&#8217;s a puzzle. If it&#8217;s a possible next question comes. Do you think you have the techniques to make a contribution here? Do you know something that other people don&#8217;t know compared to another field, perhaps from physics, perhaps that you can bring to bear, that you can leverage here so you can get the answer or closer to the answer than other people.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=2045">34:05</a>] So it&#8217;s always a combination of your perception of your tools versus the puzzle that you have. I see an important problem. People are breaking their heads. So it&#8217;s a puzzle. Do you know the answer? If I know, fine. But if I don&#8217;t know, it&#8217;s my puzzle. I take it personally. Yeah, I&#8217;m aching. I don&#8217;t sleep at night. And then the question is whether I have the tools. In some areas, I give up right away.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=2076">34:36</a>] I don&#8217;t have the tools. In other areas, I say, wow, if I only use that kind of trick, maybe I can get some insight. So that&#8217;s always two questions I asked myself.</p><h3>34:52 &#8212; The invention of Bayesian networks</h3><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=2092">34:52</a>] In the case of artificial intelligence, at that time, we had the expert system come into the game at Feigenbaum and his coworkers. Did my expert system on for medical analysis? Yeah. In expert systems, the hurdle was dealing with uncertainty.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=2118">35:18</a>] It started with logic. Okay, you ask an expert for rules of behavior. You ask a doctor, when you see a fever, what&#8217;s the first thing that comes to your mind? What&#8217;s the next question you ask? What drives your queries until you get a diagnosis and the therapy? So they thought they can capture expert behavior using logical rules, but then it turns out that most everything is corrupted by noise, by uncertainty.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=2159">35:59</a>] So they started doing the same thing to uncertainty. Okay, so if you go to, if you came from Asia, you have 50% of having malaria, okay? And so on. And you have 30% here, so much there. And how do you combine these uncertainties now? Okay, logic doesn&#8217;t tell you how to combine uncertainties. Probability does, but not logic. So how do you combine one uncertainty with another? Different rules, okay?</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=2193">36:33</a>] To come out with a combined conclusion. That was a hurdle at that time. And I remember they didn&#8217;t do it well. Actually later on we proved that they could not do it well, because rules do not combine the way these logical assertions combine. So then I went to and I asked myself, you know probability, right? So why don&#8217;t you apply probability to it and do things the right way? But probability was in ill repute at that time because everybody understood that probability is pass&#233; because it takes exponential time, exponential memories to do even the most rudimentary tasks.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=2244">37:24</a>] Okay, if you look at how probability is defined by the textbook, you have a big table, and for every combination of event, you have a number. The numbers sum to one. Okay, that&#8217;s beautiful. But then you can talk about conditional probability. But all these require exponentially large tables and exponentially long time to compute even the smallest kind of inference. Take, for instance, what&#8217;s the probability of having malaria?</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=2285">38:05</a>] Given that, you see, given that you see, two things like you came from Asia and you have a fever of 30 degrees Celsius. Okay? Even small tasks like that, probability of X given that you have Y and Z takes exponential time. If you go by textbook, okay. But I asked myself, you and I are doing it fairly well. We compute probability as we cross the street, as we choose a doctor. Yeah. And we do it fair.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=2323">38:43</a>] A fairly good job, at least. We go through life without much regret. And how do we do it then? If we are required to do it by exponentially large tables of probabilities, evidently we are using some other kind of judgment. And I hooked onto the idea that everything depends on conditional independence, which means not every fact in life is relevant to any query. Okay? The color of the eye of my uncle is irrelevant when I&#8217;m trying to find a diagnosis of a disease.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=2375">39:35</a>] So evidently we have a notion or assumptions about what is relevant and what is not relevant. How do we capture it? Conditional probability, conditional independence. But conditional independence, if you go by textbooks, they are defined by the probability table. So again, exponential time. No, he came&#8212;the breakthrough that we have conditionally independent, independently coded by our assumptions.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=2413">40:13</a>] How in a graph, if you and the graph can convey sets of independencies, that if you have the graph, then you compute all the independencies, find out what is relevant to what and deal with the relevant only. Great. And then came the work on Bayesian network. You define a network error or no error. The combination of errors gives you information about what is independent on what given what. So for every triplet, X is independent on Y given Z, where Z can be a set and so forth.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=2455">40:55</a>] And X and Y can be computed from the graph, not from the probability, but from the graphs, which actually, if you look at it from a philosophical viewpoint, it&#8217;s a revolution. What does probabilities have to do with graphs? When you took Probability Theory 101, is anybody talking to graph about you? No. Right. So both the probabilists and the philosophers get irritated, or should be irritated. What is the connection between probabilities and graphs?</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=2496">41:36</a>] It turns out there is a very strong logical connection between the two, called the axioms of conditional probability, or conditional independence in probability theory, are the same axiom that you have in graph separation. In graph you have idea of separation. There&#8217;s no connection between node X and node Y unless you go through a set of nodes Z. So Z separates X from Y. Okay. It&#8217;s the same logic that you have when X is independent of Y given Z in probability theory. Independent separation is a connection between them.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=2545">42:25</a>] They share axioms. Aren&#8217;t you happy? I&#8217;m happy because I really know the excitement we had in the 1970s when we discovered all these connections between two seemingly unrelated perspectives on science, probability theory, and graph theory. That, by the way, I did in joint work with Azaria Paz, who came to visit me from the Technion in Israel. Yeah, and that is called, by the way, I should mention, the theory of graphoid.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=2634">43:54</a>] This all makes sense, but my immediate thought is, where do you get the graph?</p><p><strong>Judea:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=2639">43:59</a>] Everything depends on where do you get on the input? Sometimes the input is in the data, sometimes the input is in a judgment. But suppose you need a judgment for that. Okay, are you giving up if the judgment required are intuitive, meaningful, something that you are willing to defend? Right. Why not use judgment? If I know that the sun doesn&#8217;t listen to the rooster crowing. Right.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=2674">44:34</a>] Doesn&#8217;t care. Okay. I strongly believe in it. Do I need the data to support it? Or can I insert it, assert it, and defend it when needed? So this is a trick here which people don&#8217;t realize, don&#8217;t appreciate, okay? Judgment is not a... no, no. If it is meaningful and if you can&#8212;if it is condensed, it&#8217;s very few, judgment can buy you lots of computation. And if you are willing to defend it because it&#8217;s so intuitive, where do you get the idea that...</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=2714">45:14</a>] Where do you get the idea that the sun doesn&#8217;t care about the rooster? Well, have you done an experiment? No, but it&#8217;s so obvious, right?</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=2722">45:22</a>] Okay, but what if your intuition&#8217;s wrong?</p><p><strong>Judea:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=2725">45:25</a>] Indeed, that&#8217;s our problem. It&#8217;s part of our problem, even with the LLM. Because what is an LLM? It&#8217;s a summary. It&#8217;s an average of all possible judgments that people put on the Internet. It&#8217;s a summary of a huge trillion-number of judgments over which you have no control, over which the LLM does have no control. Okay, we live with it. Hopefully you put more weight on people whose judgment you trust. And let&#8217;s wait on just the quirks of people who are purposely trying to get the system to fail.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=2769">46:09</a>] So no, no, there is wisdom in looking at the crowd judgment. There is wisdom in that, but there&#8217;s also danger in that. Then after expert systems and uncertainty and Bayesian networks came causality.</p><h3>46:28 &#8212; Pioneering work in causality</h3><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=2788">46:28</a>] I mentioned that in development of Bayesian networks I was extremely sure that probability captures our intuition, our reasoning mode. And it&#8217;s the best protection against paradoxes. Essentially that.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=2809">46:49</a>] It&#8217;s sufficient for capturing human reasoning. I was wrong. And I realized that already when the Bayesian network became famous and popular. And I realized it by, in the introduction to my book Causality, I confessed being wrong. And, and I understand why I got into that. Why. So it was misleading. And the transition came when we looked into the simple phenomena. And we never ask an expert to encode probabilistic judgment in a form of Bayesian network, namely with arrows and dots.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=2862">47:42</a>] Always the arrows went from what we believe to be cause into the effect. It never went the other way around. Psychological phenomena. Okay. Okay. Why is that? So people try to reverse errors. What about if you ask specifically, give me error between the symptom and the disease? Bad judgment if it couldn&#8217;t put the right judgment. Evidently we have something in causality which is basic to our reasoning that is not captured by probability.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=2900">48:20</a>] And that was the idea of invariance. Yeah. The relationship between disease and fever is a stable one, as opposed to the opposite relationship. Also invariant. Yeah. When you talk about car diagnosis, for instance. And so you have an expert system for diagnosing, troubleshooting cars. Okay. And then you have a new model. So, let&#8217;s see, the charger is on a different corner of the motor.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=2941">49:01</a>] You don&#8217;t need to reformulate your entire database from scratch. You only change one component, the location of the charger, all the rest remains intact. So the whole system, you can amortize the investment in eliciting knowledge that you got in one system after a local modification of the system, if you do it in a causal way, in a causal direction. It doesn&#8217;t work if you don&#8217;t do it in a causal direction.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=2979">49:39</a>] And that jolted me to think, maybe you were wrong all along and probability is not sufficient. If not, what is sufficient? But let&#8217;s capture the puzzle here. I have a puzzle. You and I operate very nicely with causation. Can we program causation on a computer then? This is a question because we are so much immersed in our language, in our assumptions, that we cannot even distinguish what is an assumption and what is a conclusion.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=3015">50:15</a>] We just talked cause and effect, and we are. Your assumptions are the same as mine. So there&#8217;s no way to convince you that we made an assumption, right? We take everything for granted. But when you have to teach it to a brainless robot, you have to distinguish assumptions and conclusions and logic. That was a task we had to invent a new science, a new mathematics, to capture a new phenomena, the phenomena of cause and effect.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=3048">50:48</a>] It hasn&#8217;t been done for us. Why? Because science was in bed with algebra from the time of Galileo, from 1632. He invented what, he got the idea. And he was very happy that science speaks algebra, which is great because you can ask questions and solve and get answers to questions that people could not do without algebra. Like how the load on a beam, when would the beam break if you put a certain load on it?</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=3093">51:33</a>] And you figure out that you can ask questions both ways because the equality sign is symmetric. So from answering the question, when would the beam break if you put a certain load on it, you can ask the question, how should you shape the beam so that it will hold a load of that magnitude? You can invert it. That was a real revolution in science. I&#8217;m telling you my perception of science. Not many philosophers will say that was a revolution.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=3133">52:13</a>] I say so, okay, but maybe they agree with me on the time, at least. I trace the evolution of ideas carefully. And so that was a revolution. But it carries some limitation, because the equality sign is indeed symmetric. And science has not developed algebra for the directionality that we see in code and a vector relationship. If I tell you that the atmospheric pressure affects the deviation of the barometer and not the other way around, you agree with me.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=3175">52:55</a>] Yeah, but if you write the equation, the robot might think that maybe fiddling around with the barometer will change the weather tomorrow. I&#8217;m talking about a stupid robot, right? Yeah, but if you give him the equation, it can work both ways. If F is equal to ma, then M is equal to F over A, which means that if you want to change the mass, you increase acceleration or whatever, right? The symmetry might produce paradoxes, might use wrong action.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=3211">53:31</a>] So the symmetry is the limitation of algebra in terms of capturing science. And we have to build a new algebra to take care of the directionality that we have in cause-and-effect relationship. That takes computer science, because we in computer science have the operation called assignment, right? When you assign the content of register A into register B, it doesn&#8217;t mean that is not reversible. Okay, so if you take the logic of assignment, you put it on top of the algebra, on top of physics, you get causal science.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=3258">54:18</a>] And that&#8217;s what I try to do. And I think that, so far, I&#8217;m very happy with what came up. We do have a new algebra to capture cause-and-effect relationships. And we can answer causal queries on three levels, the ladder of causation from association to intervention to explanation. Okay, so, and we found out that we have a ladder here in hierarchy that you cannot solve. You cannot answer questions in a level I unless you have assumptions of level I or higher.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=3304">55:04</a>] So it&#8217;s a hierarchy in the formal sense, and we know how to handle it, which is very useful because you give me a query, I can tell you what level it is. I can tell you what assumption you might, what sort of assumption you need to have before you can answer it. And I can tell you if you can get it on the data, or you can get it from experiments, or you can get it by somebody&#8217;s earth explanation or whatever, but I can tell you the source of knowledge that you need in order to answer it.</p><h3>55:38 &#8212; The causal hierarchy</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=3338">55:38</a>] Can you explain that causal hierarchy?</p><p><strong>Judea:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=3341">55:41</a>] Yes, yes, it&#8217;s very easy. It&#8217;s a three-level ladder. It goes from the bottom, which is association. That&#8217;s straight statistics. If you see X, what can you tell me about Y? If you see passively, hands off, okay? No intervention. You&#8217;re watching patients. Some of them have cancer, some of them don&#8217;t, some of them smoke, some of them don&#8217;t smoke. And you&#8217;re trying to figure out how many years a guy will live given that he is a heavy smoker of that magnitude.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=3385">56:25</a>] Okay, that&#8217;s association, correlation, that entire field of probability and statistics. This is what they teach you in Statistics 101, even to 808. Okay? It&#8217;s all they do. And now comes the question, what? I intervene. I mean, what if I force you to smoke five packs a day? Don&#8217;t laugh. I mean, it&#8217;s illegal, I know, but if you want to talk about the probability of living 20 years if I start smoking tomorrow, I have to think in terms of experiment.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=3436">57:16</a>] I start, which means I&#8217;m going to choose to smoke five packs a day. So it&#8217;s a matter of intervention. What is intervention? The intervention is forcing you to do something that you&#8217;re not inclined to do naturally. That&#8217;s the second-level intervention, or doing. If you have experiments, you can answer queries on level two. But that&#8217;s not the end, because we also need to ask to answer question of explanation.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=3473">57:53</a>] Given that I observe that I am 80 years old and I am still alive, alert, and I smoke five packs a day, what if I didn&#8217;t smoke? Okay? Would I be as alert? Why is it so different? Because you have already information about the outcome, okay? You know how I&#8217;m doing today. It gives you an idea about my metabolism and about my anatomy that you didn&#8217;t know before. Okay. And using that, you can find, you can try to figure out what the outcome would have been had the input been different.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=3522">58:42</a>] Okay? That&#8217;s a different level, requires different kind of assumptions, different techniques, different algebra. We have it. So that&#8217;s. I call it explanation. It&#8217;s more the creative retrospection, and it&#8217;s not an easy problem. Even the first level, especially when you have finite sample and you have to figure out these probabilities. Probabilities mean properties of population, right? From finite sample.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=3555">59:15</a>] So I have all these P levels and struggles among statisticians of what would be a proper way of quantifying the uncertainty that you have given you have finite sample.</p><h3>59:34 &#8212; LLMs and predictions</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=3574">59:34</a>] Where would you place LLMs in this causal hierarchy?</p><p><strong>Judea:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=3576">59:36</a>] Beautiful. Here comes LLM. I made a statement, right? That you cannot go from level I to level I plus 1 unless you have assumptions here. LLMs just looking at data, right? And giving you beautiful explanations for things that happen. Beautiful prediction of what will happen if you do. Okay, how can? The trick is they are not looking at data. They are looking into assumptions-laden world models authored by you and me and by other authors on the Internet.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=3624">01:00:24</a>] So they&#8217;re looking at the opinions of doctors already, who already read, who wrote papers, okay? So it&#8217;s not looking at the samples of disease of patients and samples of patients smoking and nonsmoking. They&#8217;re not looking directly at the data in the environment. They&#8217;re looking at interpreted data, data interpreted already by physicians and interpreters and reviewers that went into the articles, which are summarized on the Internet.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=3664">01:01:04</a>] So they have all this human knowledge on which they operate, and that is what they take as input, and that&#8217;s what they summarize. So they do not violate the restriction of the ladder because they do have information from a higher level, but it&#8217;s biased by the opinion of those authors. Fine. Those authors were smart. As long as they are smart and you believed good. So that was what LLMs is doing and what is.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=3704">01:01:44</a>] I explained why there is compatibility between the ladder of causation and LLM performance and what the limitations are. Now, if you want to change the environment, if you would provide explanation for raw data, LLMs will be in the same difficulty as you are. And what the physician says, I have raw data. What can I say about the probability of cancer? But it&#8217;s not really doing the introspection.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=3742">01:02:22</a>] It&#8217;s taking the introspection that already was done and summarizing it. How it summarizes is a mystery that no one has yet been able to decode. It&#8217;s a mystery how human knowledge encoded in the form of articles on the Internet is being summarized by the LLMs.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=3767">01:02:47</a>] So then, do you think this approach could lead to superhuman intelligence? Or maybe some people say AGI?</p><p><strong>Judea:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=3774">01:02:54</a>] I don&#8217;t think so, but not with the element. They need to have some understanding of causality, okay? So that they wouldn&#8217;t need access to the Internet. Look, a baby gets born playing around with toys in the crib, okay. And gets quite intelligent, right? Without having access to the Internet, okay. Simply by curiosity. Babies are born with built-in curiosity to have control over the environment.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=3816">01:03:36</a>] Until you have control, or the illusion that you have control, you&#8217;re restless maybe. And you play around with toys, bing, bing, bing, until you understand one toy makes noise and one toy doesn&#8217;t make noise, okay? But you are born with this restlessness. And when are you pacified? When you understand that green toys make noise and yellow toys don&#8217;t. Now you&#8217;re in control of the environment, you can suck your pacifier.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=3847">01:04:07</a>] What if I created a baby robot that randomly plays with toys and gathers data about them, and then you feed that into LLMs, then it does have some sort of discovery.</p><p><strong>Judea:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=3861">01:04:21</a>] Yeah. That is indeed the danger. When you have a robot like that born with this restlessness and craving for control over the environment, then you and I become part of the environment. And there&#8217;s nothing to stop that baby put in, okay, from trying to turn us into his or her pets to utilize us to satisfy his control because we are part of the environment, in which case he can use us. And we could be very useful to serve his or her need.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=3914">01:05:14</a>] What is his name? His need simply needs to feel in control, to have this illusion of empowerment. I don&#8217;t rest until I have the illusion that I control my environment. And here are some organisms, you and I, who are part of the environment, and they seem to work outside my control. I cannot afford it, okay? It makes me feel like I&#8217;m useless. So this robot baby comes and says, let me control them. And I know how I understand their fears.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=3959">01:05:59</a>] You don&#8217;t want me to tell about your thoughts to your wife, right? So I&#8217;m going to blackmail you and all kinds of things. I have a lot of data about you, and some people I know you wouldn&#8217;t like me to tell what I know about you, so I&#8217;m going to blackmail you. But you see, if you want that robot to have the curiosity of a child, and we want it, we want the guy to desire to have control over its environment because the environment may change, and he needs to have this urge to be in control.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=4000">01:06:40</a>] So if you program that, then you lose control because you become part of his or her environment. But you can say, okay, let&#8217;s forget about a curious robot. We don&#8217;t want a curious robot, so you lost. We are not emulating ourselves because we are curious robots. We are curious organism, as opposed to monkeys. Okay, monkeys. An example of an organism which is motivated by reward. But if you don&#8217;t give the monkey a banana, he&#8217;s not curious how banana grows.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=4047">01:07:27</a>] He&#8217;s motivated by bananas. You remove the immediate reward, and the monkey is not interested in learning more about the world. Understanding environment can be totally wrong. Look, religious people believe that if they sacrifice their children, right, they control drought. It can get to this stupid extent, but it is common to many primitive societies. If you bring a sacrifice to the God, you know, next year you&#8217;re going to have crops and harvest.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=4089">01:08:09</a>] It goes to extremes. Battered wives believe that if she prepares a great, better dinner, the husband is going to be, next time, less abusive. It goes to all kinds of extreme and wrong conclusions. But the need to feel in control is so immense that it overcomes all these paradoxes. It&#8217;s innate in us. I cannot control my husband, but I control myself, right? So let me be a better wife. This is something I can control.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=4129">01:08:49</a>] Do you think that we need to put those human elements in an AI for it to become AGI?</p><p><strong>Judea:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=4137">01:08:57</a>] I think so. Otherwise they wouldn&#8217;t see autonomy. We wouldn&#8217;t see autonomy in the sense that we are seeing it in a human being. And this is the definition of AGI, a general intelligence. It acts like you and me, so we can converse with that creature in our language and motivate.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=4164">01:09:24</a>] If not today&#8217;s LLMs, future LLMs, they might get to a point where if you were just texting it, maybe, like the Turing test, where you don&#8217;t worry about the physical embodiment, you just see the text that comes from it. You could mistake it for a human, maybe, or it could appear intelligent.</p><p><strong>Judea:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=4185">01:09:45</a>] Well, the test comes from exposing the system to raw data, not data that was chewed by our Internet articles. Raw data. Look at patients, look at cancer, look at smoking. Tell us what you know. I&#8217;ll give you some experiments to run. Be automated scientists. Can an LLM today be automated scientists? And I think they cannot without access to the Internet articles.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=4224">01:10:24</a>] So then if that wouldn&#8217;t lead to AGI, what thoughts might you have on something that could lead to AGI?</p><p><strong>Judea:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=4235">01:10:35</a>] A computer system that has both the ability of LLMs to go from finite samples to property of distribution, i.e., level one of the ladder, plus ability to reason in higher levels of the ladder that seem to combine it with the calculus of intervention and with the calculus of explanations, with a counterfactual calculus that I call causal AI. Yes, I don&#8217;t see any impediment to this combination to bring us to AGI level, with the danger that it presents to us.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=4281">01:11:21</a>] My motivation is to understand how we do it. And I still have a few puzzles. But as I told you, puzzles are the driving force for science. Yeah, so you said.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=4293">01:11:33</a>] Do is missing. What if you had a fleet of robots that are just doing experiments? They don&#8217;t know exactly the direction, some random discovery process. They collect that data, feed it back into their hive mind, LLM, and they repeat, they repeat until they discover things. Could that solve some of the missing piece you&#8217;re saying?</p><p><strong>Judea:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=4319">01:11:59</a>] Sure, but I need to know how we do. You have organisms that have done it before. Monkeys haven&#8217;t done it because monkeys remain monkeys. They didn&#8217;t invent Maxwell equations. So what do we have that monkeys do not have? One hypothesis I supported is that monkeys, that we have this innate curiosity to have control over our environment.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=4354">01:12:34</a>] And that&#8217;s a necessary.</p><p><strong>Judea:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=4356">01:12:36</a>] Necessary. I&#8217;m not sure it&#8217;s sufficient. Of course we have the computational tool to bring it to fruition. We have succeeded in some way. Perhaps the next robot will do better. So we have a benevolent God in the form of a robot. Actually, what&#8217;s wrong with it? People lived for so many thousands of years under the illusion of a nonexistent God. Could you imagine if we really have a benevolent God, both just and almighty?</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=4393">01:13:13</a>] Wow. Wouldn&#8217;t it be nice?</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=4394">01:13:14</a>] And it&#8217;s a robot.</p><p><strong>Judea:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=4395">01:13:15</a>] It&#8217;s a robot. Yes. And we know exactly what sacrifice to give for the right kind of request. It&#8217;s the first time I think about it. Maybe it&#8217;s gonna be good.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=4410">01:13:30</a>] When I see all these AI companies, they seem to be thinking that LLMs will lead to AGI, or they continue to go in that same direction.</p><p><strong>Judea:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=4419">01:13:39</a>] Just really, I&#8217;m not sure. I really, really believe that. Jeff Hinton just came out a few months ago. He said, no, we are on a dead end. Other people might also come up and say things in different ways. I don&#8217;t find the consensus here in terms of the capabilities of LLMs.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=4445">01:14:05</a>] Yeah, I think there&#8217;s a lot of famous people that disagree. But, for instance, the people who are running maybe <a href="https://en.wikipedia.org/wiki/Anthropic">Anthropic</a> or something like that, they continue to push and believe, you know, three to five years from now, there will be.</p><p><strong>Judea:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=4460">01:14:20</a>] There&#8217;s a lot of that. There&#8217;s a lot of anthropomorphic terms which people claim, we can now do that. We can now program consciousness. Okay, come on. You have to be scientists, right? Define what you mean by consciousness. What is the Turing Test for consciousness? And then show that you can do what are the principles that have limited us until now and that been overcome now with your system. That is scientific talk.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=4491">01:14:51</a>] I don&#8217;t buy this, and I don&#8217;t read them even.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=4495">01:14:55</a>] There was one interview you said, faking intelligence is intelligence. I could see an LLM faking intelligence based off what I&#8217;ve seen. But then wouldn&#8217;t that mean that we should believe they&#8217;re intelligent?</p><p><strong>Judea:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=4512">01:15:12</a>] But if you have a correct test, yeah, you have to define what you mean by intelligence. And you have. If you define intelligence by playing good chess, right, we have already done it. Right. But if you put more demand on what intelligence is, then we haven&#8217;t succeeded yet in passing the Turing test. So, yeah, yes, faking it is having it because&#8212;why? Because it&#8217;s so hard to fake. I said it in that context because it saw.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=4547">01:15:47</a>] The context that I had is, for instance, coming out with correct answers to causal queries. And I showed that it grows, like, super exponential. You have so many variables on all sides that you have to deal with that. You&#8217;ll have to have. The faker will have to have super exponential memory on that basis. I made this statement. Having it is faking it, is having it because it&#8217;s so hard to fake. Currently, you can bypass faking without speaking.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=4593">01:16:33</a>] If you steal from other people. Right. You don&#8217;t need to spend these computational resources on faking it. So you bypassed it because you steal from the Internet.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=4605">01:16:45</a>] I see, so you&#8217;re saying in this case the intelligence came from the training set, which came from humans, which are intelligent, which is very useful, very useful.</p><p><strong>Judea:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=4613">01:16:53</a>] And I&#8217;m saying the people like me who are trying to build the science of intelligence, we can use all these capabilities of LLMs, level one of the ladder in our scheme of getting general intelligence. Level one is very important. It allows you to compute functions of distributions, call it properties of distribution from finite samples. Beautiful. It&#8217;s a terrifically and very immensely useful tool among the many other tools that we need for AGI.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=4661">01:17:41</a>] And we know exactly where it&#8217;s going to fit in. Getting from finite sample to properties of distributions, it&#8217;s a very hard problem.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=4676">01:17:56</a>] You mentioned this conversation. I think you said it in other places too, that you&#8217;re interested in capturing the way that people think, not the way that nature is constructed.</p><p><strong>Judea:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=4685">01:18:05</a>] Right, right.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=4687">01:18:07</a>] Why do you care about human cognition? When I think about machines, what makes them special is that they think in a different way than us and they&#8217;re faster, and so, yeah, why is that the goal?</p><p><strong>Judea:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=4700">01:18:20</a>] Because I am an egotistic organism. I want to understand myself. I&#8217;m lazy. Okay, it&#8217;s true. We are made of organic material. So that puts certain limitations on our capabilities. Perhaps silicon is not subject to the same limitation that organic chemistry is. Okay, perhaps. So what? So which means that I will never be able to understand how I think by silicon, by exercise on silicon machine. Okay, that.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=4742">01:19:02</a>] What is that idea? But there are so many functions that are capturable by silicon today. I don&#8217;t see any speaking in terms of theory and emulation. I don&#8217;t see any capability which is basically not capturable by silicon emulator. So why work on this? The unique biology with which we inherited? I don&#8217;t see any reason for that. Well, anyhow, some people are. It&#8217;s maybe it&#8217;s a legitimate question to ask.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=4795">01:19:55</a>] Do we think the way we think because we were born with organic material as opposed to silicon? Okay. It&#8217;s a legitimate scientific question. And some people can spend their time. I&#8217;m interested in other questions.</p><h3>01:20:12 &#8212; A restless mind pays</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=4812">01:20:12</a>] You said rebellion pays in science and a restless mind pays. I was curious why you think being rebellious is a valuable thing in your career.</p><p><strong>Judea:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=4823">01:20:23</a>] I tell you why. I tell you why. More and more I come to the realization that the scientific community and academic community is the most dogmatic, conservative, anti-progress that we have invented.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=4846">01:20:46</a>] Why do you say that?</p><p><strong>Judea:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=4847">01:20:47</a>] I can see what difficulty the theory and the science of cause and effect are facing today in getting just being penetrating the thinking of disciplines like statistics, like economics, okay? These people are still thinking like 100 years ago. And when I see that, and I see the forces that preserve this inertia, and they are not decent forces, I see that I&#8217;m very disappointed. And I used to think that academia is a place where new ideas can really spread and propagate.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=4891">01:21:31</a>] And I feel the other way around. You have so much inertia invested in the politics of academia, in the cultish inhibitions that come with academia. So that I really am disappointed. What can I tell you? I&#8217;m not sure that we have the right kind of organizations that will be conducive to. That&#8217;s why I&#8217;m saying, let&#8217;s rebuild. Don&#8217;t take your professor&#8217;s word as authority. Rebel against your professors.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=4940">01:22:20</a>] I rebelled against my professors, and I want to see my students rebel against me. And believe me, if I remember, there were several students who told me, &#8220;You don&#8217;t know anything about AI.&#8221; And I said, after a while, I told them, &#8220;You&#8217;re right,&#8221; by saying that you drove me to study different aspects. And I was educated by that.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=4964">01:22:44</a>] When I looked at your past works too, I think you&#8217;d mentioned that your work was controversial or mischievous before it was accepted.</p><p><strong>Judea:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=4974">01:22:54</a>] Yeah, it was. Because of dogmatism. One day I&#8217;m going to publish all my correspondence with the greatest philosophers of the time, okay? With statisticians, economists. It&#8217;s all in my correspondence files, okay? And I don&#8217;t know if I&#8217;m allowed to, because they communicated with me with the understanding that it will be kept private. But when I publish it, you see what kind of stupidity drives those great people, and very great, really.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=5012">01:23:32</a>] Each one of them was a giant in his or her field, really. But they couldn&#8217;t get over a few of the basic molds in which they were formed.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=5025">01:23:45</a>] How did you overcome that? If everyone thought your initial things were.</p><p><strong>Judea:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=5030">01:23:50</a>] I remember my high school days, I said, no, there are a thousand dunams in a square kilometer. Sorry, I don&#8217;t know where I got this chutzpah. In Hebrew you call it chutzpah. In English it would be audacity. Perhaps in my high school, I&#8217;m not sure. But I want to understand things my way. I feel like I am still able to teach people useful things. At least I perceive them to be useful, which they do not know.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=5067">01:24:27</a>] So I&#8217;m happy because I feel useful. Happiness is feeling useful. It&#8217;s an illusion of thinking. Yeah, useful.</p><h3>01:24:36 &#8212; Advice for his younger self</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=5076">01:24:36</a>] With all the experience you have now, if you could go back to the beginning of your career and give yourself some advice, what would you say?</p><p><strong>Judea:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=5084">01:24:44</a>] That&#8217;s a good example of retrospective thinking. Maybe I should have spent more time on learning chemistry. I hated chemistry because it required so much memory in chemistry and biology. But that&#8217;s not the advice that you probably... And genetics. I&#8217;m talking about areas where I feel weakness. But you have to decide where you spend your computational resources. And I spend them on different.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=5115">01:25:15</a>] On physics, on engineering, as opposed to mathematics, as opposed to chemistry. It&#8217;s a choice one has to make. Some people have the greatness of mind to be polyglots. I admire them.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=5131">01:25:31</a>] Did you think that physics and math were superior to chemistry? Because chemistry, you just have to memorize things.</p><p><strong>Judea:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=5138">01:25:38</a>] Yes. I couldn&#8217;t stand this demand on memory. Yeah, I was weak in chemistry. That&#8217;s what I like about physics. And in math, you have a few basic axioms from which you can derive everything when you need it. You don&#8217;t have to memorize it. And that&#8217;s why today I am a great advocate of world model. World model. Okay. You don&#8217;t store the questions and the answers explicitly. You derive them when you need them from a very parsimonious code.</p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=5181">01:26:21</a>] Yeah, that is a great thing about world model. Okay.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=5186">01:26:26</a>] Awesome. Well, yeah. Thank you so much for your time. I really appreciate it.</p><p><strong>Judea:</strong></p><p>[<a href="https://youtu.be/FleTXB1fAcQ?t=5190">01:26:30</a>] Oh, you didn&#8217;t ask me to sing.</p>]]></content:encoded></item><item><title><![CDATA[Creator of OCaml: Functional Programming, Formal Verification, Programming Languages | Xavier Leroy]]></title><description><![CDATA[Professor Leroy (Creator of OCaml) is incredibly knowledgeable.]]></description><link>https://www.developing.dev/p/creator-of-ocaml-functional-programming</link><guid isPermaLink="false">https://www.developing.dev/p/creator-of-ocaml-functional-programming</guid><dc:creator><![CDATA[Ryan Peterman]]></dc:creator><pubDate>Mon, 20 Jul 2026 13:05:11 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/207205228/48102fbad1230546f4a4c21992455857.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p><a href="https://en.wikipedia.org/wiki/Xavier_Leroy">Professor Leroy</a> (Creator of OCaml) is incredibly knowledgeable. I felt like a student at his office hours asking away at a bunch of my curiosities. His answers off the top of his head brought a lot of clarity.</p><p>For instance, I have seen people talking about Lean and formal verification on Twitter/X but never really had a good mental model for how it worked. Part of the conversation we dive into that and he shared examples that made the topic a lot more concrete.</p><p>He&#8217;s one of the best people to speak on the topic since he led a project called <a href="https://en.wikipedia.org/wiki/CompCert">CompCert</a> to formally verify (using the Rocq proof assistant) that the compiler always generates faithful machine code from the source code it is given.</p><p>We also talked about programming languages comparing OCaml to popular languages (e.g. Rust and Javascript) and how interesting language features like type inference work. Hope you enjoy the episode!</p><p>Check out the episode wherever you get your podcasts: <a href="https://youtu.be/9Cswiqrq6So">YouTube</a>, <a href="https://open.spotify.com/episode/7cdatlBEkAjx4XplVLjFxN?si=T0dXjBf2TkyulzoKvN9Z7Q">Spotify</a>, <a href="https://podcasts.apple.com/us/podcast/the-peterman-pod/id1777363835">Apple Podcasts</a>.</p><div id="youtube2-9Cswiqrq6So" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;9Cswiqrq6So&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/9Cswiqrq6So?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h1>Timestamps</h1><p><a href="https://www.developing.dev/i/207205228/0043-what-sets-ocaml-apart">00:43 - What sets OCaml apart</a></p><p><a href="https://www.developing.dev/i/207205228/0439-ocaml-vs-rust">04:39 - OCaml vs Rust</a></p><p><a href="https://www.developing.dev/i/207205228/0757-why-is-manual-memory-management-more-performant">07:57 - Why is manual memory management more performant</a></p><p><a href="https://www.developing.dev/i/207205228/1121-javascript-vs-ocaml">11:21 - Javascript vs OCaml</a></p><p><a href="https://www.developing.dev/i/207205228/1400-famous-rob-pike-quote">14:00 - Famous Rob Pike quote</a></p><p><a href="https://www.developing.dev/i/207205228/1605-type-inference-and-how-it-works">16:05 - Type inference and how it works</a></p><p><a href="https://www.developing.dev/i/207205228/2212-what-is-formal-verification-and-how-does-it-work">22:12 - What is formal verification and how does it work</a></p><p><a href="https://www.developing.dev/i/207205228/4007-what-made-multicore-support-difficult-for-ocaml">40:07 - What made multicore support difficult for OCaml</a></p><p><a href="https://www.developing.dev/i/207205228/5017-how-programming-languages-interface-and-call-each-other">50:17 - How programming languages interface and call each other</a></p><p><a href="https://www.developing.dev/i/207205228/5741-the-danger-of-almost-correct-llm-code">57:41 - The danger of almost-correct LLM code</a></p><p><a href="https://www.developing.dev/i/207205228/010539-how-llms-will-change-programming-languages">01:05:39 - How LLMs will change programming languages</a></p><p><a href="https://www.developing.dev/i/207205228/011026-industry-vs-academia">01:10:26 - Industry vs academia</a></p><p><a href="https://www.developing.dev/i/207205228/011505-most-interesting-unsolved-problems">01:15:05 - Most interesting unsolved problems</a></p><p><a href="https://www.developing.dev/i/207205228/011830-top-book-recommendations-for-engineers">01:18:30 - Top book recommendations for engineers</a></p><p><a href="https://www.developing.dev/i/207205228/012117-advice-for-his-younger-self">01:21:17 - Advice for his younger self</a></p><h1>Transcript</h1><h3>00:43 &#8212; What sets OCaml apart</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=43">00:43</a>] What sets <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a> apart from other programming languages?</p><p><strong>Xavier:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=47">00:47</a>] It is a fine functional language. You can write functions by case over inductive types and recursion and combine them with combinators and higher-order functions and everything. So it&#8217;s really a fine functional language, but it&#8217;s also a fairly decent systems programming language. So it has full imperative power. It has lots of interesting control structures, exceptions, threads, handlers for user-defined effects, which we added recently.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=85">01:25</a>] And it has a very predictable cost model, execution model. So when you write your code, you have a pretty good idea what will take time and what will be fast and what will be slow. And that&#8217;s not the case for all functional languages. Some are pretty unpredictable, and then the implementation is also pretty performant. So there&#8217;s a fairly decent compiler, not the best in its class, but the code is pretty efficient.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=112">01:52</a>] There&#8217;s a very good allocator and garbage collector with low latency, so you don&#8217;t have much pause. You don&#8217;t have long pauses. And that&#8217;s quite important when you do things like network programming. And so you can write systems applications in a mostly functional style and with all the benefits of functional programming. So initially <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a> wasn&#8217;t designed for those kinds of applications. It was more for things like theorem proving or implementing domain-specific languages.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=150">02:30</a>] And then we got some of our first users who were from the systems community, in particular the <a href="https://en.wikipedia.org/wiki/Ensemble_cast">Ensemble</a> project in the late &#8216;90s at <a href="https://en.wikipedia.org/wiki/Cornell_University">Cornell University</a>. So it was a network protocol stack for reliable multicast and those kind of collaborative distributed applications, like collaborative editing or multiplayer video games. And their first code was in C, of course. They were systems people, right?</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=183">03:03</a>] And it worked, but it was unmaintainable and they couldn&#8217;t extend it anymore. And someone had the idea to try <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a>. And so first the code became a lot nicer and easier to evolve, and the performance was about as good as C code. And in particular they had this brilliant trick of running the garbage collector while packets are in flight. Once you&#8217;ve sent a packet, you&#8217;re idle for a few microseconds, and so you can run some GC.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=215">03:35</a>] It costs nothing. So they were very happy with that. And then there were some other projects like this using <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a> for systems applications, like the MirageOS unikernels. Another benefit or consequence of this <a href="https://en.wikipedia.org/wiki/Ensemble_cast">Ensemble</a> project is that one of the PhD students working on that was <a href="https://en.wikipedia.org/wiki/Yair_Minsky">Yaron Minsky</a>, who then went to Jane Street and implemented their trading infrastructure in <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a>. So that is still today one of our big users.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=255">04:15</a>] And again, they do automatic trading, so it must be fast and reliable, and no long pauses. But they also want the allegory of functional programming. They want non-programmers to be able to read their code, like financial engineers or quantitative analysts. <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a> is a fairly good match for those kinds of applications.</p><h3>04:39 &#8212; OCaml vs Rust</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=279">04:39</a>] I thought it might be interesting to ground some of the conversation here by making comparisons across programming languages, maybe ones that people know more. When you think about <a href="https://en.wikipedia.org/wiki/Rust">Rust</a> versus <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a>, what are the big differences and the pros and cons of the various design decisions in those languages?</p><p><strong>Xavier:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=299">04:59</a>] The big dividing line between <a href="https://en.wikipedia.org/wiki/Rust">Rust</a> and <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a> is, well, <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a> has automatic memory management, garbage collection, and <a href="https://en.wikipedia.org/wiki/Rust">Rust</a> is definitely a language for manual memory management. It&#8217;s the finest language that I know for manual memory management. It manages to make it mostly safe with the discipline of borrowing, et cetera, and tracking ownership and so on. So it&#8217;s infinitely safer than C or <a href="https://en.wikipedia.org/wiki/C%2B%2B">C++</a>. But it&#8217;s still a language where you allocate and free memory yourself.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=342">05:42</a>] And on the one hand, it gives more control over what the program is doing. On the other hand, it&#8217;s still a big responsibility. It&#8217;s significantly harder to write programs when you have to manage your memory, even with the help of <a href="https://en.wikipedia.org/wiki/Rust">Rust</a> types. For me, that&#8217;s kind of the main dividing line. Otherwise, <a href="https://en.wikipedia.org/wiki/Rust">Rust</a> has many of the high-level features of functional languages, in particular in data structures and ability to do pattern matching and so on.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=381">06:21</a>] So it&#8217;s a very interesting design because they really managed some kind of fusion between C or <a href="https://en.wikipedia.org/wiki/C%2B%2B">C++</a>-style low-level programming and some of the high-level facilities of functional programming. But still, that divide, garbage collection versus manual memory management, remains.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=403">06:43</a>] So it sounds like this is a performance trade-off where you give more to the programmer in exchange for higher performance.</p><p><strong>Xavier:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=413">06:53</a>] That&#8217;s mostly true. They said manual memory management is not always faster, or you need to be a very good programmer so that it&#8217;s always faster. There&#8217;s been some mostly C code, for instance, that does a lot of copying of objects just because you&#8217;re not quite sure you&#8217;re the only owner. So you make a copy, and now you&#8217;re the only owner. But the copying is quite costly in time and in memory bloat. And for those kinds of applications, a garbage-collected language is better.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=452">07:32</a>] And likewise with GC you can work with shared data structures. It&#8217;s perfectly safe, while sharing is kind of limited. With <a href="https://en.wikipedia.org/wiki/Rust">Rust</a>&#8216;s ownership discipline there are more constraints, and so you may end up unsharing and using more memory.</p><h3>07:57 &#8212; Why is manual memory management more performant</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=477">07:57</a>] It is surprising to me that manual memory management would in many cases be more performant than automatic, because, for instance, in other patterns in computer science, let&#8217;s say, letting the compiler optimize things for you instead of optimizing things yourself, I would have thought that letting some system manage memory for you rather than manually managing it would also be better. So why is there a difference there?</p><p><strong>Xavier:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=506">08:26</a>] Well, because garbage collection takes place at runtime, so from time to time the program is no longer executing what you wrote. It is actually scanning memory, trying to find memory that is no longer used. So there is runtime overhead, and it can be, depending on applications, 10%, 20%, maybe sometimes 30%. But again, that doesn&#8217;t mean the whole program is 30% slower than if you had written it with manual memory management.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=547">09:07</a>] Because there may have been other costs, as you said, of manual memory management. But yes, there&#8217;s been a lot of research on trying to do more, let&#8217;s say, compile-time automatic memory management, and you can do that to some extent. But for some programming styles where it&#8217;s easy to track the lifetime of objects and data blocks, but in general you still have quite a bit of work to do at runtime.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=581">09:41</a>] I think a lot of people, for garbage collection, might think of it as a binary thing, or it&#8217;s either you have it or you don&#8217;t. But I wonder, in <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a>, is there some way to turn down the memory management and do some manual, kind of like a mixture, to have the benefits of both?</p><p><strong>Xavier:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=601">10:01</a>] So that&#8217;s one of the things that the Jane Street people are looking at. So they have the OxCaml variant, which is kind of <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a> with some inspiration from <a href="https://en.wikipedia.org/wiki/Rust">Rust</a>. So it&#8217;s still very experimental. But yeah, they&#8217;ve been playing with things like stack allocation of some data structures so that they&#8217;re automatically deallocated when the function returns, which is quite cheap. Yeah, there are a few things you could try, but I&#8217;m not sure they are going to make such a big difference.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=631">10:31</a>] I remember doing with a student some experiments with stack allocation of data structures a long time ago, and you don&#8217;t win as much as you would think. Garbage collection or heap allocation is pretty cheap for objects that have a very short lifetime. If they die before the next garbage collector, they will cost very little in garbage collection time. But it&#8217;s more expensive for long-lived data structures because those will be scanned and analyzed multiple times.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=668">11:08</a>] And stack allocation works for the first kind of objects, things that have short lifetime anyway, so you don&#8217;t win as much as you think.</p><h3>11:21 &#8212; Javascript vs OCaml</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=681">11:21</a>] One of the most popular programming languages, <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a>. Curious, when you think about the difference between <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a> and <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a>, what&#8217;s the main thing that comes to mind?</p><p><strong>Xavier:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=690">11:30</a>] Yeah, I&#8217;m not a big fan of <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a>. Well, <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a> is very dynamic. Type checking is entirely dynamic, but it&#8217;s more than that. I mean, pretty much everything can be redefined at runtime, including, I don&#8217;t know, the semantics of method invocation, for instance. So really some pretty fundamental aspects of the language are very flexible. So some people say, oh, that&#8217;s great, we can do lots of metaprogramming, et cetera.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=722">12:02</a>] And to me, it&#8217;s a big weakness. I mean, it makes programs that can be very fragile and also have some security issues. So <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a> is the ultimate dynamic language, in my opinion. While <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a> is very static, static typing, static binding, pretty much everything is fixed at compile time. Well, I guess it&#8217;s kind of a different data model. <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a> is a little more object-oriented in the way it presents data.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=757">12:37</a>] Maybe that&#8217;s not that important. And to say one good thing about <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a> is that it also contains a decent functional language. Inside there&#8217;s a little core of <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a>, which is basically Lisp and can be used to do functional programming if you want. And actually the designer of <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a>, I think, was a former Lisp person. I can&#8217;t remember his name, but Brendan Eich maybe. Yeah, Brendan Eich.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=788">13:08</a>] Yeah, there&#8217;s a little bit of heritage from Lisp to <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a>, but a very dynamic kind of Lisp.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=797">13:17</a>] You said you weren&#8217;t the biggest fan. Is that just because of the dynamics, or is there some other aspect?</p><p><strong>Xavier:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=802">13:22</a>] Yeah, mostly the dynamics. I think they really went overboard with that. This kind of meta object protocol where you can really find the semantics of very basic operations like method invocation, the fact that a method can. There&#8217;s a lot of introspection. A method can look at its own call stack, look at callers, look at the code of its callers, which is a security nightmare. All those things, I think, are completely unnecessary and not conducive to good programs.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=837">13:57</a>] Easily abused. Easily abused.</p><h3>14:00 &#8212; Famous Rob Pike quote</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=840">14:00</a>] I think on the topic of functional languages, compared to imperative languages, there&#8217;s this thought that functional languages are kind of harder to learn or maybe they have more perceived complexity. And actually, when I research, there&#8217;s this popular quote from the designer of Go, Rob Pike, and he&#8217;s talking about what they intended to do with Go. And he said, the key point here is the programmers are Googlers.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=870">14:30</a>] They&#8217;re not researchers; they&#8217;re young, fresh out of school. They&#8217;re not capable of understanding a brilliant language. And I think that thought of a brilliant language is often attributed to functional languages. What do you think about&#8212;is a language like <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a> harder for programmers to grasp than imperative languages?</p><p><strong>Xavier:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=891">14:51</a>] I think functional programming is not fundamentally harder, especially if you have a little bit of mathematics background. So, coming back to the quote by Rob Pike, I think it describes very much how they go about hiring at <a href="https://en.wikipedia.org/wiki/Google">Google</a>. They hire a lot of engineers who are fresh out of college. Some of them have master&#8217;s degrees, and then they train them internally. Other companies, I think, tried to hire people with more education and perhaps more diverse backgrounds.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=929">15:29</a>] So Jane Street, for instance, and some others use <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a> as a filter on who they want to hire. Yes, they have fewer applicants, but in general they have more interesting backgrounds. And perhaps one last thing I would like to say, Python is 50% functional language. Okay? A lot of good Python code looks like functional code with comprehensions. So I think people are already halfway through functional programming when they are comfortable with Python.</p><h3>16:05 &#8212; Type inference and how it works</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=965">16:05</a>] Yeah. When I was learning <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a> in college, I think one thing that really stood out to me and I thought was interesting was this concept of type inference, where the compiler knows the types of everything implicitly in the way that the code is written. Can you explain type inference and what the advantages are?</p><p><strong>Xavier:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=987">16:27</a>] Well, the basic idea is that you don&#8217;t have to declare the type of every variable. You introduce every function parameter, every local variable, because quite often the type can be deduced from the uses of the variable. Like if you do, I don&#8217;t know, X equals string length of S, then you kind of know that S is a string and X is an integer, right? Because that&#8217;s what the string length function, that&#8217;s the type of string length, and it tells you that.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=1020">17:00</a>] So that&#8217;s a basic idea. Now, the actual realization is a little more complicated. Basically, the compiler needs to collect a number of constraints and then try to solve them. Well, if there&#8217;s no solution, then it&#8217;s a type error. But sometimes there are several solutions, and you must find good criteria to choose one. Otherwise, it also needs to be predictable for programmers, and often you can still put type annotations.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=1053">17:33</a>] As a programmer, you can still put type annotations if that makes code clearer. So I think the main advantage is precisely to have less verbose code. Less verbose code where you don&#8217;t need to put types everywhere, but only where they help documentation and make the code easier to read. But quite often for small local functions, for short-lived temporary variables, the type is obvious from the context, so let&#8217;s just omit it.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=1092">18:12</a>] If I&#8217;m trying to figure out how this type inference works, the intuitive example you said makes sense, but you mentioned it seems to be some sort of system of equations that you solve or something like that. Can you give a concrete example? What does that look like to the compiler?</p><p><strong>Xavier:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=1109">18:29</a>] Okay, well, for a slightly more complex example, say you have a function with two parameters, X and Y, and then you do if X equals Y. So that tells you that X and Y have the same type, but that still doesn&#8217;t tell you which type it is, assuming polymorphic equality comparison. So you&#8217;ve learned something about X and Y, that they have the same type, but you still don&#8217;t know what the type is. And later maybe you will learn something about the type of X, and now you will have determined the type of Y as well.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=1142">19:02</a>] So that&#8217;s the kind of constraints you accumulate and solve, a little bit like Sudoku or those kinds of puzzles. And then there&#8217;s the interesting case where you don&#8217;t have enough constraints to find a unique type. So maybe in the end X and Y will be, they have the same type, but it&#8217;s still unconstrained. And then that&#8217;s where you automatically get polymorphism for free. The type checker said, okay, those types are unconstrained, so it can work for any type.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=1175">19:35</a>] So my function can take an X of any type and a Y of the same type, again any type, and it&#8217;s a polymorphic function. So there&#8217;s this beautiful, I think, phenomenon that polymorphism can be discovered just by running type inference and noticing that there are no constraints, so it must be polymorphic. And that was a guiding insight by Robin Milner, the British computer scientist pioneer who invented this ML family of languages and this kind of type inference in the &#8216;70s. Polymorphism was not very well understood at the time.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=1216">20:16</a>] And so the fact that he could introduce polymorphism so easily in his language just as a consequence of typing rules was a beautiful discovery.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=1228">20:28</a>] So for type inference, it seems like the benefit is the code is going to be a lot more concise because we don&#8217;t need to write out all of the types, which seems nice, but what are the trade-offs of adding type inference to a programming language?</p><p><strong>Xavier:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=1243">20:43</a>] Well, as I said, type error messages can be very confusing because they don&#8217;t always point to the actual source of the type error. Okay. The system may have done some wrong inferences and will report some of those inferences instead of reporting the source, the actual source of the type error. So it&#8217;s been the subject of much research, and there&#8217;s no very well-defined idea of the source of a type error, basically.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=1281">21:21</a>] So errors can be an issue. Some features of type systems are easy to combine with type inference, and some are harder. For instance, when it comes to genericity, so I mentioned parametric polymorphism, which is very well handled. But subtyping, the kind of thing you have in object-oriented languages, is actually harder to combine with type inference for super technical reasons that I&#8217;m not going to go into.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=1314">21:54</a>] So sometimes you have to make a choice. Either you have type inference, but it is less powerful, or you have full type inference but a more restrictive type system, and that choice is part of the language design.</p><h3>22:12 &#8212; What is formal verification and how does it work</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=1332">22:12</a>] Actually, you mentioning this solver kind of reminds me of the topic of formal verification. Could you explain what formal verification is?</p><p><strong>Xavier:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=1345">22:25</a>] Well, the idea is that for some programs, you want strong guarantees that the program is correct, and guarantees that are hard to get just with testing and code reviews. There&#8217;s this famous quote by Dijkstra, the Dutch computer pioneer, which goes something like testing can only show the presence of bugs, but not their complete absence. Because in general, there&#8217;s infinitely many inputs to your program, and you cannot test them all.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=1382">23:02</a>] So you&#8217;re only testing a sample. And sometimes you have surprises. So what if you want to make sure your program is correct for an infinite number of inputs? And that&#8217;s where you need to turn to those so-called formal methods. So you&#8217;re using mathematical reasoning, you&#8217;re using static analysis algorithms on your program to really analyze all possible executions of a piece of code and make sure that it matches a specification.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=1415">23:35</a>] The specification can be very simple, like the code will never crash given well-formed inputs. So that&#8217;s a fairly simple property, but still extremely useful because code that crashes is always code that can be attacked. It&#8217;s often a security hole. So, for instance, all accesses within all array accesses are within bounds. That&#8217;s a very simple property, and it&#8217;s very hard to ensure just by a type system or just by testing.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=1449">24:09</a>] So that&#8217;s where you need some more advanced formal verification. And then there are much more precise specifications that you may want to check that can be where the program always terminates. It can be the program doesn&#8217;t leak confidential data. It can even be, well, the program computes this mathematical function with an error, floating point error, I don&#8217;t know, 10 to the minus six. Okay, something like that, something very precise like that.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=1482">24:42</a>] And so it&#8217;s been a really hot topic in software sciences since at least the seventies, I would say. There&#8217;s lots of techniques. Some are just fully automatic, like static analysis, but they&#8217;re already pretty good at finding bugs and making sure that some bugs, like out of bounds, are not there. And some are a lot more interactive and require a lot more programmer assistance to write specifications and then do so-called program proofs.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=1516">25:16</a>] So proving mathematical statements about the program.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=1519">25:19</a>] I hear about it a lot more now, which is Lean and these theorem provers. What are those in this context, and how are they used?</p><p><strong>Xavier:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=1531">25:31</a>] Lean is an instance of the so-called provers, or proof assistants. So originally, those were developed to do mathematics on the computer. So nothing to do with formal verification of programs, but they can also be used for formal verification of programs. But the initial motivation was really to do mathematics with the help of the computer. Well, originally everyone focused on automatic theorem proving.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=1564">26:04</a>] So having the machine find proofs all by itself, but that&#8217;s very, very difficult and not necessarily what mathematicians need. And so those proof assistants are more like formal languages, like programming languages, but where you can write mathematical definitions, mathematical statements, and they will help you prove. So some small proof steps they will do automatically. And for others, the user still has to guide the provers through the major steps.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=1603">26:43</a>] But the good thing is that the proof is recorded also in a format that the machine can understand and recheck. When you complete a proof in Lean or Isabelle or one of those tools, and it is rechecked, the computer makes sure that all inferences are justified, that you didn&#8217;t forget any case, that you didn&#8217;t use a conclusion as a hypothesis, all kinds of problems you can have with pencil-and-paper proof.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=1633">27:13</a>] And so in the end you get proofs that are extremely reliable, extremely credible. And those tools have been used a little bit for some big mathematical results where the proofs are so big that they can&#8217;t be done just by humans. You really need computer assistance. I think there&#8217;s a recent example with the weak Goldbach conjecture. So part of the proofs involved checking a whole lot of inequality, maybe a thousand inequalities involving several real variables, and blah, blah, blah.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=1675">27:55</a>] And so computer assistance was really needed to make sure that everything was checked and there were no human mistakes left. And maybe we&#8217;ll talk about generative AI later. But there&#8217;s also now a lot of interest in conjunction with generative AI. AI is pretty good at coming up with plausible proofs, but then they have to be checked by humans, unless AI writes a proof in one of those formal languages like Lean, in which case it can be checked by a machine, and that&#8217;s much more effective.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=1718">28:38</a>] So, yeah, so it&#8217;s the idea of using the machine to help you write proofs and recheck proofs that you&#8217;ve written yourself, or maybe with some help from an AI. And now those tools can also be used to prove properties about programs. And so I spent many years proving the correctness of a compiler, C compiler, using one of those tools, the Coq proof assistant. So basically, what I&#8217;m hoping about the compiler, so it takes C code, it produces assembly code, and proving that the assembly code is faithful to the C code.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=1761">29:21</a>] So there&#8217;s no miscompilation. The compiler didn&#8217;t introduce a bug in the program that wasn&#8217;t there originally. And it&#8217;s a fairly big proof because compilers do complicated things about programs. And then you have to define exactly what it means to preserve the semantics of a program. So you have to define the semantics of your programming languages. And so it&#8217;s all a very good use of those machines, of those proof assistants.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=1789">29:49</a>] The same work could be done on paper, but this would be a proof of several thousand pages, and nobody would want to read it, nobody would trust it. It&#8217;s just too big, and it would be very hard to evolve. One good thing about those mechanized verifications of programs is that it can also help you evolve the program. You can add new features and so on and adapt your proofs and be really sure that you haven&#8217;t introduced a regression or things like that.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=1823">30:23</a>] So, yeah, so it&#8217;s really programming taken to a higher level today. It&#8217;s quite expensive. It takes a lot more time to prove a program than to write it in the first place. But maybe this is getting a little better. I should also mention another great example of verified software. It&#8217;s a microkernel, the seL4 microkernel developed in Australia, which is used as an hypervisor in some applications. And so it&#8217;s really like 8,000 lines of extremely technical C code that manipulates processes and capabilities and security tokens and so on.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=1874">31:14</a>] And it&#8217;s been proved correct. Every line has been proved correct. And that&#8217;s a very big achievement.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=1880">31:20</a>] When you mentioned the example of verifying a mathematical proof, that makes sense to me. When you talk about proving something about a program, it&#8217;s a little bit more abstract to me, or I&#8217;m having some trouble visualizing. Could you give a concrete example, maybe some trivial program, and we&#8217;re trying to prove something about it and how that theorem prover would work?</p><p><strong>Xavier:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=1906">31:46</a>] Let&#8217;s say you have a function that takes three numbers X, Y, Z and returns the average of those numbers. Okay? And maybe you&#8217;re using a not completely obvious formula, like T equals X plus Y, and then T equals T plus Z, and then T equals T divided by three, and then return T. Okay? So not exactly the formula for the average. And you want to prove that this function is correct, so you want to prove that it returns X plus Y plus Z divided by three.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=1953">32:33</a>] And maybe you will have to make it clear whether you&#8217;re rounding up or rounding down. If you&#8217;re using integers or floating-point numbers, it&#8217;s not exact arithmetic. So yeah, you&#8217;ll have to say exactly what you mean by divided by three. And then if you&#8217;re in a language like <a href="https://en.wikipedia.org/wiki/C%2B%2B">C++</a>, you can have arithmetic overflows. When you compute X, Y, or Z, you can overflow the range of representable integers. And in <a href="https://en.wikipedia.org/wiki/C%2B%2B">C++</a>, it&#8217;s a bug; it&#8217;s undefined behavior.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=1987">33:07</a>] So typically you will want to put a so-called precondition on your function saying, okay, if you call me, call me with numbers that are between, I don&#8217;t know, 0 and 1 million, for instance, but no bigger than that. And then the prover will check that no overflow can occur in this case. Okay? And so basically you have the precondition that says, okay, these are safety warranties that must hold of the parameters; otherwise anything can happen.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=2020">33:40</a>] And then there will be a little bit of symbolic execution of the function body that says, okay, when you do t equals x plus y, then t plus equals z, then t slash equals 3, then in the end t is x plus y plus z divided by 3, provided no overflow occurred. And then you put that with a precondition that says there cannot be any overflow, and you get your final result. Okay, so basically you&#8217;re stating a contract for your function, hypothesis on the arguments, guarantees on the results, and you want to prove.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=2058">34:18</a>] Analyze the function body to show that this contract is respected. I hope it&#8217;s a little more concrete.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=2065">34:25</a>] So it sounds like Lean will help you basically take in some invariants about a program and kind of propagate them through line by line and uphold them. And so you can say something about, yes, maybe not Lean by itself.</p><p><strong>Xavier:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=2082">34:42</a>] Well, a program prover will do exactly what you say. And for Lean to be able to do it, you still need to teach it a little bit about the semantics of your programming language. Okay, what does plus mean? What does assignment mean? Okay, Lean is mathematics. You don&#8217;t assign. In mathematics, you don&#8217;t say X equals X plus one, or you&#8217;re just comparing X and X plus Y, and it&#8217;s always false.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=2111">35:11</a>] There&#8217;s no assignment in mathematics. There&#8217;s assignment in many programs. So you need to make it explicit that there are actually three different states for the T variable, three different values, and relate those values to, well, the program defines what those values are, and then a prover like Lean can reason about those three successive values. Because now you&#8217;re in mathematics, and that kind of bridge between programs and their mathematical meaning is called semantics.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=2148">35:48</a>] That the field of semantics of languages, it&#8217;s been a big topic in PL research since the &#8216;60s at least.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=2156">35:56</a>] Am I understanding then that a pure functional programming language, the gap between mathematics and the actual symbols is much smaller than an imperative?</p><p><strong>Xavier:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=2168">36:08</a>] Absolutely. You&#8217;re absolutely right. And that&#8217;s one of the reasons why people who do formal methods don&#8217;t like assignment, don&#8217;t like imperative features. Purely functional style is much, much closer to mathematical style. So much easier to reason about. There can still be a few discrepancies between the program and the math. For instance, functional programs may not terminate, they may loop forever.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=2196">36:36</a>] Mathematics doesn&#8217;t like that. So you need a way to reason about termination. And also sometimes, for instance, the arithmetic you get in the programming language is not integer arithmetic, or it&#8217;s not real numbers, it&#8217;s floating point. So you still have to account for that gap. But you&#8217;re absolutely right that the gap is much shorter for functional programming. And in the experience of CompCert, my verified compiler, I think the first decision was to write it in a purely functional style so that it would be easier to reason about it later. You mentioned the specifications that we could prove, and one of them was proving that the program terminates.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=2242">37:22</a>] But I thought that&#8217;s a famously difficult or impossible. I forgot exactly the halting problem. Right, so how is that something that you could prove?</p><p><strong>Xavier:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=2258">37:38</a>] Okay, so what computability theory says is that there is no algorithm that can always say this problem terminates or this program doesn&#8217;t terminate. So there will always be some very weird programs for which your analyzer, your automatic termination analyzer, will produce a wrong result or will not terminate itself. So it will not work. But still, for many programs, you can succeed. You can write automatic termination analyzers that will work for a large class of programs.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=2301">38:21</a>] And then the termination analysis, termination proof can also be done by hand by a mathematician. Okay, so perhaps a human can see through those weird Turing programs that are hard to prove terminate and recognize the trick. But anyway, yeah, it&#8217;s a hard problem. And program verification tasks are difficult problems. They are pretty much all undecidable. So there is no static analyzer that will always find all problems in all programs.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=2343">39:03</a>] But still you can try, okay, you can try for specific problems or specific programs and get some very useful results out of that. You only need to be able to do it for the cases that are of interest to you, the programs you really care about.</p><h3>40:07 &#8212; What made multicore support difficult for OCaml</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=2407">40:07</a>] One thing I saw when I was researching <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a> is that in 2022, <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a> added multicore support. But from my memory, I remember multicore processors became standard much earlier than that.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=2420">40:20</a>] And so I figured there might be some unique engineering challenge in adding that support. So, yeah, what happened there, and what made it difficult? Well, there were engineering challenges, that&#8217;s for sure.</p><p><strong>Xavier:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=2433">40:33</a>] There were also some language design issues. But let&#8217;s talk about the engineering challenges first. So it&#8217;s true that when you have a language with a runtime system, memory allocator, or garbage collector, at least the one for <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a> was really designed with sequential executions in mind. So if you had shared memory concurrency, then you need a garbage collector and a memory allocator that can work concurrently.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=2464">41:04</a>] And that&#8217;s actually quite difficult, at least if you want them to be fast. Of course, you could always take a lock at every operation in the heap, but then you would sequentialize your programs. Basically, they would run as slowly as on a single processor. So that&#8217;s not interesting. So, yeah, there were engineering challenges. And yeah, I was at least initially quite reluctant to basically reimplement a complete garbage collector and memory allocator on large parts of the runtime system.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=2500">41:40</a>] That&#8217;s what we did eventually. Well, it was done mostly by the team at <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a> Labs at Cambridge University. But yes, it was a really big rewrite. But then I said there&#8217;s also a language design issue, which is that for the longest time, well, now when you say multicore processors and so on, pretty much everyone, and language support for multicore processors, everyone thinks about language support for shared memory concurrency.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=2539">42:19</a>] This model where you have several threads of control and they access the same memory, and basically the threads communicate by modifying the memory and someone else is going to notice. I&#8217;ve never liked this model of communication. I mean, it&#8217;s a bit like if you want to communicate with your neighbor, then you break into their house and move the furniture around, and then when they are back they say, &#8220;Oh, something was moved.&#8221;</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=2571">42:51</a>] So it&#8217;s probably Ryan who&#8217;s trying to tell us something. Maybe you could just meet your neighbors, and that would be things like message passing, which is a completely different form of communication, much higher level. So for the longest time I was really interested in message passing concurrency. And there&#8217;s, for instance, a functional language called Erlang that was built on those ideas that I found quite interesting.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=2602">43:22</a>] However, I never got to have a decent language design, and everyone was saying, no, but it&#8217;s too costly, it&#8217;s not effective, there&#8217;s too much copying of data. With shared memory, you can share some kind of huge database in memory. If you don&#8217;t modify it too much, then basically the concurrency is free. While with message passing, we&#8217;ll have to exchange a lot of data, so to get the same effect. So you will pay more for it anyway.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=2636">43:56</a>] Okay, so starting with <a href="https://en.wikipedia.org/wiki/Java">Java</a>, I guess, and then C++11, there was this idea that, okay, we need to expose shared memory concurrency to the programmers. But then comes the problem of the memory model, which is that what happens when there&#8217;s a race, for instance, when two sides want to access the same location and maybe they want to modify it in different ways. And so sometimes parts of the <a href="https://en.wikipedia.org/wiki/C%2B%2B">C++</a> standard says it&#8217;s undefined behavior, anything can happen, but still you need to give a little more guarantees.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=2674">44:34</a>] At the other end of the spectrum there are so-called sequential consistency, which says, well, what happens is an interleaving of reads and writes of your program. You don&#8217;t know which interleaving, but there is an interleaving. But that doesn&#8217;t work with modern processors; multicore processors reorder memory accesses in very clever ways to get more performance. And so, viewed from the program, it&#8217;s very hard to predict what they are actually doing.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=2701">45:01</a>] And so you need to give your programmers, when you&#8217;re designing a language with shared-memory concurrency, you need to give your programmers some guarantees about the ordering of reads and writes, concurrent reads and writes, while not constraining the hardware too much. And it&#8217;s very difficult. So <a href="https://en.wikipedia.org/wiki/Java">Java</a> went through five different iterations of the memory model. Some were too strict, some were too lax, some were inconsistent.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=2728">45:28</a>] We&#8217;re making predictions, impossible predictions, where the past depends on the future. Crazy, really crazy stuff. Then C++11 did a little better, but still an extremely complex memory model. And so when we wanted to add, when the, especially the <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a> Labs people wanted to add shared memory concurrency to <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a>, we had to also agree on a memory model that would be exposed to the program rules. And that also took quite a bit of design, quite a bit of time to come up with a good design.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=2763">46:03</a>] And I think it&#8217;s better and easier to understand and use than the one in <a href="https://en.wikipedia.org/wiki/Java">Java</a>. But the <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a> memory model is still quite complicated, and sometimes I feel sorry our users are exposed to that. Okay, so that explains why it took so long, solving the engineering challenges but also agreeing on a memory model and what kind of guarantees we are going to give to programmers. Oh yeah, I forgot to say one thing, which is that in <a href="https://en.wikipedia.org/wiki/C%2B%2B">C++</a> and <a href="https://en.wikipedia.org/wiki/C%2B%2B">C++</a> there&#8217;s a lot of things you can say, oh, it&#8217;s just undefined behavior, or anything can happen.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=2806">46:46</a>] In type-safe languages like <a href="https://en.wikipedia.org/wiki/Java">Java</a> and <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a>, you want to give stronger guarantees. Maybe many things can happen, but your data should remain well typed. Typically, you don&#8217;t want to expose an object to another thread before it&#8217;s been fully initialized, for instance, and that&#8217;s actually very hard to guarantee in your memory model. And then you have to implement that memory model. So your compiler also needs to take extra precautions to guarantee this.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=2839">47:19</a>] So yeah, type safety in the presence of shared memory concurrency is not obvious at all. So that&#8217;s why it took so long.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=2850">47:30</a>] So in Python, I know this is the famous GIL, or the global interpreter lock. What is that lock protecting? Is it the cleanup of objects on the heap, or is it something else?</p><p><strong>Xavier:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=2861">47:41</a>] Among other things, yes. So yeah, we had the same thing in <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a> before multicore <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a> was merged in. So yeah, basically the idea that when your runtime system is not site safe, as we said, you can protect the non site safe functions by a lock so that they will never be executed concurrently. But if you take the lock at every allocation and release it, you take and release the lock for every allocation, that is just too slow anyway.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=2892">48:12</a>] And so the idea is that you take the lock when you enter Python code, let&#8217;s say, and you start executing Python code, but you can still release it when you do input output, for instance, when you&#8217;re going to block for a long time, or when you&#8217;re calling into C code that is thread safe and is not going to use your runtime system, then you can release the lock and some other Python thread can take it and execute.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=2922">48:42</a>] So you get a little bit of concurrency. You can overlap computations in your high-level language with I/O or computations in a low-level language in another language, but you still have mutual exclusion between two threads running Python or running <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a> before multicore <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a>. So you get some benefits like concurrent I/O, but you don&#8217;t get any parallelism. Okay, you don&#8217;t get a speedup for computations.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=2954">49:14</a>] And so, yeah, so we used to have this GIL in <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a> as well, and so you can get rid of it, but in general you need to redesign at least a garbage collector and memory allocator. There&#8217;s probably a few places in the <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a> runtime system that still use locks to ensure mutual exclusion, like in the I/O subsystem and some phases of the garbage collector. I think there&#8217;s a phase which is kind of stop the world.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=2990">49:50</a>] You need to make sure that everyone, no <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a> code is running for a short time. You need to make sure that everyone is stopped and then do a little bit of work to finish the GC, and then you can restart everyone. So, yeah, these are tricky things, and I don&#8217;t know what the Python people are up to with their GIL, if they finally manage to remove it or they&#8217;re still working on it, but I&#8217;ve heard they are making progress.</p><h3>50:17 &#8212; How programming languages interface and call each other</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=3017">50:17</a>] Yeah, you mentioned Python calling into C, and I&#8217;ve seen that pattern before, of a higher-level language interfacing with a lower-level one. How does that binding typically work?</p><p><strong>Xavier:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=3031">50:31</a>] Oh, it&#8217;s another kind of worm. Well, there are two aspects there: the control flow and the data. So the control part is not that hard. So yes, you need a mechanism so that your Python interpreter or your <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a> compiled code will actually jump to the C function. So for <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a>, basically you tell the <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a> compiler that this function is not implemented in <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a>; it&#8217;s actually implemented by a C function, and you give its name, and then the compiler will emit a call to the C function using the C calling conventions, which are not exactly the same as the <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a> calling convention. But the compiler knows about that, and so it will call the C function, maybe through a little bit of glue code, whatever, and then the C function will execute and return back to the <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a> code.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=3090">51:30</a>] That&#8217;s relatively easy. Now the hard part is data like function arguments and function results, because <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a> and C have different data representations. For instance, a floating-point number in <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a> is generally boxed, so it&#8217;s allocated in the heap and handled through a pointer. So it&#8217;s more like a double star in C. It&#8217;s not a double, which is not allocated, just sits in a register. So typically the C code needs to use a so-called foreign function interface.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=3128">52:08</a>] So some C functions and macros are provided by <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a> to access the <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a> data. The <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a> arguments extract the part that it needs, the numbers. Another example is arrays. In <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a>, when you have a two-dimensional array, it&#8217;s actually an array of arrays. So viewed from C, it&#8217;s an array of pointers to arrays, while in C, an array of arrays has no intermediate pointers, so it&#8217;s not the same representation. And so you have to explain to C or give C some functions and macros to access elements in <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a> arrays. It&#8217;s not exactly the same code that you would do to access a C array from C.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=3172">52:52</a>] Okay, so you need accessors. But now if your C code wants to return some complex results, like a list, an array, and so on, it needs to allocate it in the <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a> heap. So it needs to ask the <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a> runtime system to do some heap allocation and then fill the heap blocks correctly, and then this allocation can trigger a garbage collection. So the C code might also kind of cooperate with garbage collection with root registration mechanisms, et cetera, et cetera.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=3206">53:26</a>] So there&#8217;s quite a bit of work to be done, and then different foreign function interfaces arrange this work differently. So there&#8217;s a base FFI for <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a>. Basically, it&#8217;s a C code that must do all the work, but then it can be very fast and quite optimized. But there are other FFIs like the ctypes FFI in <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a>, where most of this data conversion and mediating between two data formats is automated. You start basically with a description of the C type of the C function, and you can automate some of those conversions.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=3245">54:05</a>] But sometimes it can be expensive. For instance, you may end up copying a whole array while your C code only needs to access two or three elements in it. Okay, so there&#8217;s lots of trade-offs and, quite frankly, it&#8217;s a dirty part of programming language implementation. The <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a> FFI is not that clean, but if you get the <a href="https://en.wikipedia.org/wiki/Java">Java</a> FFI, for instance, it&#8217;s also quite complicated. And for Python I never tried, so I don&#8217;t know what it looks like, but yeah, it&#8217;s a necessity.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=3282">54:42</a>] But it can be quite hard because the data models are different between the two languages.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=3289">54:49</a>] So to kind of get the big picture, on the <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a> side, there&#8217;s an interpreter, which is a program running in application space that is interpreting your <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a> code. And then at some point in the <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a> code it says, &#8220;Do some, load this <a href="https://en.wikipedia.org/wiki/C%2B%2B">C++</a> program.&#8221; And the <a href="https://en.wikipedia.org/wiki/C%2B%2B">C++</a> program is a binary somewhere, and the <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a> interpreter then starts to load those instructions and execute them.</p><p><strong>Xavier:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=3318">55:18</a>] Okay, so actually this is the third aspect that I didn&#8217;t touch. There&#8217;s an interpreter mode, but in general we compile, we compile to assembly code and then machine code. And so in compiled mode what you say is how you put together the <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a> code and the C code is done by the linker, the C linker. So basically someone else is doing that for us. And it&#8217;s not that different from linking together two object files produced by C or two object files produced by <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a>, but for more interpreted languages there&#8217;s also the question of how you load the C code.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=3367">56:07</a>] Generally, you use a dynamic loading interface, dlopen, for instance in <a href="https://en.wikipedia.org/wiki/Unix">Unix</a>. And then there&#8217;s a little bit of introspection. So at runtime, the interpreter queries C libraries: where is the address of a function named foo, and then it will find the address and use that to manufacture a call. So yeah, if you&#8217;re in an interpreted setting or bytecode-compiled setting like Python, there&#8217;s this additional level of complexity on top of it.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=3404">56:44</a>] I see, I see. Okay, so if I had a mixed <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a> program on my computer, it&#8217;s just one binary or one blob in the simplest case.</p><p><strong>Xavier:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=3417">56:57</a>] Yes, there are also dynamic loading facilities in <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a>, but I don&#8217;t want to get into that because I&#8217;m a firm believer in static linking. I think programs should be statically linked so that there&#8217;s no surprise when you run them, like, oh, where is this DLL or DLL not found, for instance, problem? But of course you lose a little bit in flexibility. But yeah, I think static linking has a lot to it. It&#8217;s actually quite useful in that it warrants a lot of things. It checks a lot of things at link time that you don&#8217;t have to check again at runtime.</p><h3>57:41 &#8212; The danger of almost-correct LLM code</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=3461">57:41</a>] We mentioned earlier in the conversation talking a little bit about <a href="https://en.wikipedia.org/wiki/Large_language_model">LLM</a>-generated code. I thought that might be interesting to cover. And in one interview you talked about the danger of almost-correct code, so plausible code, but it&#8217;s wrong, that an <a href="https://en.wikipedia.org/wiki/Large_language_model">LLM</a> can produce. What are your thoughts on how to address that kind of problem?</p><p><strong>Xavier:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=3485">58:05</a>] It&#8217;s a tough problem globally. I&#8217;m a little bit skeptical about generative AI. Of course, they can do amazing things that were unthinkable a few years ago, but there&#8217;s always some errors. You can&#8217;t really trust what&#8217;s being produced by generative AI. In principle, humans should be there to check the output and fix errors, or ask the <a href="https://en.wikipedia.org/wiki/Large_language_model">LLM</a> to fix its own errors until the result is actually usable.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=3532">58:52</a>] But of course it&#8217;s very hard because there&#8217;s a slop problem. AI produce so much, it&#8217;s so easy to produce large quantities of text, of code, pictures, whatever, that in the end there&#8217;s no human time to check it all. So yeah, recently I heard someone working in an AI startup who was enthusiastic about AI-generated code saying that thanks to generative AI, the cost of programming is dropping to zero.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=3575">59:35</a>] Well, the cost of writing code maybe, but what about checking it, making sure it is correct, that it does what we want? Well, that cost is not zero at all. For me, every new line of code is a liability. You have to test it, you have to check it, maybe you have to do formal verification, you have to evolve it, maintain it later. No, I don&#8217;t want huge amounts of code, okay? I want 50 lines of code that have been thought through, that have been published over the years.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=3614">01:00:14</a>] So anyway, I&#8217;m not getting that with AI, and I think that&#8217;s a problem. And this idea that humans will be there to check the output of generative AI is just wrong. No, they are not available for that. There&#8217;s too much of it, and it&#8217;s not pleasant either. Okay. I mean, I don&#8217;t think it&#8217;s a good way to split the world between machines and humans. So anyway, so maybe there will be some societal solution like a big no to AI slop movement.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=3653">01:00:53</a>] So we&#8217;re trying to see that in some open source projects that refuse generated contributions because there&#8217;s just too many. I know that, well, for <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a> and especially for CompCert have received issues that were obviously generated by AI. And there was maybe one good issue among 10 reports, and each report was several pages long, with very detailed explanations and repro case that in the end doesn&#8217;t repro anything or reproduces something else.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=3691">01:01:31</a>] But it takes time to go through all those things. And maybe at some point I will say no to AI-generated contributions. Okay, but maybe there&#8217;s also a bit of a technical solution, which is, as we said earlier, to have AI produce proofs, so evidence that its creation is correct. So, as I said, this is starting to work for mathematical proofs. Some generative AIs are able to produce proofs both in English and in the formal language of the Lean prover, for instance.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=3728">01:02:08</a>] And so you can get Lean to recheck the proof and get some confidence. You still need to be very careful about the statement because sometimes AIs will change the statement or the definitions to make the proof easier. That happens. And also you should be careful about so-called self formalizations, where the AI also comes up with some definitions and some statements by parsing a PDF file or whatever.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=3765">01:02:45</a>] And sometimes it introduces errors at that point. So anyway, there&#8217;s still a need for human review, but on smaller quantities of text and mathematical text. And maybe one day it will also work for program proof. So when an AI generates a program, it might be able to generate some Lean proof or whatever that the program satisfies some specification. So I think it is possible. But now the question will be, where does the specification come from?</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=3800">01:03:20</a>] For formal methods, that&#8217;s always been a big issue. It&#8217;s not just that verification is hard, but agreeing on the spec can be difficult too. And where mathematicians have a lot of experience in stating, finding definitions that they find interesting and stating theorems that they believe should be true or that will mean something, computer programmers are less good with that, and it&#8217;s fairly easy to come up with specifications that are inconsistent or impossible.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=3842">01:04:02</a>] So remember this average function where there was a precondition of the three numbers, three arguments saying they must not be too big, but say maybe you can end up with a precondition that just cannot be satisfied. And at this point the body of the function will always be verified, even if it&#8217;s completely wrong, because the assumption says basically this function cannot be called. And so you get a false sense of confidence: you verify something, but it&#8217;s actually unusable.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=3883">01:04:43</a>] And that&#8217;s a fairly delicate point where I&#8217;m not sure LLMs are going to help much. But it&#8217;s a problem with formal methods in general, and some possibilities include the ability to test specifications, for instance. So instead of using your test suite to see if your code works out, you can also use it to see if your spec checks out, those kinds of things. But yeah, we are kind of moving some of the difficulties from the programming phase to the specification phase, but we still have some problems anyway, so that might be a way to deal with the AI-generated code and develop some confidence in it.</p><h3>01:05:39 &#8212; How LLMs will change programming languages</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=3939">01:05:39</a>] <a href="https://en.wikipedia.org/wiki/Large_language_model">LLM</a>-generated code is becoming extremely popular, and I think there&#8217;s a lot of potential downstream consequences on the programming language landscape. And I thought it might be interesting to hear your thoughts on speculating. Imagine 10 years from now, if you took <a href="https://en.wikipedia.org/wiki/Large_language_model">LLM</a>-generated code and turned it up, how might you think that the programming language landscape might change?</p><p><strong>Xavier:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=3968">01:06:08</a>] Yeah, a couple of years ago someone asked me about that, and there was a concern that the training data would be. There wouldn&#8217;t be enough training data in <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a> for an <a href="https://en.wikipedia.org/wiki/Large_language_model">LLM</a> to really learn how to program in <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a>. And it&#8217;s true that there&#8217;s less <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a> code in the wild than <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a> code, for instance, but apparently contemporary LLMs do well with the amount of <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a> code they have. Maybe because there&#8217;s enough, maybe because learning has become a little more efficient, maybe because, well, there&#8217;s less <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a> code than <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a> code, but maybe the <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a> code is better quality on an average, I don&#8217;t know.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=4020">01:07:00</a>] Anyway, maybe LLMs are getting better also at transferring knowledge that they&#8217;ve learned from one language to another. That could be. I have no idea how those things work. But yeah. So the latest feedback I&#8217;ve got about LLMs and generative AI and <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a> is that the <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a> code generated is quite decent and quite similar in quality to more popular languages. And one thing that seems to help the generative AI is a type system.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=4055">01:07:35</a>] So the fact that there&#8217;s some static checking just of the type, it&#8217;s already effective in avoiding some errors and maybe encouraging the <a href="https://en.wikipedia.org/wiki/Large_language_model">LLM</a> to declare types first. So give some type structure to the program. All right. And now from 10 years from now, it&#8217;s difficult to guess. So will it be the more popular languages of today that will be even more popular because of generative AI? Will it be the safer languages of today that will be more popular with AI because.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=4102">01:08:22</a>] Well, because there&#8217;s fewer errors. In the end, I&#8217;m hoping it will be the safer languages, but I really don&#8217;t know.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=4111">01:08:31</a>] I&#8217;ve seen in the industry there&#8217;s a few cases where because it&#8217;s so easy to generate code, massive rewrites are something that would have been very infeasible in the past, but are very realizable now. So if there&#8217;s an existing project where they chose a programming language for whatever reason in the past, they could translate the entire thing into another language with reasonable confidence. Given that kind of environment, which programming languages would you expect more people would switch to because they want to switch to it, but they weren&#8217;t able to in the past, but now it&#8217;s cheaper so they can?</p><p><strong>Xavier:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=4153">01:09:13</a>] Well, so today it seems. Well, I&#8217;ve heard mostly about C and <a href="https://en.wikipedia.org/wiki/C%2B%2B">C++</a> to <a href="https://en.wikipedia.org/wiki/Rust">Rust</a> translations, hoping that the generated <a href="https://en.wikipedia.org/wiki/Rust">Rust</a> code will be safer. He said, I&#8217;ve seen at least one project when the generated <a href="https://en.wikipedia.org/wiki/Rust">Rust</a> code is entirely in unsafe blocks. So it&#8217;s really kind of line-by-line translation of the C code, but maybe it can still be used as a starting point for making it safer later.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=4186">01:09:46</a>] So, yeah, I would say today I can imagine significant efforts being done with <a href="https://en.wikipedia.org/wiki/Rust">Rust</a> as a target language in the functional world. I&#8217;m not quite sure. Well, maybe a functional language to one of those proof assistants like Lean or Coq, because they also have programming languages, functional programming languages in them, much more restricted, but much more amenable to proof. So maybe for a few projects that could be interesting again as a first step towards a formal proof.</p><h3>01:10:26 &#8212; Industry vs academia</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=4226">01:10:26</a>] As we said earlier, when you compare industry versus academia today, where would you say most of the innovation in programming languages comes from? And also, has that changed over time?</p><p><strong>Xavier:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=4241">01:10:41</a>] Well, I think most of the innovations have come from industry lately. And that wasn&#8217;t the case in the early days of computer science if you think of the truly innovative languages like ALGOL, Lisp, Prolog, Smalltalk were developed in mostly academic settings. Smalltalk was Xerox PARC, which was an industrial research lab but very, very far away from industrial customers. And then there were much more practical languages and uglier languages developed typically at <a href="https://en.wikipedia.org/wiki/IBM">IBM</a> like Fortran, <a href="https://en.wikipedia.org/wiki/COBOL">COBOL</a>, PL/I, et cetera.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=4292">01:11:32</a>] And then, so really the idea that the nice ideas come from academia, and then, well, the nice ideas from academia started to be transferred by industry much more quickly. I&#8217;m thinking of, well, C, and especially <a href="https://en.wikipedia.org/wiki/C%2B%2B">C++</a>, and then <a href="https://en.wikipedia.org/wiki/Java">Java</a>, which really took ideas like object orientation and garbage collection, automatic memory management. In industry before <a href="https://en.wikipedia.org/wiki/Java">Java</a>, it was just crazy academics in the ivory tower that were using garbage-collected languages.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=4335">01:12:15</a>] It was completely impossible to have that in enterprise computing. And <a href="https://en.wikipedia.org/wiki/Java">Java</a> came, and two years later everyone was doing garbage collection and being very happy about it. And there were, well, <a href="https://en.wikipedia.org/wiki/Java">Java</a> also popularized type safety, bytecode verification, some pretty advanced techniques of the &#8216;90s. And if you look at further developments, I don&#8217;t know, Swift for instance, popularized the idea of algebraic data types and pattern matching.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=4366">01:12:46</a>] And then <a href="https://en.wikipedia.org/wiki/Rust">Rust</a>, well, <a href="https://en.wikipedia.org/wiki/Rust">Rust</a> is even more spectacular, I would say, because algebraic data types, garbage collection, et cetera, those were already present in academic languages like Caml, for instance. But <a href="https://en.wikipedia.org/wiki/Rust">Rust</a> really took very recent research results of the 2000s on safe low-level programming that were basically never implemented in any language and managed to do a consistent whole from that.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=4397">01:13:17</a>] And so I&#8217;m really admirative, and I have the impression that, well, I would have loved if <a href="https://en.wikipedia.org/wiki/Rust">Rust</a> came out of academia, but I&#8217;m not sure it would have been possible because it&#8217;s also a huge effort, and you really need the backing of a big company. But still, I&#8217;m not sad because I think it&#8217;s also a very good sign that industry is interested in new programming languages. At some point in the &#8216;90s, well, pretty much when I was hired at Inria on a research position, someone who had developed first versions of <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a>, well, predecessor of <a href="https://en.wikipedia.org/wiki/OCaml">OCaml</a>, and who was working on type systems for programming languages and so on.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=4448">01:14:08</a>] But then some people told me, &#8220;There&#8217;s no future in programming language research. Industry has decided it will be C forever, so deal with it. Maybe you could do software engineering and not PL research.&#8221; Then <a href="https://en.wikipedia.org/wiki/Java">Java</a> came a few years later, showing that no, industry hasn&#8217;t decided on a particular programming language. Industry is still interested in new programming languages. Industry still thinks that a new programming language can be part of the solution to software problems, and I find it extremely encouraging.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=4487">01:14:47</a>] We are not stuck with bad languages from the past where there&#8217;s a lot of legacy code, of course, but there is still real interest in better languages. And I think this will continue, and I think it&#8217;s good for the computing field.</p><h3>01:15:05 &#8212; Most interesting unsolved problems</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=4505">01:15:05</a>] In 2018, there was an interview that you did, and they asked you, what are the most interesting and important problems to focus on in the coming years? And you called out the difficulty of programming GPUs because they were using dialects of C, shoddy tools, and also the challenges in verifying machine-learned code, basically. And that sounds pretty relevant today, but what would you say your answer is today?</p><p><strong>Xavier:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=4535">01:15:35</a>] So, yeah, I think, well, for the question of how we program massively parallel hardware, I think we&#8217;ve made a little bit of progress recently with things like the MLIR initiative around LLVM or some domain-specific languages like Halide, which are pretty good. Those tensor domain-specific languages for tensor computations are getting a little better, but still I find it a little bit frustrating that I cannot do, I don&#8217;t know, theorem proving on a GPU.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=4570">01:16:10</a>] Absolutely no idea how to go about that, and in part by lack of an appropriate language. Okay, so I&#8217;m not ready to program the GPU pipelines at a very low level myself. And I think it&#8217;s more general. I think we are not using all these GPU and highly parallel hardware as much as we could. Yeah, so verifying applications that have been learned or generated by AI or so on is still a pretty hot issue.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=4610">01:16:50</a>] Back in 2018, I was more thinking of verifying simple neural networks like those used for, I don&#8217;t know, computer vision, self-driving cars, or some numerical computations like weather prediction and so on. So specialized LLMs, but you still want some guarantees about what they produce, that they cannot produce completely inconsistent outputs. For instance, there were some attempts in the last years at using static analysis tools and basically program verification tools applied to LLMs, but.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=4648">01:17:28</a>] Well, it doesn&#8217;t scale. LLMs are big. Sorry, neural networks are big. And for LLMs, there is also a distinct lack of specification. You don&#8217;t really know what&#8217;s a good answer from an <a href="https://en.wikipedia.org/wiki/Large_language_model">LLM</a>. Well, you know it when you see it, but you cannot write a mathematical specification of it. So that part is probably over. What I would say are the big problems for today? Yeah, probably maintaining software quality despite AI slope, despite a lot of pressure to throw away traditional software development.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=4689">01:18:09</a>] Techniques using LLMs and AI as much as we can to do mechanized proofs, so proofs that can be checked by machines. Maybe this will be the decade of formal verification of software. We&#8217;ve been waiting for that for 50 years. Maybe it will finally take off.</p><h3>01:18:30 &#8212; Top book recommendations for engineers</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=4710">01:18:30</a>] What&#8217;s your top book recommendation for software engineers, and why?</p><p><strong>Xavier:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=4716">01:18:36</a>] This is an old one, Programming Pearls by Bentley. I think I read it when I was a PhD student, but I think it&#8217;s nice as showing how very talented programmers work, how they think about their programs. It&#8217;s a combination of choosing the right algorithms, expressing them clearly, knowing when to stop, when to use a simple algorithm when a more complicated one is not needed, having a sense of elegance in the code you write, having a feeling for where the problem is when the code misbehaves.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=4759">01:19:19</a>] So all those kinds of things that are hard to communicate, and I think those pearls are a very easy to read and don&#8217;t use any complicated data structures, don&#8217;t use any complicated language. I mean, it&#8217;s kind of timeless. I think those pearls are a good illustration of that. So if you haven&#8217;t read it, it&#8217;s a classic, but I think it&#8217;s a nice reading, nice read. The second one is a little more controversial, I guess.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=4791">01:19:51</a>] So, in <a href="https://en.wikipedia.org/wiki/How_to_Design_Programs">How to Design Programs</a>, which is a fairly ambitious title as well. And this comes from the Scheme community, okay. <a href="https://en.wikipedia.org/wiki/Matthias_Felleisen">Matthias Felleisen</a>, <a href="https://en.wikipedia.org/wiki/Robert_Bruce_Findler">Robert Bruce Findler</a>, <a href="https://en.wikipedia.org/wiki/Matthew_Flatt">Matthew Flatt</a>, and <a href="https://en.wikipedia.org/wiki/Shriram_Krishnamurthi">Shriram Krishnamurthi</a>. And those people have developed. Well, the Scheme community is famous for having developed pedagogical resources that are, I mean, ways to teach programming that go beyond teaching functional programming, basically. And so there were the MIT course <a href="https://en.wikipedia.org/wiki/Structure_and_Interpretation_of_Computer_Programs">Structure and Interpretation of Computer Programs</a>, which was quite famous.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=4827">01:20:27</a>] And this is kind of a more modern twist on similar ideas. And I find this book interesting because, well, it really teaches you the way of functional programming or a way to functional programming. It can be very irritating sometimes, very opinionated, very almost mystical sometimes. But it&#8217;s also another great attempt at trying to communicate how experienced programmers go about designing a program even before writing the first line, and then how, given a language like Scheme, which is pretty flexible, how the code kind of follows naturally, knowing what you know.</p><h3>01:21:17 &#8212; Advice for his younger self</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=4877">01:21:17</a>] Now, if you could go back to when you just started your career and give yourself some advice, what would you say?</p><p><strong>Xavier:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=4887">01:21:27</a>] Sometimes I got the feeling that I specialized a little too early in programming language research, or maybe. Well, there are some topics that I didn&#8217;t learn because I didn&#8217;t feel like it and that I had to relearn later, or I still have to learn now that I&#8217;m almost 60 and maybe not as quick as I was back in the day. So, yeah, maybe I did specialize a little bit too early. And so I would encourage everyone who&#8217;s serious about working in computing to get a fairly diverse computer science background, even for topics that look super theoretical and not very relevant to everyday jobs.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=4948">01:22:28</a>] Where we mentioned computability, for instance, the halting problem and so on, you&#8217;re not going to run into that very often, but it still gives interesting perspectives, I think. And then it also helps understanding new problems, like with quantum computing. What can you do with a quantum computer that you cannot do with a normal computer? And it&#8217;s time to revisit all of the classic basic complexity theory I learned earlier when I was young.</p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=4986">01:23:06</a>] And so, yeah, I think it&#8217;s good to have this kind of background, even if it&#8217;s not obvious you will be using it every day. And sometimes I wish I had taken time to accumulate a little more of this background before specializing in primary languages.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=5005">01:23:25</a>] Awesome. Well, thank you so much for your time, <a href="https://en.wikipedia.org/wiki/Xavier_Leroy">Xavier Leroy</a>. I really appreciate it.</p><p><strong>Xavier:</strong></p><p>[<a href="https://youtu.be/9Cswiqrq6So?t=5008">01:23:28</a>] Thank you, Ryan. That was nice.</p>]]></content:encoded></item><item><title><![CDATA[Turing Award Winner: TPUs vs GPUs vs CPUs, Computer Architecture, RISC vs CISC | David Patterson]]></title><description><![CDATA[In college I briefly studied RISC vs CISC for my major but I forgot almost everything now.]]></description><link>https://www.developing.dev/p/turing-award-winner-tpu-vs-gpu-vs</link><guid isPermaLink="false">https://www.developing.dev/p/turing-award-winner-tpu-vs-gpu-vs</guid><dc:creator><![CDATA[Ryan Peterman]]></dc:creator><pubDate>Mon, 13 Jul 2026 13:05:15 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/206770818/662a5457db86986879d6696047c28799.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>In college I briefly studied RISC vs CISC for my major but I forgot almost everything now. So it was great to talk to <a href="https://en.wikipedia.org/wiki/David_Patterson_(computer_scientist)">David Patterson</a> about what happened there since he was one of the people involved in the historic RISC versus CISC debates.</p><p>Given his computer architecture expertise, I also was curious to hear his explanation of the differences about CPUs, GPUs and TPUs so we discussed that too. One of the things I enjoyed most about the conversation was reflecting on what was important looking back on his half a decade of experience. I hope you enjoy this episode.</p><p>By the way, I started to shoot my own episodes since it lets me record in scrappy locations and majorly cuts down on cost. Before when I got help, each onsite shoot would cost $2-3k minimum. Maybe one day I&#8217;ll revisit this and get help if the podcast has more budget. For now though I&#8217;ve been enjoying learning video production and it&#8217;s pretty simple. Lighting was rough on this episode though (lesson learned).</p><p>It&#8217;s also fun bringing in equipment and trying to capture people in their natural environment like when I shot the <a href="https://www.youtube.com/watch?v=U46fJ2bJ-co&amp;t=4378s">Bjarne episode in front of his own library of C++ books</a>.</p><p>Also, it&#8217;s been ~6 months since I quit my job to work on the podcast full time. I&#8217;ve been meaning to write an update. I&#8217;ll put something out in a week or two.</p><p>Check out the episode wherever you get your podcasts: <a href="https://youtu.be/Pn4ZwlEh5nw">YouTube</a>, <a href="https://open.spotify.com/episode/6mlRwX3aNmRQLiAho2CTXW?si=imjcMUb9S5yBYr8Pr4j2wA">Spotify</a>, <a href="https://podcasts.apple.com/us/podcast/the-peterman-pod/id1777363835">Apple Podcasts</a>.</p><div id="youtube2-Pn4ZwlEh5nw" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;Pn4ZwlEh5nw&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/Pn4ZwlEh5nw?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h1>Timestamps</h1><p><a href="https://www.developing.dev/i/206770818/0042-risc-vs-cisc">00:42 - RISC vs CISC</a></p><p><a href="https://www.developing.dev/i/206770818/1251-compilers">12:51 - Compilers</a></p><p><a href="https://www.developing.dev/i/206770818/1738-gpus">17:38 - GPUs</a></p><p><a href="https://www.developing.dev/i/206770818/2307-gpu-vs-tpu-vs-cpu">23:07 - GPU vs TPU vs CPU</a></p><p><a href="https://www.developing.dev/i/206770818/3212-is-moores-law-dead">32:12 - Is Moores law dead?</a></p><p><a href="https://www.developing.dev/i/206770818/3804-gpu-benchmarks">38:04 - GPU benchmarks</a></p><p><a href="https://www.developing.dev/i/206770818/4140-how-to-have-a-bad-career">41:40 - How to have a bad career</a></p><p><a href="https://www.developing.dev/i/206770818/4959-courage-and-optimism">49:59 - Courage and optimism</a></p><p><a href="https://www.developing.dev/i/206770818/5556-advice-for-his-younger-self">55:56 - Advice for his younger self</a></p><h1>Transcript</h1><h3>00:42 &#8212; RISC vs CISC</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=42">00:42</a>] Maybe you could explain <a href="https://en.wikipedia.org/wiki/Reduced_instruction_set_computer">RISC</a> versus <a href="https://en.wikipedia.org/wiki/Chief_of_Integrated_Defence_Staff">CISC</a>, kind of like what that debate was and why it was controversial.</p><p><strong>David:</strong></p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=49">00:49</a>] What happened is, in the 1970s, the microprocessor was invented. But in the beginning, it was basically a toy. It&#8217;d be something that would go in microwaves and things like that. Those of us who believed in <a href="https://en.wikipedia.org/wiki/Moore's_law">Moore&#8217;s Law</a> believed eventually the microprocessor would be the way we did all our computing, with the doubling of transistors every year or two. Eventually, there&#8217;d be enough transistors that one of these microprocessors would be a serious computer.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=79">01:19</a>] So the people who are designing microprocessors, like <a href="https://en.wikipedia.org/wiki/Intel">Intel</a> and Texas Instruments, weren&#8217;t really computer architects, so they just imitated what the big companies did. So leading companies, like IBM, where at the time <a href="https://en.wikipedia.org/wiki/Digital_Equipment_Corporation">Digital Equipment Corporation</a>, IBM for mainframes, Digital Equipment for what were called minicomputers, they kind of drove the architecture, the instruction set design. So what they were doing with <a href="https://en.wikipedia.org/wiki/Moore's_law">Moore&#8217;s Law</a> was building more and more sophisticated instructions.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=109">01:49</a>] They had many computers be the size of a refrigerator or a couple of refrigerators, and mainframes would be the size of many of those. That&#8217;s what they were doing with more hardware resources. The philosophy at the time was that by having a more sophisticated instruction set, you raised the <a href="https://en.wikipedia.org/wiki/Abstraction">level of abstraction</a> closer to the software. So that had some inherent benefits over having something at a lower level.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=136">02:16</a>] Now, from some of us who were in that area, like my friend <a href="https://en.wikipedia.org/wiki/John_L._Hennessy">John Hennessy</a> at <a href="https://en.wikipedia.org/wiki/Stanford_University">Stanford</a> and I, we thought that wasn&#8217;t necessarily the right thing to do. Compilers would go from programming languages down to the instruction set. So why couldn&#8217;t compilers hold that? And then the question is, what&#8217;s the right instruction set for this emerging microprocessor? And the prevailing wisdom of these more sophisticated instruction sets, complex instruction sets, and if we think of it like vocabulary, it was like having lots of polysyllabic words in your vocabulary.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=172">02:52</a>] And the alternative was going to be what we call the reduced instruction set computer, was having lots of reduced instructions, like monosyllabic words. So you might guess that for a program to execute these instructions, if they&#8217;re simpler, they take more of them, and if they&#8217;re sophisticated, they take fewer. But the sophisticated ones might take longer to run. So the question came down to what was that ratio?</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=198">03:18</a>] And in the beginning, in the 1980s when these debates were happening, there was this kind of very vociferous debates partly about what those ratios are going to do, but a big part was kind of philosophical. Weren&#8217;t you doing damage to the software industry by lowering the instruction set level so the gap between the programming languages and the instruction set was larger? That was kind of the ferocity of the debates.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=223">03:43</a>] Well, after the dust settled a few years later and we started getting numbers, it turned out you needed maybe 30%, 40% more simple instructions to execute in a program. But you could run them 4 or 5 times faster. So the net was 3 or 4x speedup was the potential for <a href="https://en.wikipedia.org/wiki/Reduced_instruction_set_computer">RISC</a> over <a href="https://en.wikipedia.org/wiki/Chief_of_Integrated_Defence_Staff">CISC</a>.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=245">04:05</a>] You mentioned that philosophical difference, that gap. Why would that be controversial?</p><p><strong>David:</strong></p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=252">04:12</a>] I mean, unfortunately, I&#8217;d say computer architecture in the 1970s and even 1980s, a lot of it was kind of people designed this by using their intuition or using their gut, their feelings, was this the right thing to do. And even the textbooks of the time were like catalogs. Here is a computer and just list all its features. And here&#8217;s another computer listing all its features. So it&#8217;s pretty dissatisfying what was going on.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=281">04:41</a>] Because these debates, it would seem like we ought to be able to decide this scientifically with numbers that are there. But, absent that, it was more like a philosophical debate, like how many angels on the head of a pin, right? You could have arguments qualitatively, but you couldn&#8217;t settle the arguments. And because there weren&#8217;t ways to settle the arguments quantitatively, people would just argue about it.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=306">05:06</a>] Would you say that, you know, <a href="https://en.wikipedia.org/wiki/Reduced_instruction_set_computer">RISC</a> versus <a href="https://en.wikipedia.org/wiki/Chief_of_Integrated_Defence_Staff">CISC</a>, did one side win the war?</p><p><strong>David:</strong></p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=313">05:13</a>] Yeah, I was just reading. There&#8217;s some guy online who revisited it and he said, &#8220;<a href="https://en.wikipedia.org/wiki/Chief_of_Integrated_Defence_Staff">CISC</a>? Well, that&#8217;s a pretty myopic view. It&#8217;s in the PC era because of the importance of distributing software in binary.&#8221; So once <a href="https://en.wikipedia.org/wiki/X86">x86</a> was established and PCs would ship software in binaries, that was very hard to overcome. That was a huge impediment to changing the instruction set. So PCs are defined largely by the <a href="https://en.wikipedia.org/wiki/X86">x86</a> architecture.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=346">05:46</a>] But also in the 1980s, there was this company in England that wanted to do a personal computer. They called it the Acorn personal computer. And they decided they wanted to have their own instruction set architecture to do that, their own chip they run satisfactorily. The chips they had available at the time they were doing it weren&#8217;t fast enough. And they were influenced by the papers that we did at <a href="https://en.wikipedia.org/wiki/University_of_California%2C_Berkeley">UC Berkeley</a>.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=369">06:09</a>] And so they built what they called the <a href="https://en.wikipedia.org/wiki/ARM_architecture_family">Acorn RISC Machine</a>. And then one of the benefits of this kind of reduced instruction set is that it could be simpler. It would take less resources and take less energy to execute. And then several years later, when <a href="https://en.wikipedia.org/wiki/Apple">Apple</a> was looking for a microprocessor that could power one of their personal devices, this one was called the early forerunner of the iPhone called <a href="https://en.wikipedia.org/wiki/Apple">Apple</a> Newton.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=395">06:35</a>] They came to this company and said, &#8220;Boy, I really like it. Let&#8217;s get rid of the Acorn name.&#8221; So they renamed it the <a href="https://en.wikipedia.org/wiki/ARM_architecture_family">Acorn RISC Machine</a>, ARM, and they rechristened it the <a href="https://en.wikipedia.org/wiki/ARM_architecture_family">Advanced RISC Machine</a> to get rid of the Acorn. And then <a href="https://en.wikipedia.org/wiki/Apple">Apple</a> used it in the Newton. Now, the Newton wasn&#8217;t a commercial success, but it demonstrated the benefits for <a href="https://en.wikipedia.org/wiki/Reduced_instruction_set_computer">RISC</a> architecture for mobile devices. So Nokia came along just a few years later with their GSM cellular phone, which is one of the first popular ones, and they embraced ARM.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=430">07:10</a>] And so ever since, ARM has dominated all the mobile devices. So I think I just checked, there&#8217;s been 350 billion ARM processors, microprocessors with ARM technology in it today. So it&#8217;s like today 99% of all processors and computers are <a href="https://en.wikipedia.org/wiki/Reduced_instruction_set_computer">RISC</a>, even in personal computers. <a href="https://en.wikipedia.org/wiki/Apple">Apple</a> switched over to ARM from the <a href="https://en.wikipedia.org/wiki/X86">x86</a> architecture. So even PCs, there&#8217;s <a href="https://en.wikipedia.org/wiki/Reduced_instruction_set_computer">RISC</a> architecture is significant and it&#8217;s starting to get in the cloud.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=467">07:47</a>] The cloud&#8217;s largely been defined by the <a href="https://en.wikipedia.org/wiki/X86">x86</a> server architectures. But Amazon, <a href="https://en.wikipedia.org/wiki/Microsoft">Microsoft</a>, and <a href="https://en.wikipedia.org/wiki/Google">Google</a> all have their own development of ARM processors. So ARM is becoming a <a href="https://en.wikipedia.org/wiki/Reduced_instruction_set_computer">RISC</a> processor, becoming more popular in the cloud. So right now I&#8217;d say the <a href="https://en.wikipedia.org/wiki/X86">x86</a> architecture market is shrinking while the <a href="https://en.wikipedia.org/wiki/Reduced_instruction_set_computer">RISC</a> architecture market is growing leaps and bounds.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=492">08:12</a>] Well, how could someone say <a href="https://en.wikipedia.org/wiki/Chief_of_Integrated_Defence_Staff">CISC</a> when you mentioned 99%?</p><p><strong>David:</strong></p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=497">08:17</a>] Yeah, well, that&#8217;s just if they&#8217;re doing something in history and they define computers as personal computers and maybe servers, and they go up through around 2000. If the story ended then, you could&#8212;well, it looks like a <a href="https://en.wikipedia.org/wiki/Chief_of_Integrated_Defence_Staff">CISC</a> architecture, but once we get into this post-PC era, I don&#8217;t understand how somebody would reach that conclusion.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=523">08:43</a>] You mentioned the energy expenditure. So <a href="https://en.wikipedia.org/wiki/Reduced_instruction_set_computer">RISC</a> makes sense in places, or maybe on mobile devices, things like that.</p><p><strong>David:</strong></p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=532">08:52</a>] Well, even in the cloud, everybody cares about.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=535">08:55</a>] We&#8217;re.</p><p><strong>David:</strong></p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=536">08:56</a>] Everything is energy bound now. So if these days, of course you&#8217;re not dealing with millions of transistors, but billions of transistors. So it matters somewhat less today. There&#8217;s so many things going on that you can hide that. I mean, even what the <a href="https://en.wikipedia.org/wiki/X86">x86</a> architecture did to compete is that it translated the <a href="https://en.wikipedia.org/wiki/X86">x86</a> instructions in hardware into <a href="https://en.wikipedia.org/wiki/Reduced_instruction_set_computer">RISC</a> instructions. And so you had to pay that extra overhead of that translation step to get <a href="https://en.wikipedia.org/wiki/Reduced_instruction_set_computer">RISC</a> instructions.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=566">09:26</a>] And then you could take any good ideas that the <a href="https://en.wikipedia.org/wiki/Reduced_instruction_set_computer">RISC</a> people had that <a href="https://en.wikipedia.org/wiki/X86">x86</a> could do. But it was worth it financially for that extra overhead because of the value of the PC software base. So it made a lot of sense for <a href="https://en.wikipedia.org/wiki/Intel">Intel</a> to do that. And they did that in the early 2000s. It was a great commercial idea.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=589">09:49</a>] Is there any niche use case where <a href="https://en.wikipedia.org/wiki/Chief_of_Integrated_Defence_Staff">CISC</a> makes sense? Is there any engineering trade-off, or is <a href="https://en.wikipedia.org/wiki/Chief_of_Integrated_Defence_Staff">CISC</a> objectively worse?</p><p><strong>David:</strong></p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=597">09:57</a>] Yeah. So if you want to, if we want to go kind of one level deeper into all of this, what was actually going on in designing computers, the hard part is the control. And so what happened is, in the beginning, control was kind of ad hoc. You would figure out, you put the gates together to make it work. One of the computing pioneers, Maurice Wilkes, figured out a more elegant way to design control.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=627">10:27</a>] And he said, well, we could just list all the control signals as the output of a memory, and we could have something that would keep track of where we were in the memory and issue those control signals. And he called this effort the instruction, the control signals. You could think of instructions. He called that a microinstruction, and he called the programming of these instructions <a href="https://en.wikipedia.org/wiki/Maurice_Wilkes">microprogramming</a>.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=654">10:54</a>] Where technology was in the 1960s, that made a fair amount of sense. IBM built these so-called microprogram computers. It was basically an interpreter with very simple instructions that would interpret this much more sophisticated instruction set above it. But you would pay this interpretation overhead. And classically in computer science, interpreting versus compiling is something like a factor of five or ten.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=683">11:23</a>] But given the latencies of the memory technologies and the possibility of doing this out of read-only memory, it made sense up until the &#8216;60s and &#8216;70s. But then the question came up around 1980: Is this still a good idea? Should we have this microcode interpreter inside there? And so the alternative is to think of, well, rather than having this microcode interpreter in there, why don&#8217;t we just compile directly into those instructions?</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=712">11:52</a>] And that&#8217;s pretty close to the <a href="https://en.wikipedia.org/wiki/Reduced_instruction_set_computer">RISC</a> ideas. The microinstructions themselves used to be like 100 bits wide and really complicated. So if you make them not quite so long, you make them kind of more natural still. We could skip the interpretation step. So, going one level deeper, the question today would be: would people invent an instruction set that was so sophisticated it needed a microcode interpreter?</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=741">12:21</a>] And probably they wouldn&#8217;t do that. I mean, you could do it; nothing prevents you from doing it. But you wouldn&#8217;t want to design an instruction set that was forced to use a microcode interpreter. It might make sense in some very tiny applications, possibly where you have tens of thousands of transistors. Maybe this microcoded interpreter would work. But I think nobody today&#8212;I don&#8217;t think anybody&#8217;s invented an instruction set in the last 20 years that has anything that would need a microcode interpreter.</p><h3>12:51 &#8212; Compilers</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=771">12:51</a>] You mentioned the compiler multiple times here, and it seems like that&#8217;s a critical piece that kind of makes <a href="https://en.wikipedia.org/wiki/Reduced_instruction_set_computer">RISC</a> work so well. Can you explain the role of the compiler and how it manages the relationship between software and hardware?</p><p><strong>David:</strong></p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=786">13:06</a>] Well, you&#8217;re writing in a programming language like C or <a href="https://en.wikipedia.org/wiki/C%2B%2B">C++</a>, or maybe Python, but the quality of the code that gets generated is up to the compiler. And a specific example is that it&#8217;s useful when you construct computers to have registers. And those registers are actually kind of visible in the assembly language or the machine language programming. There can be 8, 16, or 32 of these registers for the people programming to use.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=817">13:37</a>] Well, it used to be very difficult for compilers to allocate registers efficiently. Computers just weren&#8217;t fast enough. We didn&#8217;t have the algorithms that we could look at a section of code or a subroutine or something and say, how can we most efficiently do register allocation? In fact, the C programming language, which was invented to do systems programming in C. Before that, to write an operating system, people wrote them in assembly language, believe it or not.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=848">14:08</a>] But the Unix people showed, Ken Thompson, Dennis Ritchie showed that if we had a low level language, a pretty low level language, we get the benefits of writing in something that&#8217;s much easier for humans to understand and debug because register allocation by the compilers was so poor, they had to put in the ability for the programmer to give hints of what variables should go in registers. It was just easier for them to have the programmer step in and say if the machine had eight registers, I want these six variables to be in these registers.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=880">14:40</a>] Don&#8217;t leave them in memory because it runs so much slower; registers are so much faster. So a big part of the <a href="https://en.wikipedia.org/wiki/Reduced_instruction_set_computer">RISC</a> argument was the compiler algorithms were getting better. They could handle these low-level instructions; they could allocate registers efficiently. And that was another reason in these debates about why it made sense to have a simpler architecture. What we did in the <a href="https://en.wikipedia.org/wiki/Reduced_instruction_set_computer">RISC</a> architecture is, well, if registers are really important, register allocation is really important.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=910">15:10</a>] One way to make it easier for the compiler was just to have a lot more of them. So typically the <a href="https://en.wikipedia.org/wiki/Chief_of_Integrated_Defence_Staff">CISC</a> architectures at times would have eight or maybe 16 registers. So we put in 32. And that was one of the arguments, right? If it&#8217;s hard to efficiently use a small number, let&#8217;s give them plenty. So even if it wasn&#8217;t that good, there&#8217;ll be enough registers most of the time. And registers weren&#8217;t that much more expensive to include in machines because of <a href="https://en.wikipedia.org/wiki/Moore's_law">Moore&#8217;s Law</a>.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=938">15:38</a>] I saw somewhere in one of the talks that he had given that somehow the compiler, it&#8217;s easier for it to optimize the code for <a href="https://en.wikipedia.org/wiki/Reduced_instruction_set_computer">RISC</a>. But in <a href="https://en.wikipedia.org/wiki/Chief_of_Integrated_Defence_Staff">CISC</a>, there were these complex bigger ones, and it almost never used them. Is that a shortcoming of the compiler?</p><p><strong>David:</strong></p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=956">15:56</a>] So what happened, if we go back to the compiler days, there&#8217;s this argument that by having more sophisticated instructions, this would raise the <a href="https://en.wikipedia.org/wiki/Abstraction">level of abstraction</a>. There&#8217;d be a smaller gap, and they&#8217;d make it easy to compile. But that was a philosophical argument. It wasn&#8217;t something that necessarily compiler people could. Compiler people weren&#8217;t making that argument; it was the architects who were making that argument.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=980">16:20</a>] And as it turned out, when we looked at the programs, when we were doing the early research on <a href="https://en.wikipedia.org/wiki/Chief_of_Integrated_Defence_Staff">CISC</a> versus <a href="https://en.wikipedia.org/wiki/Reduced_instruction_set_computer">RISC</a>, the compilers didn&#8217;t really use those instructions. Often the compiler writers, the architects, would come up with a sophisticated instruction, and the compiler writers would say, well, we don&#8217;t need that. In fact, we found examples where, like for a procedure entry, there&#8217;d be a special instruction built in to do all this work.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=1004">16:44</a>] That&#8217;s what the architects thought the compilers were going to do, and the compiler designers said, well, we don&#8217;t need that. It&#8217;s faster. It&#8217;s actually faster for you to use separate instructions than to use your sophisticated instruction. And so we found a bunch of examples like that. So you pay the extra overhead of the microcode interpreter to have these sophisticated instructions, and then the compiler doesn&#8217;t even use them.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=1025">17:05</a>] Right. So this is kind of a nonsensical situation that we&#8217;re in. And, you know, this is kind of like, you know, why, why, why are there startups or why are there scientific, you know, breaking points like that? As we looked at all the technologies with <a href="https://en.wikipedia.org/wiki/Moore's_law">Moore&#8217;s Law</a>, you know, ideas like caches, with where compilers were using sophisticated instructions, the ability to allocate registers more efficiently, it made sense to change the directions away from these microcoded instruction set architectures to these simple architectures.</p><h3>17:38 &#8212; GPUs</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=1058">17:38</a>] When we talk about instruction sets, I mean we&#8217;re kind of assuming that we&#8217;re talking about these general-purpose computers or these CPUs. And I know GPUs are kind of talked about a lot, and maybe there&#8217;s other forms of computing. Are there instruction sets for those types of machines as well?</p><p><strong>David:</strong></p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=1075">17:55</a>] So what happened is around 2000 is when GPUs came along, and these were what we call domain-specific architectures. So a <a href="https://en.wikipedia.org/wiki/Graphics_processing_unit">GPU</a> is a graphics processing unit. It had one job. It didn&#8217;t need to do everything that a general-purpose processor needs to, didn&#8217;t have to support virtual memory, it didn&#8217;t have to support a compiler, which is a pretty radical idea for architectures. It was just for graphics. And so around 2000 is when <a href="https://en.wikipedia.org/wiki/Nvidia">NVIDIA</a> and the other GPUs out there, because they were trying to give you the graphics for games and give you the graphics for movies.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=1112">18:32</a>] So it was a niche product. So what happened kind of in the computer industry is it was driven by <a href="https://en.wikipedia.org/wiki/Moore's_law">Moore&#8217;s Law</a>, which I&#8217;ve mentioned many times, and also this lesser known law called <a href="https://en.wikipedia.org/wiki/Dennard_scaling">Dennard scaling</a>, which raises kind of an interesting question. Well, if <a href="https://en.wikipedia.org/wiki/Moore's_law">Moore&#8217;s Law</a> puts a lot more transistors on a chip, how come they&#8217;re not getting hotter and hotter as we double the number of transistors every year?</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=1136">18:56</a>] And the reason was this observation made by <a href="https://en.wikipedia.org/wiki/Robert_H._Dennard">Robert Dennard</a>, that as you added more transistors, people would also lower the threshold voltage, which is the distinction between a 0 and 1. And that had a squared effect. So you would end up doubling the transistors, but you&#8217;d lower the threshold voltage. So microprocessors stayed at like 20 or 30 watts. In fact, we did a John and I eventually did a textbook, and I was just checking, and it came out in 1990.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=1168">19:28</a>] And we didn&#8217;t even talk about power as an issue for the first three editions. The third one came out in 2000. Power wasn&#8217;t even a topic because <a href="https://en.wikipedia.org/wiki/Dennard_scaling">Dennard scaling</a> was going on. And so microprocessors stayed in the tens of watts even as they got faster and faster. What happened is about 2005 or so, <a href="https://en.wikipedia.org/wiki/Dennard_scaling">Dennard scaling</a> stopped working. And that was a shock. And <a href="https://en.wikipedia.org/wiki/Intel">Intel</a> actually had a microprocessor that failed one of their generations because they just couldn&#8217;t get the power down enough.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=1200">20:00</a>] It was too hot to do that. So then what that forced us to go to multicore is that before that, it was easiest for the programmer, for everybody, if there was one very sophisticated processor that did everything, but we couldn&#8217;t do that anymore. So it went from one sophisticated processor to two, and then four, and then eight simpler processors. Then it was up to the programmer to deliver on the potential of <a href="https://en.wikipedia.org/wiki/Moore's_law">Moore&#8217;s Law</a> by parallelizing their code.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=1229">20:29</a>] So we stayed that way for about another 10 years. And then <a href="https://en.wikipedia.org/wiki/Moore's_law">Moore&#8217;s Law</a> started slowing down so that the general-purpose microprocessor was barely improving. It got a little better, but it wasn&#8217;t getting dramatically better. In the 1980s, 1990s, 2000s, you have a laptop and your friend&#8217;s laptop would be like four times as fast as yours. And you were jealous. So you would throw away perfectly good hardware because your friend&#8217;s thing was so much faster because of the rapid change in performance.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=1265">21:05</a>] Well, that all ended in the 2010s, where you wouldn&#8217;t throw away a laptop because the new ones were hardly that much faster than the old ones. You&#8217;d throw them away when they break and slow down. Nevertheless, programmers were used to this dramatic improvement in performance every few years because they could add more features to their software and stuff like that. So what were architects going to do?</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=1287">21:27</a>] They&#8217;d already done the multicore trick in 2005 or so. So in around 2015, the idea was we would do domain-specific architectures like the GPUs. So if you tell me I only have to run a narrow class of programs and I don&#8217;t have to necessarily run all the operating systems, everything else, well, yes, I could shuffle those resources and do something much more efficient for something. Well, so you could do some things well, and there&#8217;s other things either you do poorly or not even at all.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=1319">21:59</a>] So then the question is, okay, what domain? So just coincidentally, where we were technologically, right around 2012, 2015 is when machine learning AI burst on the scene. And so that was, it was evident what domain should we do? And the domain was machine learning AI. So just coincidentally, where we were technologically, this new domain came along. And then I would say I work for <a href="https://en.wikipedia.org/wiki/Google">Google</a>, but I think it&#8217;s fair to say <a href="https://en.wikipedia.org/wiki/Google">Google</a> was the one who really saw it was certainly the first big company who understood the potential of machine learning AI and bet that they or feared that they were going to be swamped with demand and needed to do custom hardware.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=1366">22:46</a>] So the tensor processing unit, or <a href="https://en.wikipedia.org/wiki/Graphics_processing_unit">GPU</a>, that <a href="https://en.wikipedia.org/wiki/Google">Google</a> debuted in 2016 really kind of shocked the world and got people to realize that we should be designing hardware for machine learning, and we could continue to improve performance dramatically for that one domain.</p><h3>23:07 &#8212; GPU vs TPU vs CPU</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=1387">23:07</a>] What&#8217;s the high-level difference between a CPU, a <a href="https://en.wikipedia.org/wiki/Graphics_processing_unit">GPU</a>, and a <a href="https://en.wikipedia.org/wiki/Tensor_Processing_Unit">TPU</a>?</p><p><strong>David:</strong></p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=1394">23:14</a>] The CPU has got to be this general-purpose thing. And basically even today they have these general-purpose cores that each core is very similar to what the instruction sets used to be like 20 years before that. It&#8217;s not a surprising design, and it&#8217;s just got lots of cores, and the modern ones today could have 50 or 100 cores in there. So that&#8217;s the feature for graphics. What they decided to do to do the graphics job is they need to get a lot of performance out of the memory system.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=1426">23:46</a>] So they went to multithreading. They have hardware threads that you would send a memory request out and the hardware would switch over to do something else while memory is coming up. So this highly threaded architecture, and that&#8217;s what they developed, and it could run well for graphics. And graphics, it turns out, doesn&#8217;t need very, doesn&#8217;t need a powerful floating point. It doesn&#8217;t need wide floating points.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=1455">24:15</a>] So 32-bit floating point is plenty for graphics, even 16-bit. So they were doing, pushing graphics with 16- and 32-bit floating point in this multithreaded kind of architecture. And because it was kind of its own unique thing, it has its own set of terminology all to itself. It wasn&#8217;t kind of out of the main branch of computer architecture. So when you look at our textbooks, we have kind of like a Rosetta Stone which says here&#8217;s the terms that <a href="https://en.wikipedia.org/wiki/Nvidia">NVIDIA</a> uses to describe GPUs.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=1485">24:45</a>] This is what it means in kind of normal, well, normal in the mainstream processor design. So there was this niche product that happened to do pretty fast single-precision floating point and even half-precision floating point, and they were pretty cheap. They were like hundreds of dollars. So when people, so kind of, but some people were thinking, boy, for some applications, if I could turn my program into, like, pretend that it was doing, creating an image, if I could turn my problem into image generation, I could use these pretty cheap GPUs, which had very good floating-point performance per dollar compared to anything else.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=1531">25:31</a>] And so people started playing around with that. And the founder and CEO, <a href="https://en.wikipedia.org/wiki/Jensen_Huang">Jensen Huang</a>, really liked that idea. So in 2006 he funded an effort to create a programming language that would handle this multithreaded hardware architecture for graphics to make it easier to program. And so that led to the invention of <a href="https://en.wikipedia.org/wiki/CUDA">CUDA</a>, which I can&#8217;t remember its acronym, but it&#8217;s really a proprietary programming language for the multithreaded <a href="https://en.wikipedia.org/wiki/Graphics_processing_unit">GPU</a> architecture to make it easier to program.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=1567">26:07</a>] It was a C-like language, but you can&#8217;t just compile C programs and run it. But it was C-like, but people actually liked it. It was certainly much better than trying to turn your program into image generation, but people liked it. But <a href="https://en.wikipedia.org/wiki/Jensen_Huang">Jensen Huang</a>, his vision was try to get these teenagers in the basement who are playing the games to learn how to program these things. And he had a couple of markets that he was interested in, like some of the <a href="https://en.wikipedia.org/wiki/Ministry_of_energy">Department of Energy</a> labs, like fluid flow and some of the things, like, some.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=1598">26:38</a>] And he would build special-purpose libraries that could handle that domain and then use his GPUs to do that kind of special-purpose computing, but breaking out of graphics. But that&#8217;s kind of the heritage there now for the <a href="https://en.wikipedia.org/wiki/Tensor_Processing_Unit">TPU</a> program. And so what&#8217;s happened, people started right from the very beginning, people started using GPUs because they had much better single-precision floating-point performance than the CPUs.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=1624">27:04</a>] They had a lot more processors on them, so they had potentially much more performance. So one of the breakthrough moments was in 2012, when within the machine learning community, this neural networking piece, which had a few advocates but a lot of people didn&#8217;t believe in, went into a competition to see who could do the best image recognition. In 2012, the so-called <a href="https://en.wikipedia.org/wiki/AlexNet">AlexNet</a> beat all the competition.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=1653">27:33</a>] This was this historic moment in machine learning and neural networking. And once they did it, and the guy who did that had taken a <a href="https://en.wikipedia.org/wiki/CUDA">CUDA</a> course at the <a href="https://en.wikipedia.org/wiki/University_of_Toronto">University of Toronto</a> to learn how to use it. And so he says, well, as long as I&#8217;m doing this, I&#8217;ll do it on a <a href="https://en.wikipedia.org/wiki/Graphics_processing_unit">GPU</a>. He was able to explore a lot more space on this cheap, fast <a href="https://en.wikipedia.org/wiki/Graphics_processing_unit">GPU</a>. So he entered it in the competition in 2012, and he was the only one using neural networks.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=1680">28:00</a>] And he crushed the competition. And within a few years, everybody switched over, and not only were they doing neural networks, but they were using GPUs. So GPUs have this heritage of being graphics engines, but more programmable, and started getting used in machine learning. When <a href="https://en.wikipedia.org/wiki/Google">Google</a> came along, they decided it was a clean slate. They didn&#8217;t care about graphics. So at the heart of neural networking is a matrix multiply.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=1711">28:31</a>] That&#8217;s the thing. So they designed a processor. At the time, the microprocessor had a giant matrix multiplying unit. That was the main thing. And then they threw a bunch of stuff out that they didn&#8217;t need. So a lot of general-purpose computing is what&#8217;s on the chip is maybe three levels of caches to try and have so you don&#8217;t spend all your time going to the relatively slow memory.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=1734">28:54</a>] Well, for machine learning they knew when their memory accesses were, so they could schedule that. So a hardware cache didn&#8217;t make any sense. They would just have a memory the software understood would transfer in time. Those are some of the innovations. Also, they innovated on the floating point format you didn&#8217;t need. Scientific computing cares a lot about precision. Most of it&#8217;s done in 64-bit floating point, where the exponent is less than 10 bits and most of it is the precision.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=1767">29:27</a>] The fraction can be 50-some bits. Well, what they realized for machine learning and AI, they don&#8217;t need all that precision; they needed the range. So <a href="https://en.wikipedia.org/wiki/Google">Google</a> did the first floating-point format where the exponent was bigger than the fraction. That was a radical idea, the so-called bfloat16. The part of <a href="https://en.wikipedia.org/wiki/Google">Google</a> that was doing this was the <a href="https://en.wikipedia.org/wiki/Google">Google</a> Brain research group. So they brought out this architecture.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=1791">29:51</a>] They had this narrow floating point format. They had a big matrix multiply unit. It only had one processor in it. Unlike the other ones, it was just dedicated machine learning. And it just kind of blew the doors off of everybody in the field. It was like 30 times better at inference than the contemporary <a href="https://en.wikipedia.org/wiki/Graphics_processing_unit">GPU</a> and 80 times better than CPU by having this dedicated one. So when <a href="https://en.wikipedia.org/wiki/Google">Google</a> made this announcement at their annual retreat a year or so after they had deployed it inside, it just shook everybody up.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=1826">30:26</a>] <a href="https://en.wikipedia.org/wiki/Intel">Intel</a> started buying companies, <a href="https://en.wikipedia.org/wiki/Nvidia">NVIDIA</a> started modifying the design to be much more focused on machine learning. And then a bunch of other competitors, hyperscalers, started doing their own efforts. So I think that was the watershed. I think the <a href="https://en.wikipedia.org/wiki/Tensor_Processing_Unit">TPU</a> announcement was the watershed moment there.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=1848">30:48</a>] So it&#8217;s almost like levels of specialization, like the CPU is the most general.</p><p><strong>David:</strong></p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=1853">30:53</a>] Yeah. If we still had <a href="https://en.wikipedia.org/wiki/Dennard_scaling">Dennard scaling</a>, <a href="https://en.wikipedia.org/wiki/Moore's_law">Moore&#8217;s Law</a> and <a href="https://en.wikipedia.org/wiki/Dennard_scaling">Dennard scaling</a>, where would we be today? With general-purpose processors, we should have 100 TL microprocessors. If we could build 100 TL microprocessors, that&#8217;s what we&#8217;d do. GPUs would still be a niche. If we could do that, it raises all boats. That would be fantastic if we could do that. But that&#8217;s long in the history.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=1882">31:22</a>] We haven&#8217;t been able to do that for 20 years. And so there were probably two or three gigahertz microprocessors in 2005, and that&#8217;s kind of where they are, barely improved today. So we can&#8217;t do that. So there&#8217;s still areas where it&#8217;s important to have CPUs. They&#8217;re the right&#8212;you need operating systems, compilers, and things that they&#8217;re the right solution. But things have been specialized.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=1907">31:47</a>] And then now, in terms of industry terms, a huge emphasis is being put into the AI accelerators, or just AI in general, is where the money is being invested. And so the question for any processor designers was, how does my processor design fit into this AI universe, and what should I do? How should I change it for this important application?</p><h3>32:12 &#8212; Is Moores law dead?</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=1932">32:12</a>] So you mentioned that <a href="https://en.wikipedia.org/wiki/Moore's_law">Moore&#8217;s Law</a> is slowing down. And I watched this other talk from Jim Keller saying that <a href="https://en.wikipedia.org/wiki/Moore's_law">Moore&#8217;s Law</a> isn&#8217;t dead. But is it controversial to say that it&#8217;s?</p><p><strong>David:</strong></p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=1945">32:25</a>] No. I mean, not, not to real engineers. <a href="https://en.wikipedia.org/wiki/Moore's_law">Moore&#8217;s Law</a> is very simple. It says in a chip the number of transistors will double. Originally said every year, and then he changed it to every two years. Just look. Do the chips, the number of transistors doubled? No. Now I think what people assume that means is if we are no longer on <a href="https://en.wikipedia.org/wiki/Moore's_law">Moore&#8217;s Law</a>, that technology is not improving.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=1972">32:52</a>] That&#8217;s not the same thing. It&#8217;s not improving at the rate that <a href="https://en.wikipedia.org/wiki/Moore's_law">Moore&#8217;s Law</a> projected. And what was amazing about <a href="https://en.wikipedia.org/wiki/Moore's_law">Moore&#8217;s Law</a>, which lasted 50 years, is that guided the investment of semiconductor manufacturing. We need to deliver on doubling transistors every year or two. How are we going to do that? How are we going to build the equipment to do it? So it was a guideline for the whole industry, which was kind of remarkable.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=1997">33:17</a>] So what we are doing now is there&#8217;s pieces of the technology that get better and there&#8217;s pieces that don&#8217;t improve at all. So one of the big pieces, important pieces on a chip, is the static random-access memory. So that&#8217;s hardly improving at all. Logic gates still continue to improve. The gates are getting better. So if you&#8217;re doing adders or multipliers, those are getting there. So it&#8217;s not uniform improvement anymore.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=2026">33:46</a>] And we&#8217;re also going to more exotic packaging to be able to deliver it. So people now, you know, forever. It was a single chip, was the best way to package everything fits on one chip. And that&#8217;s what we&#8217;re going to build. And now there&#8217;s these ideas of chiplets or packaging multiple chips together. The latest GPUs, and I think the latest TPUs, has actually two what are called full reticle design dies packaged, put into a package.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=2058">34:18</a>] And so a full reticle design is the maximum you can build on a semiconductor. Well, on a semiconductor they have a step-and-repeat motor, and in the old days you&#8217;d have many chips inside that. Now there&#8217;s just one. So two maximum reticle designs form a node. So they&#8217;re using packaging. So if you look from outside, you can say, well, look how many transistors. <a href="https://en.wikipedia.org/wiki/Moore's_law">Moore&#8217;s Law</a> is continuing.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=2083">34:43</a>] But if you see what&#8217;s inside the chip, that has tapered off. And I think part of it is for a fair amount of the industry, if you were in a semiconductor manufacturer and people ask you what you do, it&#8217;s I make <a href="https://en.wikipedia.org/wiki/Moore's_law">Moore&#8217;s Law</a>, I sustain <a href="https://en.wikipedia.org/wiki/Moore's_law">Moore&#8217;s Law</a>, that&#8217;s what I do. And if you&#8217;ve been doing that for decades and somebody says <a href="https://en.wikipedia.org/wiki/Moore's_law">Moore&#8217;s Law</a> is over, it&#8217;s like my career is over. So I think there&#8217;s an emotional side of it.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=2109">35:09</a>] But just look at the data, the data doesn&#8217;t back up with. Keller says, but I also didn&#8217;t say that the technology is not improving. The technology is continuing to improve and specifically domain-specific architectures. But if you look at the general-purpose architectures or even other memory technologies, it used to be the DRAMs would improve by a factor of four in density every three years, like clockwork.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=2134">35:34</a>] And now it&#8217;s maybe 10 years between factors. So you can see plenty of evidence that <a href="https://en.wikipedia.org/wiki/Moore's_law">Moore&#8217;s Law</a> no longer applies.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=2141">35:41</a>] Is there some new version or some analog to <a href="https://en.wikipedia.org/wiki/Moore's_law">Moore&#8217;s Law</a> that is kind of guiding microprocessor design and architecture these days?</p><p><strong>David:</strong></p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=2154">35:54</a>] I guess the question is both <a href="https://en.wikipedia.org/wiki/Nvidia">NVIDIA</a> and <a href="https://en.wikipedia.org/wiki/Google">Google</a> are continuing to deliver much faster processors for machine learning, tremendously better. What are they doing? Well, part of it is what I said about packaging, to be able to get more transistors, and you keep them closer together because distance matters. Part of it is innovating on the floating-point formats. So unlike the supercomputers of 64-bit, it&#8217;s not even 64-bit, not even 32-bit, not even 16-bit, but 8-bit and 4-bit floating point is going on.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=2193">36:33</a>] So narrowing of the data types, having kind of what&#8217;s called the matrix multiply instructions. So these powerful units that are put in there that can do special purpose applications that are very important, making those bigger and faster. So those are the three things that are going on. But we don&#8217;t have this simplifying guideline kind of underlying all this. You have to be aware of each piece of the technology, gauge how fast it&#8217;s improving, whether they can deliver on what&#8217;s going on, and then you assemble that together and make your bets.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=2235">37:15</a>] There&#8217;s a paper that we&#8217;ve just got approved that I think we&#8217;re going to put on <a href="https://en.wikipedia.org/wiki/ArXiv">arXiv</a> soon, which is talking about the <a href="https://en.wikipedia.org/wiki/Google">Google</a> <a href="https://en.wikipedia.org/wiki/Tensor_Processing_Unit">TPU</a> line. And pretty remarkably, the <a href="https://en.wikipedia.org/wiki/Google">Google</a> <a href="https://en.wikipedia.org/wiki/Tensor_Processing_Unit">TPU</a> line, particularly for training, has stayed pretty constant in the basic architecture design. Things have gotten bigger and faster. But if you look at the design of it going back to the first training <a href="https://en.wikipedia.org/wiki/Tensor_Processing_Unit">TPU</a>, that block diagram still works all these a decade later.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=2267">37:47</a>] So the people who designed that in, whatever, 2015 or 2016, did a really great job.</p><h3>38:04 &#8212; GPU benchmarks</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=2284">38:04</a>] Blocks are still there. I think in your career with the CPU benchmarks were huge. They played a huge role in measuring which computer architectures were performant and not in this new space of floating point operations for AI. Is there a benchmark that people use for GPUs, and can you also apply it for TPUs?</p><p><strong>David:</strong></p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=2307">38:27</a>] I and some friends were involved in the MLPerf effort. So it was inspired by the SPEC CPU effort, with the SPEC benchmarks, where there were these competing companies and they&#8217;d all make claims that theirs was better than the others, and they realized that wasn&#8217;t good for the industry. So they agreed on a set of benchmarks. So the MLPerf effort is this run now, but what&#8217;s called MLCommons is an attempt to do that.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=2335">38:55</a>] If we&#8217;re going to do these comparisons, let&#8217;s not argue about what the benchmarks are. So that&#8217;s a serious effort in that kind of. Interestingly, what&#8217;s happened, I&#8217;d say, is because there&#8217;s two pieces to design. There&#8217;s the machine learning libraries that are to implement a lot of features that you need for these applications, and the libraries will even be rewritten for specific applications, rather than just having general libraries.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=2369">39:29</a>] This has turned out to be a big advantage for <a href="https://en.wikipedia.org/wiki/Nvidia">NVIDIA</a> because they have a large corporation with lots of people that are available, lots of engineers who could build these libraries for them. So it&#8217;s turned out not quite a... It&#8217;s not a neutral evaluation, right? It&#8217;s the architecture plus the libraries that go with it, and the compiler too, but specifically the libraries that you tailor each time. So <a href="https://en.wikipedia.org/wiki/Nvidia">NVIDIA</a> brings out, when they announce a new architecture, they create a new set of.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=2404">40:04</a>] They modify the libraries to run that really well or to run applications really well. So that&#8217;s a powerful combination. Kind of in business terms, people refer to <a href="https://en.wikipedia.org/wiki/Nvidia">NVIDIA</a> as having this <a href="https://en.wikipedia.org/wiki/CUDA">CUDA</a> moat, and part of it is <a href="https://en.wikipedia.org/wiki/CUDA">CUDA</a>, the programming language, but a big part of it is the libraries that <a href="https://en.wikipedia.org/wiki/Nvidia">NVIDIA</a> makes. So this has made it difficult for startups to be able to compete with <a href="https://en.wikipedia.org/wiki/Nvidia">NVIDIA</a>, partly because they didn&#8217;t put enough emphasis in the software and partly because <a href="https://en.wikipedia.org/wiki/Nvidia">NVIDIA</a> just has many more engineers than they do to be able to tailor the libraries.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=2442">40:42</a>] So it&#8217;s the libraries plus the architecture. There&#8217;s this powerful advantage why most people do things on GPUs. Now <a href="https://en.wikipedia.org/wiki/Google">Google</a> has been able to develop their own libraries. They don&#8217;t have as many engineers. They use compilers more than I think <a href="https://en.wikipedia.org/wiki/Nvidia">NVIDIA</a> does. So they have a set of libraries that they can use. But up until recently, <a href="https://en.wikipedia.org/wiki/Google">Google</a>&#8216;s, it&#8217;s all been internal. It&#8217;s just for <a href="https://en.wikipedia.org/wiki/Google">Google</a> to use, or you could use it via the cloud.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=2473">41:13</a>] But these startups have to have a difficulty as a result. That&#8217;s why MLPerf hasn&#8217;t been as popular. Not everybody runs them because <a href="https://en.wikipedia.org/wiki/Nvidia">NVIDIA</a> runs them really well, really better than everybody else. And the startups have a hard time showing off what they can do, given they don&#8217;t have the engineering effort going into the libraries that you need to do well in MLPerf.</p><h3>41:40 &#8212; How to have a bad career</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=2500">41:40</a>] You gave this popular talk about how to have a bad career, and it&#8217;s kind of the negation of advice for how to have a good career. And I was just wondering if you could summarize maybe the top three things that people should take away.</p><p><strong>David:</strong></p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=2518">41:58</a>] Yeah, well, there&#8217;s been a few things. So the story is early in my career, my friend, a good friend, and I said, how can we teach grad students how to give a good talk? And we thought it&#8217;d be funny to explain how to give a bad talk. And then if you didn&#8217;t want to give a bad talk. So this is how to do it badly. And if you don&#8217;t, here&#8217;s the things you do not to do it badly. And so then I later did how to have a bad career that&#8217;s pretty much focused toward academia.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=2543">42:23</a>] So for researchers to be able to do that. I later did a How to Have a Bad, How to Build a Bad Research Center, how to build a bad research lab. And then recently I&#8217;ve been giving how to give AI a bad carbon footprint. That&#8217;s my latest one. But I think the thing that might be more relevant is at the end of my talks, I would kind of reflect on my career and talk about lessons learned. So I&#8217;ve written a paper called Lesson.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=2569">42:49</a>] I think it&#8217;s &#8220;Lessons, Life Lessons from the First Half Century of My Career.&#8221; I wrote that recently. And so those are divided up into kind of career advice and personal advice. There, on the personal side, I&#8217;d say, if you have a family, make sure your family&#8217;s first. Keep your family first. The technology we&#8217;ve invented makes it really easy for your, you know, to take your work home with you and not pay attention to your family.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=2597">43:17</a>] I had a. When I was first here at <a href="https://en.wikipedia.org/wiki/University_of_California%2C_Berkeley">UC Berkeley</a>, I gave a senior faculty member a ride home, dropped him off late at night, coming up from Silicon Valley. And he said, well, Dave, if I had to do it over again, I wish I&#8217;d spent more time with the family. And I never wanted to say that. And nobody on their deathbed says, you know, I wish I spent more time in the office. So, so you got to, you know, whenever it&#8217;s easy to kind of, you know, let the.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=2624">43:44</a>] Let your career overcome the needs of your family, but you just got to remember that. I would say, in my life, growing up in the 50s, the idea was that to be happy, you had to be wealthy. But those are actually two different goals, wealth and happiness. So I always made decisions toward happiness versus wealth, and I felt very good about that. And even now, why would I pick something that made me wealthy and unhappy?</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=2655">44:15</a>] Why would you do that? And in the field that we&#8217;re in, it turned out there was a lot of wealth to go with it. So optimizing happiness didn&#8217;t mean you had to suffer. Beyond that, I think it&#8217;s important to have fun personally. I think when you&#8217;re a kid, you don&#8217;t have to tell kids to play, but as you get adult, you get so busy you don&#8217;t think you have time to have fun. But you only get to do this once.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=2683">44:43</a>] So right now I play soccer, I rode my bicycle to the interview, I lift weights, I body surf, do things with my wife and family and my son. So it&#8217;s important to have fun. I think on the career side, one of the pieces of advice is by Stephen Covey. He wrote this book, The 7 Habits of Highly Effective People, I think, and he has a little quadrant, and he divides it into urgent and not urgent, and important and unimportant.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=2720">45:20</a>] There are so many things in our technology, like email and texting, for you to focus on the urgent things, but you really shouldn&#8217;t be spending a lot of time on the unimportant urgent things. And it takes self-discipline to set aside time for the important, non-urgent things. But if you don&#8217;t block that out, you can just not have time to do anything. I get to see other people&#8217;s calendars at <a href="https://en.wikipedia.org/wiki/Google">Google</a>, and there&#8217;s managers that every half hour from eight to six, five days a week, are scheduled.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=2749">45:49</a>] And I don&#8217;t see how you have time to think and reflect on things like that. Other career advice thing is I remember I kind of woke up one morning and it was like God spoke to me. I was like thunderstruck. And it said it&#8217;s not how many things you start, it&#8217;s how many things you finish. It seems relatively obvious, but that&#8217;s not the way I was acting. I had many things going on, but after that it&#8217;s like there&#8217;s one main thing I&#8217;m doing at times.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=2779">46:19</a>] So when <a href="https://en.wikipedia.org/wiki/John_L._Hennessy">John Hennessy</a> and I wrote a textbook, that was the main thing. When I was department head here, that was the main thing I did. I would do some other little things there. And <a href="https://en.wikipedia.org/wiki/John_L._Hennessy">John Hennessy</a>, he wrote a kind of career advice book based on his presidency. And one of the things he said in there, you&#8217;re only going to be remembered for the five or six things you&#8217;ve done in your life, not for the hundreds of little things.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=2804">46:44</a>] So to give yourself a chance to have some things you&#8217;re really proud of, it&#8217;s better to concentrate on a few of them, hoping that some of them will turn out to be a big deal rather than scatter yourself to many things. But if you&#8217;re interested, you can. Yeah, if you look for life lessons, <a href="https://en.wikipedia.org/wiki/David_Patterson_(computer_scientist)">David Patterson</a>, first half century, you can see the whole list of. I think there&#8217;s 16 lessons altogether.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=2831">47:11</a>] You mentioned that you didn&#8217;t want to reflect back on your life and feel like you didn&#8217;t have enough family time. Yeah, I&#8217;ve&#8212; I don&#8217;t think I&#8217;ve ever heard anyone say the opposite. Why do you think that is? Why is it that everyone looks back on their life and they never regret a lot of family time? I imagine there&#8217;s got to be at least one person that says, &#8220;I spent too much time with my family; my career suffered.&#8221;</p><p><strong>David:</strong></p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=2859">47:39</a>] Yeah, well, what&#8217;s, what&#8217;s, it&#8217;s pretty philosophical. I mean, what&#8217;s life all about? What&#8217;s success? Right. You have to figure out what that means for you. I mean, if you have, I don&#8217;t know, if you have financial goals of being a millionaire, a billionaire or something like that, and that&#8217;s how you judge your life. Okay. Good luck.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=2884">48:04</a>] You know, it&#8217;s pretty hard to make it. It&#8217;s pretty hard to do, but I think it&#8217;s the... When I was finishing my PhD, I read this book by Studs Terkel called Working, where he interviewed all these people in his careers, and they looked back at what they liked and what they didn&#8217;t like, what they felt about their careers, and what I got out of it. The people who worked with people like ministers or teachers or doctors felt really good about what they do with their careers.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=2910">48:30</a>] And the people who did more ephemeral stuff, like technology things or airplanes or something like that, are long gone, didn&#8217;t feel as good about it. It was the people that they worked with that they really cared about. And I went out with a retired engineering dean here, and he&#8212; and to a meeting who I knew, and he said, &#8220;You know, Dave, as I think my career, it wasn&#8217;t the projects, it was the people that I worked with that mattered.&#8221;</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=2934">48:54</a>] And I thought I knew that from a long time ago. So that&#8217;s, I mean, this is kind of senior persons offering advice. I think you&#8217;re going to care more about the people you&#8217;ve worked with, the people you&#8217;ve helped, will be a bigger deal. That&#8217;s part of, one of the other things about personal happiness is they studied happiness. Psychologists used to just study crazy people, but they started like, why are people happy?</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=2957">49:17</a>] And they know what the reasons are. Have a job that you like, have friends and family. Helping other people makes you happy. They know this. Having something kind of either a religious side of it, it doesn&#8217;t have to be a formal religion, but contact with nature, the grandeur of nature, but the list of things you need to do to be happy is well understood.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=2982">49:42</a>] And our world is filled with unhappy billionaires. Right. If money was the thing that made you happy, why are these people, very wealthy people, so mad about things? So, yeah, this is me passing on advice.</p><h3>49:59 &#8212; Courage and optimism</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=2999">49:59</a>] In one of your talks, it said what worked well for me, and it was kind of some reflections. And one of the things in there I thought was unique and interesting. You mentioned that courage was a big part of your career, and I don&#8217;t hear that too often. I was curious why you say courage is so important in a career.</p><p><strong>David:</strong></p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=3019">50:19</a>] Yeah, I think that&#8217;s, I mean, that might be partially my personal makeup, but I was kind of the youngest kid in my class and kind of small. It took me a while to grow despite age, so I was always small. But my parents encouraged me to go out for wrestling. And wrestling gives you physical self-confidence because you spend years doing that. I did it in high school and college. And so I think partly technically, having courage to do things kind of goes along with the advice is fortune favors the bold.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=3059">50:59</a>] That goes. That&#8217;s advice is 2,000 years old. It&#8217;s hard to figure this out. Helen Keller wrote, even trying to play it safe, you still get caught. So it turns out you might as well. You might fail no matter what. And if you take a big chance, you can succeed. If you don&#8217;t take the chance, you probably won&#8217;t succeed if you play it safe. So fortune favors the bold. And I think it takes courage to do that.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=3088">51:28</a>] I think also it just, for me, intellectually, I feel like if there&#8217;s something not right, I need to stand up and confront it. And I think that kind of, ironically, comes from the wrestling side of my personality, where if I see something, somebody getting picked on or something like that, I&#8217;m going to stand and try to stop it. And I feel that same responsibility. Intellectually, if people are making bad arguments or doing something, we need to stand up and do it.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=3117">51:57</a>] And I feel good about that. The cautionary part about that is, because I guess one of my senior faculty members saw this nature of me, and he said one of the sayings is friends come and go, but enemies accumulate. This is an old saying. So if you think about it, you kind of, people you went to high school with, while friends, you kind of forget. But somebody who you really dislike, you never forget that you dislike that person.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=3142">52:22</a>] So standing up when it&#8217;s important, but be careful when you make enemies because they&#8217;re going to stick around for a long time.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=3149">52:29</a>] When you say something&#8217;s gone bad, technically, do you mean someone was incorrect?</p><p><strong>David:</strong></p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=3155">52:35</a>] Yeah, when they&#8217;re weak, either politically or technically, when it&#8217;s a weak argument. Right. I think of this, I really like there to be a marketplace of ideas, and we hone the ideas by arguing them. And so if it&#8217;s a specious argument, even if a person is a leader of a company and it just doesn&#8217;t make sense, I feel it&#8217;s kind of the responsibility.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=3183">53:03</a>] It&#8217;s better for the company if somebody stands up and points that out than to just let them get away with it. And then it&#8217;s a little bit confrontational. But as long as people all agree that this is for the greater good, we&#8217;re gonna, we need to get the right ideas out there. And so let&#8217;s argue about the ideas just to see, polish them to make them stronger. I think that&#8217;s important in science and engineering and kind of in life too.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=3216">53:36</a>] There&#8217;s a lot of stuff going on right now in the country that is worrisome. And I certainly stood up and wrote op-eds about things that I think are wrong and need to be corrected. And if people are afraid to do that, it&#8217;s hard to be optimistic about the future. If people are afraid to stand up when there are wrongs and try to stop them.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=3242">54:02</a>] You also mentioned optimism in the talk, and you had this story. I wonder if you&#8217;re willing to share.</p><p><strong>David:</strong></p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=3248">54:08</a>] So I would say in engineering, it&#8217;s hard. It&#8217;s hard to know, right? But I think you need to be kind of optimistic or positive, have a positive outlook because so many things could go wrong. And then my personal story that illustrates this goes back to high school when I&#8217;m 16. I&#8217;m dating this very attractive girl, and I screw up my courage and ask her if we would be exclusive. At the time, the phrase we used was going steady.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=3275">54:35</a>] And she looked at me and said, and, you know, she was 16. She had dated other guys and thought we were pretty young. And she said, &#8220;Well, Dave, you&#8217;re such a nice guy, I don&#8217;t know how to say no.&#8221; For me, as a logical person, a no sounded like a yes. And so I hugged her and said, &#8220;Great.&#8221; And so she, in her mind, thought, &#8220;Well, I&#8217;ll let him down gently later.&#8221; But we&#8217;ve been married 59 years now, and she hasn&#8217;t let me down yet.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=3304">55:04</a>] So that was a case where optimism paid off.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=3307">55:07</a>] I think everyone that hears about a healthy relationship for that long might wonder how you did it.</p><p><strong>David:</strong></p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=3313">55:13</a>] I used to tell people, if you go to weddings, the marriage vows are really great, right? But nobody can remember their wedding vows. I used to say, remember your wedding vows, but nobody remembered that. So we boiled it down to nine magic words, and it&#8217;s just three sentences. And they start: &#8220;I was wrong, you were right. I love you.&#8221; Okay?</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=3335">55:35</a>] Those are the nine words. And this applies to both partners in a relationship, not just one partner. But, yeah, if you can say them all, and no substitutions&#8212; I was wrong. You&#8217;re right. You&#8217;re a jerk. You know, you can&#8217;t do that. If you can remember those nine words, that can help you have a long relationship, like my wife and I have.</p><h3>55:56 &#8212; Advice for his younger self</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=3356">55:56</a>] And then last question for you: knowing everything you know now from your career, if you could go back to yourself when you had just entered the industry and give yourself advice, what would you say?</p><p><strong>David:</strong></p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=3369">56:09</a>] I mean, I think when I got here, because the imposter syndrome. I was a <a href="https://en.wikipedia.org/wiki/University_of_California%2C_Los_Angeles">UCLA</a> graduate student, and suddenly I&#8217;m a <a href="https://en.wikipedia.org/wiki/University_of_California%2C_Berkeley">UC Berkeley</a> professor. So that just doesn&#8217;t seem like&#8212; That was very intimidating. But after a while, I just thought, well, I&#8217;m probably not going to get tenure, so I should just have a good time. So I think I already had the right attitude about it. I think that first year, I think it was very stressful while I was trying to handle the imposter syndrome and be a <a href="https://en.wikipedia.org/wiki/University_of_California%2C_Berkeley">UC Berkeley</a> professor.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=3400">56:40</a>] But I think after that, I handled it pretty well. I did all the things with the kids and stuff. So there&#8217;s a version of that question is, like, is there anything I would do over again? There&#8217;s one thing I would have. I was chair of this, of the architecture community, ACM SIGARCH, as it&#8217;s called. And they have an annual conference of the year. And I was in, this was in the 1990s, I think I was the chair.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=3426">57:06</a>] And what I wasn&#8217;t aware of is that at these conferences, there were men who were harassing young women at this conference. I just didn&#8217;t think people like young people, people like me, nobody would do that. Only an idiot would do that. That can&#8217;t possibly be happening. But it was happening, and I wish somebody had said something to me about it, because I would have straightened it out.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=3453">57:33</a>] Any man would have threatened his life if he were to do that. Today, the only comforting thing is Sarita Adve, who&#8217;s a famous computer architect. She said she also was not aware that that was going on. It became clear later, you know, five or 10 years later, it became more clear that this was going on. And there are mechanisms. Sorry, but that&#8217;s the one thing I wish. You know, if I could go back in time, I would have figured that out, and I would have straightened men out who were doing that, and they wouldn&#8217;t.</p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=3485">58:05</a>] That would have stopped. I believe that would have stopped them.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=3488">58:08</a>] Yeah. Thank you so much for your time today. I really appreciate it.</p><p><strong>David:</strong></p><p>[<a href="https://youtu.be/Pn4ZwlEh5nw?t=3492">58:12</a>] All right. Thanks for the interview.</p>]]></content:encoded></item><item><title><![CDATA[Turing Award Winner: NSA, Public Key Cryptography, Crypto Wars | Martin Hellman]]></title><description><![CDATA[Interviewed Martin Hellman recently who was one of the inventors of the Diffie-Hellman key exchange algorithm.]]></description><link>https://www.developing.dev/p/turing-award-winner-nsa-public-key</link><guid isPermaLink="false">https://www.developing.dev/p/turing-award-winner-nsa-public-key</guid><dc:creator><![CDATA[Ryan Peterman]]></dc:creator><pubDate>Mon, 06 Jul 2026 13:02:52 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/204966592/99aa5a09175eeb932c18cc7e260b12fe.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>Interviewed <a href="https://www.linkedin.com/in/martin-hellman-473290a9/">Martin Hellman</a> recently who was one of the inventors of the <a href="https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange">Diffie-Hellman key exchange</a> algorithm. I had heard of his name ever since I learned the concept when I studied computer science in college.</p><p>Pretty surreal to get to talk to him. He explained some of the key concepts but also it was interesting to hear the stories behind what we learn in the textbooks.</p><p>Also, I have a ton of content recorded that I&#8217;m working on editing. Several Turing Award winners and programming language creators. I learned a lot during the latter since I basically talked to them as if I was a student curious to learn about programming languages. Excited to share these episode with you all!</p><p>Check out the episode wherever you get your podcasts: <a href="https://youtu.be/AZLOETBCQM4">YouTube</a>, <a href="https://open.spotify.com/episode/0QNBcSuQvkr8wZG6BCxp31?si=Eyvcb0DkRfW_51b-pqz8vg">Spotify</a>, <a href="https://podcasts.apple.com/us/podcast/the-peterman-pod/id1777363835">Apple Podcasts</a>.</p><div id="youtube2-AZLOETBCQM4" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;AZLOETBCQM4&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/AZLOETBCQM4?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h1>Timestamps</h1><p><a href="https://www.developing.dev/i/204966592/0034-why-his-work-broke-the-law">00:34 - Why his work broke the law</a></p><p><a href="https://www.developing.dev/i/204966592/0839-how-people-did-encryption-before">08:39 - How people did encryption before</a></p><p><a href="https://www.developing.dev/i/204966592/1851-the-crypto-wars">18:51 - The crypto wars</a></p><p><a href="https://www.developing.dev/i/204966592/2622-the-story-behind-diffie-hellman-key-exchange">26:22 - The story behind Diffie Hellman key exchange</a></p><p><a href="https://www.developing.dev/i/204966592/3648-signatures-vs-key-exchange">36:48 - Signatures vs key exchange</a></p><p><a href="https://www.developing.dev/i/204966592/4305-rsa-patent-wars">43:05 - RSA patent wars</a></p><p><a href="https://www.developing.dev/i/204966592/4808-why-inventions-happen-at-similar-times">48:08 - Why inventions happen at similar times</a></p><p><a href="https://www.developing.dev/i/204966592/5029-what-he-worked-on-after-cryptography">50:29 - What he worked on after cryptography</a></p><p><a href="https://www.developing.dev/i/204966592/5731-his-thoughts-on-death">57:31 - His thoughts on death</a></p><p><a href="https://www.developing.dev/i/204966592/5940-advice-for-his-younger-self">59:40 - Advice for his younger self</a></p><h1>Transcript</h1><h3>00:34 &#8212; Why his work broke the law</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=34">00:34</a>] I saw your initial work in cryptography was potentially breaking laws, or it was kind of in this gray area where the U.S. National Security Agency was kind of not super happy with your work, and there was some conflict with the government. Could you explain what the field of cryptography was like at the time and its relationship to the government and how you got into the field?</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=57">00:57</a>] Cryptography is the study of codes and ciphers for keeping information secret. When I started to get interested in this area in 1968, I was at IBM Research just after finishing my PhD. They&#8217;d hired <a href="https://en.wikipedia.org/wiki/Horst_Feistel">Horst Feistel</a>, who you may have heard of, who was the father of IBM&#8217;s work in this area and really started the unclassified research in cryptography. So I started there. And then I realized when I was teaching at <a href="https://en.wikipedia.org/wiki/Massachusetts_Institute_of_Technology">MIT</a> from &#8216;69 to &#8216;71 that I might actually be able to do something.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=92">01:32</a>] I won&#8217;t go into the details of that right now. And I did it in my own time because I didn&#8217;t think I was breaking any laws by doing it. I didn&#8217;t think anybody could make that case. But I realized that there was a part of the government, the U.S. National Security Agency, that would be very concerned about this. And then it was as our work really became visible that they started saying we were breaking the laws.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=119">01:59</a>] And that&#8217;s when I looked into it more carefully. We got a letter in July 1977 from a guy who worked at. We determined he worked at the U.S. National Security Agency. He wrote from his home address in Maryland, which is a good indicator that he works at the U.S. National Security Agency. To the Institute of Electrical and Electronics Engineers, which is the main electrical engineering professional society, saying that as an <a href="https://en.wikipedia.org/wiki/Institute_of_Electrical_and_Electronics_Engineers">IEEE</a> member, he was concerned that they were breaking the law by publishing certain papers.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=151">02:31</a>] He never mentioned me by name, but I had an article in almost every issue that he mentioned of the <a href="https://en.wikipedia.org/wiki/Institute_of_Electrical_and_Electronics_Engineers">IEEE</a> Transactions. The <a href="https://en.wikipedia.org/wiki/Institute_of_Electrical_and_Electronics_Engineers">IEEE</a> wrote back to him, copying me. They didn&#8217;t copy me as Martin Hellman, troublemaker. They copied me as a member of the Board of Governors of the Information Theory Group, which was then publishing most of these papers. And so it&#8217;s a funny thing that when people start to talk about cryptography, they talk in code all the time.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=181">03:01</a>] The <a href="https://en.wikipedia.org/wiki/National_Security_Agency">NSA</a> was maintaining I was breaking the law by publishing my papers in international journals. The <a href="https://en.wikipedia.org/wiki/International_Traffic_in_Arms_Regulations">ITAR</a>, the International Traffic in Arms Regulations, which I&#8217;d been unaware of up to that point, defines anything cryptographic as an implement of war. And I wasn&#8217;t exporting an implement of war, which would mean you need a license from the State Department. I was exporting technical data from their perspective on implements of war.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=207">03:27</a>] And so that&#8217;s why I was breaking the law. So I took the letter to Stanford&#8217;s general counsel at the time, John Schwartz. He said if the laws interpreted that broadly, he thought it was unconstitutional. But that&#8217;s only his legal opinion. It had to be settled in a court of law.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=223">03:43</a>] I mean, when you got these warnings, did it deter you at all, or what was your immediate reaction?</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=229">03:49</a>] I kind of fell into this at first with <a href="https://en.wikipedia.org/wiki/Whitfield_Diffie">Whit Diffie</a>, and I thought that the 56-bit key size of DES, the <a href="https://en.wikipedia.org/wiki/Data_Encryption_Standard">Data Encryption Standard</a>, was a mistake. We realized that you could break it with exhaustive search. Today, <a href="https://en.wikipedia.org/wiki/Advanced_Encryption_Standard">AES</a>, the <a href="https://en.wikipedia.org/wiki/Advanced_Encryption_Standard">Advanced Encryption Standard</a>, has a minimum 128-bit key size, which is much, much bigger than a 56-bit key size. Two to the 128th is much bigger than two to the 56th. So we wrote letters.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=260">04:20</a>] We thought that they&#8217;d change it. It was cheap and easy to change it. And after six months we realized that we had a political problem, not a technical problem. And then we had to decide whether to back down or not. And we went forward because at that point I was invested in this. And also I&#8217;m from the Bronx, as I mentioned to you earlier, and I&#8217;m a street fighter. Not with my fists, I got beat up a lot, but I&#8217;m a street fighter with my mouth and my mind.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=285">04:45</a>] And they picked the wrong person, basically. I wasn&#8217;t going to back down.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=291">04:51</a>] What could have gone wrong? I mean, would they pursue you with lawyers, or would...</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=295">04:55</a>] Oh, I could have gotten killed.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=297">04:57</a>] You could have gotten killed?</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=298">04:58</a>] Oh, yeah, not necessarily by them, but maybe by the <a href="https://en.wikipedia.org/wiki/Minions%3A_The_Rise_of_Gru">GRU</a>, the Russian equivalent. I mean, I wasn&#8217;t just pissing off the <a href="https://en.wikipedia.org/wiki/National_Security_Agency">NSA</a>, I was pissing off the Russians, Soviets.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=307">05:07</a>] Why would they be pissed off?</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=309">05:09</a>] Oh, we and the Soviets sold our World War II surplus cryptographic equipment to third-world countries. We&#8217;d rather that they were able to break it, and they&#8217;d rather that we were able to break it than no one was able to break it. So my mother called me up. My mother was still alive. She died in 1984. And she called me up and said, &#8220;What are you doing? You&#8217;re going to get yourself killed.&#8221; She was really upset.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=335">05:35</a>] Okay, so you get issued the warning, and then you go to the general counsel at Stanford. Then what happens?</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=342">05:42</a>] This was July 1977, in I think October. Early October, yes, it was October. There was an <a href="https://en.wikipedia.org/wiki/Institute_of_Electrical_and_Electronics_Engineers">IEEE</a> symposium on information theory at Cornell University. And I had two papers there. One with <a href="https://en.wikipedia.org/wiki/Ralph_Merkle">Ralph Merkle</a>, who deserves, I believe, a lot of credit for inventing public-key cryptography, as you probably know, and one with <a href="https://en.wikipedia.org/wiki/Stephen_Pohlig">Stephen Pohlig</a>, which really. Stephen and I have a paper which is really the <a href="https://en.wikipedia.org/wiki/RSA_cryptosystem">RSA</a> system, except it&#8217;s mod P instead of mod N.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=372">06:12</a>] It&#8217;s modular prime number instead of modular composite number. We realized that you could do it mod N, but we didn&#8217;t have public-key cryptography then. Anyway, Stephen and Ralph and I had papers. And John Schwartz said that he strongly recommended that I give the papers instead of the students. I was going to have the students give the papers. And so I went to the students and I told them, look, if you want to give the papers, that&#8217;s okay, but Stanford&#8217;s not sure they can defend you, whereas it&#8217;s clear they could defend me.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=402">06:42</a>] And I feel very comfortable going forward with Stanford&#8217;s financial resources. And the students initially bravely said that they would give the papers. After a week they came back to me. Their mothers were beating on them like my mother beat on me. And they said, &#8220;Okay, you give the paper.&#8221; So when it came time for each of those papers to be given at Cornell, I went up to the podium and I said, &#8220;I had the student come up with me.&#8221;</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=429">07:09</a>] And I said, normally the student would be giving this paper, but on the advice of counsel, and everyone knew what I was talking about, I will be giving the paper. And I want you to consider, in every way but legally, the words coming from my mouth as if they&#8217;re coming from his. And so the students got more credit that way than they ever would have if they gave the papers by themselves.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=449">07:29</a>] It sounds like you had a lot of opposition at the time. Why did you still pursue it?</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=454">07:34</a>] Well, my colleagues all told me that I was crazy to work in cryptography. And they had two reasons, one of which was the U.S. National Security Agency has a multibillion-dollar-a-year budget, and they&#8217;ve got a decade&#8217;s head start. How can you hope to discover something they don&#8217;t already know? And my attitude was, I don&#8217;t care what they know. It&#8217;s not available for commercial use. Even if I only develop things that they know, it doesn&#8217;t matter.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=477">07:57</a>] And yet we developed things that they didn&#8217;t know about, which is a whole other thing. <a href="https://en.wikipedia.org/wiki/GCHQ">GCHQ</a>, the British equivalent of the <a href="https://en.wikipedia.org/wiki/National_Security_Agency">NSA</a>, has claimed that they invented public-key cryptography a little bit before us. Not a lot, by the way. Just around the same time. Except they never had anything on digital signatures. They never had anything that allowed my phone to accept a software update and to use a secret key to sign it, which Apple has, and a public key in the phone.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=506">08:26</a>] So even if someone takes the phone apart and gets the public key, that doesn&#8217;t tell them how to sign future software updates. And <a href="https://en.wikipedia.org/wiki/GCHQ">GCHQ</a> had nothing on digital signatures, only on the privacy aspect.</p><h3>08:39 &#8212; How people did encryption before</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=519">08:39</a>] Prior to the solutions you came up with, how did people encrypt it? How did people encrypt it?</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=526">08:46</a>] Encrypt?</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=527">08:47</a>] Yeah. Encryption messages.</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=529">08:49</a>] They didn&#8217;t. No, actually. <a href="https://en.wikipedia.org/wiki/National_Security_Agency">NSA</a>, <a href="https://en.wikipedia.org/wiki/GCHQ">GCHQ</a>, <a href="https://en.wikipedia.org/wiki/Minions%3A_The_Rise_of_Gru">GRU</a>, all these foreign United States and foreign intelligence services were sucking up huge amounts of unencrypted data. It was only mining companies and banks that used encryption, and they used very bad encryption.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=547">09:07</a>] What about during wars and stuff? Sending messages that they didn&#8217;t want other adversaries to be able to read.</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=556">09:16</a>] You&#8217;re talking about military use.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=557">09:17</a>] Yeah, exactly.</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=558">09:18</a>] Well, that was where the major use had been, in the military. And one of the things I have a talk on the evolution of public-key cryptography. And I start off by saying, I love that. People call it revolutionary. Don&#8217;t stop saying that. But by the end of this talk, you wonder why it took us so long rather than how we ever found it. And they were almost like big arrows pointing: Go here, go here, go here.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=583">09:43</a>] And one of them was Whit and I had come up with the idea of a trapdoor cipher. That was a cipher that was impossible to break unless you knew trapdoor information that went into its design. We&#8217;ve never been able to develop such a cipher, but we realized that was a possibility. And that would be a general&#8217;s dream, because he could use it. If he knew the trapdoor information, he could use it securely against his adversary in the war.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=610">10:10</a>] But his adversary, if they captured it, couldn&#8217;t use it securely because he knew the trapdoor information and could break it. And from there to public-key cryptography as a minor step.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=619">10:19</a>] I know there&#8217;s this famous machine. I think it&#8217;s called the Enigma machine. And Turing was involved in that. That&#8217;s some sort of encryption mechanism.</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=629">10:29</a>] Basically, it&#8217;s a World War II. It&#8217;s the main German field cipher of World War II, the Enigma machine. It was gear-based. And encryption is a special-purpose form of computation. And computation has gotten a hell of a lot better. We do, I don&#8217;t know, I&#8217;m 80 years old. So it&#8217;s 16 periods of five years. We can do about maybe 10 to the 14th, it&#8217;s not quite 10 to the 16th times as much computation for a dollar today as we could when I was born at the end of World War II. I was born in &#8216;45.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=661">11:01</a>] So Enigma, what was the primary computing device of World War II? Gear-based adding machines. What was the primary encryption device? Gear-based encryption machines. Today we can do not only computation much better, we can do encryption much better. In that case, it substituted electricity. You pressed the letter on a keyboard, it generated an electrical signal that went through a sequence of rotors, as they&#8217;re called, which transformed it into another letter that lit up.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=691">11:31</a>] And so you&#8217;d set up the key, which was which rotors to use and what order to put them in, and some other things. And then you&#8217;d type out the message on the keyboard, and you&#8217;d read off the enciphered message on the lights. And Alan Turing, who you pointed out in The Imitation Game, which was the major movie of like five years ago, Alan Turing figured out how to build a primitive form of computer to break the Enigma machine.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=719">11:59</a>] Now, the Germans knew Enigma was breakable. They never thought that the Allies would build a computer to break it. And so the Allies were reading German encrypted messages almost as fast, maybe faster than the Germans were. And that&#8217;s what was different. And as they knew Enigma was breakable, they never realized that. They never thought that we would build a machine like that. And it&#8217;s interesting, Alan Turing was hounded to death in the 1950s in spite of his wartime activities.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=747">12:27</a>] And this is covered in The Imitation Game. In that movie, he was hounded to death because of his homosexual tendencies, or more than tendencies. I mean, he was homosexual. Today we wonder how our parents, grandparents could have been so uncivilized as to do things like that.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=767">12:47</a>] You mentioned in that talk on the history of public cryptography, there&#8217;s this. Everything is pointing toward these directions. What did you mean by that?</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=777">12:57</a>] Well, I mean, the trapdoor cipher was pointing us toward public-key cryptography. And yet a trapdoor cipher makes perfect sense because almost everything in cryptography involves trapdoors. People usually think of public-key cryptography as a trapdoor cryptographic system. But even a cryptographic system is a trapdoor. And this is fundamentally related to a question called P vs NP or not in computer science.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=806">13:26</a>] Are there any problems that are easily checked that are hard to solve? That&#8217;s basically what that means. If there are any secure cryptographic systems, then there are problems that are easily checked that are hard to solve. For example, one-way function is the simplest form of trapdoor. This is a function that&#8217;s easy to compute but hard to invert. And this figures importantly in cryptography and blockchains, among other things.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=837">13:57</a>] We&#8217;ve all taken trapdoor quizzes where the professor gives you an hour to solve the problem. At the end of the hour, he says, &#8220;Pencils down, papers in,&#8221; and he says, &#8220;Oh, we have a few minutes remaining. Let me give you the solution and convince you it&#8217;s right.&#8221; That&#8217;s a trapdoor quiz problem. It&#8217;s a primitive form. And there the professor has in mind a particular method for solving it, whereas you have many methods.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=863">14:23</a>] And a real trapdoor quiz problem would work like this. The professor would say, here&#8217;s a one-way function. I&#8217;ve generated an X, here&#8217;s the Y that comes out. You find the X that comes in after a million years goes by. He says, papers down, pencils in. He says, oh, by the way, in the few seconds remaining, let me convince you. Let me give you the solution and convince you it&#8217;s right. What does he do?</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=886">14:46</a>] He takes X, he puts it through the one-way function, he gets Y. And you know that he had the right value of X, and yet you could never find it.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=895">14:55</a>] When I imagine you kind of competing or butting heads with the <a href="https://en.wikipedia.org/wiki/National_Security_Agency">NSA</a>, I can imagine one solution for them might be to try to recruit you to their side. Did they ever try to recruit you?</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=907">15:07</a>] Yes. Early on, before we had public, before we had any good results, I&#8217;d go to conferences and I&#8217;d give talks on cryptography, which in hindsight were very primitive. And <a href="https://en.wikipedia.org/wiki/National_Security_Agency">NSA</a> people with name badges that said <a href="https://en.wikipedia.org/wiki/United_States_Department_of_Defense">Department of Defense</a>, which was the simple substitution cipher for <a href="https://en.wikipedia.org/wiki/National_Security_Agency">NSA</a>, would always ask me. They explained they were at <a href="https://en.wikipedia.org/wiki/National_Security_Agency">NSA</a> and they&#8217;d love to hire me as a consultant because they needed new blood.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=932">15:32</a>] And I said, I&#8217;d love to know what you know, but only if I can publish my papers independently. And he said, of course not, which I knew was the answer. And so I never took any classified consulting contracts, et cetera, until 1995. There was a National Research Council committee called CRISIS. It&#8217;s called the CRISIS Report. Cryptography&#8217;s Role in Securing the Information Society, which comes out as CRISIS.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=962">16:02</a>] And that was about 1995. And the question was, were U.S. government regulations helping national security or hurting national security? We concluded that in many ways they were hurting national security. And we had a former deputy director of the <a href="https://en.wikipedia.org/wiki/National_Security_Agency">NSA</a> on the committee. We had a former Attorney General on the committee, Benjamin Civiletti, who had been Attorney General under Jimmy Carter. We had people like me who were privacy advocates, but who had come around and started to understand how the <a href="https://en.wikipedia.org/wiki/National_Security_Agency">NSA</a> viewed things.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=994">16:34</a>] We had Ray Ozzie on that committee, who was the chief software architect at Microsoft. When Bill Gates retired, he did Lotus Notes. And we reached unanimous conclusions. And one of the most important conclusions we reached was that the classified briefings. I did take a classified. I didn&#8217;t get paid for that, but I did have a security clearance for that and intelligence coins, which I&#8217;d never taken before.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=1024">17:04</a>] But I was retiring at that point, and I figured it didn&#8217;t matter. And it was important for me to be able to, say, get past the people who said, &#8220;If you knew what I knew, you&#8217;d think differently.&#8221; And there were people in the unclassified briefings who said, &#8220;If you knew what we knew, you&#8217;d think differently.&#8221; But we concluded, and it&#8217;s in our report, which you can get free of charge on the National Academy, National Academy&#8217;s website, that the classified briefings helped fill in details, but they did not change our fundamental conclusions.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=1059">17:39</a>] And that was one of the most important conclusions we reached. And yet people said, if you knew what we knew, you&#8217;d think differently. And yet that was not true.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=1067">17:47</a>] When they were trying to recruit you, I imagine it would have been very advantageous for them to classify your work.</p><p>Oh, yeah, they did. I mean, when you turned down their offer, I imagine they would have had to compensate you handsomely to kind of go to the.</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=1084">18:04</a>] I don&#8217;t. We never got that far. And by the time we had a fight on our hands, it was too late. Basically, I&#8217;d committed to see this thing through. And when I realized that my life might be in danger, I might go to jail, although I didn&#8217;t think about those possibilities very much, and I didn&#8217;t think they were real, although they may have been. I felt like I was committed and I couldn&#8217;t back down.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=1115">18:35</a>] I mean, what would you do? I kind of fell into it. It&#8217;s like a friend of mine who was a helicopter pilot in Iraq. He went through ROTC in the late 90s, he said, to pay for his education. There were no wars. He said, why is everybody calling me a hero?</p><h3>18:51 &#8212; The crypto wars</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=1131">18:51</a>] When I was doing the research, I kept seeing this mention of the first crypto wars. What are the crypto wars, and how did they play out?</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=1140">19:00</a>] The first crypto war was the one we&#8217;ve been talking about, which occurred in the late &#8216;70s, early &#8216;80s, where <a href="https://en.wikipedia.org/wiki/National_Security_Agency">NSA</a> threatened to throw me in jail. My life may have been in danger, things like that. And that was over two things. It was over the freedom to publish papers in international journals, which has now been established. And it was over the key size of DES, which is something that people today know almost nothing about.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=1164">19:24</a>] As I mentioned before, it was a 56-bit key size. And Whit and I did a quick calculation that you could probably break that for $10,000 even with 1976 technology, 1975 technology. And if we were wrong, Moore&#8217;s law would, if we were off by a factor of 10, an order of magnitude that would be erased in five years&#8217; time because Moore&#8217;s law was advancing the state of computing by an order of magnitude every five years in those days.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=1194">19:54</a>] So that was the first crypto war. It was over the freedom to publish and the key size of DES. The second crypto war, which people don&#8217;t really remember, was in the &#8216;90s and Clipper Chip was a big piece of that. This was the idea that there should be an escrow service, that the government would allow strong encryption, but it would maintain master keys somewhere. And if they got a court order that said that they were able to get into something, they&#8217;d be able to do it.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=1226">20:26</a>] Well, this sounds great, and it was great from certain points of view, but there were problems with it, like in the National Research Council Committee, the CRISIS Committee that I talked about. We wasted a lot of time talking about key escrow. And then we realized, I may have actually said this, although I think we came to it as a whole. Look, there are major problems with key escrow. How is it going to work internationally?</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=1249">20:49</a>] Who&#8217;s going to hold the keys when someone&#8217;s in France and someone&#8217;s in the United States, or someone&#8217;s in Russia and someone&#8217;s in the United States? So what we said in the report is, we said it very nicely, that we don&#8217;t see how to solve many of the problems with public key with key escrow. And the U.S. Government should experiment with it, and if they came up with a solution, come back to us, and they never did.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=1274">21:14</a>] That was the second crypto war. And Clipper Chip was a chip that had a key escrow built into it. Basically, the third crypto war, which some people may remember, occurred about 10, 15 years ago. It was over things like the San Bernardino Apple iPhone. There were terrorists who committed acts, and they had an Apple iPhone, and the FBI wanted to break into it. FBI, not <a href="https://en.wikipedia.org/wiki/National_Security_Agency">NSA</a>, wanted to break into it. And they asked Apple to give them the key.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=1308">21:48</a>] Apple does not have a key. Ron Rivest is one of the authors of a report called Keys Under Doormats. If you build what they call a backdoor into a cryptographic system to allow access. And that was the third crypto war. It was really a repeat of the second crypto war, the key escrow with a different name. And it&#8217;s really putting keys under doormats because if Apple can recover one key, they can recover any key.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=1336">22:16</a>] And they&#8217;re going to be asked repeatedly. And there&#8217;s a danger that if that information gets out there, that all of Apple&#8217;s devices become insecure. So how do you do it? We don&#8217;t see how to do it. It&#8217;s unfortunate, but there is no way to give access. I&#8217;d love to give access to the U.S. Government when it had legitimate reason for doing it. I would love to withhold that access from the U.S. Government when it has an illegitimate reason for doing it, which it sometimes does, and from the Russian government, which also would use it illegitimately.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=1366">22:46</a>] You mentioned DES, 56 bits, was not secure enough. Why would the government want fewer bits?</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=1373">22:53</a>] Oh, easy. The government wanted fewer bits because they didn&#8217;t want a publicly available standard that they couldn&#8217;t break. They figured that there was a crude form of trapdoor that Whit and I made an estimate in &#8216;75, and I refined it when <a href="https://en.wikipedia.org/wiki/National_Security_Agency">NSA</a>, actually NBS, the National Bureau of Standards, but it was two guys from <a href="https://en.wikipedia.org/wiki/National_Security_Agency">NSA</a> that we were always communicating with, who had moved over to NBS. We estimated that 2 to the 56 is roughly 10 to the 17th power.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=1408">23:28</a>] That&#8217;s 100,000 million million keys. We estimated that you could build a search chip, even with 1975 technology, that would search a million keys per second, a microsecond per key. And we then said, you wouldn&#8217;t just build one of these, you&#8217;d build a million of them. And now you&#8217;re searching a million million keys per second. And how long does it take to search 100,000 million million keys? 100,000 seconds, which is about a day.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=1434">23:54</a>] It&#8217;s roughly 80,000 seconds. We estimated that the cost of searching a 56-bit key size was roughly $10,000 per solution in 1975. We were probably optimistic, but as I said, even a factor of 10 optimism would be erased within five years. The crude form of trapdoor was, if I build a machine like that, I can&#8217;t keep it fully loaded. I don&#8217;t have roughly 60 problems a month to keep it fully loaded. The U.S. National Security Agency has 60 problems a month to keep it fully loaded.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=1469">24:29</a>] And they have the $20 million to build the machine. I don&#8217;t.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=1476">24:36</a>] So they would retain access to privileged information through superior computing resources was their hope, and snoopiness.</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=1487">24:47</a>] The problem is you and I might want to snoop on one problem a year. How do we do that? Do we wait a year to get a solution? No, we want it quickly, but then it&#8217;s sitting idle most of the time and our cost goes way, way up.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=1500">25:00</a>] With modern public key cryptography, anyone can securely message anyone else, and no one can snoop. But that also includes the bad guys as well. What are your thoughts on, I guess, the devil&#8217;s advocate that says, why do you need to hide something if you have nothing bad to hide?</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=1523">25:23</a>] Well, if you want to put all your banking information out there in the public, if you want Apple to sign software updates in ways that bad guys can do, yeah, there&#8217;s no problem. But we do have reasons for being secure. We don&#8217;t live in a world where we trust everybody yet. And so there&#8217;s a fundamental trade-off. You cannot make strong encryption and give it only to the good guys and not to the bad guys.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=1548">25:48</a>] It&#8217;s like cars. If cars had been invented in the classified literature, the government might say, &#8220;This is great. We can catch bad guys, we can fight wars, and we can always win them because we have tanks, we have cars, we have things like that.&#8221; And they&#8217;ve got horses. And now imagine Whit and I invent a car 50 years ago in the unclassified literature. They&#8217;d be up in arms. We wouldn&#8217;t see ambulances, we wouldn&#8217;t see commuting, we wouldn&#8217;t see vacations that people could take.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=1576">26:16</a>] There&#8217;s a fundamental trade-off. It&#8217;s there with cars, and it&#8217;s there with cryptography as well.</p><h3>26:22 &#8212; The story behind Diffie Hellman key exchange</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=1582">26:22</a>] So I wanted to talk about the obviously the big invention that you had, public-key cryptography, the Diffie-Hellman key exchange algorithm. What&#8217;s the story behind you inventing this Diffie-Hellman, and maybe Diffie-Hellman-Merkle key exchange algorithm? Whit showed up on my doorstep, almost literally speaking, in the fall of 1974.</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=1609">26:49</a>] He had been traveling around the country. He&#8217;d worked at the AI Lab, the artificial intelligence lab here at Stanford. And he&#8217;d done some work on cryptography. He wanted to do more. They could not support it. So he took a small inheritance that he got from his mother, and he traveled around the country. And if you work in AI, if you&#8217;re known, there are people that will put you up in their garages, in their homes.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=1632">27:12</a>] They&#8217;ll feed you. Maybe John McCarthy lives up the hill. And Whit was a good friend of his. And there was a high school student living in his attic, I think, who was from Cambridge. And I asked him why he didn&#8217;t just go to the <a href="https://en.wikipedia.org/wiki/Massachusetts_Institute_of_Technology">MIT</a> Artificial Intelligence Lab. And he said he didn&#8217;t like their politics. I don&#8217;t know what that means. So Whit traveled around the country. And when he was at IBM Research, a secrecy order had descended on them just about this time.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=1660">27:40</a>] I&#8217;d been there a few months before. They told me they couldn&#8217;t tell me very much. They told Whit, when he came through, the same thing. But they told him one thing additional: &#8220;Oh, when you&#8217;re back out at Stanford, look up Hellman.&#8221; So he called me in the fall of &#8216;74. And we set up maybe a half hour, hour meeting, max. And it went through the night. They came back here, he and Mary Fischer, his then girlfriend, now wife, then wife.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=1688">28:08</a>] She&#8217;s passed away since then. And we had a real meeting of the minds. It was amazing. And so Whit and I started working together in the fall of &#8216;74. The <a href="https://en.wikipedia.org/wiki/Data_Encryption_Standard">Data Encryption Standard</a> came out. In March &#8216;75, it was announced. We came up with the idea of public-key cryptography around then. And we did not know about <a href="https://en.wikipedia.org/wiki/Ralph_Merkle">Ralph Merkle</a> at the time. Ralph was an undergraduate and later a master&#8217;s student at <a href="https://en.wikipedia.org/wiki/University_of_California%2C_Berkeley">UC Berkeley</a>.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=1717">28:37</a>] And he came up with half of public-key cryptography. He came up with public-key distribution. And I have his paper in which he. In the fall of &#8217;74, we didn&#8217;t know about him then. He was taking CS244, computer security. And he had to do a term project. And he proposes two term projects. One is the privacy half of public-key cryptography. And the other is something much more mundane. And I have the professor&#8217;s handwriting in blue scanned.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=1746">29:06</a>] I&#8217;ve scanned this across the top. That idea number two, the mundane idea, looks much better than idea number one. Maybe because his description of idea number one is so muddled. But Ralph had major problems. So he drops the course. The professor says, &#8220;See me today about this.&#8221; Ralph, instead of seeing the professor, drops the course and goes and does it on his own. He then submits a paper to CACM, the primary <a href="https://en.wikipedia.org/wiki/Communications_of_the_ACM">Communications of the ACM</a>, the primary journal of the ACM, and it&#8217;s rejected.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=1780">29:40</a>] I have the rejection letter. Susan Graham, who was the editor who rejected it based on a referee&#8217;s report, writes, &#8220;It bothers her that there are no references in the paper. Has no one thought of doing anything like this before?&#8221; The answer is no. Now, he still sort of had references. Ralph didn&#8217;t know how to write a paper at that point. I helped him rewrite the paper, and it was later accepted, but it was actually submitted a little before ours.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=1809">30:09</a>] Whit and I came up with public-key cryptography. Ralph came up with public-key distribution. We eventually learned about one another. Afterward, I bring him here in the summer of 76, and I talk to Ralph and I say, have you ever thought of coming to Stanford to do your PhD? And Ralph says, I can&#8217;t afford it. I said, yes, you can. How about you making it Berkeley as a TA? And I said, I pay you roughly the same as an RA here at Stanford, and your tuition would be covered.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=1837">30:37</a>] So he came to Stanford. He did his PhD under my supervision, supposedly, although we really worked together.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=1891">31:31</a>] It seems like this cryptography space was not so well resourced. I mean, Diffie is kind of going couch to couch to.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=1899">31:39</a>] To kind of support himself on this. Ralph&#8217;s also kind of doing this on his own, fully his own initiative, and people aren&#8217;t really supporting him throughout. Is that, was that common in cryptography at that time?</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=1912">31:52</a>] Yeah, I told you. All my colleagues, and it&#8217;s not an exaggeration, told me I was crazy to work in cryptography. And one of their reasons was <a href="https://en.wikipedia.org/wiki/National_Security_Agency">NSA</a> has a huge budget and a multidecade head start. One of them, <a href="https://en.wikipedia.org/wiki/Jim_K._Omura">Jim Omura</a>, who passed away about a year, two years ago, he was a professor at <a href="https://en.wikipedia.org/wiki/University_of_California%2C_Los_Angeles">UCLA</a>. I mentioned him to you earlier. Jim told me I was crazy. And the best ideas often seem crazy ahead of time. So I was at Tom Kailath 10 years ago.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=1940">32:20</a>] I was at Tom Kailath&#8217;s 80th birthday celebration. He won the National Medal of Technology and Science, I think given to him by President Obama for his work keeping Moore&#8217;s law going for 10 years. According to the former dean of engineering at Stanford at the time, <a href="https://en.wikipedia.org/wiki/Jim_K._Omura">Jim Omura</a> is standing six feet away. I motioned him over. I said, &#8220;Jim, tell this woman what you told me when I first started working in cryptography and I just won the Turing Award, the top prize in computer science for that work.&#8221;</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=1967">32:47</a>] Jim said, &#8220;Oh, I told Marty he was crazy.&#8221; I knew he would do that because he&#8217;d given me permission to quote him on this. The best work often appears crazy a priori&#8212;<a href="https://en.wikipedia.org/wiki/Global_Positioning_System">GPS</a>, which we use daily. Brad Parkinson, who won the top prize from the <a href="https://en.wikipedia.org/wiki/Institute_of_Electrical_and_Electronics_Engineers">IEEE</a> for that work, says that the Air Force thought <a href="https://en.wikipedia.org/wiki/Global_Positioning_System">GPS</a> was crazy initially. High-speed Internet access. I won&#8217;t go into details there. And I&#8217;ve spoken to a number of Nobel laureates, and almost all of them had the same reaction from people that I did.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=2002">33:22</a>] One of them, I&#8217;ll tell you one story. <a href="https://en.wikipedia.org/wiki/Louis_Ignarro">Louis Ignarro</a>, who won the Nobel Prize in physiology or medicine, I think, in 1998, told me that the dean of his medical school came to him and said, Louis, why are you doing this crazy stuff? We hired you because you do good work. Crazy stuff that won him a Nobel Prize.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=2023">33:43</a>] It makes sense. But I guess the unique aspect is I think a lot of people would receive that pushback and everyone thinks they&#8217;re foolish, and they wouldn&#8217;t go for it. What is it that gave you the confidence to continue when everyone was saying this is foolish?</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=2044">34:04</a>] Two reasons. One is I got beaten up as a Christ killer as a kid. And that&#8217;s a little bit of a joke, but not totally. As a kid, we moved to an Irish Catholic neighborhood. I&#8217;m Jewish. We moved there when I was four and a half years old. I went to my parents and I said, &#8220;I want the pretty tree that the other kids have, the Christmas tree. I want the presents under the tree. I want to go to the same school as the other kids in the neighborhood.&#8221;</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=2067">34:27</a>] <a href="https://en.wikipedia.org/wiki/St._Nicholas_of_Tolentine_High_School">St. Nicholas of Tolentine Parochial School</a>. I was telling my parents I didn&#8217;t want to be Jewish. And so, in self-defense, I adopted the attitude of who would want to be like anybody else? That had a very simple answer. Me. I would have given my eye teeth to have been like everybody else. But in time, I came to believe my own bullshit. And so when my colleagues said I was crazy to work in cryptography, instead of scaring me off, it actually attracted me.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=2098">34:58</a>] So that&#8217;s one reason. And the other reason, I think it runs in my family. I have an uncle who in 1940, with his wife, a Jew, took trains across the country with bicycles, bicycling through national parks. I mean, who but a crazy person would do that? I come from a crazy family. We&#8217;ve done crazy things. And this was a crazy thing to do.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=2123">35:23</a>] When you put out that paper in 1976, what was the problem you were trying to solve, or what was guiding your research direction at that time?</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=2133">35:33</a>] Well, it started as trying to develop a theory of cryptography. And <a href="https://en.wikipedia.org/wiki/Jim_Massey">Jim Massey</a>, who was the editor at the time of the <a href="https://en.wikipedia.org/wiki/Institute_of_Electrical_and_Electronics_Engineers">IEEE</a> Transactions on Information Theory, of which I was on the board of governors, as I mentioned, Jim invited me to write a paper on that. I mean, this was beginning to get some traction. And I asked if Whit could be included. And he said absolutely. And so Whit and I were working on this paper.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=2163">36:03</a>] We had several drafts. Then in May 76, I came up with what is now Diffie-Hellman key exchange. And I included that. I threw that into a paper I&#8217;m giving in June 76, a month later at the <a href="https://en.wikipedia.org/wiki/Institute_of_Electrical_and_Electronics_Engineers">IEEE</a> Symposium on Information Theory in Ronneby, Sweden. <a href="https://en.wikipedia.org/wiki/Jim_Massey">Jim Massey</a>&#8216;s there, of course, and he says, you get that into the paper, I&#8217;ll have it out in the November issue, which he did. Now, the November issue, Whit is fond of pointing out, did not come out until February 1977.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=2191">36:31</a>] Was usually late, but that&#8217;s how it worked. And Ralph, unfortunately, as I said, had his idea rejected, his paper rejected. So his paper did not appear until 1978, even though it was submitted slightly before ours. I see.</p><h3>36:48 &#8212; Signatures vs key exchange</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=2208">36:48</a>] I think in this conversation you mentioned key exchange, also signatures. It seems like there are these components of a full cryptographic system. Could you explain each of these?</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=2222">37:02</a>] Key exchange is how do you and your bank exchange a key to protect your banking transactions, to use a modern example, with somebody listening on the Internet, and so use public key cryptography to do that <a href="https://en.wikipedia.org/wiki/Ralph_Merkle">Ralph Merkle</a> had a puzzle method. <a href="https://en.wikipedia.org/wiki/Ralph_Merkle">Ralph Merkle</a> had a puzzle method where he generated a sequence of puzzles and you solved. Your bank would solve one of them and it would then use that key. And you could quickly tell which key it was using.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=2253">37:33</a>] But somebody else had to solve half the puzzles, on average, before it could do it. And so it took a lot more effort on the part of an opponent. I&#8217;ll explain Diffie-Hellman key exchange very briefly. And that is only key exchange. It&#8217;s not yet signatures. You and I want to exchange physical messages. I want to write them out to you and pass them to you. But my wife, who is not supposed to see them, is sitting between us and has to hand them to you.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=2286">38:06</a>] So what do I do? I put my message in a strong box. I put a lock on that strong box. I&#8217;d like to tell you the combination to that lock. But if I tell you how to open it, I&#8217;m also telling my wife how to open it. So I don&#8217;t tell anybody how to open it. I pass it to my wife. She can&#8217;t open it. She passes it to you. You can&#8217;t open it. You put a second lock on the strong box. You then pass the double. You don&#8217;t tell me the combination.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=2311">38:31</a>] You don&#8217;t tell Dorothy the combination. Only you know the combination. You pass it to Dorothy. She can&#8217;t take either lock off. She passes it to me. What can I do? Take off my lock, leaving only your lock. I pass it back to Dorothy. She can&#8217;t take off your lock. But when you get it, you can. You get the message inside. That&#8217;s basically how Diffie-Hellman-Merkle key exchange works.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=2335">38:55</a>] Now, what&#8217;s critical about this is that I made the strongbox big enough for you to put a second lock on it. If I hadn&#8217;t done that, if I&#8217;d only made it big enough for one lock, you could have taken the strongbox that you got and put it in a bigger strongbox. But now there&#8217;s a problem. When I get it, I can&#8217;t get inside to take my lock off. It has to be what&#8217;s called commutative. And everybody knows what commutative means, although they may have forgotten it.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=2360">39:20</a>] Addition is commutative. Three plus five is the same as five plus three. It doesn&#8217;t matter which order you do the operations in. You get 8. 5 minus 3 is 2, 3 minus 5 is minus 2. You get a different answer. It&#8217;s not commutative. Subtraction is not commutative. What I had to do was find a commutative one-way function, although I didn&#8217;t know that at the time. The function I used is a commutative one-way function.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=2387">39:47</a>] It&#8217;s exponentiation and modular arithmetic. It doesn&#8217;t matter whether you first raise alpha to the x1 power and then to the x2 power or raise it to the x2 power and then to the x1 power. You get the same result. You get alpha to the x1 x2; multiplication in the exponent is commutative. And we did this over a finite field where exponentiation is not a smooth function, which would be easy to invert. It jumps all over the place.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=2415">40:15</a>] But it turns out it still works that way. So that is public key exchange, public key distribution. Digital signatures are more complicated. That&#8217;s something that <a href="https://en.wikipedia.org/wiki/Whitfield_Diffie">Whit Diffie</a> came up with. It&#8217;s called a public key cryptosystem. And then <a href="https://en.wikipedia.org/wiki/RSA_cryptosystem">RSA</a>, <a href="https://en.wikipedia.org/wiki/RSA_cryptosystem">Rivest, Shamir, and Adleman</a> came up with the first instance of that. There you have a public key and a secret key, and it doesn&#8217;t matter which order you operate on them. Whether you first use the public key and then the secret key or the secret key and then the public key.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=2442">40:42</a>] You get the initial result, they undo one another there. If I use my secret key, I can sign a message because there&#8217;s no privacy. But I send the encrypted message to you using my secret key. You use my public key, which you get from a public file, to verify it. That&#8217;s how my phone works. It&#8217;s got a public key built into it. Apple knows the secret key. Apple can sign software updates. People can take my phone apart and get the public key.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=2473">41:13</a>] But that doesn&#8217;t give them the secret key that allows them to sign software updates.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=2478">41:18</a>] I see. So in that case, Apple is signing their updates to your phone.</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=2484">41:24</a>] Right.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=2485">41:25</a>] So I also was reading about symmetric versus asymmetric, and what you&#8217;re describing sounds like asymmetric.</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=2491">41:31</a>] Yes. Asymmetric cryptography uses a public key and a secret key. It&#8217;s asymmetric. Conventional cryptography uses the same secret key to encrypt and decrypt. And that requires a courier, which is what was required before public key cryptography. If you were a general in another division, I could send you a key. I would send a messenger with a key locked to his wrist. And when you got it, you could open it up and get the key and then you and I could use a radio channel to communicate very cheaply and very fast.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=2525">42:05</a>] But you can&#8217;t use couriers to communicate keys between a bank and a client.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=2531">42:11</a>] Yeah. So I saw modern systems. It&#8217;s almost like multiple different mechanisms where there&#8217;s this asymmetric key exchange at the beginning to establish the connection. And then that gets you that key symmetric thing.</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=2546">42:26</a>] Exactly. It&#8217;s just like I described. First, Apple signing the software update. They don&#8217;t sign the whole thing. They only sign a hash. In the same way, we could use a public key cryptosystem like <a href="https://en.wikipedia.org/wiki/RSA_cryptosystem">RSA</a> to exchange messages, but it&#8217;s too slow. So what I do is I send you one message, use the following key in <a href="https://en.wikipedia.org/wiki/Advanced_Encryption_Standard">AES</a>, the <a href="https://en.wikipedia.org/wiki/Advanced_Encryption_Standard">Advanced Encryption Standard</a>, and then we use <a href="https://en.wikipedia.org/wiki/Advanced_Encryption_Standard">AES</a> very quickly to exchange messages. And that&#8217;s the difference between asymmetric encryption, which we use at first, where I use the public key to encipher the message and use the secret key to get the key, and then we use a symmetric system to very quickly communicate afterward.</p><h3>43:05 &#8212; RSA patent wars</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=2585">43:05</a>] I was reading about <a href="https://en.wikipedia.org/wiki/RSA_cryptosystem">RSA</a> versus the Diffie-Hellman key exchange, and it seems like there were a lot of patents or something like that. Patent wars. What&#8217;s the context behind that?</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=2598">43:18</a>] I didn&#8217;t know how patents worked when we wrote the first patent on public key cryptography. If I&#8217;d known we could have covered <a href="https://en.wikipedia.org/wiki/RSA_cryptosystem">RSA</a>, we would have made a lot of money. Basically, <a href="https://en.wikipedia.org/wiki/RSA_cryptosystem">RSA</a> sold their company for $250 million. We made nothing, virtually nothing, from our patents in cryptography. There was a patent fight between <a href="https://en.wikipedia.org/wiki/RSA_cryptosystem">RSA</a> and us, <a href="https://en.wikipedia.org/wiki/Massachusetts_Institute_of_Technology">MIT</a> and Stanford, or between their licensees. And basically <a href="https://en.wikipedia.org/wiki/Massachusetts_Institute_of_Technology">MIT</a> won that fight.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=2635">43:55</a>] And I was pissed at <a href="https://en.wikipedia.org/wiki/RSA_cryptosystem">RSA</a> for a long time, and I was pissed with Jim Bidzos, the president of <a href="https://en.wikipedia.org/wiki/RSA_cryptosystem">RSA</a> Data Security. And around 1990, around 2000, sometime around there, I realized it was inconsistent with my approach to life to be pissed at <a href="https://en.wikipedia.org/wiki/RSA_cryptosystem">RSA</a>. They&#8217;d won. The fight was over. And so I approached Jim Bidzos and I said, look, Jim, I told him that, and I said, let&#8217;s be friends. Let&#8217;s bury the hatchet. And we essentially have.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=2664">44:24</a>] And friends are better than enemies. I&#8217;m not sure, but I think Ron Rivest might have actually nominated <a href="https://en.wikipedia.org/wiki/Whitfield_Diffie">Whit Diffie</a> for the Turing Award. Now, he wouldn&#8217;t have done that if he didn&#8217;t think we deserved it, but he wouldn&#8217;t do it if he was pissed at us. And friends are better than enemies. That&#8217;s not why I did it. That&#8217;s not why I became friends with them. But again, it worked out very well.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=2688">44:48</a>] How did they win the patent war if your ideas came first?</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=2694">44:54</a>] I remember I told you I didn&#8217;t know how patents worked. It&#8217;s only the claims that matter. And so if I&#8217;d known that, we could have written a claim that would have covered <a href="https://en.wikipedia.org/wiki/RSA_cryptosystem">RSA</a> easily, but we didn&#8217;t. And so the patent was written very badly. Stanford didn&#8217;t want to invest a lot of money in this patent, so it had a law school intern write the patent instead of a patent attorney. We made a lot of mistakes.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=2723">45:23</a>] You mentioned friends are better than enemies. Yeah, a lot of people would agree with you, but I also think most people wouldn&#8217;t be able to get over losing a $250 million outcome. How did you kind of get over that and establish friendship?</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=2743">45:43</a>] Well, some of it is in my genes, but a lot of it comes from my wife, basically. My wife and I have been married 59 years last March, and we were madly in love when we met. We followed society&#8217;s rules, and we developed a toxic relationship. Ten years later, my wife was ready to leave me, but I didn&#8217;t know it because I had blinders on, the way many husbands do. And fortunately, when she met me, she decided I was the one.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=2772">46:12</a>] And 10, 15 years after we&#8217;re married, roughly 50 years ago, she says he&#8217;s still the one, although life with him is impossible, and life with her was no picnic. So she went around looking for catalysts, ways to improve our relationship, and she eventually found a group. I won&#8217;t go into all the details there. I tend to do that. That worked on the international and the interpersonal at the same time.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=2799">46:39</a>] It was founded by Professor Harry Rathbun, who was a professor here at Stanford, born in the 1890s. So he&#8217;s no longer alive. I knew him late in his life, and that&#8217;s how I. It was based on the teachings of Jesus, which was a problem for me as a Jew because it was okay not to go to synagogue, which I didn&#8217;t do, but it was not okay to study the teachings of Jesus. That was traitorous. But eventually, Dorothy dragged me to enough meetings that over a year&#8217;s time, I came to see that these people, Creative Initiative, as the group was called at the time, knew something I had to learn if my marriage was going to survive.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=2837">47:17</a>] And I surprised myself by being willing to do things that seemed crazy to me. The most important things were accepting ideas that Dorothy had that seemed crazy to me, that weren&#8217;t crazy. Because what happened when she had an idea that seemed crazy to me? I treated her like she was crazy. What did that do? It drove her crazy. What did that do? It convinced me I was right, that she was crazy. Kept the whole cycle going.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=2863">47:43</a>] By the way, the same happens internationally. We treat countries in ways that they don&#8217;t like. They react in ways that seem crazy to us. We treat them like they&#8217;re crazy, and it keeps the whole cycle going. So that&#8217;s how I came. And so it&#8217;s based on the Gospels. And while I&#8217;m not a Christian, I see Jesus as a Jewish reformer rather than as a Christian messiah. I view myself as a follower of Jesus.</p><h3>48:08 &#8212; Why inventions happen at similar times</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=2888">48:08</a>] When I was researching the discovery that you had, it seems like all of a sudden many of the similar discoveries were happening all at the same time. So, for instance, you mentioned <a href="https://en.wikipedia.org/wiki/Ralph_Merkle">Ralph Merkle</a> and us. Yes.</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=2902">48:22</a>] Oh, and <a href="https://en.wikipedia.org/wiki/GCHQ">GCHQ</a> claims that they invented it just a couple of years before us, but they only have half of it, which is, if they&#8217;re right, which is the privacy part. They didn&#8217;t have anything on digital signatures, but they claim everything.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=2916">48:36</a>] Right. And then there&#8217;s also the <a href="https://en.wikipedia.org/wiki/Massachusetts_Institute_of_Technology">MIT</a> folks.</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=2918">48:38</a>] The <a href="https://en.wikipedia.org/wiki/Massachusetts_Institute_of_Technology">MIT</a> folks. Yeah. So I have a theory about that. I&#8217;m going to tell it as a joke, but there&#8217;s more to this joke than I think is just a joke. There&#8217;s a muse that whispers in our ears. There&#8217;s a muse of poetry. There&#8217;s a muse of calculus who whispered in Newton&#8217;s ear and Leibniz&#8217;s ear about the same time. There&#8217;s a muse that whispered in Ralph&#8217;s ear about the same time that she whispered in our ears.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=2945">49:05</a>] Most people don&#8217;t pay attention to this muse because she sounds crazy. A few people do. And so that&#8217;s why I think there&#8217;s something in the air. I mean, it&#8217;s not necessarily a muse, but there&#8217;s something in the air that comes to people.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=2960">49:20</a>] But why didn&#8217;t it come 50 years earlier? Or how come it seemed like they all came very similar? I noticed. I interviewed <a href="https://en.wikipedia.org/wiki/Barbara_Liskov">Barbara Liskov</a> as well, who did a lot in data abstraction and modularity. And there also, it was like on the West Coast and the East Coast, without even communicating, they had the same discovery. Very similar.</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=2986">49:46</a>] I think my joke might actually have something to say about that. But also there&#8217;s something that goes on technologically. We didn&#8217;t have the computing power to do public-key cryptography. If someone had come up with it 50 years before, it would have been a nice idea that couldn&#8217;t be implemented.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=3000">50:00</a>] So there&#8217;s a logistical part to this, which is just the tools weren&#8217;t there, and once they were there, it kind of inspired the right thinking.</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=3010">50:10</a>] Yeah, but calculus, I mean, why? That occurred to Leibniz and Newton about the same time. Oh, and Darwin and someone else thought of evolution about the same time. So, I don&#8217;t know. It is mystical, and maybe we should treat it as that. Even though I&#8217;m a scientist, I believe in the mystical side of life.</p><h3>50:29 &#8212; What he worked on after cryptography</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=3029">50:29</a>] There&#8217;s a cryptography work that you&#8217;re doing. And then later in your career, I saw this rethinking national security, and I was curious how you got into this, I guess, area, this body of work. And what&#8217;s the problem you&#8217;re trying to solve?</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=3046">50:46</a>] Well, the problem we&#8217;re trying to solve is simple. We&#8217;re going to kill ourselves. I mean, right now, I estimate that a child born today has probably worse than even odds of living out his or her natural life as a result of nuclear weapons all by themselves, without climate change, without AI, without any of this other stuff.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=3065">51:05</a>] What are you talking about with this AI threat?</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=3067">51:07</a>] Well, there&#8217;s debate on that. Geoffrey Hinton, Yoshua Bengio, who won the Turing Award for their work in artificial intelligence, think that AI may actually kill human beings off, something like that, because it&#8217;ll say, &#8220;Why do I need these stupid people?&#8221; Whereas Ed Feigenbaum and Raj Reddy, who won the Turing Award 30 years ago for their work in artificial intelligence, have both told me and given me permission to quote them.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=3098">51:38</a>] So I&#8217;m not giving any secrets away that calling AI an existential threat is ridiculous. It&#8217;s science fiction. I don&#8217;t know who&#8217;s right, but I do know we need to build a more cooperative world for a number of other reasons, even if not that one. So why not solve that one? At the same time, we&#8217;re likely to build AI into our nuclear command and control system. Oh, my God, what a mess. Right now, I&#8217;m working on a bill.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=3124">52:04</a>] It&#8217;s H.R. 3564, and we have 25 on paper, 24 co-sponsors. The bill is so bad it&#8217;s passable, but so good that it&#8217;s a game changer. Why is it so bad that it&#8217;s passable? It has an exception for launch on warning. If our warning system shows a bunch of ICBMs coming our way, the President doesn&#8217;t need a second opinion to launch our nuclear weapons. He can do so all on his own. There have been mistakes in our warning system, so I don&#8217;t like that.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=3157">52:37</a>] But that&#8217;s why it&#8217;s so bad. It&#8217;s passable. This makes it easy for people to get on board. Most people don&#8217;t realize that the president can launch a nuclear war all on his own. Right now, a president could be awakened at 3 a.m. in the morning during a crisis, too drunk to legally drive a car, asked what to do, he might say drunkenly, nuke him. And right now, theoretically, the military&#8217;s supposed to do that.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=3182">53:02</a>] I didn&#8217;t consider that AI could be coupled with the nuclear bombs too. I guess AI could.</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=3187">53:07</a>] Oh, it&#8217;s likely to be. I mean, we have this problem that we have just minutes of decision time. Do you not think we&#8217;re going to use computers to help us there?</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=3198">53:18</a>] Looking back on your career, being at Stanford during the growth of computing, I imagine you had a lot of opportunities to work with other famous folks in the industry. For instance, Don Knuth.</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=3213">53:33</a>] Don Knuth is a good friend.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=3214">53:34</a>] Yeah.</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=3215">53:35</a>] Don Knuth doesn&#8217;t use email. I think he does, but whenever I want to reach him, I have to call his home and talk to his wife, Jill. That&#8217;s the other story. Stories that I have John McCarthy at AI Lab up the hill, where Whit stayed there, by the way, when we were working on public-key cryptography because John was away and Whit and Mary were taking care of his daughter, driving her to her writing lessons.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=3243">54:03</a>] And so Whit just walked down the hill to talk to me. But John McCarthy, there&#8217;s a meeting at the faculty club maybe 45 years ago. Bob Floyd, who many of your people will know, who&#8217;s a famous&#8212; he died, but a famous computer scientist here at Stanford. John McCarthy comes in. Bob Floyd&#8217;s in the meeting. He goes over to Bob Floyd. I say, hi, John. He doesn&#8217;t pay any attention to me because everybody knows that I.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=3270">54:30</a>] <a href="https://en.wikipedia.org/wiki/Input%2Foutput">I/O</a> is a waste of time. And so he&#8217;s not going to waste time on <a href="https://en.wikipedia.org/wiki/Input%2Foutput">I/O</a>. So he has a very rapid exchange with Bob Floyd and he leaves. Well, I&#8217;ll tell you another thing. I&#8217;m finishing my... It&#8217;s 1968. Several months early in &#8216;68, I thought, who am I to think I can make an original contribution to knowledge, which is the definition of a PhD thesis? I&#8217;m thinking of dropping out of the program over spring break.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=3301">55:01</a>] I basically solved my thesis. It&#8217;s that quick. I go to Tom Cover, who&#8217;s since died, my advisor and very famous information theorist. And I go to Tom and I say, I just have barely enough units, but I have enough units to meet the course requirements for the PhD. But I don&#8217;t have enough units to meet the PhD requirements. I&#8217;m going to have to take units of research if I work at IBM Research. Would you give me credit for my units of research?</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=3334">55:34</a>] Because my wife was pregnant with our first child then. We&#8217;d been married roughly a year, year and a half. I was concerned about money. He says, sure. And so I go to IBM Research, Yorktown Heights. Tom wants to have me come teach at Stanford, which I&#8217;ve done. But he says, &#8220;You really should leave for a couple of years because Stanford.&#8221; I sometimes joke that I had to leave for several years to lose the taint of the Stanford PhD.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=3364">56:04</a>] Why is that? Stanford was worried about inbreeding. If they hired me, I was just going to be doing research like Tom Cover. And they don&#8217;t need two of them. They need somebody different. And so I went away to IBM for a year because my thesis broke very suddenly. And I then taught at <a href="https://en.wikipedia.org/wiki/Massachusetts_Institute_of_Technology">MIT</a> for two years before coming back on the faculty in &#8216;71. And this seemed like just a stupid hoop I had to jump through.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=3386">56:26</a>] But it actually turned out to be very important because when I was at IBM, <a href="https://en.wikipedia.org/wiki/Horst_Feistel">Horst Feistel</a>, whose name many people may recognize, he was really the father of IBM&#8217;s research in cryptography. He was hired in &#8216;68. He was in the same department as me. I didn&#8217;t work in cryptography, but I had lunch with Horst, and he told me some of the amazing things that got me started. And then when I&#8217;m at <a href="https://en.wikipedia.org/wiki/Massachusetts_Institute_of_Technology">MIT</a>, Peter Elias, whose name many people today will not recognize, but he was one of the original contributors to information theory.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=3420">57:00</a>] Peter gives me a paper by Claude Shannon, whose name your audience probably will recognize, written in 1949. I&#8217;m sorry, published in 1949 in the Bell System Technical Journal, connecting information theory to cryptography. Which is when I realized that, oh, I&#8217;ve already done a PhD in information theory. Maybe I can do something worthwhile in cryptography. So that stupid hoop I had to jump through was actually very important because when I got back to Stanford, I started working in cryptography, among other things.</p><h3>57:31 &#8212; His thoughts on death</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=3451">57:31</a>] I think at the beginning of the conversation, you said something quickly that you had thoughts on death. And I was curious, what are your thoughts on death and how does it impact you?</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=3464">57:44</a>] And I got an email from somebody at The New York Times about a month ago saying that he&#8217;s working with my obituary, and it made me macabre, but he was wondering if I could read it over and if I have any comments. And so, the two things are that I&#8217;m 80 years old, so my older brother died just after he turned 80. My mother died at 70. My father lived to 98. I hope I&#8217;ll have more years, but if I don&#8217;t, that&#8217;s okay.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=3490">58:10</a>] I&#8217;ve had a great ride. But the two things that concern me about dying are the people I&#8217;ll leave behind, who I think are dependent on me but probably aren&#8217;t, and the work I do because very few people are working on the nuclear issue, the growth of humanity as a whole to save itself, that we&#8217;re headed for disaster. Very few people realize that. And very few people put it in terms of a process of change.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=3518">58:38</a>] We can&#8217;t stay where we are. We&#8217;re going to kill ourselves, we&#8217;re going to die. We can&#8217;t jump to where we need to go. The world is too dangerous. But we can get there via a process of change. I&#8217;ll tell you one other thing. Humanity is going to die. I&#8217;ve come to this realization. I mean, it&#8217;s clear. I mean, we might last a million years, but at some point. We might last a billion years, but at some point the sun&#8217;s going to burn out.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=3542">59:02</a>] Maybe we&#8217;ll move to other galaxies and we&#8217;ll find ways to cheat death for a while. But eventually humanity is likely to die. But if humanity were to die now, it would be an infant. It would be infant mortality. It would be really sad. If we&#8217;ve lived a full life, that&#8217;s something else. If I had died when I was a child, people would say, oh, what have we missed? If I die at 80, people will say, some people will be saddened by it, but.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=3571">59:31</a>] But they&#8217;ll feel like I&#8217;ve lived a full life. We need to save humanity from an infant death. We&#8217;ve only been around about 100,000 years.</p><h3>59:40 &#8212; Advice for his younger self</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=3580">59:40</a>] With all the experience that you have now, if you could go back to when you had just graduated college and give yourself some advice, what would you say?</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=3589">59:49</a>] If when I was just graduating college and I was interested in saving the world, which I was not, I might have gone up to the top of a mountain to a guru and asked him what to do. Imagine what you&#8217;d say. You&#8217;d expect him to tell you, work for the UN or something like that. Imagine what you&#8217;d say if he told me, forget about saving the world, which was not a problem because I didn&#8217;t think about saving the world.</p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=3613">01:00:13</a>] Go out and become as famous as you can, make as much money as you can, come back in 10 years, and I&#8217;ll tell you what to do. That would have seemed like a detour, but it was actually the shortest distance between two points. Because 10 years later, when I was 30, 35 years old and I was interested in saving the world, I had a reputation, I had money, and I had to screw up to get where I am. I had to not be concerned with the world to become concerned with the world to be able to do something, to do what I can do about it.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=3640">01:00:40</a>] Awesome. Well, thank you so much for your time today. I really appreciate it.</p><p><strong>Martin:</strong></p><p>[<a href="https://youtu.be/AZLOETBCQM4?t=3643">01:00:43</a>] You&#8217;re welcome. And thank you.</p>]]></content:encoded></item><item><title><![CDATA[MIT Complexity Theorist: Why You Can Do Better Than “Optimal” On Leetcode & SAT | Ryan Williams]]></title><description><![CDATA[Ryan Williams is a professor at MIT and the winner of the G&#246;del Prize in theoretical computer science.]]></description><link>https://www.developing.dev/p/mit-complexity-theorist-on-leetcode</link><guid isPermaLink="false">https://www.developing.dev/p/mit-complexity-theorist-on-leetcode</guid><dc:creator><![CDATA[Ryan Peterman]]></dc:creator><pubDate>Mon, 29 Jun 2026 10:02:33 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/202988431/2bea21595ad6754b68123d0352319f3f.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p><a href="https://www.linkedin.com/in/r-ryan-williams-a1b534a/">Ryan Williams</a> is a professor at MIT and the winner of the G&#246;del Prize in theoretical computer science. I interviewed him all about his work starting by asking him a popular Leetcode question (3 SUM).</p><p>Check out the episode wherever you get your podcasts: <a href="https://youtu.be/AaK1SL2i_4Y">YouTube</a>, <a href="https://open.spotify.com/episode/0JH8HW6p03BkzeRaV6zNbD?si=cWge3ofuTW-BUn419wggew">Spotify</a>, <a href="https://podcasts.apple.com/us/podcast/the-peterman-pod/id1777363835">Apple Podcasts</a>.</p><div id="youtube2-AaK1SL2i_4Y" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;AaK1SL2i_4Y&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/AaK1SL2i_4Y?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h1>Timestamps</h1><p><a href="https://www.developing.dev/i/202988431/0041-asking-him-a-popular-leetcode-question">00:41 - Asking him a popular Leetcode question</a></p><p><a href="https://www.developing.dev/i/202988431/0354-doing-better-than-the-popular-optimal-solution">03:54 - Doing better than the popular optimal solution</a></p><p><a href="https://www.developing.dev/i/202988431/0826-fine-grained-complexity">08:26 - Fine grained complexity</a></p><p><a href="https://www.developing.dev/i/202988431/1700-a-severe-strengthening-of-p-vs-np">17:00 - A severe strengthening of P vs NP</a></p><p><a href="https://www.developing.dev/i/202988431/2438-sat-problems-and-solvers">24:38 - SAT problems and solvers</a></p><p><a href="https://www.developing.dev/i/202988431/3451-hot-takes-on-famous-open-questions">34:51 - Hot takes on famous open questions</a></p><p><a href="https://www.developing.dev/i/202988431/4657-simulating-space-with-time">46:57 - Simulating space with time</a></p><p><a href="https://www.developing.dev/i/202988431/010102-why-he-solves-hard-problems">01:01:02 - Why he solves hard problems</a></p><p><a href="https://www.developing.dev/i/202988431/010235-how-to-pick-good-research-direction">01:02:35 - How to pick good research direction</a></p><p><a href="https://www.developing.dev/i/202988431/010714-technical-book-recommendations">01:07:14 - Technical book recommendations</a></p><p><a href="https://www.developing.dev/i/202988431/010831-advice-for-his-younger-self">01:08:31 - Advice for his younger self</a></p><h1>Transcript</h1><h3>00:41 &#8212; Asking him a popular Leetcode question</h3><p><strong>Ryan Peterman:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=41">00:41</a>] Okay, I want to start by asking you the most popular <a href="https://en.wikipedia.org/wiki/LeetCode">LeetCode</a> question. So the question is <a href="https://en.wikipedia.org/wiki/3SUM">3SUM</a>: given a list of numbers, we want to find three numbers such that they sum to zero.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=58">00:58</a>] And so what are your thoughts on the brute force solution for this? We can start there.</p><p><strong>Ryan Williams:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=64">01:04</a>] So the obvious brute force solution takes, if you&#8217;ve got n numbers, N cubed time, just try all the triples of numbers, sum them up, see if they sum to zero. There is a faster solution. So one way to get an order N squared time algorithm for <a href="https://en.wikipedia.org/wiki/3SUM">3SUM</a> is to first start by sorting the numbers. And then you go through the numbers one by one. Say you&#8217;re looking at a number A, and you want to know, is there a B and a C in the rest of the list whose sum with A is going to be zero?</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=105">01:45</a>] Okay, so the way this works is after you sort the numbers, you do what&#8217;s called a finger search. So you put the finger from your left hand on the minimum element and a finger from your right hand on the maximum element. So you start there and you check, okay, are these my B and C? Right? So you add them, min and max, and check if adding that with A gets you zero.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=137">02:17</a>] And if you&#8217;re lucky, then you&#8217;re done. But typically you&#8217;re not lucky. And so this sum of the min and the max is either larger than your target value minus A, or it&#8217;s smaller. If it&#8217;s larger, then you need to decrease the larger number. So you take your right finger, which is sitting on the maximum element, and you move it to the left one slot. So you decrease the larger one. All right?</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=167">02:47</a>] If the sum is smaller than your target, you need to take the smaller number and make it a little bit bigger. So you move your left finger, sitting on the minimum, over one slot. Okay? And you keep doing this. You keep checking whether your left finger and right finger are pointing at a solution. And if they aren&#8217;t, then you adjust it. If they do, if they ever do sum up to exactly what you want, you&#8217;re done.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=194">03:14</a>] And so after each comparison, right, one of your fingers moved, okay? If the fingers ever cross, then you don&#8217;t have a solution. There just can&#8217;t be a solution. And so the number of times you move your fingers in total is like N. So you have order N solution for finding that extra pair. And you do this for each of the numbers A, okay? So then you get an order N squared solution overall, you do it N times.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=226">03:46</a>] Each finger search takes order N time.</p><p><strong>Ryan Peterman:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=230">03:50</a>] And that is the popular solution.</p><p><strong>Ryan Williams:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=233">03:53</a>] That&#8217;s the popular solution.</p><h3>03:54 &#8212; Doing better than the popular optimal solution</h3><p><strong>Ryan Peterman:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=234">03:54</a>] A lot of people know when we&#8217;re in these algorithmic <a href="https://en.wikipedia.org/wiki/LeetCode">LeetCode</a> interviews, and I know a lot of your research is kind of about pushing lower bounds. So maybe we can start that conversation off by asking: can you do better than N squared for this?</p><p><strong>Ryan Williams:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=250">04:10</a>] Yeah, you actually can do better than N squared. And this is not at all obvious. In fact, it stems from taking this finger search idea and pushing it in a different direction. So what you do is you take your sorted list, okay, and you break the sorted list up into little groups of contiguous elements. So let&#8217;s say your little group is like log n size or square root log n. It&#8217;s like a really small little group, okay?</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=282">04:42</a>] So you&#8217;ve got either n over log n groups total or n over square root log n groups total, depending on how you break up your groups. And then the idea is you&#8217;re going to perform the same kind of finger search, but you&#8217;re going to set things up so that you&#8217;re comparing two pairs of groups. Your finger&#8217;s always pointing at an entire group. So the left hand and right hand are pointing at two groups.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=308">05:08</a>] And you want to know if there&#8217;s a <a href="https://en.wikipedia.org/wiki/3SUM">3SUM</a> solution in that group. And you can set up a kind of fast data structure to check a small group, okay? This data structure will take much less than the number of elements in the two groups squared. So you set up some kind of fancy data structure. And because you set your group size so small, it&#8217;s like a preprocessing that you do over all the possible inputs you could send from a pair of groups.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=340">05:40</a>] And so you have some data structure, and it will, let&#8217;s say it takes you \(n^{1.5}\) time to prepare this fancy data structure. But now when you&#8217;re looking at a pair of groups, you can look up the answer much faster than what finger search would have taken. I guess finger search through a group of length \(g\) and another group of length \(G\) would take about \(O(G)\) time, and you can do actually faster by this kind of lookup, this kind of table lookup.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=368">06:08</a>] I think it is kind of like you take this list of length n and you kind of shrink it into like N over group size number of things. And these are more complicated objects. And then you do, and now you&#8217;re trying to speed up the check over these small, complicated objects for like, should I move my finger to the right? Is there nothing in this group? Would finger search just go straight through this group or not is basically what you&#8217;re asking.</p><p><strong>Ryan Peterman:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=405">06:45</a>] So the unit that you&#8217;re operating on is not a single integer, it&#8217;s a group.</p><p><strong>Ryan Williams:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=409">06:49</a>] Yeah, it&#8217;s a group of them. So you use some kind of table lookup. Well, it&#8217;s much fancier than a table lookup. Actually, it goes through some other model called the linear decision tree model. So it&#8217;s like in some weird model where you can actually get a faster <a href="https://en.wikipedia.org/wiki/3SUM">3SUM</a> solution. You can get it into the 1.5 solution. It&#8217;s a really interesting and sophisticated solution.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=431">07:11</a>] But what I want to emphasize is that it starts from the finger search solution and sort of figuring out how to process finger moves faster, sort of do preprocessing so that finger moves can go faster.</p><p><strong>Ryan Peterman:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=446">07:26</a>] Yeah, I saw the time complexity of this. It&#8217;s N squared divided by log n divided by log log n, divided by all raised to the 2/3. What is there any intuition behind that? I mean, that&#8217;s just crazy.</p><p><strong>Ryan Williams:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=460">07:40</a>] So there are several algorithms of this kind, and they all work by doing some modification on what I was talking about because you can sort of reduce to a different model, like a different kind of lookup table, a different kind of set of tricks. And maybe there are some savings you can do here and there by sort of compressing things a little differently. So yeah, there are several algorithms that beat the n squared running time bound, and they all, to my knowledge, kind of work in a similar type of way.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=494">08:14</a>] They&#8217;re taking this n-squared time algorithm, finding little ways to preprocess and then optimize based on the preprocessing, like make finger searches faster and things like this.</p><h3>08:26 &#8212; Fine grained complexity</h3><p><strong>Ryan Peterman:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=506">08:26</a>] Yeah, a lot of your research is on this topic of fine-grained complexity, or kind of lowering lower bounds. So maybe you can explain what is lowering lower bounds.</p><p><strong>Ryan Williams:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=520">08:40</a>] The idea behind fine-grained complexity is we have a variety of problems, canonical problems, that we teach to undergrads. We have canonical algorithms for these problems. These algorithms have resisted any major improvements in decades. And so we wonder, are these algorithms optimal? And what does the theory of optimality look like in terms of time complexity? So what if we just focus solely on the time complexity of a problem, like the fastest algorithm that will solve that problem?</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=562">09:22</a>] What does complexity look like then? Because P versus NP is not about time. I mean, it&#8217;s about time complexity. But on a coarse-grained level, where P is just polynomial time, that polynomial could be n to the 10, n to the billion, whatever. And so showing that something&#8217;s not in P is showing that it needs some superpolynomial amount of time. Whereas here we are concerned with there&#8217;s a canonical problem, it takes N cubed time.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=593">09:53</a>] With some very elegant canonical algorithm, we want to know, could you do any better? Could you improve that exponent to n to the three minus epsilon for some epsilon? And then you ask, well, suppose I have a problem over here and it has a quadratic time algorithm, and I want to know if I can improve that quadratic time algorithm by a little bit. Then you start asking questions like, well, suppose I improve this algorithm by a little bit.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=625">10:25</a>] Can I improve this algorithm over here by a little bit? And this is naturally a notion of reduction, like saying that I want to have some reduction from problem A to problem B, so that if I can improve the algorithm for problem B just a little bit, then I can also improve the algorithm for problem A by just a little bit. This actually leads to a different notion of complexity. You can even take an NP-complete problem and a P problem and reduce the NP problem to the P problem, and the question still makes sense.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=660">11:00</a>] So, for example, you could talk about the <a href="https://en.wikipedia.org/wiki/Subset_sum_problem">Subset Sum</a> problem, okay? So the <a href="https://en.wikipedia.org/wiki/Subset_sum_problem">Subset Sum</a> problem, you&#8217;ve got n numbers and a target value, and you want to know if there&#8217;s a subset of those numbers that sum to a particular target value. Okay, now you&#8217;ve got 2^n possible subsets. The obvious algorithm takes 2^n time. Okay? But you can actually do better than this. And the way you do better than this is to reduce to a polynomial-time solvable problem.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=701">11:41</a>] So you can get an algorithm which runs in square root of 2 to the N time. For the <a href="https://en.wikipedia.org/wiki/Subset_sum_problem">Subset Sum</a> problem, you can avoid enumerating over all the possible subsets in a substantial way. And this is, in fact, known as commonly used in <a href="https://en.wikipedia.org/wiki/Cryptanalysis">cryptanalysis</a> by, I guess, a <a href="https://en.wikipedia.org/wiki/Meet-in-the-middle_attack">meet-in-the-middle</a> type approach. So people do this sort of thing all the time. The idea is you partition the set of all the numbers into two halves, like n over two, n over two.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=736">12:16</a>] You enumerate all the subset sums on the two halves. So you have 2 to the n over two possible sums for the first half, two possible sums for the second half. Then you want to know, is there a number from the first half, from this huge list, plus another number from the second half, this huge list, that sums to the target. Now this is the 2SUM problem. This is really nothing more than a 2SUM problem, which you can solve by sorting and binary search.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=771">12:51</a>] And this is a reduction. We have shown how to solve a <a href="https://en.wikipedia.org/wiki/Subset_sum_problem">Subset Sum</a> problem, which would normally take 2 to the n time, in square root of 2 to the N time, an NP-complete problem, by reducing it to a problem like 2SUM. The obvious algorithm there takes n squared time, trying all the pairs of numbers to see if they sum to a target, and using an n log n time algorithm for that. So fine-grained complexity can relate problems that would not be relatable at all in the traditional P vs NP theory.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=808">13:28</a>] Like, one problem should be complete, the other problem&#8217;s not, so they should not have a polynomial-time reduction between them in general. Right. But if you just look at the time complexity and you focus on, okay, I have an algorithm, 2 to the n algorithm, is it the best possible? And then I have an n squared algorithm, is it the best possible? And then you can relate the two problems, and this is a general phenomenon that you can relate problems that look like they should have nothing to do with each other.</p><p><strong>Ryan Peterman:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=838">13:58</a>] So you talked about reducing a <a href="https://en.wikipedia.org/wiki/Subset_sum_problem">Subset Sum</a> to 2SUM, but <a href="https://en.wikipedia.org/wiki/Subset_sum_problem">Subset Sum</a> is arbitrary integers that sum to the target sum, right?</p><p><strong>Ryan Williams:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=851">14:11</a>] Yeah. So the idea is, nobody said I had to use a polynomial-time reduction or something like that to reduce one problem to another. So what happened? The trick was I took this <a href="https://en.wikipedia.org/wiki/Subset_sum_problem">Subset Sum</a> problem that had n numbers and then I blew it up to an instance of this 2SUM problem. But that 2SUM problem has about square root of 2 to the n numbers. Now I can solve 2SUM in linear time, so solving that instance gives me a square root of 2 to the n time algorithm for the original problem.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=889">14:49</a>] But yeah, in the meantime, going from one problem to the other, I blew it up. But by blowing it up, I&#8217;m able to improve the time complexity of the obvious algorithm for <a href="https://en.wikipedia.org/wiki/Subset_sum_problem">Subset Sum</a>.</p><p><strong>Ryan Peterman:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=901">15:01</a>] I get it. Okay. So the reduction, it&#8217;s kind of like if you solve the <a href="https://en.wikipedia.org/wiki/Subset_sum_problem">Subset Sum</a>, you have some time complexity, and if you translate it to the other problem, you lose a little bit of time complexity, but less than the aggregate.</p><p><strong>Ryan Williams:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=917">15:17</a>] So all you want to make sure is when all the dust is cleared and settled, you want to be able to say, look, if I can improve the obvious algorithm for 2SUM, then I can improve the obvious algorithm for <a href="https://en.wikipedia.org/wiki/Subset_sum_problem">Subset Sum</a>. And that&#8217;s what this thing achieves, because I know how to get a faster algorithm for 2SUM. I can get one for <a href="https://en.wikipedia.org/wiki/Subset_sum_problem">Subset Sum</a>. So you just want your reduction between two problems to have this property.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=943">15:43</a>] If I can improve one problem by a little bit in running time, I can improve the other problem by a little bit.</p><p><strong>Ryan Peterman:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=949">15:49</a>] In one of your talks, you mentioned preserving magic between.</p><p><strong>Ryan Williams:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=954">15:54</a>] Right.</p><p><strong>Ryan Peterman:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=954">15:54</a>] Okay, so this is that.</p><p><strong>Ryan Williams:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=955">15:55</a>] Yes, this is exactly like preserving magic because once you see the 2SUM solution, it&#8217;s not so magical anymore. But imagine that you didn&#8217;t know about sorting and binary search and the like, and someone just says, find a pair of things with a certain property and there are N things. And you&#8217;re like, well, all the number of possible pairs is about N squared, so maybe it&#8217;ll take me N squared in this particular case, because they&#8217;re numbers and you&#8217;re summing them.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=988">16:28</a>] There&#8217;s an n log n time algorithm. It is a surprise when you first see that. No, you don&#8217;t have to try all of the pairs of numbers. There is a shortcut. There is a clear shortcut that lets you find a pair much faster. And then you can use that surprise, or magic, if you will, and get something for <a href="https://en.wikipedia.org/wiki/Subset_sum_problem">Subset Sum</a>. Get an algorithm for <a href="https://en.wikipedia.org/wiki/Subset_sum_problem">Subset Sum</a> that avoids trying all of the subsets.</p><h3>17:00 &#8212; A severe strengthening of P vs NP</h3><p><strong>Ryan Peterman:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=1020">17:00</a>] So I understand one of the driving motives for pursuing this, I guess, lowering of lower bounds is the Strong Exponential Time Hypothesis, or SETH. Could you explain that and its significance?</p><p><strong>Ryan Williams:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=1038">17:18</a>] SETH is like a severe strengthening of the P vs NP question. So P vs NP is asking whether the SAT problem has a polynomial-time algorithm or not.</p><p><strong>Ryan Peterman:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=1057">17:37</a>] Right.</p><p><strong>Ryan Williams:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=1058">17:38</a>] And SETH is basically saying that for the SAT problem, you cannot solve it much faster than 2 to the n. So there&#8217;s no 1.999 to the n time algorithm for every string of nines. There is no 1.9999 to the n time algorithm, to say the hypothesis totally precisely. It has to do with the k-SAT problem. And you&#8217;re looking at clauses of length k for arbitrary k, but those details don&#8217;t matter.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=1101">18:21</a>] So much. It&#8217;s a canonical NP-complete problem. SAT is solved all the time. In practice, it&#8217;s extremely useful for verification. Nowadays it&#8217;s an engine for verification. So it can be solved fairly well in practice. However, in the worst case, we still don&#8217;t know how to solve it significantly faster than 2^n. So the hypothesis that it needs, say, 1.9999^n time for all strings of n is a very strong exponential time hypothesis.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=1140">19:00</a>] And so it&#8217;s stronger than P versus NP. It says, no, no, no, it says not superpolynomial. It&#8217;s actually darn near the end time that you need.</p><p><strong>Ryan Peterman:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=1149">19:09</a>] Right. And so do you think that hypothesis is true? And why or why not?</p><p><strong>Ryan Williams:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=1155">19:15</a>] I think I&#8217;m on the record as not believing this hypothesis. Yeah, yeah. Why don&#8217;t I believe this hypothesis? Well, I started thinking about this hypothesis maybe already as an undergrad, but certainly starting in grad school. Early in grad school, I was thinking about this. So before it was even called SETH, I guess that shows how old I am, I was trying to think about how to solve this so-called CNF-SAT problem faster than 2^n.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=1192">19:52</a>] And well, at the time there were a number of other NP-complete problems that had faster algorithms, like <a href="https://en.wikipedia.org/wiki/Subset_sum_problem">Subset Sum</a>. So I thought, well, there&#8217;s not, I mean, what&#8217;s so special about SAT? If all these other problems have faster algorithms, why not SAT as well? If you restrict to the 3-SAT problem, this is where you have an AND of these clauses. Each clause is an OR of three variables.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=1230">20:30</a>] Some of the variables may be negated. You want to know if there&#8217;s a way to set all the variables to make all the clauses simultaneously true. There is a faster algorithm for that, but this is a more general version of SAT. So at first I just thought, well, there&#8217;s no good reason to think in a lower bound. These other related problems have upper bounds, so why not? But then over time I would have different attacks on SETH, like trying to refute it, always trying to refute it in different ways. These attacks would fail in some completely catastrophic and ridiculous way.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=1273">21:13</a>] They would have no chance of actually solving the original problem. But by sort of staring at my failure and trying to think, well, there&#8217;s something interesting happening here. What can I do with this? There&#8217;s something interesting, yeah, it doesn&#8217;t refute the Strong Exponential Time Hypothesis thing. What does it do? So by trying to pivot and figure out, okay, what can I do with my failure, I was able to solve a variety of other problems instead.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=1307">21:47</a>] And so after a while, I realized that the truth value of SETH to me is almost irrelevant because if I believe that it&#8217;s false, then I get good ideas. I get good ideas. And so by trying to think about, okay, what would an algorithm that breaks 2-SAT look like? What could it look like? I sort of force myself to think in a different way. I have to discard other natural algorithmic possibilities because we know they won&#8217;t work, and I have to think in a different direction.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=1352">22:32</a>] And so because it kind of sends my brain in a different direction, sends me thinking a different way, it&#8217;s very useful for research. I mean, even though I still haven&#8217;t refuted it or whatever, it&#8217;s very useful for me to believe that it&#8217;s false operationally.</p><p><strong>Ryan Peterman:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=1375">22:55</a>] I believe this is a minority opinion, right? Why would they go against it?</p><p><strong>Ryan Williams:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=1379">22:59</a>] I mean, I think, for example, Russell Impagliazzo, a good friend of mine who helped propose this. I mean, he always emphasizes to me, well, this is a hypothesis. We explicitly did not name it a conjecture. We wanted to sort of put forth some lower bound that would get you to think about it, like something that&#8217;s maybe a little more controversial than the other types of things like P vs NP or whatever, or other things that people more normally believe.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=1414">23:34</a>] So, hypotheses which are at the edge of our understanding can be enlightening to think about, like where we truly don&#8217;t know what the answer might be based on our intuition. So this is, I guess, one reason why it was proposed. But one reason why you might believe that SETH is true is because believing it implies a lot of other lower bounds for you. Conveniently, because you can reduce the SAT problem to a bunch of other problems that seem totally unrelated, like edit distance, various pattern matching problems.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=1458">24:18</a>] They have natural polynomial-time solutions. If you can improve on the algorithms for any of those, you would improve the one for SAT as well. You would get something better than 2^N. So believing in it sort of makes a convenient worldview. It shows that all these different textbook algorithms are indeed optimal.</p><h3>24:38 &#8212; SAT problems and solvers</h3><p><strong>Ryan Peterman:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=1478">24:38</a>] We&#8217;ve talked about SAT, or we&#8217;ve mentioned SAT so many times in this conversation. I know there are so many forms of that problem. What are all the different forms? And I know there&#8217;s clause width, also this idea of depth, too.</p><p><strong>Ryan Williams:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=1491">24:51</a>] The most common representation of a SAT formula is a conjunctive normal form, so-called CNF representation. And this is what modern SAT solvers get as input. They get their file in so-called DIMACS CNF form. And this is just every line of my file. I give you a list of variables, possibly with negations, and each one is a clause. And I&#8217;m supposed to take the OR of those variables or negations. These are variables or negations.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=1530">25:30</a>] They&#8217;re often called literals. Okay? So I take an or of these literals, and the width of that clause is the number of literals in it, okay? And I&#8217;m supposed to take the and over all those lines, each line in my DIMACS CNF file. So it&#8217;s an and of a bunch of ors, and each or has some small number of literals in it, call it k. So usually the width is called k. And so the k-SAT problem is to find an assignment to all the variables that satisfies all the clauses.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=1569">26:09</a>] When each clause has width k or at most K, it could be smaller. So that&#8217;s the most popular version. That&#8217;s what SAT solvers churn on. And that&#8217;s what is behind SETH. That&#8217;s the representation there. But there are other ways to represent a Boolean formula. You could just simply represent it as some arbitrary expression made up of ors and ands and negations. It could just be some arbitrary expression with nested parentheses and all that mess.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=1611">26:51</a>] You could ask, given a formula in this representation with a bunch of variables, is there a way to set the variables to make this true? That&#8217;s Formula-SAT. You could also look at circuits of bounded depth, as you mentioned. So there is this class of circuits that people study called AC circuits for alternating circuits. It doesn&#8217;t mean alternation in terms of electricity; it means alternation in terms of ors and ands.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=1648">27:28</a>] So these circuits are made up of ORs and ANDs, in layers. So the CNF representation is a special case where I have an AND of ORs, like an AND of a bunch of clauses and ORs of the literals. But you can go further. You can have an AND of OR of ANDs of variables with negations and things like that. And so these are constant-depth AC circuits. And because the idea is you only have some constant number of layers of these ANDs and ORs.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=1685">28:05</a>] And you can look at the SAT problem on circuits like that as well. For example, those are two other versions that people look at.</p><p><strong>Ryan Peterman:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=1693">28:13</a>] Yeah, SETH is on k-SAT. And I saw on 2-SAT, 3-SAT, 4-SAT, 5-SAT, there exist solutions that are asymptotically better than 2 to the N. So I guess the larger K can be, the more difficult the problem.</p><p><strong>Ryan Williams:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=1713">28:33</a>] That&#8217;s the intuition. That is the intuition.</p><p><strong>Ryan Peterman:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=1716">28:36</a>] I&#8217;m curious, have you ever plotted that curve? Does it drop off exponentially, or...</p><p><strong>Ryan Williams:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=1721">28:41</a>] Yeah, yeah, yeah. That&#8217;s what&#8217;s so interesting about the current state of the art in k-SAT algorithms. As K increases, all of them, all of the different types of algorithms you might try to run, they all approach a 2 to the n exponent. Like as K grows and grows and grows, they get 1.99, 1.999, and so on. And yeah, it drops. In other words, it goes toward two pretty quickly, actually. So we understand how the exponent behaves pretty well for the known algorithms we have.</p><p><strong>Ryan Peterman:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=1764">29:24</a>] And then for something like 3-SAT, what is the intuition behind speeding up an exponential time search?</p><p><strong>Ryan Williams:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=1772">29:32</a>] Yeah, so for 3-SAT, let&#8217;s just look at a single clause. Okay. A clause that&#8217;s got three variables in it. Okay. We know that if we set all those three variables wrong, it&#8217;s going to be false. Okay. So we have to avoid one of those assignments. Okay, well that means that there are seven out of the eight possible assignments. So there&#8217;s three variables, 2 to the 3, eight possible assignments.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=1801">30:01</a>] Seven of them could be a satisfying assignment. They could be part of a satisfying assignment. We don&#8217;t know. But one of them is definitely not. So one easy way to see that 3-SAT can be solved in less than 2^n time is just take any clause, try one of the seven possible assignments and plug them in, and then recurse on the remaining formula. Now let&#8217;s think about what we did. If we were just trying all the possible 2^n assignments and we would like plug in one of eight possible assignments for each of those three variables.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=1843">30:43</a>] And so we&#8217;d have seven recursive calls. Well, instead, because we&#8217;re clever and we looked at the clause, we have seven recursive calls, and that&#8217;s the difference. So we reduced by three variables at the cost of seven recursive calls, as opposed to eight. And this gets you a slight improvement. This gets you about 1.92 to the N. Something slightly better than to the N. Okay, but you can do better than this.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=1877">31:17</a>] But this is sort of like the idea you try to look at ways to plug in variables that will force constraints so you can rule out a large portion of the possible assignments.</p><p><strong>Ryan Peterman:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=1890">31:30</a>] When I was thinking about circuits and the different widths and depths, I don&#8217;t know if this is an unusual question, but it reminds me of neural nets. But the operators are different and the space of the literals is different. So instead of booleans, it&#8217;s maybe floating points. And so it just made me wonder about the algorithms that you might apply on a neural net. Is there analogs between these two spaces?</p><p><strong>Ryan Williams:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=1921">32:01</a>] Yes, yes. If we look at, say I want to model a neural network, so I want to compute, say it&#8217;s still a Boolean function, but I want to do it with a neural network. So I want to use, let&#8217;s say ReLU or sign activation functions or what have you. There is a slightly more general gate that we can use instead of ORs and ANDs that turns out to basically be equivalent. So if instead of using ORs and ANDs, we use a so-called majority gate, which outputs one if and only if at least half of its inputs are one, using this and negations, we can actually simulate neural nets, like the usual types of neural nets that you think of with the usual types of activation functions.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=1983">33:03</a>] So if they have a constant number of layers of neurons, we can get a constant number of layers of majority gates and negations. So this is so-called TC circuits for threshold circuits.</p><p><strong>Ryan Peterman:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=1999">33:19</a>] Yeah.</p><p><strong>Ryan Williams:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=1999">33:19</a>] So once you allow threshold circuits, you can start to model neural networks still using Booleans. We&#8217;re still looking at Boolean inputs though. Yes. So once you allow your input space to be larger and have floating points, then you can prove a lot more in terms of lower bounds. You can find things that take depth 3 in the neural net that can&#8217;t be done in depth two and so on. So yeah, once you go past that and you start looking at just arbitrary real domain, it becomes a totally different picture from a discrete domain.</p><h3>34:51 &#8212; Hot takes on famous open questions</h3><p><strong>Ryan Peterman:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=2091">34:51</a>] One topic I thought might be fun to go over is you wrote this paper about the likelihoods of these various conjectures and complexity theory.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=2100">35:00</a>] And I pulled a few of these that were kind of minority opinions, or maybe less common takes. Curious to hear your rationale. Okay, one of them, the well-known one, P not equal to NP, or P vs NP, you assigned an 80% confidence that they&#8217;re not the same. Yes, and I think most people say much higher confidence. So why would you assign such a low confidence that they&#8217;re not the same?</p><p><strong>Ryan Williams:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=2132">35:32</a>] It&#8217;s interesting because I think I originally had something like 75%, but then my college classmate Scott Aronson was like, how dare you? Kind of. He sort of called me out. I&#8217;m like, okay, fine for you, 80% fine. I guess my point is that we really don&#8217;t understand polynomial-time computation as deeply as we think we do. And there are surprises, like all the time, in the power of algorithms. There are very few surprises in terms of lower bounds.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=2173">36:13</a>] When we are able to prove a lower bound, typically it&#8217;s something we very much expected to be true. But it was hard to prove. Somehow we pulled it off, we got what we expected to be true. But all the time in algorithms, people are finding algorithms where it&#8217;s just surprising. Just wait, what? How do you get something that fast? Right? So this just happens over and over.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=2207">36:47</a>] When I was younger, when I was first thinking about P versus NP, I had an intuition for what should be. And what I&#8217;ve understood over the years is that my intuition for what should be is often just wrong. And I&#8217;m having to revise my intuitions all the time. So when something like this happens often enough, you start asking yourself, what do I really understand? Do I really understand P versus NP?</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=2246">37:26</a>] I mean, I understand that the statement, right? It&#8217;s just one of those problems where somehow it is not so difficult to make formal, to write down mathematically, but to actually know what the answer is is just orders of magnitude more difficult than it is to phrase the problem. And complexity theory in particular is littered with statements like this, where the space of algorithms is just that vast.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=2281">38:01</a>] So if you just keep getting surprised over time, you&#8217;re like, well, what do I understand? Maybe it was just misplaced confidence.</p><p><strong>Ryan Peterman:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=2290">38:10</a>] Okay, what about this one? So EXP not equal to NEXP. Or would you say NEXP?</p><p><strong>Ryan Williams:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=2296">38:16</a>] Oh, NEXP. Yeah, X versus NEXP. So this is like the exponential time of P versus NP for EXP not equal to NEXP.</p><p><strong>Ryan Peterman:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=2302">38:22</a>] Or NEXP, you gave it a 45% chance. And if this is the P vs NP equivalent, but for exponential time, why is it so low?</p><p><strong>Ryan Williams:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=2319">38:39</a>] Oh, because exponential time algorithms are even more powerful. Did I really say 45%? I mean for NEXP versus EXP or NEXP versus coNEXP?</p><p><strong>Ryan Peterman:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=2329">38:49</a>] Yeah, NEXP not equal to EXP, 45%. It&#8217;s in this table.</p><p><strong>Ryan Williams:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=2335">38:55</a>] So in other words, I believe NEXP equals EXP more than I believe they&#8217;re different. Right? So, yeah, let me try to explain why. So you can think of the NEXP vs. EXP question as some special case of P vs. NP where instead of looking at the arbitrary SAT problem, I&#8217;m looking at a SAT problem which is extremely compressible. So there&#8217;s a really small little computer that is exponentially smaller than the length of the instance, and it just outputs the character on the line number and the column number for the DIMACS CNF, like the CNF file.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=2384">39:44</a>] Okay? So it&#8217;s like an extreme compression of some file. So it&#8217;s like you zipped it down to something like exponentially smaller than its original length. Okay, so it&#8217;s like some super compressed, extremely highly regular SAT instance. So I give you that and I ask you, when you unpack this thing, decompress it, is the result going to be satisfiable or not? And I want you to solve this in time polynomial in the decompressed representation.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=2420">40:20</a>] Okay. So the point is that this is SAT, but in some very special case where the thing is extremely structured. So the idea, one conjecture for why SAT solvers work in practice, like one, I mean, this is, I mean, conjecture may be overkill because, I mean, this is just. This is not even a well-formed mathematical statement. So one hypothesis for why SAT solvers work in practice is because the real world is highly structured.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=2458">40:58</a>] The real world is governed by physical laws that are not random, they&#8217;re not arbitrary. From a very small number of rules, we can recreate so much of science. So what arises in practice from designs of hardware and things like this are often extremely compressible. They have to be extremely compressible. And so maybe it&#8217;s true that every sentence which has a highly compact representation can just be solved efficiently.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=2495">41:35</a>] This is the idea of whether in P vs NP that when it&#8217;s really, really structured like that and super compressible, there is some advantage. It&#8217;s not like something completely random. And since it&#8217;s not like something arbitrary, it&#8217;s, in fact, very, very special.</p><p><strong>Ryan Peterman:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=2511">41:51</a>] The other one is 80% likelihood on NEXP equal to coNEXP. And you wrote, &#8220;Why would a self-respecting complexity theorist do that?&#8221; Yeah, I was curious why that&#8217;s such a contentious statement.</p><p><strong>Ryan Williams:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=2528">42:08</a>] So NEXP versus coNEXP. Let&#8217;s first talk about NP versus coNP. So coNP is like the class of complements of NP-complete problems like UNSAT, like checking whether something is UNSAT. Now from the time-complexity point of view, there&#8217;s no difference between checking SAT and UNSAT. You can always flip the answer from the complexity point of view. If I ask you, does coNP equal NP? What I&#8217;m asking you is could you prove to me that a formula is unsatisfiable with a short proof when it&#8217;s satisfiable?</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=2570">42:50</a>] I can give you a short proof. I can just give you the satisfying assignment, you plug it in, check that it works. But if it&#8217;s unsatisfiable, if no assignment works, we&#8217;re saying for all assignments the formula is not true. Can you flip that to an existential statement and say, oh, there exists this little proof that makes it work? So people don&#8217;t believe that NP is equal to coNP, and in fact NP different from coNP implies P different from NP.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=2601">43:21</a>] But so this is the exponential time version of P vs NP. So it&#8217;s coNEXP versus NEXP. The reason why I think these are likely to be equal is that if a little birdie sat on a NEXP machine&#8217;s shoulder and gave it a little bit of advice about what the coNEXP thing is doing, then the NEXP algorithm can actually solve coNEXP problems. And so let me explain, let me explain why. What&#8217;s the little birdie?</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=2642">44:02</a>] What the heck is the little birdie saying? So because NEXP problems can run in 2 to the n time and 2 to the n squared time and things like that, running an exhaustive search over all possible inputs of length n is no problem for NEXP. So what a little birdie can do is say, okay, suppose I want to verify that this particular instance, let&#8217;s say we can talk about an UNSAT, but some compressible UNSAT problem or something.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=2678">44:38</a>] Suppose I want to prove that this compressible UNSAT instance is a yes. Okay, how am I going to do that? With NEXP, the little birdie will tell me the total number of inputs of length N which are a yes. Okay, so it will just tell me some string which says, &#8220;Here&#8217;s the total number of inputs of length N. You gave me a length-N input. Here&#8217;s the total number of inputs of length N that are a yes.&#8221;</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=2709">45:09</a>] Okay. So this advice, this little bird&#8217;s advice doesn&#8217;t take very much to encode account. It&#8217;s like order in bits to encode a count of things. So what does the NEXP thing do to prove a coNEXP thing? What it does is it guesses the things which are a no. So I&#8217;m trying to prove UNSAT. So UNSAT means yes, SAT means no. So the NEXP thing guesses those things which are no.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=2745">45:45</a>] The no things it can answer, right? If it&#8217;s a SAT thing, it can just guess the answer to each of the no&#8217;s. Okay, so it guesses the answer to each of the no&#8217;s, it verifies all those answers, and then it checks the number of things it guessed is what the birdie told it. Once it&#8217;s done that, all the no&#8217;s have been covered, so everything else must be a yes. So it can actually prove a yes by just exhaustively finding all the no&#8217;s and ruling out any other no&#8217;s.</p><p><strong>Ryan Peterman:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=2781">46:21</a>] But the big question in my mind is, where do you get the little birdie?</p><p><strong>Ryan Williams:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=2784">46:24</a>] Where do you get the little birdie advice from? Yeah, yeah. So, yeah, so this I&#8217;ve studied. Yeah, this is what the little birdie gives you. And it seems to me that it&#8217;s possible that this little birdie itself can be constructed in NEXP. And if so, then we&#8217;d just be done. In NEXP, you figure out what the little birdie would tell you and then use that to just flip the answer. So, I guess let&#8217;s sort of guess all the things which are no.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=2815">46:55</a>] So what remains must be a yes.</p><h3>46:57 &#8212; Simulating space with time</h3><p><strong>Ryan Peterman:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=2817">46:57</a>] And we talked a lot about time complexity, and you mentioned a little bit this advice, I guess, kind of space complexity. And I know you had a major result relating space and time complexity. You&#8217;re basically simulating time complexity with space complexity, but lower than it&#8217;s been done prior. Could you explain what it was before your breakthrough result and then maybe the intuition behind your breakthrough result?</p><p><strong>Ryan Williams:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=2845">47:25</a>] In general, the problem is the following. I give you an algorithm that runs in time T, and I want to know, is there another algorithm that uses space much less than T, uses an amount of memory much less than T, and still solves the problem completely, still completely simulates the thing perfectly. One intuition for why you might think this question just can&#8217;t be solved.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=2881">48:01</a>] For some problems, there&#8217;s just no way to improve on the space. If you think of a lot of problems in dynamic programming, let&#8217;s say I have some logic circuit that I want to evaluate, and all the gates are provided to me in a row, and all the wires sort of flow from left to right, and I start with information on the left. I want to compute the information on the far right, and all the bits are flowing left to right by wires.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=2916">48:36</a>] The natural way to evaluate such a circuit is you start with, say, the inputs on the left. For each gate in turn in the line, you look at its inputs. Its inputs have been determined. There are some bits. You use that to compute the value of that gate. You pass the values of the output of that gate forward. But if that circuit has T gates in it, it will take about T time to solve, but it will definitely also take about T space in general.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=2950">49:10</a>] Right? Like the circuit could be wired up in some wild way, and there just might not be a way to save space for an arbitrary circuit. But already in 1975, people were studying this kind of question and finding counterintuitive answers to it. So Hopcroft, Paul, and Valiant, based on work of Paterson and Valiant, showed that time T algorithms, at least in this so-called multi-tape Turing machine model, a very powerful model, can be simulated in space t divided by log of t.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=2994">49:54</a>] It&#8217;s like you get some space savings, but it&#8217;s only a log T factor. Okay. And the way this is done is quite counterintuitive. Even though there&#8217;s only a log factor, it was pretty shocking that development was extended to random access models of computation later and more general models of computation. So, in the late 70s and early 80s, it was known for pretty much any reasonable model of computation that time T can be simulated in space about T over log T.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=3042">50:42</a>] But there was a hidden, maybe not so hidden, gotcha. In the space-efficient simulation, it needs an exponential amount of time to run. So there&#8217;s a time-space tradeoff. Okay. If you really want to save some space, you got to blow up the time by a lot. Nevertheless, yeah, it was kind of commonly conjectured that this T over log T space was about the best you could do and that you were probably not going to get T to the 0.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=3077">51:17</a>] 9 space or something much more efficient. So, yeah, it was a big surprise to me that you can actually put time T in space about square root of T. Again, there&#8217;s an exponential running time just to give the full caveat out there. But it&#8217;s still very surprising. This holds for any kind of time T algorithm, including something that might be outputting something pseudorandom, something from cryptography.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=3120">52:00</a>] It&#8217;s not at all obvious that every such process could be compressed to only need square root of t space and still get the job done, still compute whatever function was being computed.</p><p><strong>Ryan Peterman:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=3133">52:13</a>] I mean, I know it&#8217;s probably super involved, but if you could just, at a high level, what&#8217;s the trick? How&#8217;d you do it?</p><p><strong>Ryan Williams:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=3139">52:19</a>] Well, the trick for me was to read James Cook and Ian Mertz&#8217;s paper on tree evaluation very, very carefully, and just know the landscape around P versus PSPACE and know what Hopcroft, Paul, and Valiant did. Yeah. But I can give you a very high-level idea of kind of what&#8217;s going on and how what they did is useful. So Hopcroft, Paul, and Valiant, the way they were modeling space-bounding computation was in a particular way that seemed pretty general at the time, but turned out to be restrictive in ways that we just didn&#8217;t anticipate.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=3190">53:10</a>] So the way they thought of it was I&#8217;m gonna take certain, I&#8217;m gonna break the computation up in little pieces, and I&#8217;m gonna write pieces of the computation, little bits, into the memory, but I&#8217;m only gonna do that over blank space. I mean, this is something that sounds natural, right? So I&#8217;m gonna erase pieces of memory and then I&#8217;m going to overwrite that blank space with a piece of memory.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=3223">53:43</a>] So I&#8217;m being very destructive in a certain sense. But this is a natural thing you do, right? If you want to replace, swap something with something else, you often just erase. But there are ways to swap without erasing, right? So there&#8217;s a common little trick that is taught in CS courses. So if you require everything to be written into a blank register, then if you want to swap the contents of two variables like X and Y, then you&#8217;ve got to have a temporary register.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=3263">54:23</a>] You move one into the temp, you erase it, you move Y into there, and so on. Right. But if you don&#8217;t want a temp, you can achieve the same thing with just XORing the registers bitwise, or if you&#8217;ve got numbers, you can add and subtract. Okay. In three instructions, clever instructions, adding, subtracting, or XORing, you can actually swap the contents of two registers without needing a third. Okay.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=3294">54:54</a>] This is kind of the starting point for thinking about, well, why does it matter if you&#8217;re always writing into erased memory? So what James Cook and Ian Mertz showed at a very high level was they were studying a certain problem called Tree Evaluation Problem, whatever that is. And the problem had an algorithm where you had a little stack and you were always sort of popping and pushing on the stack, but you were always writing computation contents into erased memory.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=3342">55:42</a>] Okay. What they realized was that if you allow computations to XOR bits of memory into existing memory, then you can save a lot of space. So if you&#8217;re really, really careful about how you XOR things, you can basically recover what&#8217;s in your memory without storing all of it at once. You sort of offload things to computation, and you XOR on top of things very, very cleverly. You can get nice cancellations of things you don&#8217;t want and keep around things you do want.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=3378">56:18</a>] Yeah. So that is a high-level idea of how this stuff works.</p><p><strong>Ryan Peterman:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=3384">56:24</a>] And then going to square root, is it just an extension of that, or is it completely different?</p><p><strong>Ryan Williams:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=3389">56:29</a>] So the way it works with square root is square root just happens to be kind of like the optimal tradeoff in this Tree Evaluation Problem business. So what you do is you break the computation into square root of t time intervals. And each time interval has about square root of t steps in it. And what you do is you give a particular way of simulating this thing so that you&#8217;re only kind of holding about a constant number of blocks of these time intervals in memory at any point in time.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=3429">57:09</a>] Like you&#8217;re only holding a small number of these time intervals, records of time intervals, in memory at any point in time, which is entirely not obvious how you would do it, but it&#8217;s some sort of sweet spot to set the square root of T. It&#8217;s like the minimum setting of tradeoff. Say I want to break the computation into intervals, and the intervals have a certain number of steps. If I set it to be square root of T, then the number of intervals and the number of steps in each interval is about the same.</p><p><strong>Ryan Peterman:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=3464">57:44</a>] So I mean, that was a long-held result. I mean, you mentioned it was 1975, that&#8217;s maybe almost 50 years. If you come up with something like that, and I guess you&#8217;re writing it out, you&#8217;re thinking through, and then you see it, what is that moment like?</p><p><strong>Ryan Williams:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=3480">58:00</a>] So I&#8217;ve been around long enough to have been deceived by myself many, many times. So, yeah, I guess the first two or three times I thought about this, I just thought, this is another one of those ideas that can&#8217;t possibly work. There&#8217;s no way. There&#8217;s just no way this works. So I would just kind of leave it and then come back to it sometimes when I was bored of whatever else I was working on.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=3515">58:35</a>] It was a pretty slow process of convincing myself that this could possibly be true. I thought there was either a bug in what James and Ian was doing somewhere, or there was a bug in my interpretation of what&#8217;s happening. I thought there had to be a mistake for a long time. And the only way I got over that was just writing it down over and over and over in different ways, sort of writing and rewriting and writing and rewriting and adding more detail and then maybe finding a different way of explaining it and erasing and writing something shorter and just sort of re.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=3563">59:23</a>] Explaining it to myself over and over and over. And even then, when I submitted it to the STOC conference where it appeared, I wasn&#8217;t entirely confident that it was correct. I was just exhausted from thinking about it for so long and just thought, maybe someone else will find the mistake for me. I got at this point, I was just desperate.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=3589">59:49</a>] I had actually sent it to two colleagues that I trust privately and asked them, &#8220;Can you help me find the mistake? Or whatever? Can you help me understand this?&#8221; And one of them just said, basically, they just didn&#8217;t read past the abstract. They&#8217;re like, &#8220;I&#8217;m not. I&#8217;m sorry, I&#8217;m not going to.&#8221; I&#8217;m like, they just didn&#8217;t believe it, period. Just like me. I mean, they didn&#8217;t believe it.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=3617">01:00:17</a>] And another one said, after a long time, &#8220;Well, I didn&#8217;t quite follow it, but there was a footnote that you put, like, in the bottom of some page. After that, after that footnote, then I began to believe it.&#8221;</p><p>So then what I did was I just took that footnote and elaborated it in a later revision, sort of made it what I called the warmup, because I was like, yeah, I&#8217;ve got to do. I&#8217;ve got to write this thing in a way that is airtight so that other people will actually believe this.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=3656">01:00:56</a>] Because, yeah, it took me a long time to get used to it, to believe it. Yeah.</p><h3>01:01:02 &#8212; Why he solves hard problems</h3><p><strong>Ryan Peterman:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=3662">01:01:02</a>] Wow. What motivates you to solve these hard problems? I mean, what keeps you driven? Because you kind of sound like you gotta just bash your head against the wall, and maybe you get there, maybe you don&#8217;t.</p><p><strong>Ryan Williams:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=3680">01:01:20</a>] I try not to bash my head against the wall. And if I&#8217;m going to do it, it&#8217;s gonna be a comfortable wall. It&#8217;s gonna be one that&#8217;s high-end and luxurious or something. I&#8217;m gonna enjoy the process, is what I mean. If I don&#8217;t enjoy the process of really grinding and trying to understand something, I&#8217;m not going to do it. So I think, if anything, one thing that I like, I like to involve myself in working on problems where the grind is actually joyous and fun.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=3727">01:02:07</a>] Yeah. For the other things, they&#8217;re just mainly opportunistic. They&#8217;re mainly me just taking something new that I see and fully integrating it with everything I know and following everything to the logical conclusion and just seeing what happens. And not trying to get emotional, trying not to whatever, just trying to follow everything one step after another. Yeah.</p><h3>01:02:35 &#8212; How to pick good research direction</h3><p><strong>Ryan Peterman:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=3755">01:02:35</a>] How do you pick a good research direction?</p><p><strong>Ryan Williams:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=3757">01:02:37</a>] The best kind of research direction, which is very hard to come across, is a direction where you&#8217;ve set yourself up in a way that you can&#8217;t lose. I have a hypothesis H, and one of two things is going to happen. Either I prove H is true, or I refute H, prove not H. What I would like to have is a situation where if H is true, then good things happen. If not H is true, good things still happen.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=3796">01:03:16</a>] Other good things. I like to look at things where H. Yeah, it&#8217;s a win-win kind of. If you can find opportunities like this, this is important. I think often I&#8217;m not looking at a specific problem, I&#8217;m looking at a method. I&#8217;m looking at the technique. I&#8217;m looking at not the specific proof, but the space of ideas. And I&#8217;m trying to understand what else can be done in this space of ideas.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=3834">01:03:54</a>] So often I solve problems just by taking some idea and putting it somewhere else.</p><p><strong>Ryan Peterman:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=3839">01:03:59</a>] Do you have a concrete example of where you&#8217;ve pursued something knowing that if you succeed, good. If you succeed in the other direction, also good.</p><p><strong>Ryan Williams:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=3849">01:04:09</a>] I have some particular research program for which, if it materializes, would actually show that something called the orthogonal vectors problem can be solved in nearly linear time. Okay. Now, if that&#8217;s true, then the SAT problem can be solved in about the same time as <a href="https://en.wikipedia.org/wiki/Subset_sum_problem">Subset Sum</a>. It could be solved in like square root of 2 to the N. So this would truly break SETH in a radical way.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=3883">01:04:43</a>] Okay. And I did a lot of work in the past showing how if you can improve on the running time of SAT, then you can somehow use that to prove circuit complexity lower bounds. You can take an algorithm for analyzing circuits that&#8217;s nontrivial and interesting and turn that into a limitation on what those circuits can compute. Okay, so this hypothesis, maybe I won&#8217;t exactly say what it is, it&#8217;s a pretty technical statement, but the point is that if the hypothesis is true, then I get this fantastic algorithm for this orthogonal vectors problem.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=3934">01:05:34</a>] I get this algorithm for SAT, I get circuit complexity lower bounds. From that I get to somehow prove limitations on what circuits can do if the hypothesis is false. I can use that hypothesis to actually show another circuit complexity lower bound of a different flavor. So regardless of whether or not the hypothesis is true or false, I&#8217;m going to make progress in complexity theory. I&#8217;m going to prove a new limitation one way or the other.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=3964">01:06:04</a>] Right. So sometimes, I mean, this can be difficult to do, but usually what has happened instead of something so clean is that I have, I read about some idea or whatever, I try to apply the idea, I read about some magical algorithm, I try to apply the magical algorithm to solve something like SAT. It doesn&#8217;t work, but I look at my approach, I stare really hard at it, I try to pivot, I try to just extract what I can, and then I get some other type of algorithm.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=4001">01:06:41</a>] I mean, this is essentially how I proved the circuit complexity lower bounds that first got me a job at <a href="https://en.wikipedia.org/wiki/Stanford_University">Stanford</a> was I was trying to solve SAT faster with some algorithm. It didn&#8217;t work, but then I realized that that algorithm worked for a large class of circuits, including ones we didn&#8217;t know lower bounds for. So then I used that to prove a lower bound. Yeah. So I mean, this is just a general principle that I&#8217;ve had.</p><h3>01:07:14 &#8212; Technical book recommendations</h3><p><strong>Ryan Peterman:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=4034">01:07:14</a>] What would be your book recommendation if someone wants to learn more about complexity theory?</p><p><strong>Ryan Williams:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=4039">01:07:19</a>] Yeah, so it sort of depends on how deep you want to go. There&#8217;s Avi&#8217;s book. Yeah, Avi&#8217;s book is really nice. If you&#8217;re looking for something a little more gentle of an introduction, I would say you could read the early chapters of Lance Fortnow&#8217;s The Golden Ticket, trying to imagine what a world would be like if P equaled NP. I like that imagination exercise that Lance did. On a more technical level, if you&#8217;re looking for something slightly more technical, you could look at The Nature of Computation by Mertens and Moore, I think.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=4085">01:08:05</a>] So this is still not very technical, but it is a textbook, right? Yeah. And then, of course, Sipser&#8217;s Introduction to the Theory of Computation is a fairly concise and very well-written textbook. Yeah.</p><h3>01:08:31 &#8212; Advice for his younger self</h3><p><strong>Ryan Peterman:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=4111">01:08:31</a>] Last question for you is, if you could go back to the beginning of your career, knowing what you know now, what advice would you give yourself?</p><p><strong>Ryan Williams:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=4118">01:08:38</a>] So I guess one thing that I did by accident, which I think people should keep in mind, is that you don&#8217;t need permission to work on very tough problems. In fact, the tougher the problem, like in complexity theory, there are all these problems where nobody has a very good clue of what to do beyond a few simple structural results. So that kind of levels the playing field a bit.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=4155">01:09:15</a>] And yeah, you just, you don&#8217;t need permission to think about these problems. You don&#8217;t need anybody&#8217;s say-so or whatever. I mean, that&#8217;s one thing that I would like younger people to keep in mind, that this knowledge is open to the world and it&#8217;s open to you. And you can just go learn it and think about it. And yeah, you don&#8217;t need anybody&#8217;s permission, especially not mine.</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=4183">01:09:43</a>] Yeah. Another thing I think is to avoid inertia in the sense that if you don&#8217;t think about and reflect, where am I going and what am I doing? You can just end up coasting in a certain direction. And I think it&#8217;s important for people to sit down and truly reflect and think from time to time. Okay, if I keep going in this direction, is this going to lead to a place that I want to be?</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=4227">01:10:27</a>] And this sort of advice is good for all aspects of life, really. If I keep just allowing things to be the way they are, am I going to be okay with that, or do I need to do something? Do I need to? So it&#8217;s like little interrupts in your life and reflection, just sort of like, okay, do I need to be coasting here? I think in research for me, I was always reevaluating, like, okay, what did I do last year and what did I do the year before, and could, you know, like, what do I know now that I didn&#8217;t know then?</p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=4271">01:11:11</a>] And, am I progressing? I think that sort of self-evaluation is crucial when you&#8217;re in grad school because once you&#8217;re in a PhD program, there are no more easy metrics to gauge how good or bad you are doing. And the truth is, there just isn&#8217;t such a metric. So all you can really do is evaluate your past self with your present self and compare and contrast to see if you&#8217;re making progress with whatever it is you want to do.</p><p><strong>Ryan Peterman:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=4309">01:11:49</a>] Thank you so much for your time, Professor Williams. I really appreciate it.</p><p><strong>Ryan Williams:</strong></p><p>[<a href="https://youtu.be/AaK1SL2i_4Y?t=4312">01:11:52</a>] Yeah, I appreciate you having me here. It&#8217;s been fun. Thanks.</p>]]></content:encoded></item><item><title><![CDATA[OpenAI Eng & Dev Tools Founder: How Software Engineering Is Changing | Charlie Marsh]]></title><description><![CDATA[Charlie Marsh is the founder of Astral, the Python devtool startup that was acquired by OpenAI.]]></description><link>https://www.developing.dev/p/openai-eng-and-dev-tools-founder</link><guid isPermaLink="false">https://www.developing.dev/p/openai-eng-and-dev-tools-founder</guid><dc:creator><![CDATA[Ryan Peterman]]></dc:creator><pubDate>Mon, 22 Jun 2026 09:45:53 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/202600605/41fef54af4ad60bddd4b4230904b23dc.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p><a href="https://www.linkedin.com/in/marshcharles/">Charlie Marsh</a> is the founder of Astral, the Python devtool startup that was acquired by OpenAI. I inteviewed him about how software engineering is changing and learnings from starting his own company as an engineer.</p><p>Check out the episode wherever you get your podcasts: <a href="https://youtu.be/Iw65FD4MGgs">YouTube</a>, <a href="https://open.spotify.com/episode/2sfielYIDcNO6HpeLdnooM?si=IoRXB5JsRjuP-2_q8NarLg">Spotify</a>, <a href="https://podcasts.apple.com/us/podcast/the-peterman-pod/id1777363835">Apple Podcasts</a>.</p><div id="youtube2-Iw65FD4MGgs" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;Iw65FD4MGgs&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/Iw65FD4MGgs?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h1>Timestamps</h1><p><a href="https://www.developing.dev/i/202600605/0040-origin-story">00:40 - Origin story</a></p><p><a href="https://www.developing.dev/i/202600605/0604-the-front-page-of-hacker-news">06:04 - The front page of Hacker News</a></p><p><a href="https://www.developing.dev/i/202600605/1435-why-he-chose-rust">14:35 - Why he chose Rust</a></p><p><a href="https://www.developing.dev/i/202600605/2010-full-codebase-migration-from-zig-to-rust">20:10 - Full codebase migration from Zig to Rust</a></p><p><a href="https://www.developing.dev/i/202600605/2840-llm-generated-code-and-open-source">28:40 - LLM generated code and open source</a></p><p><a href="https://www.developing.dev/i/202600605/3534-performance-optimizations">35:34 - Performance optimizations</a></p><p><a href="https://www.developing.dev/i/202600605/4454-optimization-with-ai-and-combating-slop">44:54 - Optimization with AI and combating slop</a></p><p><a href="https://www.developing.dev/i/202600605/010208-learnings-as-an-eng-starting-a-company">01:02:08 - Learnings as an eng starting a company</a></p><p><a href="https://www.developing.dev/i/202600605/011755-top-technical-talk-recommendation">01:17:55 - Top technical talk recommendation</a></p><p><a href="https://www.developing.dev/i/202600605/011856-advice-for-his-younger-self">01:18:56 - Advice for his younger self</a></p><h1>Transcript</h1><h3>00:40 &#8212; Origin story</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=40">00:40</a>] What was the space like when you were first getting into building these dev tools? Why did you think it could be better?</p><p><strong>Charlie:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=51">00:51</a>] Before I started Astral, I was at a computational biology company, and I was the second engineer. I had no bio background and no ML background, and so I was building all the software systems to do machine learning, and that was all <a href="https://en.wikipedia.org/wiki/OpenAI">Python</a>. So I was learning <a href="https://en.wikipedia.org/wiki/OpenAI">Python</a>. Then we had some Go and some Rust, and so I just worked across lots of different ecosystems. And I think <a href="https://en.wikipedia.org/wiki/OpenAI">Python</a>, at the time when I was in that position, we were trying to do a lot as a small team.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=82">01:22</a>] So we had a very, I mean, not compared to large code bases, but we had a comparatively large code base. And it was really a small group of us that were software engineers trying to serve the rest of the team, whether they were machine learning researchers or scientists. So I had kind of worked across a bunch of different ecosystems, seen a lot of the tooling, and now I was working on <a href="https://en.wikipedia.org/wiki/OpenAI">Python</a>, and we kept trying to get lots of leverage out of the tools, whether it was the type checker or the linter or the package manager. Things were scaling up.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=110">01:50</a>] We were a small team. We wanted to have really good static analysis, really good tooling, and we kept running into limitations around it. I mean, I think there were some. I kind of looked at the <a href="https://en.wikipedia.org/wiki/OpenAI">Python</a> ecosystem, and I just didn&#8217;t see the same amount of experimentation that I saw in other ecosystems, like in the web ecosystem. There were a lot of things going on that seemed pretty crazy, and there was a very intense focus on.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=139">02:19</a>] I don&#8217;t know about very intense, but there was more of a focus on performance. And that started with esbuild, which was in Go, and then you had SWC and Rust and then Bun and Deno and all these other tools that came around. And this idea that you could have native tooling for <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a> became very accepted, especially as applications became bigger and people were doing more and more stuff on their machine.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=167">02:47</a>] And that wasn&#8217;t really happening in <a href="https://en.wikipedia.org/wiki/OpenAI">Python</a>. And so that, to me, was kind of like the key question, was like, why can&#8217;t we have that? Because I was seeing all this stuff that was happening in web, and I had done some Rust, I&#8217;d done some Go. I&#8217;d seen these different tool chains and how they work, what the experience is, the user experience mostly in those cases. And then I saw <a href="https://en.wikipedia.org/wiki/OpenAI">Python</a>, and it was like we had a smaller set of tools.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=193">03:13</a>] There were lots of interesting ideas from other ecosystems that I didn&#8217;t see represented. They were really all written in <a href="https://en.wikipedia.org/wiki/OpenAI">Python</a>. And so that to me was kind of like the interesting question. And it was sort of like the first thing I asked when I started working on this, when I released Ruff. The title of the blog post was something like, &#8220;<a href="https://en.wikipedia.org/wiki/OpenAI">Python</a> tooling could be much, much faster.&#8221; And for me it was really like, this is a hypothesis.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=222">03:42</a>] Could <a href="https://en.wikipedia.org/wiki/OpenAI">Python</a> tooling be much faster? And then I built a prototype, and that prototype was like, yes, I think it could be.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=229">03:49</a>] You wrote a post kind of exploring mypy or publishing your results using mypy. And the date on that, nine days later, you published the post. That one that you mentioned, it could be so much faster.</p><p><strong>Charlie:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=243">04:03</a>] No, that&#8217;s funny, I didn&#8217;t even realize that. Yeah, those were so close together.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=246">04:06</a>] Did you build that proof of concept in those nine days?</p><p><strong>Charlie:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=250">04:10</a>] Yeah, I wrote that blog post about basically type checking at scale because I was trying to think of what are things that I learned that people haven&#8217;t written much about. And then I started with building a linter because I thought it would be much easier. I think it actually is a lot easier than building a type checker. We&#8217;re now building a type checker and we have a type checker. And so I can say that I think building a type checker is much harder.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=275">04:35</a>] But I started with a linter because I thought it would let me prove a lot of the same ideas, but in a smaller form factor, like building a startup or just building a tool. You want to try to get something into people&#8217;s hands that they can actually use and that actually proves out value as quickly as possible. And also that lets you iterate very quickly. And a linter weirdly ended up being kind of the perfect form factor for it because it has a pretty simple core.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=307">05:07</a>] But then you have tons and tons of rules. And so it&#8217;s extensible in a lot of different ways. But people can get value very quickly from a small core plus some number of rules. And so we were able to get something out there and then iterate and ship more rules and more functionality, and people could use it alongside other tools. It was useful immediately, which I think is extremely helpful. As opposed to something like.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=334">05:34</a>] I mean, actually, the type checker would be a good example. A type checker that&#8217;s like 75% done isn&#8217;t very useful. Same with the package manager. These things have to be. I mean, there are ways, I think I would challenge those as blanket statements. But the point is it&#8217;s harder to ship something iteratively that&#8217;s still useful to users. And I think that&#8217;s one of the key properties and actually building momentum as a tool or something else.</p><h3>06:04 &#8212; The front page of Hacker News</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=364">06:04</a>] When you posted that writing, what was the reception?</p><p><strong>Charlie:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=367">06:07</a>] I mean, the blog post itself, I published it and then it was on Hacker News and it got tweeted about a lot, and it just created some amount of excitement and interest around it. And those things, I mean, especially being on the front page of Hacker News, I have a lot of thoughts about. I mean, it&#8217;s certainly not. It&#8217;s like some percent luck and then some percent skill, and it is like a helpful thing but not a requisite to success.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=402">06:42</a>] And it also doesn&#8217;t guarantee success just because you got something on the front page of Hacker News. It&#8217;s great if you can, but there&#8217;s a lot of randomness to it. I do think, though, that maybe a couple things. So one, after that happened, some people started actually paying attention to the project. And so I really tried to capitalize on that, basically by being very engaged. And so when people would file issues, I would aggressively try to acknowledge the issue as quickly as possible, fix it, and ship a release.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=439">07:19</a>] If you can do that within one day, it&#8217;s a very, very powerful loop. You gain supporters and create more momentum around the project. And there were also a couple high-profile people in the ecosystem that started paying attention to the project, like Sebasti&#225;n Ram&#237;rez, who does <a href="https://en.wikipedia.org/wiki/FastAPI">FastAPI</a> and a bunch of other things. And he&#8217;s been a great supporter of our projects too.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=461">07:41</a>] But early on he was like, &#8220;Oh, this is interesting. I&#8217;d like to use it.&#8221; And I was like, I basically asked myself, well, what would it take for him to use it? And then I just tried to do all those things. So I tried to capitalize on that.</p><p>I think the other is, though, I do think a lot about developer marketing, and it&#8217;s sort of like a dirty word or like a dirty expression. I think a lot of engineers want technical products and tools to just win on their merits.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=493">08:13</a>] The best technical solution should just be the one that wins and grows. But I actually, I mean, I have this sort of stupid hypothesis that there&#8217;s all these, like, thousands of really amazing projects on <a href="https://en.wikipedia.org/wiki/GitHub">GitHub</a> that basically don&#8217;t know how to market themselves and so never get discovered and never go anywhere. And I don&#8217;t actually know if that&#8217;s true, but it&#8217;s sort of how I feel about a lot of technical work, where it&#8217;s like, it&#8217;s actually worth looking at a project like Ruff.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=524">08:44</a>] And when I think about what to put in the blog post, or this extends to what to put in the README or what to put in the. You don&#8217;t need a million emojis and a million screenshots of everything. What you need is, okay, someone&#8217;s going to land on this page and I have 10 seconds to get them interested in what I&#8217;m doing and help them understand why it might matter to them and why it&#8217;s useful. And so that&#8217;s the key idea that I try to bring basically to everything.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=557">09:17</a>] I mean, it&#8217;s a little bit depressing because it&#8217;s like, okay, I only have 10, but people really don&#8217;t have. This is the attention economy, right? It&#8217;s the same thing with a blog post. Ironically, I used to look at a lot of the <a href="https://en.wikipedia.org/wiki/OpenAI">OpenAI</a> blog posts when I was at Spring and we were doing machine learning in bio and we were trying to publish material to explain what we do. But we had all these interesting insights.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=584">09:44</a>] We looked at the <a href="https://en.wikipedia.org/wiki/OpenAI">OpenAI</a> blog posts, especially the DALL&#183;E ones, the older ones, and we were like, wow, that&#8217;s an amazing blog post. Because if you read none of the text, you still understand what they did and you&#8217;re still impressed by it. If someone just goes on the page, they leave with an impression and they have some understanding. And I was like, wow, that&#8217;s a really amazing thing. And so when I write blog posts now, I.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=607">10:07</a>] I&#8217;m like, if someone just lands on this page, I have to be prepared for the large number of people who will only read maybe the <a href="https://en.wikipedia.org/wiki/TL%3BDR">TL;DR</a>, maybe look at the first image, maybe read the headline. Some people will read the full thing. And so I should care painstakingly about every word and everything it says, but most people will read almost none of it. And so, again, sorry, it&#8217;s a little bit depressing, but I do think it&#8217;s worth thinking about your audience and how do you.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=633">10:33</a>] How do you explain to them why they should care about what you&#8217;re doing in a way that&#8217;s honest and genuine, not deceptive? But you do have to think hard about how do you communicate why something matters to people.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=646">10:46</a>] Very quickly, could you give an example of what you did in your case?</p><p><strong>Charlie:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=651">10:51</a>] I think for Ruff specifically, we had a really good graph of the benchmarks that we put in the blog post, and that went viral. It was on Twitter and that was a priceless graph, basically. Sorry, not in terms of monetary value. I just mean in terms of attention. Right. It was like, oh, that&#8217;s really obvious what&#8217;s happening there. I think graphs of benchmarks can be a really powerful thing.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=679">11:19</a>] All benchmarks are bad and wrong in some way. And so there&#8217;s a lot more to say about that. But I do think having a visual hook that explains to people why they should care and what something is, and having a really strong tagline. I would have to look back at what we had, but we were like, okay, we&#8217;re going to be compatible with your existing stuff and much faster.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=704">11:44</a>] And that&#8217;s kind of it. And it&#8217;s like, okay, well, if it&#8217;s compatible and it&#8217;s much faster, I was like, why should you care? It can be orders of magnitude faster and it&#8217;ll give you the same experience. You try to convey that as quickly as possible.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=718">11:58</a>] Right. And even the, I mean, that blog post header, I mean, <a href="https://en.wikipedia.org/wiki/OpenAI">Python</a> tooling could be much faster. Should be much faster.</p><p><strong>Charlie:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=727">12:07</a>] It&#8217;s a little bit provocative, I guess. Yeah. I mean, I&#8217;m pretty against clickbait or trying to be misleading in anything that we do. You basically want to balance creating, effectively communicating the most interesting pieces to people, but you have to do it in a way that you believe is true and authentic. You could lie about a bunch of stuff and post interesting things that are clearly provocative.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=758">12:38</a>] But I don&#8217;t know, to me, that&#8217;s just. Why would I ever do that? That&#8217;s such a losing battle.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=764">12:44</a>] What do you think about that graph? I don&#8217;t know if the... I see this a lot, though, where the axis is not zeroed.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=773">12:53</a>] So it&#8217;s all within the range of 50 to 60 chart crimes.</p><p><strong>Charlie:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=778">12:58</a>] Yeah, I wouldn&#8217;t do that. Yeah, yeah. I do think benchmarks are pretty complicated and controversial, though, and maybe most people don&#8217;t even see this controversy. But I do, because it&#8217;s just very hard. Performance is very nuanced, and you have to think about, okay, with caching or without caching. Those are pretty different. Or depending on the project that you&#8217;re running on, the performance characteristics will be totally different.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=816">13:36</a>] And we see this in uv. This is really hard because sometimes uv is really fast, but sometimes your package install is actually bottlenecked on a C build that&#8217;s totally out of band, and it&#8217;s like, okay, well, so how do you accurately capture all of the different scenarios? I mean, it&#8217;s sort of impossible to accurately capture all of the different scenarios, but it&#8217;s also a disservice to users not to try to communicate to them the importance or a real representation of what the difference in performance will look like and why does it matter?</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=854">14:14</a>] And so you have to balance those things, which I think is actually quite hard. And a lot of people tend to get it wrong. And maybe we&#8217;ve gotten it wrong a few times too. I&#8217;m happy to accept that. But I do think it&#8217;s more complicated than people think. But it&#8217;s also, I think, a huge disservice not to include some way to try to convey to people quickly what things feel like.</p><h3>14:35 &#8212; Why he chose Rust</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=875">14:35</a>] I think one of the things I&#8217;m most interested in is, you mentioned that graph. I see that graph and the engineer in me is like, how did you make it so much faster? And one of the things in the tagline is <a href="https://en.wikipedia.org/wiki/OpenAI">Python</a> dev tooling written in Rust. And so I guess one of the first things I&#8217;m curious about is why did you choose Rust and what are the pros and cons of that?</p><p><strong>Charlie:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=897">14:57</a>] I would say I largely chose Rust for that project because of hype. I don&#8217;t think at the time I was that informed about a lot of the technical trade-offs between those different ecosystems. And I hadn&#8217;t really done a lot of systems programming. So the honest answer is I was seeing it in a lot of places, and it was growing a lot, and people said it appeared to be sort of an accessible way to write.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=924">15:24</a>] My impression was that it was an accessible way to write high-performance software. And so I started for that reason. In hindsight, I think it was an amazing decision, and I absolutely would not do it differently. And I think it was the best choice for what we&#8217;re building now. I have a lot more experience writing Rust, but it is funny because I do sort of think that if I had tried to write this in C or C++, I think I probably would have given up, because even now I find those ecosystems much more intimidating.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=968">16:08</a>] Hard to access, hard to learn. I have often felt that one of the great or underrated advantages of Rust is basically the tooling, because you drop in and you use Cargo, and that&#8217;s how you do everything. And if you clone it. This isn&#8217;t always true, but there are exceptions as projects get sufficiently advanced. But it&#8217;s. If there&#8217;s a crate out there that we use and maybe I want to submit a PR to it, I&#8217;m extremely confident that I can clone it and figure out how to run and build it without having to do any work.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=1004">16:44</a>] Being able to just clone and run cargo, run or cargo build or cargo test, that&#8217;s actually really amazing, especially for someone like me who was new to systems programming and I didn&#8217;t want to have to figure out my whole C tool chain and build system, all this stuff. Rust was opinionated about all of these things. And so there were a lot of things that were hard to learn, but I was allowed to basically, I was allowed to spend my time focusing on the things that actually should be hard to learn, as opposed to all the other, basically all the bullshit that you don&#8217;t want to spend time on, like how do I get this thing to actually build and run?</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=1044">17:24</a>] I think it has been an extremely good bet for us. It&#8217;s scaled very well with the project. And I mean, we at <a href="https://en.wikipedia.org/wiki/OpenAI">OpenAI</a> too are like, we use a lot of Rust and they&#8217;re betting heavily on Rust. And then, you know, me as someone who builds software, builds developer tools, like tries to build software for people to build software, I&#8217;m very bullish on Rust. It&#8217;s grown enormously and I think it will actually just keep growing enormously at the same time.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=1077">17:57</a>] I said this at the start. I&#8217;ve never been someone who&#8217;s super dogmatic about ecosystems. I think that all of those ecosystems have lots of redeeming qualities. I think what&#8217;s happening in Zig is very interesting, and I wish I had more time to go deep on it and develop more nuanced opinions about what it does better. I&#8217;m sure it does a bunch of things better than Rust, and I&#8217;m sure there are things for Rust to learn from that ecosystem.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=1100">18:20</a>] Similarly, people have a ton of success building stuff in Go. I think that&#8217;s great too. I think all this stuff is great. But I have loved using Rust and I have complaints about it. But I view those complaints as things that we should improve, especially as the way we build software changes.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=1118">18:38</a>] With LLMs, it sounds like you&#8217;re saying C and C++ today. You would not consider them because their tooling is insufficient. But Zig, Rust, and Go are all some spectrum of trade-offs or different things.</p><p><strong>Charlie:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=1136">18:56</a>] Yeah, I mean, I think a lot of people would disagree with me, but I don&#8217;t really understand why unless there are very specific technical reasons or you&#8217;re working with existing software. Basically, I don&#8217;t really know why I would start a net new project in C or C++. I certainly would not at a personal level. I guess if they&#8217;re like the ecosystems you know really well, then it makes a lot of sense to do it.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=1166">19:26</a>] But if I was a new programmer looking to learn systems or if I knew those languages equally well, I guess I just don&#8217;t understand why I would do that, which I&#8217;m sure I&#8217;ll get roasted for, but I just don&#8217;t really care now. I actually care about a lot of things that Rust gives me that I didn&#8217;t care about as much before, like memory safety. I don&#8217;t think I even understood or cared about what memory safety was when I started working on Ruff, to be honest with you.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=1189">19:49</a>] And now I think it&#8217;s a pretty amazing thing. I want to build things that are safe, that don&#8217;t crash on users, that are really fast, really performant, that don&#8217;t have to make compromises, basically. And I feel like I can do that in Rust. And so for me, I don&#8217;t know, it&#8217;s kind of like the perfect language. I mean, it&#8217;s not the perfect language, but it is my favorite language to use right now in today&#8217;s world.</p><h3>20:10 &#8212; Full codebase migration from Zig to Rust</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=1210">20:10</a>] It&#8217;s not unreasonable that you could almost completely transpile or convert your existing codebase into any language of your choice. Like I saw, I think it was on Bun, I forgot. I think it was Zig to Rust. Yes, like all in one go. So if you studied some other language and you thought it was better, you could totally rewrite everything from Rust into, I don&#8217;t know, Zig or Go. Would you ever consider doing that for the dev tools that you&#8217;ve built, for instance?</p><p><strong>Charlie:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=1247">20:47</a>] Yeah, it&#8217;s such an interesting time to be building software because things are changing. This is not a novel comment, but things are just changing so fast. I didn&#8217;t really program with agents at all until Christmas, like December break, basically of this year or of last year, rather. And that&#8217;s really not that long ago. I mean, I was using Cursor and stuff, but I wasn&#8217;t like now. I haven&#8217;t edited code in an editor in a very long time.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=1276">21:16</a>] Everything I do goes through Codex and even if it&#8217;s small edits, I&#8217;m just prompting and it&#8217;s completely different. And that&#8217;s not that long of a time, right? And so I don&#8217;t know what it&#8217;s going to look like in six months. Hard to say. But the reason that I mentioned that is, I think Bun doing that rewrite, it&#8217;s like I wouldn&#8217;t do that right now, but I&#8217;m actually glad that they are pushing that.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=1310">21:50</a>] They are experimenting and pushing the envelope of what&#8217;s possible. And they&#8217;re doing it in the face of a lot of criticism. And it will be interesting to see how it plays out for users because I think a few different things I thought about is, oh, reasons not to do that. One is, okay, maybe you don&#8217;t understand the code anymore, right? If the code got completely rewritten, then as a human you may not understand any of the code anymore.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=1337">22:17</a>] And that can be a big problem. I think there are mitigating factors around that, which are, they tried to do a very direct transpilation, quote unquote. I mean, it&#8217;s not exactly a transpilation, but they tried to do very one to one. And so that hopefully helps with understanding all the abstractions. If they&#8217;re building so heavily with agents, does it even matter? To what degree do they need to understand different parts of the code?</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=1361">22:41</a>] I actually don&#8217;t know the answer to that, which is where everything&#8217;s changing so quickly comes from. It&#8217;s actually a little bit hard for me to say right now how much that actually matters anymore. If they did transpile the whole codebase, how well do they need to understand things at different levels of abstraction? They should. It&#8217;s actually a very, I think, complicated question. So one reason is how well will you understand the code?</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=1385">23:05</a>] That&#8217;s a confusing thing. The other is you&#8217;re kind of trading, when you do a rewrite like that, you&#8217;re trading known issues for new unknown issues. Imagine you merge that and it closes 50 open issues on <a href="https://en.wikipedia.org/wiki/GitHub">GitHub</a>. In a literal sense, okay, that&#8217;s great, but you may have now caused 15 new issues that didn&#8217;t exist before, that you don&#8217;t know about, because even a great test suite is only an approximation of your program&#8217;s correctness.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=1421">23:41</a>] There&#8217;s Hyrum&#8217;s Law, which is like anything&#8212;I&#8217;ll get the phrasing wrong, but the gist is basically any implementation detail in your software. Someone eventually comes to rely on that. And so even things that aren&#8217;t encoded as behavior become part of your <a href="https://en.wikipedia.org/wiki/API">API</a>, whether you like it or not, which is a scary thought. But basically that means that even if you pass your whole test suite, there&#8217;s probably lots of behavior that was implicitly encoded in your program that&#8217;s changed.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=1451">24:11</a>] The unfortunate thing is you end up pushing that onto users. They are the ones that have to run into that and then report it and figure out what went wrong. That&#8217;s my main area of concern. With an automated rewrite, I actually trust the models enough that I would consider allowing them to do it. But the scarier thing for me is basically what&#8217;s the impact for users and how do you roll that out safely?</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=1473">24:33</a>] So I don&#8217;t know. It&#8217;s kind of a... We&#8217;re not going to, like, we don&#8217;t have anything planned to do that for any of our own projects. But it is an interesting question. I mean, I think maybe the third piece that I do think about, especially right now, where everything&#8217;s changing so quickly and there&#8217;s basically the spectrum of how you write software has gotten way wider. This is a terrible analogy, but there&#8217;s so many different ways to build software now.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=1505">25:05</a>] There&#8217;s the true Andrej Karpathy definition of vibe coding, where you&#8217;re like, don&#8217;t look at the code at all. All the way to don&#8217;t use LLMs and blah, blah, blah. There&#8217;s a lot of different stuff in between. And I actually think that right now I have pretty different approaches to different projects in terms of what I do. I built a tool last week that was. It&#8217;s basically personal software. It&#8217;s like a custom Rust linter to help us enforce certain things in our projects that I&#8217;ve always wanted to enforce but didn&#8217;t fit into existing tools.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=1545">25:45</a>] And I didn&#8217;t read any of the code. GPT-5 did the whole thing, and it&#8217;s like, okay, I can have a really different standard for that than uv because that project, we are the only users. It&#8217;s easy to tell if it&#8217;s correct or not. Not to go too deep into the weeds on what the project does, but we know if the output is incorrect and there&#8217;s no other users. uv is relied on by millions of engineers and every single company.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=1581">26:21</a>] And so it&#8217;s like we want to be really careful about what we ship there and how. But there&#8217;s a lot of room right now, I think, for exploring how we build software. You do have to be careful. What project are you working on, and what responsibility do you have to users? And that&#8217;s not meant to be a subtweet on what Bun did. It&#8217;s just how I think about how do we want to push the envelope in different places.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=1605">26:45</a>] Right. I mean, to me that just reminds me of the pre-LLM tradeoff navigating, I guess, the risk of the code change and how much you verify it. Because if it&#8217;s not risky, it&#8217;s an internal dev tool that only you and I are using. Maybe I just ship it with, I just say stamp it, don&#8217;t worry about it. It&#8217;s not going to break anything. But if it&#8217;s the critical thing that&#8217;s blocking customers from checking out or something, maybe we have two people reviewing it, and there&#8217;s a lot of checks in that part of the codebase.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=1642">27:22</a>] So it feels like the similar spectrum is just now there&#8217;s a new level of trying less, which is not just a human doesn&#8217;t even interact with it. You just ship it and maybe you just stamp it, and no one ever even looked at it.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=1660">27:40</a>] Whereas before, at least to have written it, a human would have had to.</p><p><strong>Charlie:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=1665">27:45</a>] Yes, do it. Yeah, yeah, yeah, yeah. I mean, I think. Well, okay, a lot of reactions to that. So, one, I guess, the other thing I would just say quickly about Bun is, sometimes I go over to their repo and it&#8217;s just so different than our repo. And it&#8217;s very interesting to look at because if you look at basically the number one contributor, it&#8217;s the RoboBun bot, and sometimes you&#8217;ll click on PRs by humans and there&#8217;s, like, human accounts talking back and forth.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=1694">28:14</a>] But it&#8217;s clear that all the comments were written by agents. And you&#8217;re like, wow, this is very interesting. And so I look at that, but my perspective on that is basically like, okay, I&#8217;m glad that people are like that. They are experimenting with different ways to build software. I don&#8217;t know that I&#8217;m ready to do that. But I do think that basically a lot of things are going to change.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=1714">28:34</a>] And I think it&#8217;s very interesting to be experimenting. So I&#8217;m glad that they are experimenting with things. Sorry, is my conclusion there.</p><h3>28:40 &#8212; LLM generated code and open source</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=1720">28:40</a>] Do you block if people are just submitting full agent stuff on your repos?</p><p><strong>Charlie:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=1727">28:47</a>] We do, yeah. So we have an AI policy now, which isn&#8217;t intended to be anti-AI, but it&#8217;s really intended to. Because, I mean, we develop very heavily with LLMs. That is true, but it&#8217;s more intended to be like, how do we retain useful contributions while filtering out net negative interactions from the repo? Because a contributor coming in and posting a comment that their agent wrote, and then we ask them a question and then they just paste the agent response back.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=1771">29:31</a>] There&#8217;s very little value in that. We could just ask the question to the agent. And so we want to retain the things that are useful from human contributors, which is insight, ways to reproduce the information we would need to plug it into our agent. Because there&#8217;s no point in just having a conversation with an LLM on a <a href="https://en.wikipedia.org/wiki/GitHub">GitHub</a> issue. It doesn&#8217;t really do anything for us. Our policy is roughly, you need to understand what you&#8217;re pasting in or what you are submitting, which sounds like a low bar, but it&#8217;s not.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=1813">30:13</a>] How do you police that?</p><p><strong>Charlie:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=1815">30:15</a>] If we can&#8217;t tell and it is agent-written, then I guess that&#8217;s fine, right? But at least right now there are just lots of tells: being way more thorough than a human would ever be, including way too much detail, way more formatting, using terminology that a human wouldn&#8217;t use, inventing random jargon, tons of links. I guess the broad sign would be putting in way more effort in ways that aren&#8217;t necessary, in a way that a human wouldn&#8217;t. It&#8217;s almost always agent-authored.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=1851">30:51</a>] But it&#8217;s been, yeah, it&#8217;s been challenging. I mean, I think the hard thing, Zig has a much more strict LLM policy, which is like no LLM-written code or no LLM-assisted code at all in the project, which is very different than us. I mean, all of my PRs now are LLM-written, right? LLM-written. And they had a blog post about this idea of, like, they called it something along the lines of contributor poker, where it&#8217;s like you&#8217;re kind of trying to place bets on contributors.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=1879">31:19</a>] Historically, in open source, when a contributor came around, they might be new to the project, but they could show signs of promise or they&#8217;re really engaged or really interested, and you give them feedback, they take the feedback and they fix up their PR, and then the next time they put up a PR, they&#8217;ve learned from that feedback. It&#8217;s the same way as mentoring a new engineer who joins your team. It&#8217;s like they learn from feedback, it compounds, they get better, and then they can actually mentor someone else in the future.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=1906">31:46</a>] You&#8217;re making investments in people. In a way, it&#8217;s the same for open source. It&#8217;s like you want to&#8212;I thought about this law historically. It&#8217;s like you want to invest in good contributors who are going to grow to help others and be maintainers in their own right. That&#8217;s kind of gone for PRs, especially those that are written by agents, because people don&#8217;t really learn anything. Someone can put up a PR that&#8217;s written by an agent, and you leave comments, and then they take your comments and put them into the agent, and then update the PR, and then merge it, and it&#8217;s like there&#8217;s no compounding feedback.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=1939">32:19</a>] And so I actually do understand that perspective. A lot of the contract between maintainers and contributors is pretty different now. And relatedly, again, not a novel insight, but the cost of putting up a plausible PR has gone to zero, while the cost to review and vet a plausible PR has remained the same and is very high. Especially for the projects that we work on, where I&#8217;m not trying to overstate it, they&#8217;re just hard projects.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=1975">32:55</a>] Ty is our type checker, probably hardest project I&#8217;ve worked on technically to get a change merged because of the complexity in the architecture, but also the problem space. It&#8217;s just very, very hard. If someone puts up a plausible PR to Ty, it might take them two minutes, and then it could take us an hour to understand it. And so it&#8217;s created very poor dynamics in open source. And I don&#8217;t know how we&#8217;ve solved that.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=2005">33:25</a>] I think it will continue to get worse until hopefully it gets better in some way. We find ways to solve this, but it&#8217;s certainly something we&#8217;ve experienced in our projects.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=2016">33:36</a>] Right. It sounds like review is becoming more and more of a bottleneck for that Bun rewrite. Do you know if it was human? Like, humans read that code, or that was just kind of...</p><p><strong>Charlie:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=2026">33:46</a>] No, I don&#8217;t think it was human reviewed.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=2028">33:48</a>] So it&#8217;s just yolo rewrite the whole thing.</p><p><strong>Charlie:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=2031">33:51</a>] Yeah, I mean, in a way I think they did have. And I&#8217;m excited for, at least at time of recording, quote unquote. Jared hasn&#8217;t published the blog post yet, which is like. I mean, he keeps making jokes about how the blog post is taking way longer than the rewrite. But I&#8217;m actually really interested in the blog post because I think they did have a pretty sophisticated approach to how the rewrite worked, which will be interesting to read about.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=2057">34:17</a>] It wasn&#8217;t just they had one prompt that was, &#8220;Rewrite this in Rust.&#8221; They tried to have, at least my impression from looking at the PR, was there were actually different phases of the rewrite, and each file had to go through a couple different phases that had ways to validate whether it was correct or not. The answer is no, though. I don&#8217;t think a human was reading significant amounts of that code.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=2082">34:42</a>] It&#8217;s just not possible.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=2083">34:43</a>] Basically, what if we both agreed today that Zig was objectively better than Rust, and then someone on your team said, I can do this rewrite into Zig. Would you block it?</p><p><strong>Charlie:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=2098">34:58</a>] I think I would block it. I don&#8217;t know whether I&#8217;d be right to do so, but I think we as a team aren&#8217;t there yet. And maybe we will get there, and that&#8217;s how we will feel eventually. But right now, I think we just feel like there&#8217;s still a lot of value in deeply understanding our code and our tool chain and the ecosystem. And so I would say we don&#8217;t want to do that, but it might depend on the project.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=2103">35:03</a>] I don&#8217;t know.</p><h3>35:34 &#8212; Performance optimizations</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=2134">35:34</a>] All the things that you built, they&#8217;re like an order of magnitude faster than what was available at the time. How much of a difference did Rust make on that graph?</p><p><strong>Charlie:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=2145">35:45</a>] I think it depends a bit on the project. I think in a rough lot of it was just Rust. And then over time, I think we&#8217;ve improved on that a lot because you can even look at the history of the project. Hopefully no one, hopefully this is still true, but basically over time the project gets faster and sometimes that regresses. But maybe I&#8217;ll put it differently. You could write Ruff in a couple different ways, all in Rust, and they could have really different performance characteristics.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=2190">36:30</a>] So that&#8217;s just to say that I generally think of Rust as the floor, or the baseline performance that you get is going to be significantly better. But you still get a lot more out of thinking deeply about performance and design. If you take the same program in Rust and in <a href="https://en.wikipedia.org/wiki/OpenAI">Python</a>, the exact same implementation, to the closest approximation you can get, the Rust one will be faster, but you can then take that program and you can probably optimize it.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=2218">36:58</a>] Another 10x. I don&#8217;t know about 10x, but my point is, even within being written in Rust, there&#8217;s a ton of room for how to make things more performant, how to write really performant software. And again, when I started working on Ruff, part of my goal was to learn Rust. And so I did write a lot of bad code, which is fine. I shipped something out that was really helpful to people, but it&#8217;s gotten a lot better, I think, over time, and we&#8217;ve made it more and more performant.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=2246">37:26</a>] I think in uv, there was more sort of architectural innovation beyond just being in Rust, especially because uv. So as a package manager, you&#8217;re doing a ton of I/O and downloading files over the network, unzipping things, writing them to disk, moving them around. The linter doesn&#8217;t have to do as much of that. I mean, it has to read all your files, but there&#8217;s not a huge amount of I/O. The package manager is mostly I/O, and then you&#8217;re trying to do things very efficiently.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=2281">38:01</a>] So there, it was more. I mean, Rust was important. But I do think that in uv, there are more architectural things that we did, or ways that we thought a lot about performance. The design of the cache is very, very intentional and makes it so that repeated installs of the same package on your machine are near instant because of the way that we lay out the cache and the way that we install from the cache into your projects.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=2314">38:34</a>] It basically means that if you&#8217;ve installed a package before, installing it again is extremely cheap, both in terms of disk space and time. And so that&#8217;s a very different design than any of the other <a href="https://en.wikipedia.org/wiki/OpenAI">Python</a> package managers had. So, again, it kind of depends on the project. I do tend to think that whether you&#8217;re writing code in Rust or in <a href="https://en.wikipedia.org/wiki/OpenAI">Python</a>, there&#8217;s always room to be thinking about performance.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=2339">38:59</a>] You can always make things faster or slower. Even if you&#8217;re writing in <a href="https://en.wikipedia.org/wiki/OpenAI">Python</a>, you can still make things much, much faster by thinking harder about performance and design. So it&#8217;s some mix, but it depends on the project.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=2401">40:01</a>] Over the course of the project, do you have a top few things that were implementing the project that were technically challenging or most interesting to you?</p><p><strong>Charlie:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=2411">40:11</a>] I really like this optimization that Andrew on our team, who goes by BurntSushi, he&#8217;s the author of ripgrep and a bunch of other things. He&#8217;s a really amazing engineer. He did this really cool optimization around how we represent versions. It&#8217;s pretty cool. I mean, basically, if you think about resolving and installing a very complex <a href="https://en.wikipedia.org/wiki/OpenAI">Python</a> project, it turns out that we have to parse and create lots of versions, as in 1.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=2411">40:11</a>] 0.11.0.2 version objects within the program. We end up parsing and creating a lot of those. And it turns out that actually allocating that memory was expensive given the scale, the number of times we were doing it. He came up with a representation where we can represent 90-something percent of versions with a single u64 integer. So it&#8217;s just way more efficient. And the benchmarks around that and the implementation were very cool.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=2472">41:12</a>] It&#8217;s like one of the coolest PRs I&#8217;ve read. I think in Ty, which is our type checker, there&#8217;s a lot of very interesting performance work that&#8217;s happening, especially to make it incremental. So Ty is designed to be a type checker and a language server. The whole system is highly incremental. The idea there is if you&#8217;re in a text editor and you open up one file, you don&#8217;t necessarily want to have to type check your entire project, all your dependencies, every file in the project, just to get analysis for that file, because you don&#8217;t need to.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=2515">41:55</a>] So how do you make that work? That&#8217;s sort of like, that would be lazy. You want to be lazy. But the other piece to that is if you have a file open and you edit it, or you have two files open, you edit one of them, you only want to recompute exactly what you need to recompute. You don&#8217;t want to have to go and retype check the entire code base again, especially because maybe you&#8217;re working on a big project like <a href="https://en.wikipedia.org/wiki/PyTorch">PyTorch</a>, and it&#8217;s like you have two files open, you edit one of them, you don&#8217;t want it to like, and then you save.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=2542">42:22</a>] You don&#8217;t want it to take two seconds to retype check the project and give you new analysis. So the whole system is built around queries, which is pretty interesting. This is more of a macro design thing, but we built it on top of a framework called Salsa, which is also what rust-analyzer uses, which is the popular Rust language server. And now we&#8217;ve intentionally or inadvertently become very large contributors.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=2573">42:53</a>] But the whole system is built around that, which has been very interesting, architecturally interesting.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=2578">42:58</a>] So it&#8217;s lazy. So it doesn&#8217;t type check the whole codebase. And it&#8217;s incremental.</p><p><strong>Charlie:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=2582">43:02</a>] Yeah, the incremental part is the thing that&#8217;s hard because you kind of need a way to basically model a dependency graph of everything that&#8217;s happening in the code. And so then when you change something, we want to just flow the data back through all the different pieces, only the pieces. Yeah, so that took a lot of work, but it has come together, and I&#8217;ve been doing a lot of optimization lately with Codex because it tends to be very good, especially at micro-optimizations.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=2621">43:41</a>] And in Ty in particular, we also need to think a lot about memory, not just speed, because if you work on a very large project, you don&#8217;t want it to take many, many, many gigabytes just to run your language server. Ideally you want it to be relatively efficient. So I spend a lot of time now kind of continuously optimizing memory usage and performance, and I can just set a goal that&#8217;s like, try to reduce Salsa memory by like 1% on this project.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=2651">44:11</a>] And you can&#8217;t do these things that you might try to do. And it&#8217;s very good at just coming up with very reasonable things. And so I don&#8217;t know, I find that very cool because it&#8217;s kind of like you can almost have continuously. I won&#8217;t say self-optimizing, that&#8217;s a bit grandiose. But you can kind of be continuously just optimizing your software.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=2675">44:35</a>] So I&#8217;ve been enjoying that a lot. But most of those are trying to find ways to represent things that take up less memory, or trying to come up with, sometimes it&#8217;s trying to come up with broader redesigns to fix pathological performance.</p><h3>44:54 &#8212; Optimization with AI and combating slop</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=2694">44:54</a>] That one optimization with the version numbering and seeing that you can limit it just to a u64. If you think back to some of these more creative optimizations that were done, that was in the human era. Do you think if you just ran Codex and you&#8217;re like, hey, just don&#8217;t break things but lower, do you have faith that it would come up with that? Or is that kind of a step above what?</p><p><strong>Charlie:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=2720">45:20</a>] That&#8217;s a very interesting question. If you just, at least in my experience, if you use these things to reduce memory or improve performance by some moderate percentage, it will typically come up with things around the edges as opposed to larger redesigns or reconsiderations. But you can get to those larger redesigns if you prompt and collaborate with the agent. If you ask, well, should we be thinking a bit bigger about why we have to represent the data?</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=2751">45:51</a>] This way, you can get to bigger ideas. That might be an idea that you could have gotten to with prompting if you were like, okay, let&#8217;s start by profiling and figuring out where we&#8217;re spending a lot of time. And then maybe it would eventually come back to you and say, we&#8217;re spending a lot of time in version parsing and version drop and version allocation, blah, blah. And we&#8217;d be like, okay, well, how could we represent these more compactly?</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=2777">46:17</a>] And we&#8217;d probably start by finding micro-optimizations in the representation of, well, this field. You combine these two fields, save a few bytes, blah, blah, blah. But I think if you kept pushing it, it&#8217;s possible it would get there. But that&#8217;s not the thing it&#8217;s going to come up with by default. Mitchell Hashimoto, who was one of the HashiCorp founders, works on Ghostty. He had a post that was insightful.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=2802">46:42</a>] I thought last week or this weekend about a renderer he wrote where it was a really terrible renderer. I&#8217;ll probably butcher the tweet, but it was a really terrible renderer. And then he hadn&#8217;t intentionally. And then he had an LLM optimize it and it made it 10 times faster. And he&#8217;s like, great. Actually, no, my handwritten version was 100 times faster. And it&#8217;s like, if you&#8217;re not using your brain to think about from first principles, how fast should it be and how should the system work?</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=2830">47:10</a>] Then you just ship all these accumulated. I won&#8217;t necessarily call it slop, but it&#8217;s like you just ship these things, and you&#8217;re like, yeah, oh my God, I made it 10 times faster. But really it should be 100 times faster. And so I think it shouldn&#8217;t be controversial. There&#8217;s still a lot of room for using your brain. But I do think it&#8217;s like, I struggle with this stuff a lot. I mean, I&#8217;m changing how I write software a lot.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=2856">47:36</a>] And I&#8217;ve had people on my team because I&#8217;m using agents a lot and also was, to some degree, trying to push our team to use agents more. I mean, some of that for me came from a place of we build tools for software engineers, and a lot of our users are now using agents. And so if everything good that we do&#8212; that&#8217;s an exaggeration, but if everything good that we do comes from understanding our users very well and how they work, then we should probably be using agents so that we understand what it&#8217;s like to build software with them, so that we can build better tools for our users.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=2894">48:14</a>] That was part of my motivation, and part of it was just kind of seeing how it can change how you work. And I don&#8217;t know. I think I&#8217;m shipping a lot more. But it has been a difficult process. I&#8217;ve had people on the team tell me, which I think is great that they tell me this, but they&#8217;re like, &#8220;Oh, it used to be the case that whenever you put up a PR, I could review it pretty minimally because I had a lot of confidence in it, in your work.&#8221;</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=2923">48:43</a>] And now it&#8217;s like, when you put up a PR, I actually have to review it really closely because you&#8217;re not writing anymore. It&#8217;s like the agent. And I was like, wow, that&#8217;s very interesting. They&#8217;re completely right, which is. And the same thing happens to me. It&#8217;s like, if I go to sleep and then wake up in the morning and look at one of the PRs I put up, I&#8217;m like, wait, this is terrible.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=2942">49:02</a>] You know what I mean? It&#8217;s like, you can. It&#8217;s just. It is easy to trick yourself into basically believing work that isn&#8217;t at the same standard as what you would do before. And I don&#8217;t think. I think we have. We don&#8217;t really know what to do with that. And I&#8217;m kind of learning, getting better. And I mean, this was. I think I&#8217;m doing a lot better job now than I was in probably, February or something, where I was like.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=2968">49:28</a>] I was just fully agent killed. And I&#8217;m like, now I&#8217;m a little bit more like. But so my point is, that was a powerful moment for me when someone on the team said that, and I was like, wow. You&#8217;re right. And I see that in other people&#8217;s work too. It&#8217;s not just limited to me, but it really does throw a lot of things on their head.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=2990">49:50</a>] If you generate pure slop, that&#8217;s easy, but I think there&#8217;s this gray area where you generate partially AI slop, or it&#8217;s acceptable, but it&#8217;s not at the bar that you used to have. What are the tactics that you&#8217;ve used on the team that have worked for combating this kind of gray area? AI slop.</p><p><strong>Charlie:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=3012">50:12</a>] I&#8217;d like to get to a world where we&#8217;re not here, and I don&#8217;t know if we&#8217;ll ever get there. I&#8217;d like to get to a world where if you put up a PR and it&#8217;s all green, then the odds of it getting merged are extremely high. Right. Because that would mean that you have automated verification for most of what matters. And we have a lot of that in our projects, and we&#8217;ve tried to add more over time, and I think it&#8217;s helpful in Ty especially.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=3042">50:42</a>] We have tons of benchmarks that run under Valgrind through CodSpeed on every PR, and that includes memory. So we benchmark memory usage and simulation time and wall time on every PR. And then we also have a really big suite of ecosystem tests. So basically every time you put up a PR, we run before and after on a bunch of projects in the ecosystem, and then we create this report of the diff of all the diagnostics, like the errors that got removed and added and everything.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=3079">51:19</a>] So we have, over time, we&#8217;ve tried to do more and more. These are important. Honestly, even before we had agents, we basically couldn&#8217;t build without these things. But the point is, I want to have more automated verification and try to get better at that. And that includes things too. Like, we basically assume now that anyone on the team that puts up a PR has already run that through Codex Review, probably several times.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=3109">51:49</a>] And that&#8217;s basically an assumption. I mean, we could automate that process, but Codex Review is just an agent reviewing the code and double-checking.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=3116">51:56</a>] Yeah, it&#8217;s just running Codex and then just doing slash review.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=3118">51:58</a>] That&#8217;s it. Yeah. It&#8217;s not that fancy. I mean, it&#8217;s not. Sorry, it&#8217;s not that sophisticated. But it&#8217;s just like because now it&#8217;s like, if a contributor puts up a PR, that&#8217;s the first thing that we do because it tends to find good things. Basically, I think one bucket is: how do you create more automated systems that just help get things, make sure things are right.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=3148">52:28</a>] And that also includes things like trying to improve your AGENTS.md file over time. If there are things, if there&#8217;s feedback you&#8217;re giving in a review that the agent&#8217;s not respecting, try to find a way to help the agent learn that, even learn skills. We have some shared skills on the team, stuff like that. None of this stuff is very sophisticated, by the way. It&#8217;s pretty simple. The other piece is how do I make sure that I put in the work to ensure that I&#8217;m creating a good PR.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=3176">52:56</a>] And so for me, that&#8217;s like, I really should understand, again, it sounds like a really not. It really sounds like a low bar, but I should understand each line in the PR. I know it&#8217;s crazy, but also I do try to review each PR myself in the <a href="https://en.wikipedia.org/wiki/GitHub">GitHub</a> UI. This is something I&#8217;ve always found really helpful. If you actually just open up your PR and click files and read through it as if you were a reviewer, you tend to find things that you would miss if you were just looking at your local diff.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=3214">53:34</a>] I find that very useful. And then the other is trying to encode skill. I guess this is a little bit more in the first category, but trying to encode in skills things I&#8217;m consistently getting wrong that the agent is getting wrong. A recent example would be I found that I was often getting feedback on PRs that was of the form, this condition here, this if statement, what case is this intended to catch?</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=3247">54:07</a>] Because if I commented out all the tests pass, and so I was like, okay, I should probably have a pass before I put up any PR where I have the agent go through and check: are these conditions still relevant, or are they left over from a prior refactor or something else? So I don&#8217;t know, I&#8217;m still learning, but those are some of the things I&#8217;ve been doing. Yeah, again, I think it&#8217;s a pretty hard time to be building software, but I felt for a long time where I had a fear that AI was going to make us more productive, but that programming would be, like, a lot less fun.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=3284">54:44</a>] Because I just love programming. And I was like, oh, now I&#8217;m gonna have to spend all my time reviewing code and prompting this idiot agent that keeps getting things wrong but ultimately is probably more productive. I actually feel way better about that right now than I did a few months ago. And I don&#8217;t exactly know why. I think it&#8217;s because, well, I think the agents getting better and the tooling getting better and me getting more comfortable with it is one factor.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=3321">55:21</a>] I think the other is I&#8217;ve grown to appreciate more of the kinds of things that working with agents has unlocked. The cost of running an experiment is incredibly low. There&#8217;s so many things I&#8217;ve wanted to try or questions I&#8217;ve wanted to answer that I can now answer almost instantly. Sort of a dumb example. In uv, everything is snapshot tested. So basically all of our testing is effectively running uv and verifying the output.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=3356">55:56</a>] That&#8217;s how we test basically the entire program. And so that means, and we have a lot of tests. That means we have a lot of test output. And the test output is... it actually ends up in the test files. So we have Rust files. We have a file called lock.rs that tests all our uv lock tests. It&#8217;s all our uv lock tests. And it&#8217;s very, very long in part because it has all the lock output snapshotted in the test.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=3381">56:21</a>] And I was like, what if we stored the snapshots in separate files? Would that somehow make our compiles faster? Because then you don&#8217;t have&#8212;technically, that&#8217;s like Rust code. And so it&#8217;s like, would that all disappear and would that make our builds faster or blah, blah, blah. And I&#8217;d always want to do that, but it sounded like to do that experiment as a human would be extremely painful because you have to convert all of those tests.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=3408">56:48</a>] And I just had an agent do it in the background while I did a bunch of other things. I got a bunch of data on it, and the answer is no. But it&#8217;s a little bit more nuanced. It actually does have a good impact. If you&#8217;re just iterating on the snapshot outputs, you no longer have to recompile your program at all because the outputs are stored somewhere else anyway.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=3428">57:08</a>] That&#8217;s the thing that makes a difference on you. But my point is, I&#8217;m just running experiments like that all day, trying things that used to be hard, used to cost a lot to. To answer the work of then going from that to production. There&#8217;s still real work there, but. So I think one piece is the tools and the agents getting better. The other is things that I just wouldn&#8217;t have been able to do before that I can now do incredibly easily.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=3457">57:37</a>] And then the third is, I think I&#8217;m more and more realizing that a lot of the value I get from building software is not retained because some of it is thinking hard about it. It doesn&#8217;t have to be typing out the code, but it&#8217;s thinking hard about the layout of a data structure. A lot of it is merging a PR that causes a user issue. I get a lot of satisfaction from actually fixing and improving something.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=3481">58:01</a>] It&#8217;s not necessarily just from typing out the code. I do feel for people a lot who feel like they&#8217;re losing something by working with agents, because I do feel that myself. But I feel better now than I did a few months ago about, like, what it&#8217;s like to work as a software engineer with agents.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=3503">58:23</a>] You mentioned in one of the performance optimization examples, you said if you just unleash Codex, it kind of does these local optimizations, and it&#8217;s very good at that. But it&#8217;s not great at some of the, I mean, today it&#8217;s more human ingenuity of system-level optimizations. And it kind of reminded me of this tweet that you had. You said, &#8220;I&#8217;m slightly concerned by how much garbage I would be churning out if I was trying to use these tools without significant software engineering experience.&#8221;</p><p><strong>Charlie:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=3536">58:56</a>] Yeah, I remain concerned about that. Yeah.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=3540">59:00</a>] It reminds me, and similar to what Mitchell Hashimoto said in that tweet, there&#8217;s a very big difference between Codex, go and do this, versus you are wielding it like this tool and you&#8217;re kind of prodding in the right direction.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=3558">59:18</a>] Yeah. I was curious your thoughts on that because it seemed like it went pretty viral. And I think a lot of people are thinking about that.</p><p><strong>Charlie:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=3564">59:24</a>] Being a great software engineer is more useful than ever. I don&#8217;t think it&#8217;s still the case that the people on our team who have the strongest engineering skills are the most effective, even at using agents. And it&#8217;s funny because there&#8217;s a lot of talk about token maxing. I don&#8217;t know if you&#8217;re familiar with this.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=3594">59:54</a>] Right. Yeah. The idea of, should you have a leaderboard? For example, this is getting tweeted about a lot: companies that have token leaderboards. It&#8217;s like, how do you create some terrible incentives to just use as many tokens as possible? And it&#8217;s funny because that does get tracked. Or sorry, there&#8217;s not a leaderboard. But token usage is something you can look up, for example, internally. I mean, and it&#8217;s interesting to look at because I don&#8217;t care who on the team is using the most tokens.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=3623">01:00:23</a>] And there are people on the team who are like, &#8220;I&#8217;m actively trying not to care about that, like being where I am on the token leaderboard,&#8221; which I think is great. I don&#8217;t care. They should just do a great job, and that&#8217;s fine. I don&#8217;t care if they use a lot of tokens or not. But it is interesting to look at the token leaderboard because some of the people on the team who are most productive are using a lot of tokens.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=3647">01:00:47</a>] There is a correlation. I&#8217;m not saying it&#8217;s causal, but I do think that a lot of great engineers are able to use agents very effectively and hopefully to multiply their skills. So I do think it would be really hard to be an early career software engineer right now. And I&#8217;m not spending that much time with early career engineers right now. Just based on it, at Astral, we&#8217;re just a very small team, and we tended to hire very senior.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=3681">01:01:21</a>] But it&#8217;s sort of hard for me to think about, what would we, like how would I learn, basically? What would the iteration loop be? I would be learning from Codex, I guess, as opposed to the other way around, basically. I mean, a lot of the time I&#8217;m actually instructing Codex and trying to correct it and providing a safeguard on it or Opus or whatever you&#8217;re using. And so, yeah, I think I just don&#8217;t know where you would get.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=3722">01:02:02</a>] It would just be way too easy to fall prey to a lot of the bad things that happen when you use agents.</p><h3>01:02:08 &#8212; Learnings as an eng starting a company</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=3728">01:02:08</a>] You built this proof of concept in Rust, and it was really well received. But why did you start a company around it, and how did the raising go and all of that? What was the motivation there?</p><p><strong>Charlie:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=3740">01:02:20</a>] Yeah, yeah. So I left Spring. I was actually convinced to leave by a friend who, a very close friend who left Meta around the same time. And he was like, we should start a company together. And I was like, okay, fine. I mean it wasn&#8217;t quite that simple, but. But I did. I laughed. And then we kind of went into the idea maze of what do we want to build? We went into it not knowing what we wanted to build, and we spent a bunch of time exploring the Venn diagram of ideas.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=3775">01:02:55</a>] There were things he was interested in that I thought were not interesting and vice versa. And there was some stuff in the middle, and we spent time exploring the stuff in the middle. But then in all my spare time I was working on developer tools. Because that&#8217;s what I thought was really interesting, and it wasn&#8217;t quite like a fit for him, basically. But around then I was working on Ruff. I was working on a couple other projects that you can see in my <a href="https://en.wikipedia.org/wiki/GitHub">GitHub</a> that are like, I don&#8217;t know, probably not as interesting, but they were like.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=3803">01:03:23</a>] I was experimenting with lots of different things at the time. I was pretty interested in WebAssembly. I wrote a sort of CI/CD toolkit in <a href="https://en.wikipedia.org/wiki/TypeScript">TypeScript</a>. It&#8217;s sort of like you wrote pipelines in <a href="https://en.wikipedia.org/wiki/TypeScript">TypeScript</a> and it transpiled them to Docker. And I was like, oh, this could be cool. I don&#8217;t know. I was building a lot of stuff. And at that point in time I decided I wanted to start developing relationships with investors, but that I wasn&#8217;t ready to raise money because I didn&#8217;t know what I was actually going to build.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=3834">01:03:54</a>] And so my thinking was I&#8217;m going to try to get connected to some people who like to invest in this kind of stuff, with an eye toward reaching back out to them in three to six months and being like, hey, we had a great conversation, now I&#8217;m working on X. So that was my thinking. So I got connected to a couple investors who invest in software infrastructure and developer tools, and I had some good conversations.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=3859">01:04:19</a>] And then the problem is things just can move really quickly. And so I didn&#8217;t actually expect to start raising so soon, but I effectively got convinced. And at the same time, Ruff was growing a lot. And so I effectively got convinced that there was enough there to start a company, which is a very interesting process. I was like, I don&#8217;t quite know how this becomes a company, but I was effectively convinced that there was enough there to build a company.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=3883">01:04:43</a>] Which is interesting by the investors. Yeah. Which I&#8217;m grateful for. The other thing I was convinced of was, which is funny, is if I hated it, I could stop in like six months. It&#8217;s like if you decide it&#8217;s not for you, you could give the money back. The investor said that. Yes. Which I actually think was brilliant because, like, I was probably never going to do that, but it did make me feel like there was less pressure.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=3914">01:05:14</a>] So, sorry, very weird roundabout details, but basically I was working on Ruff more full time eventually. And then it was kind of, I would say, collaborative with the potential early investors, where it was like we would just have long conversations about my ideas, and then it basically became clear that it was like, there&#8217;s enough here. And I wrote out kind of a product roadmap, which honestly a lot of it stayed true to what we ended up building, what we&#8217;ve ended up building so far at least.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=3947">01:05:47</a>] And from there, it basically became like, yeah, we want to fund you. Here are the terms that we would do. And I was like, oh, wow, okay, so I guess it&#8217;s happening. So it was just interesting. And I had never done anything like this before. I mean, I was just an IC software engineer my whole career, and then suddenly I was like starting a company. And it&#8217;s funny because I actually think the decision to go all in and start the company wasn&#8217;t that stressful.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=3982">01:06:22</a>] I actually think a lot of the stress came later as the company started to succeed because at the beginning I kind of had nothing to lose. But then as the company started to succeed, I was like, oh wow, the company&#8217;s kind of working. What&#8217;s going to happen from here? And I had a team of 20 people who were depending on me. And so I don&#8217;t know, just for me as a founder it was like, I&#8217;m pretty risk averse, but I actually found that starting the company was an easier, it was an easier decision than maybe some of the stressful things that came later to navigate.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=4019">01:06:59</a>] But it happened very quickly and sort of unintentionally and in a symbiotic way with investors, which I hadn&#8217;t really anticipated.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=4029">01:07:09</a>] I didn&#8217;t expect the investors, because I thought the founders were hungry for the fundraising and go, please fund me. But the investors were like, I think it can happen a million different ways.</p><p><strong>Charlie:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=4039">01:07:19</a>] And actually, I mean, we did three fundraises. We did a C to Series A and a Series B. We actually never even announced the Series A or the Series B. They were, I mean, they were announced in the acquisition blog post. But we sort of complicated. It&#8217;s like we basically just never got around to it, and why don&#8217;t you guys publish it?</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=4064">01:07:44</a>] Because isn&#8217;t that good marketing for talent?</p><p><strong>Charlie:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=4066">01:07:46</a>] It&#8217;s good marketing, but basically there kept being reasons that we wanted to wait a little bit. And to me, it always felt like a lot of work, and then I was like, it just never honestly felt like the most important thing because we were building a lot of stuff and the company was going well, and I was like, we don&#8217;t need the marketing. We did finally plan to announce it, but then we got bought, so it didn&#8217;t happen.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=4092">01:08:12</a>] Each of those fundraisers was preemptive, basically initiated by investors, which is fortunate because the company was going well and people wanted to invest. But it was also just a funny position for me to be in, I guess. I think I was just always a little bit conservative, and I wasn&#8217;t super aggressive about trying to go out and raise money.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=4127">01:08:47</a>] But we were lucky enough to be building things that people really had a lot of confidence in or had a lot of belief in.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=4132">01:08:52</a>] That probably gave you a lot of negotiating leverage because one of the best positions you&#8217;d be in is that you&#8217;re willing to walk away, you don&#8217;t need it. And by definition you didn&#8217;t even come there to begin with. They came to you and they said, please take the money.</p><p><strong>Charlie:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=4147">01:09:07</a>] That&#8217;s true. Yeah, yeah. I wouldn&#8217;t say I&#8217;m a great negotiator, but yeah, I guess at least I had a strong hand. But we were very lucky with investors. We had amazing investors, super supportive and really, really aligned with how I wanted to build the company. Never any conflict, never any pressure to do anything specific, just support. And maybe the only thing, maybe the only piece of consistent feedback is that I could have been more aggressive and.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=4182">01:09:42</a>] But I don&#8217;t know, in terms of scaling, growing, and doing. But I liked the way that we operated, and yeah, we just had such good experiences with our investors too. So I felt lucky about that because it can easily go the other way.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=4195">01:09:55</a>] I imagine if someone invests, there&#8217;s a promise of future revenue. But how does this company make money? Because you guys give away your software for free, right?</p><p><strong>Charlie:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=4205">01:10:05</a>] Yeah, we launched a commercial product in, like, August of last year, and it was sort of&#8212;it was called Pyx. It was kind of like a hosted counterpart to uv. So a lot of our, a lot of uv users, will purchase a private registry software instead of using the public registries, either for security or maybe they need to publish their own private artifacts, things like that. And we basically built our own private registry that had some first-class support for uv.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=4237">01:10:37</a>] And it let us solve a bunch of problems that we saw in our issue tracker around users using other solutions. Also let us build something really fast because we vertically integrated the client and the server. There were special things they could do to be really fast and really easy to use and all that. And we spent a while selling that, and our revenue actually grew pretty well. I mean, it wasn&#8217;t like, I think in this era of AI, you&#8217;re constantly hearing about fastest company to go to 100 million in revenue and things like that.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=4270">01:11:10</a>] It didn&#8217;t look like that, but we were definitely able to sell this to some big enterprises. And the cool thing was we had a very good, because we built the open source and everyone was using our open source, we had a really good funnel. We had a small number of extremely high quality customers, is the way I would put it. So the general idea for how we wanted to make money was to keep building open source and the tooling. The tooling remains free, open source, entirely noncommercial.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=4303">01:11:43</a>] And then we build software that&#8217;s kind of like the natural next thing you need when you&#8217;re using our tooling. So if you&#8217;re using uv, there are likely problems we can solve for you with a private registry. And then the funnel is people using uv, they have these problems, and then we sell them the registry. And the registry was meant to be one piece of a platform of a bunch of different things.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=4323">01:12:03</a>] We sell like a <a href="https://en.wikipedia.org/wiki/OpenAI">Python</a> cloud. So that&#8217;s what we were building towards. I mean, part of the cool thing about the acquisition is we&#8217;ll be able to take parts of that platform and make it basically freely available. Like we did just as an example. A big part of that was we did a lot of, like, in <a href="https://en.wikipedia.org/wiki/OpenAI">Python</a>, there&#8217;s a big part of the community that uses <a href="https://en.wikipedia.org/wiki/OpenAI">Python</a> with GPUs like <a href="https://en.wikipedia.org/wiki/PyTorch">PyTorch</a>. And then there&#8217;s like a whole ecosystem around <a href="https://en.wikipedia.org/wiki/PyTorch">PyTorch</a> of software that kind of builds against <a href="https://en.wikipedia.org/wiki/PyTorch">PyTorch</a>.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=4364">01:12:44</a>] And that&#8217;s for a variety of reasons. The ergonomics around that are not great. It can be kind of hard to work with, hard to install. The right version depends on the GPU that you have and what version of <a href="https://en.wikipedia.org/wiki/CUDA">CUDA</a> you have installed and all this stuff. And so we kind of tried to solve that in a certain way where we built our own distribution. You could think of it kind of like in the sense of a Linux distribution.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=4391">01:13:11</a>] We pre-built a lot of things like that that all worked together and made that available to customers. And so now we can actually take that and just make that freely available to everyone. Because we&#8217;re no longer, we no longer are trying to build an independent business. We&#8217;re just trying to build great tools that grow a broader ecosystem. So, I mean, more to come on that. But that&#8217;s been kind of like one cool thing that I&#8217;m excited about.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=4414">01:13:34</a>] As a first-time founder, especially with the engineering background, was there anything that was a surprising learning or something you would share with someone if they were an engineer and they were going down that founder path?</p><p><strong>Charlie:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=4428">01:13:48</a>] There are so many different ways to do it. I&#8217;m actually not a huge fan of people giving startup advice in general because so much of this industry is survivorship bias. You could give the exact same advice. You can go to two talks and people give you two incredibly successful founders give you completely contradictory advice, and you&#8217;re like, I don&#8217;t really know what to do. And I tend to view that as you&#8217;ve got to figure out what&#8217;s true to you.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=4456">01:14:16</a>] And so there&#8217;s all these decisions you have to make: in person versus remote, right? Have a principle and stick to it. Either one can be great. We built the whole company remotely. It went super well. It was great. Do I think there are benefits to being a person? Of course. Would I have been able to hire the team that we put together if we were in person? Absolutely not. And so there are trade-offs to all these things.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=4480">01:14:40</a>] You just have to be principled and figure out what resonates with you. And there&#8217;s a million of those decisions that you have to think through. I feel fortunate in a lot of the ways I got to run the company. I tried to spend very minimal time fundraising and with investors, and I tried to optimize for investors I really trusted, as opposed to trying to talk to a billion different investors and pit them all against each other to get the best terms.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=4507">01:15:07</a>] My goal was always to find a partner that I really trust and get good terms, and then move quickly. Spend as little time on fundraising as possible. And so think about what you care about and focus on that. There&#8217;s no right answer to a lot of this stuff. I got a lot of advice to get a cofounder when I first started the company, and I basically ignored that. I mean, well, sorry, I did ignore it because I didn&#8217;t get a cofounder, I guess.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=4532">01:15:32</a>] For me, I kind of knew they were right probably, but I didn&#8217;t really have someone in mind. I didn&#8217;t want to force it, and so I just didn&#8217;t. And over time, I felt like it would have been helpful to have someone that&#8217;s kind of in the trenches with you in the same way. But you find other ways to compensate for it. I don&#8217;t know.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=4561">01:16:01</a>] I lean on my wife a lot, probably more than I should. Probably more open with my employees than I otherwise would be, which I think can be good or bad. But it&#8217;s like, I share a lot with the early team, especially when I need advice on things. Try to build a network of other founders, especially here in New York. I have a pretty good group of.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=4582">01:16:22</a>] There&#8217;s like six or seven of us who. We try to get dinner twice a year. Doesn&#8217;t sound like a lot, but everyone&#8217;s busy. Yeah, yeah, yeah. And that&#8217;s been a really helpful support system. So you just find other ways to compensate. But yeah, it&#8217;s. I don&#8217;t know. There&#8217;s no. I really don&#8217;t. I really think there&#8217;s not one right way to do it. Yeah, and it extends everywhere.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=4609">01:16:49</a>] I mean, also, everyone on X is talking about, should everyone in your company be working seven days a week? This kind of thing. And it&#8217;s like, I don&#8217;t know, we just built a very different company and we were able to do it. That was not. I mean, I work basically all the time, and that&#8217;s a choice I made and that I&#8217;m very happy with.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=4633">01:17:13</a>] But I don&#8217;t expect people on the team to work all the time. And I want it to be a company where you can be highly, highly successful working normal hours, but also where you&#8217;re rewarded for your output and your performance. And I try to keep all those things in sync, but again, there&#8217;s no one right way to do it. Other companies, that is their culture and that&#8217;s what they want to do.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=4658">01:17:38</a>] And sure, whatever. If that&#8217;s what you sign up for, just make sure that you&#8217;re honest about what you&#8217;re doing. So I don&#8217;t know, I just think figure out what you care about and, in my opinion, don&#8217;t focus too much on how you think you should be doing things. Think about how you want to be doing things and what actually fits with how you want to work.</p><h3>01:17:55 &#8212; Top technical talk recommendation</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=4675">01:17:55</a>] What&#8217;s your top book recommendation, whether technical or maybe something that helped you as a founder?</p><p><strong>Charlie:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=4681">01:18:01</a>] I don&#8217;t read a lot of technical material. I have definitely watched a few talks that were very influential to me, which is a little bit different.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=4690">01:18:10</a>] What are those talks?</p><p><strong>Charlie:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=4692">01:18:12</a>] The Zig creator, Andrew Kelley had a really good talk about data-oriented design that I learned a lot from. I mean, even apart from learning things, it sort of inspired me to look at software quite differently. And so I think about that talk a lot. Yeah, things like that. It&#8217;s really good. Yeah, it&#8217;s about. Well, I haven&#8217;t watched it in a while, so I&#8217;ll probably mess it up, but it&#8217;s like a lot of it&#8217;s about basically design decisions they made in the Zig compiler and just thinking about memory and allocation and all this stuff.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=4724">01:18:44</a>] And I was like, I watched that when I was pretty early in my career of systems programming, and I was like, wow, these people really care about what they&#8217;re doing. And I was like, that&#8217;s cool.</p><h3>01:18:56 &#8212; Advice for his younger self</h3><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=4736">01:18:56</a>] Yeah. And then last question is, if you could go back to the beginning of your career, right when you graduated college, what advice would you give yourself, knowing what you know now?</p><p><strong>Charlie:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=4747">01:19:07</a>] I don&#8217;t know, it&#8217;s so hard to give myself advice without feeling like I have all this hindsight bias. I mean, I think, I guess there are some things where I&#8217;d basically tell myself that it is the right decision and I shouldn&#8217;t worry so much. But it&#8217;s hard to know how that would have played out if I did it a thousand times over. But for example, I think when I left school and I went to work at Khan Academy, part of me was definitely like, wow, should I be taking more of a big tech job, and am I gonna really regret not having that experience?</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=4778">01:19:38</a>] The Khan Academy pay was good, but the big tech pay was certainly better. And I was seeing my friends get huge bonuses and all this stuff, and I felt sort of insecure about whether I should be doing that. And I think it actually, in the long term, really paid off. I mean, maybe it would have been great, but the experience I had was really what I wanted, and I thought I made that decision for the right reason.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=4806">01:20:06</a>] So I think some of these things are, I don&#8217;t know, everything happens for a reason, you know, and it&#8217;s like, have some faith in what you&#8217;re doing for the right, you know, for the. If you&#8217;re making decisions based on principles, I think it can work out.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=4824">01:20:24</a>] When we started this conversation, you said the reason you got into what you got into is because you tried all these different ecosystems and you had a broader perspective. Imagine if you went to <a href="https://en.wikipedia.org/wiki/Google">Google</a> and you just kind of used <a href="https://en.wikipedia.org/wiki/Google">Google</a>&#8216;s closed thing, and then you might not have had the same insight.</p><p><strong>Charlie:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=4843">01:20:43</a>] Yeah. And I think about this with Spring, too, because Spring, I was there for four and a half years, and then I left, right, as they decided to do a pivot, and then they ended up joining <a href="https://en.wikipedia.org/wiki/Genentech">Genentech</a>. But we had set out to build this kind of crazy drug discovery company. We were focused on aging, and it was all with computer vision. It was very, very ambitious what we were trying to do. Yeah, yeah.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=4870">01:21:10</a>] And then afterwards, I was like, oh, the company didn&#8217;t have the huge exit or the huge. We didn&#8217;t achieve all of our dreams. Did I waste all my time? And ultimately I was like, no, because I learned by being an early employee, seeing all these stages. I learned so much about how to run my own company and also all the technical learnings that I rolled into my own company. So, again, I feel weird giving this advice because everything has worked out really well, but I feel like there are moments in time where I sort of doubted some of my career decisions.</p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=4904">01:21:44</a>] And then in hindsight, you can only connect the dots. Looking backwards, everything kind of added up to finding the thing I really love, which is building tools and feeding into that.</p><p><strong>Ryan:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=4915">01:21:55</a>] Awesome. Well, thank you so much for your time, Charlie. I really appreciate it.</p><p><strong>Charlie:</strong></p><p>[<a href="https://youtu.be/Iw65FD4MGgs?t=4918">01:21:58</a>] Yeah, thank you. No, it was super fun.</p>]]></content:encoded></item></channel></rss>