John Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets | Lex Fridman Podcast #309

John Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets | Lex Fridman Podcast #309

Lex Fridman

0:01 I remember the reaction where he had drawn these characters and he

0:04 was slowly moving around and like people had no experience with 3D navigation,

0:08 it was all still keyboard.

0:09 We didn't even have mice set up at that time.

0:11 But slowly moving, going up, picked up a key, go to a wall,

0:16 the wall disappears in a little animation

0:17 and there's a monster like right there.

0:18 And he practically fell out of his chair.

0:21 It was just like, ah.

0:23 And games just didn't do that.

0:24 The games were the god's eye view.

0:28 You were a little invested in your little guy.

0:30 You can be like happy or sad when things happen,

0:33 but you just did not get that kind of startle reaction.

0:35 You weren't inside your game.

0:36 Something in the back of your brain,

0:38 some reptile brain thing is just going, "Oh,

0:40 shit something just happened." And that was

0:43 one of those early points where it's like,

0:45 yeah, this is gonna make a difference.

0:47 This is going to be powerful and it's gonna matter.

0:52 The following is a conversation with John Carmack,

0:55 widely considered to be one of the greatest programmers ever.

0:59 He was the co-founder of id Software and the lead

1:02 programmer on several games that revolutionized the technology,

1:06 the experience and the role of gaming in our society,

1:09 including Commander Keen, Wolfenstein 3D, Doom and Quake.

1:15 He spent many years as the CTO of Oculus VR,

1:19 helping to create portals into virtual worlds and to define

1:24 the technological path to the Metaverse at Meta.

1:28 And now he has been shifting some

1:30 of his attention to the problem of artificial general intelligence.

1:34 This was the longest conversation on this podcast at over five hours,

1:40 and still I could talk to John many,

1:42 many more times and we hope to do just that.

1:46 This is the "Lex Fridman Podcast." To support it,

1:49 please check out our sponsors in the description.

1:52 And now, dear friends, here's John Carmack.

1:57 What was the first program you've ever written?

2:00 Do you remember?

2:01 Yeah, I do.

2:02 So, I remember being in a radio shack going up to the TRS 80

2:06 computers and learning just enough to be able to do 10 print, John Carmack.

2:12 And it's kind of interesting how, of course I,

2:15 Carnegie and Richie kind of standardized hello world as the first

2:19 thing that you do in every computer programming language and every computer.

2:22 But not having any interaction with the cultures of Unix

2:26 or any other standardized things, it was just like,

2:28 "Well, what am I gonna say?" "I'm gonna say

2:30 my name and then you learn how to do,

2:32 "Go to 10 and have it scroll all off the screen." And that was

2:35 definitely the first thing that I wound up doing on a computer.

2:39 Can I ask you programming advice?

2:41 I was always told in the beginning

2:42 that you're not allowed to use Go-to statements.

2:44 That's really bad programming.

2:45 Is this correct or not?

2:46 Jumping around code?

2:48 Can we look at the philosophy and the technical

2:51 aspects of the Go-to statement that seems so convenient,

2:55 but it's supposedly bad programming?

2:56 Well, so certainly back in the day in basic programming languages,

2:58 you didn't have proper loops.

3:00 You didn't have four while and repeats, that was the land of Pascal for people

3:04 that kind of generally had access to it back then.

3:07 So, you had no choice but to use Go-tos.

3:10 And as you made, what were big programs back then,

3:13 which were a thousand line basic programs,

3:15 is a really big program, they did tend to sort of degenerate into madness.

3:20 You didn't have good editors or code exploration tools,

3:23 so you would wind up fixing things in one place, add a little patch.

3:27 And there's reasons why structured programming,

3:29 generally helps understanding, but go-tos aren't poisonous.

3:33 Sometimes they're the right thing to do.

3:35 Usually it's because there's a language feature missing,

3:38 like nested breaks or something where, it can sometimes be better to do a go-to

3:44 cleanup or go-to error rather than having multiple flags,

3:48 multiple if statements littered throughout things.

3:50 But it is rare.

3:51 I mean, if you grip through all of my code right now,

3:54 I don't think any of my current code bases, would actually have a go-to,

3:58 but deep within sort of the technical underpinnings of a major game engine,

4:03 you're gonna have some go-tos in a couple places probably.

4:07 Yeah, the infrastructure on top of, like the closer you get to the machine code,

4:11 the more go-tos you're gonna see,

4:12 the more of these like hacks you're going to see,

4:15 because the set of features available to you

4:18 in low level programming languages is not, is limited.

4:22 So, print John Carmack, when is the first time,

4:27 if we could talk about love that you fell in love with programming.

4:31 You said like this is really something special.

4:34 It really was something that was one of those love at first sight things

4:38 where just really from the time that I understood what a computer was even,

4:42 I mean, I remember looking through old encyclopedias at the black

4:46 and white photos of the IBM mainframes at the real tore tape decks.

4:50 And for people nowadays, it can be a little hard to understand

4:53 what the world was like then from information gathering

4:56 where I would go to the libraries and there

4:59 would be a couple books on the shelf,

5:01 about computers and they would be very out of date, even at that point,

5:04 just not a lot of information,

5:06 but I would grab everything that I could find and devour everything.

5:10 Whenever "Time" or "Newsweek" had some article about computers,

5:14 I would like cut it out with scissors and put it somewhere.

5:16 It felt like this magical thing to me,

5:19 this idea that the computer would just do exactly what you told it to.

5:24 I mean, and there's a little bit of the Genie

5:26 monkey's paw sort of issues there where you'd better be really,

5:29 really careful with what you're telling it to do.

5:31 But it wasn't gonna backtalk you,

5:33 it wasn't gonna have a different point of view.

5:34 It was gonna carry out what you told it to do.

5:37 And if you had the right commands you

5:39 could make it do these pretty magical things.

5:43 And so what kind of programs did you write at first?

5:45 So, beyond the print John Carmack.

5:48 So, I can remember as going through the learning process where you find

5:52 at the start you're just learning how to do the most basic possible things.

5:56 And I can remember stuff like a Superman

5:59 Comic that Radio Shack commissioned to have,

6:02 it's like Superman had lost some of his super brain and kids had to use

6:06 Radio Shack TRS 80 computers to do calculations

6:08 to help him kind of complete his heroics.

6:11 And I'd find little things like that and then get a few

6:16 basic books to be able to kind of work my way up.

6:20 And again, it was so precious back then.

6:22 I had a couple books that would teach me important things about it.

6:25 I had one book that I could start to learn a little bit of assembly language

6:30 from and I'd have a few books on basic

6:31 and some things that I could get from the libraries.

6:34 But my goals in the early days was almost always making games of various kinds.

6:40 I loved the arcade games and the early Atari 2,600 games and being able to do

6:46 some of those things myself on the computers was very much what I aspired to.

6:51 And it was a whole journey where if you learn normal,

6:54 basic, you can't do any kind of an action game.

6:56 You can write an adventure game, you can write things where you say,

6:59 "What do you do here?" "I get sort, attack, troll," that type of thing.

7:03 And that can be done in the context of basic,

7:06 but to do things that had moving graphics that were

7:09 only the most limited things you could possibly do.

7:12 You could maybe do breakout or pong

7:13 or that sort of thing in low resolution graphics.

7:16 And in fact, one of my first sort of major technical hacks

7:20 that I was kind of fond of was on the Apple II computers.

7:24 They had a mode called low resolution graphics where

7:29 of course all graphics were low resolution back then,

7:31 but regular low resolution graphics.

7:34 It was a grid of 40 by 40 pixels normally,

7:36 but they could have 16 different colors.

7:39 And I wanted to make a game,

7:41 kind of like the arcade game Vanguard, just a scrolling game.

7:44 And I wanted to just kind of have it scroll

7:46 vertically up and I could move a little ship around you.

7:49 You could manage to do that in basic,

7:50 but there's no way you could redraw the whole screen.

7:53 And I remember at the time,

7:55 just coming up with what felt like a brainstorm to me

7:58 where I knew enough about the way the hardware was controlled,

8:02 where the text screen and the low

8:04 resolution graphic screen were basically the same thing.

8:06 And all those computers, could scroll their text screen reasonably.

8:10 You could do a listing and it would scroll things

8:12 up and I figured out that I could kind of tweak,

8:15 just a couple things that I barely understood to put it

8:18 into a graphics mode and I could draw graphics and then

8:21 I could just do a line feed at the very bottom

8:23 of the screen and then the system would scroll it all up,

8:26 using an assembly language routine that I didn't know how to write back then.

8:30 So, that was like this first great hack that sort of had

8:34 analogs later on in my career for a lot of different things.

8:37 So, I found out that I could draw a screen,

8:39 I could do a line feed at the bottom, we would scroll it up once,

8:42 I could draw a couple more lines of stuff at the bottom.

8:44 And that was my first way to kind of scroll the screen,

8:47 which was interesting in that that played a big

8:51 part later on in the id Software days as well.

8:53 So, do efficient drawing where you don't have to draw the whole screen,

8:59 but you draw from the bottom using the thing

9:01 that was designed in the hardware for text output.

9:04 Yeah.

9:05 Where so much of, until recently game design was limited

9:10 by what you could actually get the computer to do,

9:13 where it's easy to say like, "Okay, I wanna scroll the screen." You just

9:16 redraw the entire screen at a slight offset.

9:19 And nowadays that works just fine.

9:21 Computers are ludicrously fast.

9:24 But up until a decade ago or so,

9:27 there were all these things everybody wanted to do,

9:30 but if they knew enough programming to be able to make it happen,

9:33 it would happen too slow to be a good experience,

9:36 either just ridiculously slow or just slow enough

9:39 that it wasn't fun to experience it like that.

9:42 So, so much of kinda the first couple

9:44 decades of the programming work that I did was

9:46 largely figuring out how to do something that everybody

9:48 knows how they want it to to happen.

9:51 It just has to happen two to 10 times faster than

9:54 sort of the straightforward way of doing things would make it happen.

9:58 And it's different now because at this point,

10:01 lots of things you can just do in the most

10:03 naive possible way and it still works out.

10:05 You don't have nearly the creative limitations

10:09 or the incentives for optimizing on that level.

10:12 And there's a lot of pros and cons to that.

10:14 But I do generally, I'm not gonna do the angry old man,

10:18 shaking my fist at the clouds bit where back

10:20 in my day programmers had to do real programming.

10:23 It's amazing that you can just kind of pick an idea and go do it right now.

10:27 And you don't have to be some assembly language wizard or deep GPU

10:31 arcane to be able to figure out how to make your wishes happen.

10:35 Well there's still, see that's true, but let me put on my old man with a fist

10:41 hat and say that probably the thing that will define the future,

10:45 still requires you to operate at the limits of the current system.

10:49 So, we'll probably talk about this, but if you talk

10:53 about building the metaverse and building a VR experience that's compelling,

10:57 it probably requires you to not to go to assembly or maybe not literally,

11:03 but sort of spiritually to go to the limits of what the system is capable of.

11:08 And that really was why virtual reality

11:10 was specifically interesting to me where it

11:14 had all the ties to, you could say that even back in the early days,

11:17 I have some old magazine articles that's

11:19 talking about doom as a virtual reality experience,

11:22 back when just seeing anything in 3D.

11:24 So, you could say that we've been trying

11:26 to build those virtual experiences from the very beginning.

11:29 And in the modern era, virtual reality, especially on the mobile side of things,

11:34 when it's standalone and you're basically using a cell phone

11:37 chip to be able to produce these very immersive experiences,

11:41 it does require work.

11:43 It's not at the level of what an old school console game programmer,

11:47 would have operated at where you're looking at hardware

11:50 registers and you're scheduling all the DMA accesses,

11:53 but it is still definitely a different level than what a web

11:56 developer or even a PC steam game developer usually has to work at.

12:01 And again, it's great.

12:02 There's opportunities for people that wanna

12:04 operate at either end of that spectrum

12:06 there and still provide a lot of value to the world.

12:09 Let me ask you sort of a big question about preference.

12:15 What would you say is the best programming language,

12:19 your favorite, but also the best, you've seen throughout your career?

12:25 You're considered by many to be the greatest programmer ever.

12:29 I mean, it's so difficult to place that label on anyone,

12:32 but if you put it on anyone, it's you.

12:33 So, let me ask you these kind of ridiculous

12:36 questions of what's the best band of all time,

12:38 but in your case, what's the best programming language?

12:41 Everything has all the caveats about it, but so what I use,

12:45 so nowadays I do program a reasonable amount of Python for AI ML sorts of work.

12:51 I'm not a native Python programmer.

12:54 It's something I came to very late in my career.

12:56 I understand what it's good for.

12:58 But you don't dream in Python.

13:00 I do not.

13:00 And it has some of those things where there's some amazing stats

13:04 when you say if you just start, if you make a loop,

13:07 a triply nested loop and start doing operations in Python,

13:10 you can be thousands to potentially a million

13:14 times slower than a proper GPU tensor operation.

13:17 And these are staggering numbers,

13:19 you can be as much slower as we've almost gotten faster

13:23 in our pace of progress and all this other miraculous stuff.

13:27 So, your intuition's about inefficiencies within the Python

13:29 sort of-- It keeps hitting me upside the face.

13:32 Where it's gotten to the point now I understand.

13:34 It's like, okay, you just can't do

13:35 a loop if you care about performance in Python.

13:38 You have to figure out how you can reformat this into some

13:42 big vector operation or something that's going to be done completely,

13:44 within a C plus plus library.

13:47 But the other hand is it's amazingly convenient and you

13:50 just see stuff that people are able to cobble

13:53 together by you just import a few different things

13:55 and you can do stuff that nobody on earth,

13:57 could do 10 years ago and you can do it in a little

13:59 cookbook thing that you copy paste it out of a website.

14:02 So, that is really great.

14:04 When I'm sitting down to do what I consider kind of serious programming.

14:08 It's still in C plus plus and it's really kind of a C flavored C plus

14:13 plus at that where I'm not big

14:15 into the modern template meta programming sorts of things.

14:18 I see a lot of train wrecks coming from, some of that over abstraction.

14:23 I spent a few years really going kind of deep into the kinda the historical

14:28 lisp work and the Haskell and some

14:31 of the functional programming sides of things.

14:33 And there is a lot of value there in the way you think about things.

14:38 And I changed a lot of the way I write my C and C plus plus code based on what I

14:43 learned about the value that comes out of not having

14:46 this random mutable state that you kind of lose track of.

14:50 Because something that many people don't really appreciate,

14:53 till they've been at it for a long time

14:55 is that it's not the writing of the program initially,

14:58 it's the whole lifespan of the program and that's when,

15:01 it's not necessarily just how fast you wrote it or how fast it operates,

15:05 but it's how can it bend and adapt as situations change.

15:09 And then the thing that I've really been learning in my time at Meta

15:12 with the Oculus and VR work is it's also how well it hands off,

15:16 between a continuous kind of revolving door of programmers

15:19 taking over maintenance and different things and how

15:22 you get people up to speed in different areas

15:24 and there's all these other different aspects of it.

15:27 Is C plus plus a good language for handover between engineers?

15:32 Probably not the best.

15:34 And there's some really interesting aspects to this where in some

15:38 cases languages that are not generally thought well of for many reasons.

15:43 Like C is derided pretty broadly that yes,

15:46 obviously all of these security flaws that happen with the memory

15:49 and unsafeness and buffer overruns and the things that you've got there.

15:53 But there is this underappreciated aspect to the language is so simple.

15:58 Anyone can go and if you know C,

16:01 you can generally jump in someplace and not have to learn

16:04 what paradigms they're using because there just aren't that many available.

16:08 I think there's, and there's some really, really well-written C code,

16:12 like I find it great that if I'm messing around with something in open BSD say,

16:16 I mean I can be walking around in the kernel and I'm like,

16:19 I understand everything that's going on here.

16:21 It's not hard for me to figure out what I need to do

16:25 to make whatever change that I need

16:29 to, while you can have more significant languages.

16:32 Like, it's a downside of lisp where I

16:35 don't regret the time that I spent with Lisp.

16:37 I think that it did help my thinking about programming in some ways.

16:42 Yes.

16:43 But the people that are the biggest defenders of Lisp are saying how

16:46 malleable of a language it is that if you write a huge Lisp program,

16:50 you've basically invented your own kind of language and structure because

16:54 it's not the primitives of the language you're using very much.

16:57 It's all of the things you've built on top of that.

16:59 And then a language like Racket, kind of one of the more modern Lisp versions,

17:03 it's essentially touted as a language for building other languages.

17:07 And I understand the value of that for a tiny little project,

17:12 but the idea of that for one of these long-term

17:15 supported by lots of people kind of horrifies me,

17:18 where all of those abstractions that you're like,

17:20 "Okay, you can't touch this code,

17:22 "till you educate yourself on all of these things "that we've built on top

17:26 of that." And it was interesting to see how when Google made Go,

17:30 a lot of the criticisms of that are,

17:32 it's like, "Wow, this is not a state-of-the-art language.

17:34 "This language is just so simple and almost

17:37 crude." And you could see the programming language people,

17:40 just looking down at it, but it does seem to be quite popular

17:44 as basically saying this is the good things about C.

17:47 Everybody can just jump right in and use it.

17:49 You don't need to restructure your brain to write good code in it.

17:53 So, I wish that I had more opportunity for doing some work in Go.

17:58 Rust is the other modern language that everybody

18:01 talks about that I'm not fit past judgment on.

18:04 I've done, a little bit beyond Hello World,

18:06 I wrote some like video decompression work in Rust, just as an exercise,

18:10 but that was a few years ago and I haven't really used it since.

18:14 The best programming language is the one that works,

18:17 generally that you're currently using,

18:19 because that's another trap is in almost every case I've

18:22 seen when people mixed languages on a project, that's a mistake.

18:26 I would rather stay just in one language,

18:29 so that everybody can work across the entire thing.

18:31 And we have, like at Meta,

18:33 we have a lot of projects that use kind of React framework.

18:36 So, you've got JavaScript here and then you have C plus plus for real work,

18:40 and then you may have Java interfacing with some other part

18:43 of the Android system and those are all kind of horrible things.

18:46 And that was one thing that, I remember talking

18:51 with with Boz at Facebook about it where like,

18:54 man, I wish we could have just said we're only hiring C plus plus programmers.

18:58 And he just thought from the Facebook Meta perspective,

19:02 well we just wouldn't be able to find enough,

19:04 with the thousands of programmers they've got there.

19:08 It is not necessarily a dying breed,

19:10 but you can sure find a lot more JavaScript programmers and I kind

19:15 of mentioned that to Elon one time and he was kind of flabbergasted about that.

19:21 It's like, well you just,

19:22 you go out and you find those programmers and you don't hire

19:24 the other programmers that don't do the languages that you want to use.

19:28 But right now, I guess, yeah,

19:29 they're using JavaScript on a bunch of the, the SpaceX

19:31 work for the UI side of things.

19:33 When you go find UI programmers, they're JavaScript programmers.

19:37 I wonder if that's because there's a lot of JavaScript

19:39 programmers because I do think that great programmers are rare,

19:44 that if you just look at statistics

19:47 of how many people are using different programming languages,

19:51 that doesn't tell you the story of what the great programmers are using.

19:55 And so you have to really look at what you

19:58 were speaking to, which is the fundamentals of a language.

20:00 What does it encourage you?

20:01 How does it encourage you to think,

20:03 what kind of systems does it encourage you to build?

20:05 There is something about C plus plus that has elements

20:10 of creativity but forces you to be an adult about your programming.

20:15 [John] Is that it expects you to be an adult.

20:16 It does not forced you to.

20:19 And so it brings out people that are willing to be creative

20:25 in terms of building large systems and coming up with interesting solutions,

20:29 but at the same time, have the sort of the good software engineering

20:35 practices that amend themselves to real world systems.

20:38 Let me ask you about this other language, JavaScript.

20:43 So, if aliens visit in thousands of years and humans are long gone,

20:50 something tells me that most of the systems

20:52 they find will be running JavaScript.

20:55 I kind of think that if we're living this simulation,

20:58 it's written in JavaScript.

21:01 For the longest time,

21:03 even still JavaScript didn't get any respect and yet it runs

21:08 so much of the world and an increasing number of the world.

21:11 Is it possible that all everything will be written in JavaScript one day?

21:17 So, the engineering under JavaScript is really pretty phenomenal.

21:20 The systems that make JavaScript run as fast as it does

21:25 right now are kind of miracles of modern engineering in many ways.

21:29 It does feel like it is not an optimal

21:34 language for all the things that it's being used

21:36 for or an optimal distribution system to build huge apps

21:40 in something like this without type systems and so on.

21:44 But I think for a lot of people it does reasonably the necessary things.

21:50 It's still a C flavored language, it's still a braces and semicolon language.

21:55 It's not hard for people to be trained in JavaScript

21:59 and then understand the roots of where it came from.

22:02 I think garbage collection is unequivocally a good

22:06 thing for most programs to be written in.

22:08 It's funny that I still just this morning

22:11 I was on, I was seeing a Twitter thread

22:13 of a bunch of really senior game dev people

22:15 arguing about the virtues and costs of garbage collection.

22:18 And you will run into some people that are top-notch programmers that just say,

22:22 "No, this is literally not a good thing."- Oh, because it makes you lazy?

22:26 Yes, that it makes you not think about things.

22:28 And I do disagree.

22:29 I think that there is so much objective data on the vulnerabilities

22:34 that have happened in C and C plus plus programs,

22:37 sometimes written by the best programmers in the world.

22:40 It's like nobody is good enough to avoid

22:42 ever shooting themselves in the foot with that.

22:44 You write enough C code,

22:45 you're going to shoot yourself in the foot and garbage collection

22:48 is a very great thing for the vast majority of programs.

22:51 It's only when you get into the tightest of real

22:54 time things that you start saying, it's like, "No,

22:56 the garbage collection has more costs "than it has benefits for me there."

22:59 But that's not 99 plus percent of all the software in the world.

23:04 So, JavaScript is not terrible in those ways

23:09 and so much of programming is not the language itself,

23:14 it's the infrastructure around, that surrounds it.

23:17 All the libraries that you can get and the different stuff that you can,

23:20 ways you can deploy it, the portability that it gives you.

23:24 And JavaScript is really strong on a lot of those things where

23:27 for a long time and it still does if I look at it,

23:30 but the web stack about everything that has to go when you do

23:34 something really trivial in JavaScript and it shows up on a web browser

23:38 to kind of X-ray through that and see everything that has to happen

23:42 for your one little JavaScript statement to turn

23:45 into something visible in your web browser.

23:47 It's very, very disquieting, just the depth of that stack and the fact

23:54 that so few people can even comprehend,

23:56 all of the levels that are going on there.

23:59 But it's, again, I have to caution myself to not

24:02 be the, in the good old days old man about it,

24:05 because clearly there's enormous value here.

24:08 The world does run on JavaScript to a pretty

24:12 good approximation there and it's not falling apart.

24:14 There's a bunch of scary stuff where you look at console logs

24:18 and you just see all of these bad things that are happening,

24:20 but it's still kind of limping along and nobody really notices.

24:24 But so much of my systems design and systems analysis goes around,

24:30 you should understand what the speed of light is,

24:32 like what would be the best you could possibly do here?

24:36 And it sounds horrible, but in a lot of cases you can be a thousand times

24:40 off your speed of light velocity for something and it still be okay.

24:45 And in fact it can even sometimes still be

24:48 the optimal thing in a larger system standpoint where there's

24:51 a lot of things that you don't wanna have

24:54 to parachute in someone like me to go in and say,

24:56 make this webpage run a thousand times faster.

25:01 Make this web app into a hardcore native application that starts up

25:06 in 37 milliseconds and everything responds in less than one frame latency.

25:11 That's just not necessary.

25:12 And if somebody wants to go pay me millions of dollars to do software

25:16 like that, when they can take somebody right out of a bootcamp and say,

25:19 "Spin up an application for this," often

25:21 being efficient is not really the best metric.

25:26 And that applies in a lot of areas where it's kind of interesting

25:30 how a lot of our appliances

25:32 and everything are all built around energy efficiency,

25:36 sometimes at the expense of robustness in some

25:39 other ways or higher costs in other

25:40 ways where there's interesting things where energy

25:43 or electricity could become much cheaper in a future

25:46 world and that could change our engineering

25:48 trade-offs for the way we build certain

25:50 things where you could throw away efficiency

25:53 and actually get more benefits that actually matter.

25:56 I mean that's one of the directions I was considering

26:00 swerving into was nuclear energy when I was kind of like,

26:03 what do I want to do next?

26:04 It was either gonna be cost

26:06 effective nuclear fission or artificial general intelligence.

26:10 And one of my pet ideas there is like,

26:14 people don't understand how cheap nuclear fuel is and there would

26:19 be ways that you could be a quarter the efficiency or less,

26:24 but if it wound up making your plant 10 times cheaper,

26:27 that could be a radical innovation in something like that.

26:31 So, there's like some of these thoughts around,

26:32 like direct fission energy conversion,

26:35 fission fragment conversion that maybe you build something

26:38 that doesn't require all the steam turbines and everything,

26:40 even if it winds up being less efficient.

26:42 So, that applies a lot in programming where there's always,

26:46 it's always good to know what you could do

26:48 if you really sat down and took it far,

26:51 because sometimes there's discontinuities, like around user reaction times,

26:56 there are some points where the difference between operating

26:59 in one second and 750 milliseconds, not that huge.

27:03 You'll see it in webpage statistics,

27:05 but most of the usability stuff not that great.

27:08 But if you get down to 50 milliseconds,

27:10 then all of a sudden this just feels amazing.

27:13 It's just like doing your bidding instantly,

27:15 rather than you're giving it a command,

27:17 twiddling your thumbs, waiting for it to respond.

27:19 So, sometimes it's important to really crunch hard to get over some threshold,

27:25 but there are broad basins in the value metric for lots

27:29 of work where it just doesn't pay to even go that extra mile.

27:32 And there are craftsmen that, they just don't

27:35 wanna buy that and more power to them, if somebody just wants to say, no,

27:39 I'm going to be, my pride is in my work,

27:42 I'm never going to do something that's not as good as I could possibly make it.

27:46 I respect that and sometimes I am that person,

27:50 but I try to focus more on the larger

27:53 value picture and you do pick your battles and you

27:55 deploy your resources in the play that's going to give

27:58 you sort of the best user value in the end.

28:01 Well if you look at the evolution of life

28:03 on earth as a kind of programming effort,

28:09 it seems like efficiency isn't the thing that's

28:14 being optimized for, like natural selection is very inefficient,

28:17 but it kind of adapts and through the process of adaptations,

28:22 building more and more complex systems that are more and more intelligent,

28:25 the final result is kind of pretty interesting.

28:28 And so I think of JavaScript the same way.

28:30 It's like this giant mess that, things naturally die off

28:35 if they don't work and if they're become useful to people,

28:39 they kind of naturally live.

28:40 And then you build this community,

28:42 large community of people that are jittering code and some code is sticky,

28:47 some is not, and nobody knows the inefficiencies

28:51 or the efficiencies or the breaking points,

28:53 like how reliable this code is and you kind of just run it, assume it works,

28:57 and then get unpleasantly surprised and then

29:01 that's very kind of the evolutionary process.

29:03 So, that's a really good analogy and we can go a lot

29:06 of places with that where in the earliest days of programming,

29:09 when you had finite, you could count the bites that you had to work on this.

29:13 You had all the kind of hackers playing code golf to be one

29:16 less instruction than the other person's

29:18 multiply routine to kind of get through.

29:20 And it was so perfectly crafted,

29:22 it was a crystal piece of artwork when you had a program,

29:26 because there just were not that many.

29:28 You couldn't afford to be lazy in different ways.

29:31 And in many ways I see that as akin to the symbolic AI work where again,

29:35 if you did not have the resources to just say,

29:38 "Well we're gonna do billions and billions

29:40 "of programmable weights here," you have

29:43 to turn it down into something that is symbolic and crafted like that.

29:47 But that's definitely not the way DNA

29:50 and life and biological evolution and things work.

29:54 On the one hand it's almost humbling

29:58 how little programming code is in our bodies.

30:00 We've got a couple billion base pairs and it's like

30:03 this all fits on a thumb drive for years now.

30:05 And then our brains are even a smaller section of that.

30:08 You've got maybe 50 megabytes and this is not like Shannon limit,

30:12 perfectly information dense conveyances here.

30:17 It's like these are messy codes, they're broken up into amino acids.

30:21 A lot of them don't do important things or they do things in very awkward ways.

30:26 But it is this process of just accumulation on top of things.

30:30 And you need scale, both you need scale

30:34 for sort of the population for that to work out.

30:37 And in the early days in the 50s and 60s,

30:39 the kind of ancient era of computers where you could count when they say like,

30:44 when the internet started,

30:45 even in the seventies there were like 18 hosts or something on it.

30:48 It was this small finite number and you were still

30:51 optimizing everything to be as good as you possibly could be.

30:54 But now it's billions and billions of devices and everything going on and you

31:00 can have this very much natural evolution

31:02 going on where lots of things are tried, lots of things are blowing up.

31:07 Venture capitalists lose their money when a startup invested in the wrong

31:11 tech stack and things completely failed or failed to scale.

31:14 But good things do come out of it.

31:17 And it's interesting to see the mimetic

31:20 evolution of the way different things happen.

31:22 Like mentioning Hello World at the beginning,

31:24 it's funny how some little thing like that where everybody,

31:27 every programmer knows Hello World now.

31:29 And that was a completely arbitrary sort of decision that just came out

31:33 of the dominance of Unix and C and early examples of things like that.

31:38 So, millions of experiments are going on all the time,

31:42 but some things do kind of rise to the top and win

31:45 the fitness war for whether it's

31:47 mind space or programming techniques or anything.

31:50 Like, there's a site on stack exchange

31:53 called Code Golf where people compete to write

31:56 the shortest possible program for a particular

31:58 task in all the different kinds of languages.

32:01 And it's really interesting to see folks kind of, that are

32:08 masters of their craft really play with the limits of programming languages.

32:13 It's really beautiful to see and across all the different programming languages,

32:17 you get to see some of these weird programming languages and mainstream ones,

32:22 difference between Python two and three.

32:25 You get to see the difference between C and C plus

32:27 plus and Java and you get to see JavaScript, all of that.

32:30 And it's kind of inspiring to see how much depth of possibility

32:38 there is within programming languages that code golfed kind of tasks reveal.

32:44 Most of us, if you do any kind of programming,

32:46 you kind of do boring kind of very vanilla type of code.

32:50 That's the way to build large systems.

32:52 But it's nice to see that the possibility

32:54 of creative genius is still within those languages,

32:57 it's laden with in those languages.

33:00 So, given that you are once again one of the greatest programmers ever,

33:05 what do you think makes a good programmer, maybe a good modern programmer?

33:11 So, I just gave a long rant/lecture at Meta

33:15 to the TPM organization and my biggest point was,

33:20 everything that we're doing really should flow from user value.

33:24 You know, all the good things that we're doing.

33:26 It's like we're not technical people.

33:28 It's like you shouldn't be taking pride, just in the specific thing.

33:32 Like code golf is the sort of thing, it's a fun puzzle game,

33:34 but that really should not be a major motivator for you.

33:38 It's like we're solving problems for people

33:40 or we're providing entertainment to people.

33:41 We're doing something of value to people

33:44 that's displacing something else in their life.

33:46 So, we want to be providing a net value over what they could be doing,

33:50 but instead they're choosing to use our products.

33:53 And that's where, I mean, it sounds trite or corny,

33:56 but I fundamentally do think that's how you make the world a better place.

34:00 If you have given more value to people than it took you and your team to create,

34:05 then the world's a better place.

34:07 People have, they've gone from something of lesser value,

34:10 chosen to use your product and their life feels better for that.

34:13 And if you've produced that economically, that's a really good thing.

34:18 On the other hand, if you spent ridiculous amounts of money,

34:22 you've just kind of shoveled a lot of cash into a wood

34:25 chipper there and you should maybe not feel so good, about what you're doing.

34:29 So, being proud about like a specific architecture or a specific

34:34 technology or a specific code sequence that you've done,

34:37 it's great to get a little smile, like a tiny little dopamine hit for that.

34:41 But the top level metrics should be that you're building things of value.

34:45 Now you can get into the argument about what is user value,

34:49 how do you actually quantify that?

34:51 And there can be big arguments about that, but it's easy to be able to say,

34:55 "Okay, this off user there is not getting value "from what you're doing.

34:59 "This user over there with a big smile on their face.

35:01 "I am the moment of delight when something happened.

35:04 "There's a value that's happened there." I mean if you have

35:06 to at least accept that there is a concept of user value.

35:09 Even if you have trouble exactly quantifying it,

35:12 you can usually make relative arguments about it,

35:15 well this was better than this, we've improved things.

35:18 So, being a servant to the user is your job when you're a developer.

35:25 You want to be producing something that you

35:27 know other people are gonna find valuable.

35:30 And if you are technically inclined,

35:32 then finding the right levers to be able to pull to be able to make

35:37 a design that's going to produce the most value for the least amount of effort.

35:41 And it always has to be kind of divide.

35:44 There's a ratio there where you, it's a problem at the big tech companies,

35:48 whether it's Meta, Google, Apple, Microsoft,

35:51 Amazon, companies that have almost infinite money.

35:54 I mean, I know their CFO will complain that it's not infinite money,

35:58 but from most developer standpoints it really does feel like it.

36:02 And it's almost counterintuitive that if you're

36:05 working hard as a developer on something, there's always this thought,

36:08 if only I had more resources, more people,

36:11 more RAM, more megahertz, then my product will be better.

36:16 And that sense that at certain points,

36:18 it's certainly true that if you are really hamstrung by this, removing

36:22 an obstacle will make a better product, make more value.

36:27 But if you're not making your core design decisions in this fiercely

36:31 competitive way where you're saying feature A or feature B,

36:35 you can't just say let's do both.

36:38 Because then you're not making a value judgment about them.

36:41 You're just saying, "Well they both seem good.

36:42 "I don't wanna necessarily have "to pick out which one is

36:45 better or how much better "and tell team B that, sorry,

36:49 we're not gonna do this, "because A is more important."

36:52 But that notion of always having to really critically value what you're doing,

36:58 the resources you expend,

36:59 even the opportunity cost of doing something else, that's super important.

37:05 Well let me ask you about this, the debates

37:06 that you're mentioning of how to measure value.

37:12 Is it possible to measure it kind of numerically

37:19 or can you do the sort of Johnny,

37:21 the design route of imagining sort of somebody using

37:25 a thing and imagining a smile on their face,

37:30 imagining the experience of love and joy that you have when you use the thing,

37:35 that's from a design perspective or if you're building

37:38 more like a lower level thing for like Linux,

37:41 you imagine a developer that might come across this and use

37:45 it and become happy and better off because of it.

37:50 So, where do you land on those things?

37:52 Is it measurable?

37:53 So, I imagine like Meta and Google, will probably try to measure the thing,

37:58 they'll try to, it's like you try to optimize engagement or something,

38:01 let's measure engagement.

38:03 And then I think there is a kind of, I mean,

38:06 I admire the designer ethic of like,

38:09 think of a future that's immeasurable and you try

38:13 to make somebody in that future that's different from today happy.

38:17 So, I do usually favor if you can get any kind of a metric that's good,

38:23 by all means listen to the data.

38:25 But you can go too far there where we've had problems where it's like,

38:29 "Hey, we had a performance regression,

38:30 "because our fancy new telemetry system "is doing

38:34 a bazillion file rights "to kind of archive this stuff,

38:37 "because we needed to collect information

38:38 "to determine if our plans were good." So,

38:43 when information is available, you should never ignore it.

38:47 From actual users using the thing, human beings using the thing,

38:51 large number of human beings and you get to see sort of at all large.

38:55 So, there's zero to one problem of when you're doing something really new,

38:57 you do kind of have to make a guess.

38:59 But one of the points that I've been making at Meta is we

39:03 have more than enough users now that anything somebody wants to try in VR,

39:08 we have users that will be interested in that.

39:10 You do not get to make a completely greenfield blue sky pitch and say,

39:15 I'm going to do this, because I think it might be interesting.

39:18 I challenge everyone.

39:20 There are going to be people,

39:21 whether it's working in VR on your, like on your desktop

39:26 replacement or communicating with people in different ways or playing the games.

39:31 There are going to be probably millions of people or at least

39:35 if you pick some tiny niche that we're not in right now,

39:38 there's still gonna be thousands of people out there

39:40 that have the headsets that would be your target market.

39:43 And I tell people, pay attention to them.

39:46 Don't invent fictional users, don't make an Alice, Bob,

39:49 Charlie that fits whatever matrix of tendencies that you

39:54 want to break the market down to, because it's

39:56 a mistake to think about imaginary users when you've

39:58 got real users that you could be working with.

40:01 But on the other hand there is,

40:03 there is value to having a kind of wholeness of vision for a product.

40:09 And companies like Meta have,

40:13 they understand the trade-offs where you can have a company

40:17 like SpaceX or Apple in the Steve Jobs era where

40:20 you have a very powerful leading personality that can micromanage

40:24 at a very low level and can say it's like, no, that handle needs to be different

40:29 or that icon needs to change the tint there.

40:32 And they clearly get a lot of value out of it.

40:34 They also burn through a lot of employees

40:37 that have horror stories to tell about working there afterwards.

40:41 My position is that you are at your best

40:45 when you've got a leader that is at their limit

40:48 of what they can kind of comprehend of everything

40:50 below them and they can have an informed opinion,

40:53 about everything that's going on.

40:55 And you take somebody,

40:56 you've gotta believe that somebody that has 30, 40 years of experience,

41:01 you would hope that they've got wisdom that the the just out of bootcamp person,

41:05 contributing doesn't have.

41:07 And that if they're like, well that's wrong there,

41:09 you probably shouldn't do it that way or even

41:11 just don't do it that way, do it another way.

41:14 So, there's value there, but it can't go beyond a certain level.

41:17 I mean I have Steve Jobs stories of him saying,

41:21 things that are just wrong right in front of me,

41:23 about technical things, because he was not operating at that level.

41:27 But when it does work and you do get that kind of passionate

41:31 leader that's thinking about the entire product and just really deeply cares,

41:35 about not letting anything slip through the cracks,

41:38 I think that's got a lot of value.

41:40 But the other side of that is the people saying that, "Well,

41:42 we wanna have these independent teams "that are

41:45 bubbling up the ideas because" and like it's almost,

41:48 it's anti-capitalist or anti-free market to say it's like I want my grand,

41:52 my great leader to go ahead and dictate all these points

41:54 there where clearly free markets bring up things that, you don't expect.

41:59 Like in VR we saw a bunch of things,

42:01 like it didn't turn out at all the way the early people

42:04 thought were gonna be the key applications and things that would not

42:07 have been approved by the dark cabal making the decisions about what

42:12 gets into the store turn out to, in some cases be extremely successful.

42:17 So yeah, I definitely kind of wanted to be

42:20 there as a point where I did make a pitch.

42:22 It's like, "Hey, make me VR dictator "and I'll go

42:24 and get shit done." And it's not in the culture at Meta,

42:28 they understand the trade offs.

42:30 And that's just not the way, that's not the company that they want,

42:34 the team that they want to do.

42:37 Yeah, it's fascinating 'cause VR and we'll talk about it more.

42:39 It's still unclear to me in what way VR will change the world,

42:46 because it does seem clear that VR

42:48 will somehow fundamentally transform this world.

42:51 And it's unclear to me how.

42:54 [John] Yeah, let me know when you wanna get into that.

42:56 We will, well hold on a second.

42:58 So, stick to the, you being the best programmer ever, okay,

43:03 in the early days when you didn't have adult responsibilities of leading teams

43:08 and all that kind of stuff and you can focus on just being a programmer,

43:13 what did the productive day in the life of John Carmack look like?

43:17 How many hours of the keyboard, how much sleep?

43:20 What was the source of calories that fueled the brain?

43:24 What was it like, what time did you wake up?

43:26 So, I was able to be remarkably consistent about what

43:30 was good working conditions for me for a very long time.

43:33 I was never one of the programmers that I,

43:37 that would do all-nighters, going through work for 20 hours straight.

43:41 It's like my brain generally starts turning to mush after 12 hours or so,

43:45 but the hard work is really important and I would work for decades.

43:52 I would work 60 hours a week.

43:53 I would work a 10 hour day, six days a week and try to be productive at that.

43:59 Now, my schedule shifted around a fair amount when I was young without any kids,

44:02 I am any other responsibilities,

44:05 I was on one of those cycling schedules where I'd kind of get

44:08 in an hour later each day and roll around through the entire time

44:12 and I'd wind up kind of pulling in at two or three

44:14 in the afternoon sometimes and then working

44:17 again past midnight or two in the morning.

44:20 And that was when it was just me trying to make

44:24 things happen and I was usually isolated off in my office.

44:28 People generally didn't bother me much at it and I

44:31 could get a lot of programming work done that way.

44:35 I did settle into a more normal schedule when

44:37 I was taking kids to school and things like that.

44:40 So, kids were the forcing function that got you to wake up

44:42 and at the same time these-- And it's not clear to me that there

44:45 was a much of a difference in the productivity with that where I

44:49 kind of feel if I just get up when I feel like it,

44:53 it's usually a little later each day.

44:55 But I just recently made the focusing decision

44:58 to try to push my schedule back a little bit earlier to getting up at eight

45:01 in the morning and trying to shift things around.

45:04 Like I'm often doing experiments with myself about

45:08 what should I be doing to be more productive.

45:10 And one of the things that I did realize was happening

45:14 in recent months where I would go for a walk or a run.

45:19 I cover like four miles a day and I would usually do that, just

45:23 as the sun's going down at here in Texas now and it's still really damn hot.

45:27 But I'd go out at 8:30 or something and cover the time

45:31 there and then the showering and it was putting a hole

45:34 in my day where I would have still a couple hours after

45:37 that and sometimes my best hours were at night when nobody else is around,

45:41 nobody's bothering me.

45:42 But that hole in the day was a problem.

45:44 So, just a couple weeks ago I made the change to go ahead and say,

45:48 "All right, I'm gonna get up a little earlier,

45:49 "I'm gonna do a walk or get out there

45:51 first "so I can have more uninterrupted time." So,

45:54 I'm still playing with factors like this as I kind of optimize my work efforts.

45:59 But it's always been, it was 60 hours a week for a very long time.

46:05 To some degree I had a little thing in the back of my head where I was almost

46:08 jealous of some of the programmers that would do

46:10 these marathon sessions and I had like Dave Taylor, one of the guys that he had,

46:14 he would be one of those people that would fall asleep under

46:16 his desk sometimes and all the kind of classic hacker tropes about things.

46:20 And a part of me was like always a little bothered that that wasn't me.

46:23 That I wouldn't go program 20 hours straight,

46:27 because I'm falling apart and not being very effective after 12 hours.

46:31 I mean, yeah, a 12 hour programming,

46:33 that's fine when you're doing that, but you're not doing smart work much after,

46:38 at least I'm not, but there's a range of people.

46:41 I mean that's something that a lot of people,

46:42 don't really get in their gut where there are people that work on four

46:46 hours of sleep and are smart and can continue to do good work,

46:49 but then there's a lot of people that just fall apart.

46:52 So, I do tell people that I always try to get eight hours of sleep.

46:56 It's not this, push yourself harder, get up earlier.

46:59 I just do worse work, you can work a hundred hours a week and still get

47:05 eight hours of sleep if you just kind of prioritize things correctly.

47:08 But I do believe in working hard, working a lot.

47:11 There was a comment that a game dev made that, that I

47:16 know there's a backlash against really hard work in a lot of cases,

47:20 and I get into online arguments about this all the time.

47:23 But it was basically saying, yeah, 40 hours a week,

47:26 that's kind of a part-time job and if are really in it,

47:29 you're doing what you think is important,

47:31 what you're passionate about, working more gets more done.

47:35 And it's just really not possible to argue with that if you've been around

47:40 the people that work with that level of intensity and just say it's like,

47:44 no, they should just stop.

47:46 And we had, I kind of came back around to that a couple

47:50 years ago where I was using the fictional example of, alright,

47:54 some people say, they'll say with a straight face, they think no,

47:57 you are less productive if you work more than 40 hours a week.

48:01 And they're generally misinterpreting things where

48:03 you're marginal productivity for an hour,

48:06 after eight hours is less than in one of your peak hours,

48:09 but you're not literally getting less done.

48:10 There is a point where you start breaking things and getting

48:14 worse behavior and everything out of it where you're literally going backwards,

48:18 but it's not at eight or 10 or 12 hours.

48:21 And the fictional example I would use was,

48:23 imagine there's an asteroid coming to impact,

48:26 to crash into earth destroy all of human life.

48:29 Do you want Elon Musk or the people working at SpaceX

48:34 that are building the interceptor that's going to deflect the asteroid?

48:38 Do you want them to clock out at five, because damn it they're just gonna go do

48:42 worse work if they work another couple hours.

48:44 And it seems absurd and that's

48:47 a hypothetical though and everyone can dismiss that.

48:50 But then when Coronavirus was hitting and you have all

48:53 of these medical personnel that are

48:55 clearly pushing themselves really, really hard.

48:58 And I'd say it's like, okay, do you want all of these scientists,

49:02 working on treatments and vaccines and caring for all of these people?

49:05 Are they really screwing everything up by working more than eight hours a day?

49:09 And of course people say,

49:10 "I'm just an to say something like that," but it's the truth.

49:15 Working longer gets more done.

49:18 So, that's kind of the layer one.

49:20 But I'd like to also say that at least I believe depending on the person,

49:25 depending on the task, working more and harder will make you better

49:34 for the next week in those peak hours.

49:37 So, there's something about a deep dedication

49:40 to a thing that kind of gets deep in you.

49:44 So, it's the hard work isn't just about the raw hours of productivity.

49:49 It's the thing it does to you in the weeks and months after too.

49:56 You're tempering yourself in some ways.

49:59 And I think, it's like the "Jiro Dreams

50:01 of Sushi." If you really dedicate yourself completely

50:03 to making the sushi like to really putting

50:06 in the long hours day after day after day,

50:10 you become a true craftsman of the thing you're doing.

50:14 Now there's of course discussions about are

50:16 you sacrificing a lot of personal relationships?

50:18 Are you sacrificing a lot of other possible things you could do with that time?

50:22 But if you're talking about purely being a master or a craftsman of your art,

50:30 that more hours isn't just about doing more,

50:34 it's about becoming better at the thing you're doing.

50:36 Yeah and I don't gain say anybody that wants to work the minimum amount,

50:41 they've got other priorities in their life.

50:42 My only argument that I'm making, it's not that everybody should work hard,

50:46 it's that if you want to accomplish something,

50:49 working longer and harder is the path to getting it accomplished.

50:53 Well, let me ask you about this then.

50:55 The mythical work-life balance, for an engineer,

51:02 it seems like that's one of the professions

51:06 for programmer where working hard does lead to greater productivity

51:12 and but it also raises the question of, sort

51:17 of personal relationships and all that kind of stuff,

51:19 family and how are you able to find work-life balance?

51:24 Is there advice you can give, maybe even outside yourself?

51:27 Have you been able to arrive at any wisdom

51:29 on this part in your years of life now?

51:32 So, I do think that there's a wide

51:33 range of people where different people have different needs.

51:36 It's not a one size fits all.

51:38 I am certainly what works for me.

51:40 I can tell enough that I'm different than

51:44 a typical average person in the way things impact me.

51:48 The things that I want to do,

51:50 my goals are different and sort of the levers to impact

51:54 things are different where I have literally never felt burnout.

51:59 And I know there's lots of brilliant, smart people that do world leading work

52:03 that get burned out and it's never hit me.

52:07 I've never been at a point where I'm like, I just don't care about this.

52:13 I don't wanna do this anymore.

52:14 But I've always had the flexibility to work on lots of interesting things.

52:18 I can always just turn my gaze to something

52:21 else and have a great time working on that.

52:23 And so much of that, so much of the ability to actually work hard is the ability

52:27 to have multiple things to choose from and to use

52:30 your time on the most appropriate thing.

52:32 Like there are time periods where I am,

52:36 it's the best time for me to read a new research

52:38 paper that I need to really be thinking hard about it.

52:41 Then there's a time that maybe I should just scan and organize

52:43 my old notes because I'm just not on top of things.

52:47 Then there's the time that, alright, let's go,

52:49 bang out a few hundred lines of code for something.

52:52 So, switching between them has been, real valuable.

52:57 So, you always have kind of joy in your heart for all the things you're

53:00 doing and that is a kind of work life balance as a first sort of step.

53:04 So you're always happy?

53:06 I do.

53:07 I mean it's like I, a lot of people would say

53:10 that, often I look like kind of a grim person with just

53:13 sitting there with a neutral expression or even like knitted brows

53:16 and a frown on my face as I'm staring at something.

53:19 That's what happiness looks like for you.

53:20 Yeah, it's kind of true where that it's like,

53:24 okay, I'm pushing this, I'm making progress here.

53:27 I know that doesn't work for everyone.

53:30 I know it doesn't work for most people.

53:32 But what I am always trying to do in those cases is,

53:35 I don't wanna let somebody that might be a person

53:38 like that, be told by someone else that, "No,

53:41 don't even try that out as an option," where work life-balance

53:45 versus kind of your life's work where there's a small subset

53:50 of the people that can be very happy being obsessive about

53:55 things and obsession can often get things done that just practical,

54:00 prudent pedestrian work won't or at least won't for a very long time.

54:06 There's legends of your nutritional intake in the early days.

54:11 What can you say about sort of as a being a programmer, as a kind of athlete?

54:17 So, what was the nutrition that fueled?

54:21 So, I have never been that great on really paying attention

54:25 to it where I'm good enough that I don't eat a lot,

54:29 I've never been like a big heavy guy.

54:31 But it was interesting where one of the things

54:34 that I can remember being an unhappy teenager, not having enough money and like,

54:38 one of the things that bothered me about not having

54:40 enough money is I couldn't buy pizza whenever I wanted to.

54:43 So I got rich and then I bought a whole lot of pizza.

54:46 So, that was defining, like that's what being rich felt like.

54:49 You could buy Pizza.

54:51 There was a lot pizza of the little things.

54:51 Like I could buy all the pizza and comic books and video

54:53 games that I wanted to, and it really didn't take that much.

54:58 But the pizza was one of those things and it's

55:01 absolutely true that for a long time it did software.

55:04 I had a pizza delivered every single day.

55:06 The delivery guy knew my name,

55:09 and I didn't find out until years later that apparently I was

55:12 such a good customer that they just never raised the price on me.

55:15 And I was using this 6-year-old price for the pizzas

55:18 that they were still kind of sending my way every day.

55:21 So, you were doing eating once a day or were you-- It would be spread out.

55:26 You have a few pieces of pizza,

55:27 you have some more later on, and I'd maybe have something at home.

55:31 It was one of the nice things that Facebook Meta is they do,

55:35 they feed you quite well.

55:36 You get a different, I guess now it's DoorDash sorts of things delivered,

55:40 but they take care of making sure that everybody does get well fed.

55:44 And I probably had better food those six years that I

55:47 was working in the Meta office there than I used to before.

55:51 But it's worked out okay for me.

55:53 My health has always been good.

55:55 I get a pretty good amount of exercise and I

55:58 don't eat to excess and I avoid a lot of other,

56:01 kind of not so good for you things.

56:03 So, I'm still doing quite well at my age.

56:05 Did you have a kind of, I don't know,

56:09 spiritual experience with food or coffee or any of that kind of stuff?

56:15 I mean, the programming experience with music,

56:18 or like I listen to brown noise in a program or like

56:23 creating an environment and the things you take into your body.

56:26 Just everything you construct can become a kind

56:28 of ritual that empowers the whole process of the program.

56:32 Did you have that relationship with pizza?

56:34 It would really be with Diet Coke.

56:36 I mean, there still is that sense of drop the can down,

56:39 crack open the can of Diet Coke.

56:40 All right now, I mean business, we're getting to work here.

56:43 But still to this day, diet Coke is still part.

56:47 Yeah, probably eight, eight or nine a day.

56:49 Nice, okay.

56:50 What about your setup?

56:52 How many screens, what kind of keyboard is there something interesting,

56:56 what kind of IDE, Emacs, Vim or something modern.

57:02 Linux, what operating system laptop or any

57:04 interesting thing that brings you joy?

57:07 So, I kind of migrated cultures where early on through

57:10 all of game dev there was sort of one culture there,

57:13 which was really quite distinct

57:14 from the Silicon Valley venture culture for things.

57:19 They're different groups and they have pretty different

57:21 mos in the way they think about things where,

57:23 and I still do think a lot of the big

57:26 companies can learn things from the hardcore game development

57:30 side of things where it still boggles my mind how

57:33 hostile to debuggers and IDEs that so much of them,

57:38 the kind of big money get billions

57:40 of dollars Silicon Valley venture backed funds are.

57:44 Oh, that's interesting.

57:45 Sorry, so you're saying like big companies at Google and Meta

57:49 are hostile to-- They are not big on debuggers and IDEs.

57:52 Like so much of it is like Emacs,

57:54 Vim for things and we just assume that debuggers,

57:57 don't work most of the time for the systems.

58:00 And a lot of this comes from a sort of Linux

58:03 bias on a lot of things where I did come up,

58:06 through the personal computers and then the DOS,

58:09 and then Windows and it was Borland tools and then Visual Studio.

58:17 [Lex] Do you appreciate debuggers?

58:18 Very much so.

58:19 I mean, a debugger is how you get

58:21 a view into a system that's too complicated to understand.

58:23 I mean, anybody that thinks just read the code and think about it,

58:27 that's an insane statement, you can't even read all the code on a big system.

58:31 You have to do experiments on the system.

58:33 And doing that by adding log statements, recompiling and rerunning it,

58:39 is an incredibly inefficient way of doing it.

58:41 I mean, yes, you can always get things done,

58:43 even if you're working with stone knives and bare skins.

58:46 That is the mark of a good programmer is that, given any tools,

58:50 you will figure out a way to get it done.

58:52 But it's amazing what you can do with sometimes much,

58:56 much better tools where instead of just going through this iterative, compile,

59:00 run debug cycle, you have the old Lips direction of like you've

59:04 got a riple and you're working interactively and doing amazing things there,

59:08 but in many cases a debugger as a very powerful user interface that can stop,

59:13 examine all the different things in your program,

59:15 set all of these different break points.

59:16 And of course you can do that with GDB or whatever there,

59:20 but this is one of the user interface

59:23 fundamental principles where when something is complicated to do,

59:26 you won't use it very often.

59:28 There's people that will break out GDB when they're at their wits end

59:31 and they just have beat their head against a problem for so long.

59:35 But for somebody that kind of grew up in game dev,

59:37 it's like they were running into the debugger anyways,

59:40 before they even knew there was a problem.

59:42 And you would just stop and see what was happening.

59:44 And sometimes you could fix things, even before you know,

59:47 even before you did one compile cycle,

59:50 you could be in the debugger and you could say,

59:52 well, I'm just going to change this right here and yep,

59:54 that did the job and fix it and go on.

59:57 And for people don't know, GDB is a sort of popular,

1:00:00 I guess Linux debugger primarily for C plus plus.

1:00:05 They handle most of the languages.

1:00:06 Okay, but it's based on C as the original kind of Unix heritage.

1:00:10 And it's kind of like command line, it's not user friendly.

1:00:12 It doesn't allow for clean visualizations and you're exactly right.

1:00:17 So, you're using this kind of debugger,

1:00:18 usually when you're at what's end and there's a problem that you can't

1:00:22 figure out why by just looking at the codes they have to find it.

1:00:26 That's how, I guess normal programmers use it.

1:00:28 But you're saying there should be tools that kind

1:00:31 of visualize and help you as part of the programming process,

1:00:35 just a normal programming process to understand the code deeper?

1:00:40 Yeah, when I'm working on like my C, C plus plus code,

1:00:42 I'm always running it from the debugger,

1:00:45 just I type in the code, I run it many times.

1:00:48 The first thing I do after writing code is

1:00:50 set a break point and step through the function.

1:00:53 Now other people will say, it's like, "Oh, I do that in my head." Well,

1:00:55 your head is a faulty interpreter of all

1:00:58 those things there and I've written brand new code,

1:01:01 I wanna step in there and I'm gonna single step through that, examine

1:01:03 lots of things and see if it's actually doing what I expected it to.

1:01:08 It it is a kind of companion, the debugger,

1:01:12 like you're now coding in an interactive way with another being,

1:01:16 the debugger is a kind of dumb being, but it's a reliable being.

1:01:21 That is an interesting question of what role does AI play in that kind

1:01:25 of with Codex and these kind of ability to generate code might be,

1:01:30 you might start having tools that understand the code

1:01:34 in interesting deep ways that can work with you.

1:01:37 Because there's a whole spectrum there from static

1:01:40 code analyzers and various kind of dynamic tools

1:01:43 there up to AI that can conceivably grok

1:01:45 these programs that literally no human can understand.

1:01:49 There are two big too intertwined and too interconnected,

1:01:51 but it's not beyond the possibility of understanding.

1:01:54 It's just beyond what we can hold in our heads

1:01:57 as kind of mutable state while we're working on things.

1:02:00 And I'm a big proponent again of things like

1:02:04 static analyzers and some of that stuff where you'll

1:02:07 find some people that don't like being scolded

1:02:10 by a program for how they've written something where it's like,

1:02:13 "Oh, I know better." And sometimes you do.

1:02:15 But that was something that I was, it was very,

1:02:19 very valuable for me when and not too

1:02:22 many people get an opportunity like this to have,

1:02:24 this is almost one of those spiritual experiences as a programmer and awakening

1:02:28 to, be it in software code bases were a couple million lines of code.

1:02:32 And at one point I had used a few of the different analysis tools,

1:02:36 but I made a point to really go through and scrub

1:02:40 the code base using every tool that I could find.

1:02:42 And it was eye-opening where we had a reputation

1:02:45 for having some of the, the most robust, strongest code,

1:02:48 where there were some great things that I

1:02:51 remember hearing from like Microsoft telling us about

1:02:53 crashes on Xbox and we had this tiny

1:02:56 number that they said were probably literally hardware errors.

1:02:59 And then you have other significant titles that just have

1:03:02 millions of faults that are getting recorded all the time.

1:03:04 So, I was proud of our code on a lot of levels,

1:03:07 but when I took this code analysis squeegee, through everything,

1:03:11 it was shocking how many errors there were in there.

1:03:16 Things that you can say, "Okay, this was a copy paste,

1:03:19 "not changing something right here." Lots of things that were,

1:03:23 the most common problem was something in a print

1:03:26 F format string that was the wrong

1:03:28 data type that could cause crashes there and you

1:03:31 really want the warnings for things like that.

1:03:33 Then the next most common was missing a check

1:03:35 for null that could actually happen that could blow things up.

1:03:38 And those are obviously like top C, C plus plus things.

1:03:41 Everybody has those problems, but the long tail of all of the different

1:03:45 little things that could go wrong there.

1:03:47 And we had good programmers and my own code,

1:03:49 it's not that I'd be looking at, it's like, "Oh, I wrote that code,

1:03:52 that's definitely wrong." We've been using

1:03:54 this for a year and it's this submarine,

1:03:58 this mind sitting there waiting for us to step on.

1:04:01 And it was humbling.

1:04:03 And I reached the conclusion that anything

1:04:07 that can be syntactically allowed in your language,

1:04:10 if it's gonna show up eventually in a large enough code base,

1:04:14 you're not gonna, good intentions aren't going to keep it from happening.

1:04:18 You need automated tools and guardrails for things.

1:04:21 And those start with things like static types

1:04:24 and or even type hints in the more dynamic languages.

1:04:27 But the people that rebel against that basically say,

1:04:31 that slows me down doing that.

1:04:33 There's something to that I get that I've written,

1:04:36 I've cobbled things together in a notebook.

1:04:38 I'm like, "Wow, this is great that it just happened," but yeah,

1:04:41 that's kind of sketchy, but it's working fine.

1:04:43 I don't care.

1:04:44 It does come back to that value analysis where sometimes it's right to not care,

1:04:49 but when you do care,

1:04:51 if it's going to be something that's going to live for years and it's gonna

1:04:54 have other people working on it and it's

1:04:56 gonna be deployed to millions of people,

1:04:59 then you want to use all of these tools you want to be told.

1:05:02 It's like, no, you've screwed up here, here and here.

1:05:04 And that does require kind of an ego check about things where you have

1:05:09 to be open to the fact that everything

1:05:11 that you're doing is just littered with flaws.

1:05:14 It's not that, "Oh, you occasionally have a bad

1:05:16 day," it's just whatever stream of code you

1:05:18 output there is going to be a statistical

1:05:21 regularity of things that you just make mistakes on.

1:05:24 And I do think there's the whole argument about,

1:05:27 test driven design and unit testing versus,

1:05:30 kind of analysis and different things.

1:05:33 I am more in favor of the analysis and the stuff that just like,

1:05:36 you can't run your program until you fix this, rather than you can

1:05:39 run it and hopefully a unit test will catch it in some way.

1:05:42 Yeah, in my private code I have asserts everywhere.

1:05:47 [John] Yeah.

1:05:48 It just, there's something pleasant to me, pleasurable to me,

1:05:52 about sort of the dictatorial rule of like, this should be true at this point.

1:05:58 And too many times, I've made mistakes that shouldn't have been made and I

1:06:05 would assume I wouldn't be the kind of person that would make that mistake,

1:06:09 but I keep making that mistake.

1:06:10 Therefore, an assert really catches me, really helps all the time.

1:06:15 So, I would say like 10 to 20% of my private code,

1:06:19 just for personal use is probably a service.

1:06:21 And they're active comments.

1:06:22 It's one of those things that in theory

1:06:24 they don't make any difference to the program.

1:06:27 And if it was all operating the way you expected it would be,

1:06:30 then they will never fire.

1:06:32 But even if you have it right and you wrote the code right initially,

1:06:36 then circumstances change.

1:06:38 The world outside your program changes.

1:06:40 And in fact that's one of the things where I'm kind of fond in a lot

1:06:44 of cases of static erase size declarations where

1:06:47 I went through this period where it's like,

1:06:49 okay, now we have general collection classes,

1:06:51 we should just make everything variable,

1:06:54 because I had this history of, in the early days you get Doom,

1:06:58 which had some fixed limits on it,

1:06:59 then everybody started making crazier and crazier things

1:07:02 and they kept bumping up the different limits,

1:07:04 this many lines, this many sectors.

1:07:06 And it seemed like a good idea.

1:07:09 Well, we should just make this completely generic.

1:07:10 It can go kind of go up to whatever

1:07:13 and there's cases where that's the right thing to do.

1:07:17 But it also, the other aspect of the world changing around you is it's

1:07:21 good to be informed when the world has changed more than you thought it would.

1:07:25 And if you've got a continuously growing collection,

1:07:28 you're never gonna find out.

1:07:29 You might have this quadratic slowdown on something where you thought, "Oh,

1:07:33 I'm only ever gonna have a handful of these, "but something changes and there's

1:07:37 a new design style "and all of a sudden you've got 10,000 of them." So,

1:07:41 I kind like in many cases picking a number,

1:07:44 some nice round power of two number and sending it

1:07:48 up in there and having an assert saying it's like, "Hey,

1:07:50 you hit this limit." You should probably

1:07:53 think about the choices that you've made around

1:07:55 all of this still relevant if somebody's using

1:07:58 10 times more than you thought they would?

1:08:00 Yeah, this code was originally written with this kind of worldview,

1:08:04 with this kind of set of constraints.

1:08:06 You were thinking of the world in this way.

1:08:09 If something breaks, that means you gotta rethink the initial stuff.

1:08:12 And it's nice for it to for it to do that.

1:08:16 Is there any stuff like keyboard or monitors?

1:08:21 I'm fairly pedestrian on a lot of that where I did move to triple monitors,

1:08:26 like in the last several years ago.

1:08:27 I had been dual monitor for a very long time and it

1:08:30 was one of those things where probably years later than I should have,

1:08:35 I'm just like, well the video cards now generally have three output ports.

1:08:38 I should just put the third monitor up there.

1:08:40 That's been a pure win.

1:08:41 I've been very happy with that.

1:08:43 But no, I don't have fancy keyboard or mouse or anything really going on.

1:08:49 The key things is an ID that has helpful debuggers has helpful tools,

1:08:54 so it's not the Emacs, Vim route and then Diet Coke.

1:08:57 Yeah, so I did spend, I spent one of my week-long retreats where I'm like,

1:09:01 okay, I'm gonna make myself use, it was actually classic VI,

1:09:05 which I know people will say you should never have done that.

1:09:07 You should have just used Vim directly.

1:09:09 But I gave it the good try.

1:09:11 It's like, okay, I'm being in kind of, classic Unix

1:09:14 developer mode here and I worked for a week on it.

1:09:18 I used end key to like teach myself

1:09:20 the different little key combinations for things like that.

1:09:24 And in the end it was just like, alright,

1:09:26 this was kind of like my civil war reenactment phase,

1:09:29 it's like I'm going out there, doing it like they used to in the old days.

1:09:32 And it was kind of fun in that regard.

1:09:33 You're offending so many people right now,

1:09:36 they're screaming as they're listening to this.

1:09:38 So again, the out is that this was not modern Vim, but still yes,

1:09:42 I was very happy to get back to my visual studio at the end.

1:09:47 Yeah, I'm actually, I struggle with this a lot, because,

1:09:49 so I use a Kinesis keyboard and I use Emacs primarily,

1:09:56 and I feel like I can exactly as you said,

1:09:59 I can understand the code, I can navigate the code.

1:10:00 There's a lot of stuff you could build within Emacs with using Lisp.

1:10:04 You can customize a lot of things for yourself to help you introspect the code,

1:10:09 like to help you understand the code

1:10:11 and visualize different aspects of the code.

1:10:13 You can even run debuggers, but it's work and the world moves past you

1:10:18 and the better and better ideas are constantly being built.

1:10:21 And that puts a kind of, I need to take

1:10:26 the same kind of retreat as you're talking about,

1:10:28 but now I'm still fighting the Civil War.

1:10:30 I need to kind of move into the 21st century.

1:10:33 And it does seem like the world is or a large

1:10:35 chunk of the world is moving towards Visual Studio Code,

1:10:38 which is kind of interesting to me,

1:10:40 against the JavaScript ecosystem on the one hand and IDEs are

1:10:44 one of those things that you want to be infinitely fast.

1:10:47 You want them to just kind of immediately respond.

1:10:51 And like, I mean, heck, I've got, there's someone I know,

1:10:53 I am an old school game dev guy that still

1:10:55 uses Visual Studio Six and on a modern computer,

1:10:59 everything is just absolutely instant on something like that because it was made

1:11:03 to work on a computer that's 10,000 or a hundred thousand times slower.

1:11:07 So, just everything happens immediately and all the modern systems just feel,

1:11:13 they feel so crufty when it's like, "Oh,

1:11:15 why is this refreshing the screen and moving

1:11:17 around "and updating over here and something blinks down

1:11:20 there "and you should update this." And there

1:11:22 are things that we've lost with that incredible flexibility,

1:11:27 but lots of people get tons of value from it.

1:11:31 And I am super happy that that seems to be winning over even

1:11:34 a lot of the old Vim and Emacs people that they're kind of like,

1:11:37 "Hey, Visual Studio code is may be not so bad." I am that may

1:11:41 be the final peacekeeping solution where everybody

1:11:44 is reasonably happy with something like that.

1:11:47 So, can you explain what a dot plan file

1:11:50 is and what role that played in your life?

1:11:53 Does it still continue to play a role?

1:11:55 Back in the early, early days of id Software,

1:11:57 one of our big things that was unique with what we did is I had adopted next

1:12:03 stations or kind of next steps systems from Steve

1:12:06 Jobs's out in the woods way from Apple Company.

1:12:11 And they were basically, it was kind of interesting,

1:12:15 because I did not really have a background with the Unix system.

1:12:18 So, many of the people, they get immersed in that in college

1:12:21 and that sets a lot of cultural expectations for them.

1:12:27 And I didn't have any of that, but I knew that my background was,

1:12:31 I was a huge Apple II fan, boy, I was always a little suspicious of the Mac.

1:12:36 I was not really what kind of I wanted to to go with.

1:12:41 But when Steve Jobs left Apple and started NeXT,

1:12:44 this computer did just seem like one of those amazing things

1:12:47 from the future where it had all of this cool stuff in it.

1:12:50 And we were still back in those days, working on DOS, everything blew up.

1:12:54 You had reset buttons,

1:12:55 because your computer would just freeze if you're doing development work,

1:12:58 literally dozens of times a day.

1:12:59 Your computer was just rebooting constantly.

1:13:02 And so this idea of, yes, any of the Unix workstations,

1:13:06 would've given a stable development platform where

1:13:08 you don't crash and reboot all the time.

1:13:11 But NeXT also had this really amazing graphical interface and it was great

1:13:16 for building tools and it used objective C as the kind of an interesting.

1:13:21 [Lex] Oh wow.

1:13:22 So, NeXT was Unix based, instead objective C.

1:13:26 So, it has a lot of the elements.

1:13:28 That became Mac, I mean the kind of reverse acquisition of Apple by NeXT,

1:13:31 where that took over and became what the modern Mac system is.

1:13:35 And defined some of the developer like the tools and the whole community.

1:13:41 Yeah, you've still got, if you're programming on Apple stuff now,

1:13:43 there's still all these Ns somethings which was

1:13:46 originally next step objects of different kinds of things.

1:13:49 But one of the aspects of those Unix systems was

1:13:53 they had this notion of a dot plan file where,

1:13:56 a dot file is an invisible file, usually in your home directory or something.

1:14:02 And there was a trivial server, running on most Unix systems at the time

1:14:05 that, that when somebody ran a trivial little command,

1:14:09 called finger, you could a finger and then somebody's address,

1:14:13 it could be anywhere on the internet if you were connected correctly,

1:14:16 then all that server would do was read the dot plan file

1:14:20 in that user's home directory and then just spit it out to you.

1:14:24 And originally the idea was that could be,

1:14:26 whether you're on vacation, what your current project was,

1:14:30 it's supposed to be like the plan of what

1:14:31 you're doing and people would use it for, various purposes.

1:14:35 But all it did was dump that file,

1:14:38 over to the terminal of whoever issued the finger command.

1:14:42 And at one point I started just keeping a list of what I was doing in there,

1:14:48 which would be what I was working on in the day.

1:14:51 And I would have this little syntax, I kind of got to myself about,

1:14:55 here's something that I'm working on, I put a star when I finish it,

1:14:58 I could have a few other little bits of punctuation.

1:15:01 And at the time it was, it started off as being just like my to-do

1:15:05 list and it would be these trivial obscure little things,

1:15:10 like I fixed something with collision detection code,

1:15:12 made Fireball do something different and just little one-liners

1:15:16 that people that were following the games could kind of decipher.

1:15:20 But I did wind up starting to write much more in depth things.

1:15:24 I would have little notes of thoughts and insights

1:15:28 and then I would eventually start having little essays.

1:15:30 I would sometimes dump into the dot plan files,

1:15:33 interspersed with the work logs of things that I was doing.

1:15:36 So, in some ways it was like a super early proto blog

1:15:39 where I was just kind of dumping out what I was working on.

1:15:42 But it was interesting enough that there were

1:15:44 a lot of people that were interested in this.

1:15:48 So, most of the people didn't have Unix workstations.

1:15:51 So, there were the websites back in the day that would

1:15:53 follow the Doom and Quake development that would basically make

1:15:57 a little service that would go grab all the changes

1:15:59 and then people could just get it with a web browser.

1:16:02 And there was a period where like all of the little kind

1:16:05 of Dallas gaming diaspora of people that were at all in that orbit,

1:16:09 there were a couple dozen plan files going on, which was,

1:16:12 and this was some years, before blogging really became kind of a thing.

1:16:17 And it was kind of a premonition of sort of the way things would go.

1:16:22 And there was, it's all been collected,

1:16:25 it's available online in different places and it's kind of fun

1:16:27 to go back and look through what I was thinking,

1:16:30 what I was doing in the different areas.

1:16:32 Have you had a chance to look back?

1:16:33 Is there some interesting, very low level specific to-do items,

1:16:38 maybe things you've never completed, all that kind of stuff and high level

1:16:42 philosophical essay type of stuff that stands out.

1:16:46 Yeah, there's some good stuff on both,

1:16:48 where a lot of it was low level nitpicky details,

1:16:52 about game dev and I've learned enough things where there's no project that I

1:16:57 worked on that I couldn't go back and do a better job on now.

1:17:00 I mean you learn things hopefully if you're doing it right,

1:17:03 you learn things as you get older and you should be

1:17:06 able to do a better job at all of the early things.

1:17:08 And there's stuff in Wolfenstein, Doom, Quake that like, "Oh,

1:17:12 clearly I could go back and do a better job at this." Whether it's something

1:17:16 in the rendering engine side or how

1:17:18 I implemented the monster behaviors or managed resources.

1:17:22 Do you see flaws in your thinking now looking back?

1:17:25 Yeah, I do.

1:17:27 I mean sometimes I'll get the, I'll look at it and say, "Yeah,

1:17:30 I had a pretty clear view of, "I was doing good work

1:17:33 there" and I haven't really hit the point where there was another programmer,

1:17:38 Graham Devine, he had worked at id and 7th Guest

1:17:41 and he made some comment one time where he said,

1:17:44 he looked back at some of his old notes and he was like, "Wow,

1:17:47 I was really smart back then." And I don't hit that so much where,

1:17:51 I mean, I look at it and I always know that, yeah,

1:17:54 there's all the, with aging you get certain

1:17:57 changes in how you're able to work problems.

1:18:00 But all of the problems that I've worked,

1:18:02 I'm sure that I could do a better job on all of them.

1:18:06 Oh wow.

1:18:07 So, you can still step right in.

1:18:08 If you could travel back in time and talk to that guy,

1:18:10 you would teach him a few things.

1:18:12 [John] Yeah, absolutely.

1:18:14 That's awesome.

1:18:15 What about the high level philosophical stuff?

1:18:18 Is there some insights that stand out that you remember?

1:18:21 There's things that I was understanding about development and the industry

1:18:27 and so on that we're in a more primitive stage,

1:18:31 where I definitely learned a lot more in the later

1:18:36 years about business and organization and team structure.

1:18:41 There were, I mean, there were definitely things that I was

1:18:45 not the best person or even a very good person about managing,

1:18:48 like how a a team should operate internally, how people should work together.

1:18:53 I was just, the just get outta my way and let me work on the code and do this.

1:18:59 And more and more I've learned how in the larger scheme of things,

1:19:05 how sometimes relatively unimportant,

1:19:07 some of those things are where it is this user value generation.

1:19:11 That's the overarching importance for all of that.

1:19:14 And I didn't necessarily have my eye on that ball

1:19:17 correctly through a lot of my earlier years.

1:19:20 And there's things that, I could have gotten

1:19:24 more out of people handling things in different ways.

1:19:27 I could have made in some ways more

1:19:31 successful products by following things in different ways.

1:19:33 There's mistakes that we made that we couldn't

1:19:36 really have known how things would've worked out.

1:19:38 But it was interesting to see in later years,

1:19:40 companies like Activision showing that, hey,

1:19:42 you really can just do the same game, make it better every year.

1:19:46 And you can look at that from a negative standpoint and say it's like, "Oh,

1:19:49 that's just being derivative and all that." But if

1:19:51 you step back again and say it's like,

1:19:53 no, are the people buying it still enjoying it?

1:19:55 Are they enjoying it more than what they might have bought otherwise?

1:19:59 And you can say, "No,

1:20:00 that's actually a great value creation engine "to do that if you're

1:20:04 in a position where you can." Don't be forced into reinventing everything,

1:20:09 just because you think that you need to, lots of things

1:20:14 about business and team stuff that could be done better.

1:20:17 But the technical work that the kind

1:20:19 of technical visionary type stuff that I laid out,

1:20:22 I still feel pretty good about.

1:20:23 There are some classical ones about my defending of OpenGL,

1:20:27 versus D3D, which turned out to be one of the more,

1:20:32 probably important momentous things there where it never,

1:20:36 it was always a rear guard action on Windows

1:20:38 where Microsoft was just not gonna let that win.

1:20:42 But when I look back on it now,

1:20:44 that fight to keep OpenGL relevant for a number of years

1:20:48 there meant that OpenGL was there when mobile started happening.

1:20:52 And OpenGL ES was the thing that drove,

1:20:55 all of the acceleration of the mobile industry.

1:20:58 And it's really only in the last few years as Apple has

1:21:01 moved to Metal and some of the other companies have moved to Vulcan,

1:21:05 that that's moved away.

1:21:06 But really stepping back and looking at it, it's like,

1:21:09 yeah, I sold tens of millions of games for different things,

1:21:13 but billions and billions of devices wound up with an appropriate

1:21:19 capable graphics API in no small part to me,

1:21:23 thinking that that was really important that we

1:21:26 not just give up and use Microsoft's, at that time really terrible, API.

1:21:32 The thing about Microsoft is the APIs don't stay terrible.

1:21:35 They were terrible at the start,

1:21:37 but a few versions on they were actually quite good.

1:21:40 And there was a completely fair argument to be

1:21:42 made that by the time DX9 was out,

1:21:45 it was probably a better programming environment than OpenGL.

1:21:48 But it was still a wonderful good thing that we had an open standard that could

1:21:53 show up on Linux and Android and iOS and eventually WebGL still to this day.

1:21:58 So, that was one that would be on my greatest hits list of things

1:22:03 that I kind of pushed-- Impact it had on billions of devices, yes.

1:22:07 So, let's talk about it.

1:22:08 Can you tell the origin story of id Software,

1:22:12 again, one of the greatest game developer companies ever.

1:22:16 It created Wolfenstein 3D,

1:22:18 games that define my life also in many ways as a thing

1:22:23 that made me realize what computers are capable of in terms of graphics,

1:22:26 in terms of performance.

1:22:28 It just unlocks something deep in me

1:22:32 and understanding what these machines are all about, as games can do that.

1:22:35 So, Wolfenstein 3D, Doom,

1:22:36 Quake and just all the incredible engineering innovation that went into that.

1:22:41 So, how did it all start?

1:22:44 So, I'll caveat upfront that I usually don't consider

1:22:48 myself the historian of the software side of things.

1:22:51 I usually do.

1:22:52 I kind of point people at John Romero

1:22:55 for stories about the early days where I've never been,

1:23:00 like I've commented that I'm a remarkably unsentimental

1:23:02 person in some ways where I don't really spend

1:23:04 a lot of time unless I'm explicitly prodded to go

1:23:07 back and think about the early days of things.

1:23:10 And I didn't necessarily make the effort

1:23:14 to archive everything exactly in my brain.

1:23:17 And the more that I work on machine learning and AI and the aspects

1:23:20 of memory and how when you go back and polish certain things,

1:23:23 it's not necessarily exactly the way it happened.

1:23:25 But having said all of that from my view,

1:23:29 the way everything happened that led up to that was after

1:23:34 I was an adult and kind of taking a few college classes,

1:23:38 deciding to drop out, I was doing,

1:23:40 I was hard scrabble contract programming work,

1:23:43 really struggling to kind of keep groceries and pay my rent and things.

1:23:48 And the company that I was doing the most

1:23:50 work for was a company called Soft Disc Publishing,

1:23:53 which had the sounds bizarre now

1:23:56 business model of monthly subscription software.

1:23:59 Before there was an internet that people could connect

1:24:02 to and get software you would pay a certain

1:24:05 amount and every month they would send you

1:24:07 a disc that had some random software on it.

1:24:09 And people that were into computers thought this was kind of cool.

1:24:12 And they had different ones for the Apple II, the 2GS,

1:24:16 the PC, the Mac, the Omega, lots of different things here.

1:24:20 So, quirky little business.

1:24:21 But I was doing a lot of contract programming for them

1:24:24 where I'd write tiny little games and sell them for 300, $500.

1:24:29 And one of the things that I was doing, again,

1:24:32 to keep my head above water here was I decided that I

1:24:36 could make one program and I could port it to multiple systems.

1:24:41 So, I would write a game like Dark Designs

1:24:44 or Catacombs and I would develop it on the Apple II, the 2GS and the IBM PC,

1:24:49 which apparently was the thing that really kind

1:24:52 of peaked the attention of the people working down there.

1:24:56 Like Jay Wilber was my primary editor and Tom Hall was

1:24:59 a secondary editor and they kept asking me, it's like, "Hey,

1:25:03 you should come down and work for us here." And I pushed it off a couple times,

1:25:08 because I was really enjoying my freedom of kind of being off on my own,

1:25:11 even if I was barely getting by.

1:25:14 I loved it.

1:25:14 I was doing nothing but programming all day.

1:25:17 But I did have enough close scrapes with like,

1:25:20 I'm just really outta money that maybe I should get an actual job,

1:25:24 rather than contracting these kind of one at a time things.

1:25:27 And Jay Wilbur was great.

1:25:29 He was like FedExing me the checks when I would need

1:25:31 them to kind of get over whatever hump I was at.

1:25:35 So, I took the, I finally took 'em up

1:25:38 on their offer to come down to Shreveport, Louisiana.

1:25:41 I was in Kansas City at the time,

1:25:43 drove down to through the Ozarks and everything

1:25:47 down to Louisiana and saw the Soft Disc Offices.

1:25:51 Went through, talked to a bunch of people,

1:25:53 met the people I had been working with remotely at that time.

1:25:57 But the most important thing for me was,

1:25:59 I met two programmers there, John Romero and Lane Roth,

1:26:03 that for the first time ever I had met

1:26:05 programmers that knew more cool stuff than I did,

1:26:08 where the world was just different back then.

1:26:11 I was in Kansas City, it was one of those smartest kid in the school,

1:26:14 does all the computer stuff, the teachers don't have anything to teach him.

1:26:18 But all I had to learn from was these few books at the library.

1:26:21 It was not much at all.

1:26:23 And there were some aspects of programming that were kind of black magic to me.

1:26:27 Like it's like, "Oh, he knows how to format a track

1:26:29 "on a low level drive programming interface." And this was,

1:26:35 I was still not at all sure I was gonna take the job,

1:26:38 but I met these awesome programmers that were doing cool stuff.

1:26:41 And like Romero had worked at Origin Systems and he had done like

1:26:46 so many different games ahead of time that I did kind of quickly decide.

1:26:50 It's like, yeah, I'll go take the job down there.

1:26:53 And I settled down there, moved in and started working on more little projects.

1:26:59 And the first kind of big change that happened down there

1:27:03 was the company wanted to make a PC gaming focused subscription,

1:27:08 just like all their others.

1:27:09 The same formula that they used for everything,

1:27:11 pay a monthly fee and you'll get a disc with one

1:27:15 or two games just every month and no choice in what you get,

1:27:18 but we think it'll be fun.

1:27:19 And that was the model they were comfortable with and said, "All right,

1:27:22 we're gonna start this Gamers' Edge Department." And all

1:27:25 of us that were interested in that, like me and Romero,

1:27:29 Tom Hall was kind of helping us from his side of things.

1:27:33 Jay would peek in and we had a few other programmers working

1:27:36 with us at the time and we were going to just start making games.

1:27:41 Just the same model.

1:27:42 And we dived in and it was fantastic.

1:27:46 So, you have to make new games.

1:27:47 [John] Every month.

1:27:48 Every month.

1:27:49 Yeah.

1:27:50 And this, in retrospect, looking back at it,

1:27:52 that sense that I had done all this contract programming

1:27:55 and John Romero had done like far more of this where

1:27:58 he had done one of his teaching himself efforts was

1:28:01 he made a game for every letter of the alphabet.

1:28:03 It's that sense of like,

1:28:04 I'm just gonna go make 26 different games, give him a different theme.

1:28:07 And you learn so much when you go through

1:28:10 and you crank these things out like on a biweekly,

1:28:13 monthly basis, something like that.

1:28:15 From start to finish.

1:28:16 So, it's not like an I just an idea.

1:28:17 It's not just, from the very beginning to the very end.

1:28:21 It's done, it has to be done, there's no delaying, it's done.

1:28:25 Yep and you've got deadlines.

1:28:27 And that kind of rapid iteration pressure cooker environment

1:28:32 was super important for all of us developing the skills

1:28:35 that brought us to where we eventually went to, I

1:28:38 mean people would say like in the history of the Beatles,

1:28:41 like it wasn't them being the Beatles,

1:28:43 it was them playing all of these other early

1:28:45 works that that opportunity to craft all of their skills,

1:28:48 before they were famous that was very critical to their later successes.

1:28:53 And I think there's a lot of that here

1:28:54 where we did these games that nobody remembers.

1:28:58 Lots of little things that contributed to building up

1:29:01 the skillset for the things that eventually did make us famous.

1:29:05 Fyodor Dostoevsky wrote "The Gambler," he had

1:29:09 to write it in a month, just make money.

1:29:12 And nobody remembers that probably, 'cause he had to figure out,

1:29:15 'cause it's literally he didn't have enough time to write it fast enough.

1:29:21 So, to come up with hacks, to actually literally write it faster.

1:29:24 It gain comes down that point where

1:29:26 pressure and limitation of resources is surprisingly important.

1:29:30 [Lex] Yeah.

1:29:31 And it's counterintuitive in a lot of ways where you just think that if you've

1:29:33 got all the time in the world and you've got all the resources in the world,

1:29:36 of course you're gonna get something better.

1:29:38 But sometimes it really does work out

1:29:40 that the innovations mother necessity and you know where

1:29:45 you can or resource constraints and you have

1:29:47 to do things when you don't have a choice.

1:29:49 It's surprising what you can do.

1:29:50 Is there any good games written in that time, would you say?

1:29:53 Some of them are still fun to go back and play where you get the, they were all

1:29:58 about kind of the more modern term is game

1:30:01 feel about how just the exact feel that things,

1:30:04 it's not the grand strategy of the design,

1:30:06 but how running and jumping and shooting and those things feel in the moment.

1:30:12 And some of those are still you sat down at 'em,

1:30:14 you kind of go, it's a little bit different.

1:30:16 It doesn't have the same movement feel,

1:30:17 but you move over and you're like bang, jump bang.

1:30:20 It's like, "Hey, that's kind of cool still."- So,

1:30:23 you can get lost in the rhythm of the game.

1:30:25 Like is that what you mean by feel?

1:30:27 Just like there's something about it that pulls you in.

1:30:31 Nowadays, again, people talk about compulsion loops and things

1:30:34 where it's that that sense of exactly what you're doing,

1:30:38 what your fingers are doing on the keyboard, what your eyes are seeing.

1:30:41 And there are gonna be these sequences of things.

1:30:43 Grab the loot, shoot the monster, jump over the obstacle,

1:30:45 get to the end of the level.

1:30:47 These are eternal aspects of game design in a lot of ways.

1:30:50 But there are better and worse ways to do all of them.

1:30:53 And we did so many of these games that it was, we got a lot of practice with it.

1:30:58 So, one of the kind of weird things that was happening

1:31:01 at this time is John Romero was getting some strange fan mail.

1:31:06 And back in the days, this is before email,

1:31:09 so we literally got letters sometimes and telling him,

1:31:12 it's like, "Oh, I wanna talk to you about your games.

1:31:14 "I wanna reach out different things."

1:31:16 And eventually it turned out that these were

1:31:20 all coming from Scott Miller at Apogee Software and he was reaching out through,

1:31:26 he didn't think he could contact John directly that he would get intercepted.

1:31:29 So, he was trying to get him to contact him through,

1:31:32 like back channel fan mail because he basically was saying,

1:31:35 "Hey, I'm making all this money on shareware games.

1:31:38 "I want you to make Shareware games." Because

1:31:41 he had seen some of the games that Romero

1:31:43 had done and we looked at Scott Miller's

1:31:47 games and we didn't think they were very good.

1:31:49 We're like, that can't be making the kind of money

1:31:53 that he's saying he's making 10 grand or something.

1:31:55 I am off of this game.

1:31:57 We really thought that he was full of shit.

1:31:59 That it was a lie trying to get to get him into this.

1:32:03 So that was kind of going on at one level,

1:32:07 and it was funny the moment when Romero realized that he had some

1:32:10 of these letters pinned up on his wall of like all of his fans.

1:32:13 And then we noticed that they all had

1:32:15 the same return address with different names on them,

1:32:17 which was a little bit of a two-edged sword there.

1:32:20 But trying to figure out the puzzle laid out before him.

1:32:23 Yeah, what happened after I kind of coincident with that was

1:32:27 I was working on a lot of the new technologies where I

1:32:30 was now full on the IBM PC for the first time

1:32:33 where I was really a long hold out on Apple II forever.

1:32:37 And I loved my Apple II,

1:32:38 it was the computer I always wished I had when I was growing up.

1:32:41 And when I finally did have one,

1:32:43 I was kind of clinging onto that well past it, sort of good use by day.

1:32:47 Was it the best computer I ever made you, would you say?

1:32:50 I wouldn't make judgments like that about it.

1:32:53 But it was positioned in such a way, especially in the school systems,

1:32:56 that it impacted a whole lot of American programmers

1:32:59 at least where there was programs that the Apple

1:33:02 IIs got into the schools and they had enough

1:33:05 capability that lots of interesting things happened with them.

1:33:08 In Europe it was different.

1:33:09 You had your Omegas and Ataris and Acorns

1:33:12 in the UK and things that that had different things.

1:33:16 But in the United States it was probably the Apple II,

1:33:18 made the most impact for a lot of programmers of my generation.

1:33:23 But, so I was really digging into the IBM

1:33:26 and this was even more so with the total focus,

1:33:29 because I had moved to another city where

1:33:31 I didn't know anybody that I wasn't working with.

1:33:33 I had a little apartment and then at Soft Disk,

1:33:36 again, the things that that drew me to it,

1:33:38 I had a couple programmers that knew more than I did and they had a library,

1:33:43 they had a set of books and a set of magazines.

1:33:46 They had a couple years of magazines, the old "Dr.

1:33:48 Dobbs Journal" and all of these magazines that had information about things.

1:33:53 And so I was just in total immersion mode.

1:33:56 It was eat, breathe, sleep, computer programming,

1:33:59 particularly the IBM for everything that I was doing.

1:34:03 And I was digging into a lot of these low

1:34:05 level hardware details that people weren't usually paying attention to.

1:34:08 The way the IBM EGA cards worked, which was fun for me.

1:34:14 I hadn't had experience with things at that level.

1:34:16 And back then you could get hardware documentation,

1:34:20 just down at the register levels.

1:34:21 This is where the CRTC register is,

1:34:23 this is how the color registers work and how the different things are applied.

1:34:27 And they were designed for a certain reason.

1:34:30 They were designed for an application.

1:34:31 They had an intended use in mind,

1:34:33 but I was starting to look at other ways that they

1:34:37 could perhaps be exploited that they weren't initially intended for.

1:34:40 Could you comment on like, first of all, what operating system was there?

1:34:44 What instruction set was it?

1:34:45 Like what are we talking about?

1:34:48 So, this was Dawson X86.

1:34:50 So 16 bit 8086, the 286s were there and 386s existed.

1:34:55 They were rare.

1:34:56 We a couple for our development systems,

1:34:59 but we were still targeting the more broad, it was all DOS 16 bit.

1:35:04 None of this was kind of DOS extenders and things.

1:35:07 How different is it from the systems of today,

1:35:09 is it kind of the a precursor that's similar?

1:35:12 Very little if you open up command.com on Windows,

1:35:17 you see some of the remnants of all of that.

1:35:19 But it was a different world.

1:35:20 It was the 640K is enough world and nothing was protected.

1:35:25 It crashed all the time.

1:35:26 You had TSRs or terminate and stay resident hacks

1:35:29 on top of things that would cause configuration problems.

1:35:33 All the hardware was manually configured in your auto exec.

1:35:37 So, it was a very different world.

1:35:39 The code is still the same.

1:35:41 You could still write it.

1:35:42 My earliest code there was written in Pascal.

1:35:44 That was what I had learned kind of at an earlier point.

1:35:48 So, between Basic and C plus plus there was Pascal.

1:35:51 So, when basic assembly language and some of my-- [Lex] Take a step back.

1:35:55 Yeah, my intermediate stuff was,

1:35:55 well you had to for performance, basic was just too slow.

1:35:58 So, most of the work that I was doing

1:36:00 as a contract programmer in my teenage years was assembly language.

1:36:05 You wrote games in assembly?

1:36:07 Yeah, complete games in assembly language.

1:36:10 And it's thousands and thousands of lines

1:36:12 of three letter acronyms for the instructions.

1:36:17 You don't earn the once again greatest programmer ever label

1:36:21 without being able to write a game in assembly, okay.

1:36:23 But that's again, everybody wrote their, everybody

1:36:25 serious wrote their games in assembly language.

1:36:27 Pretty serious, you see what he said?

1:36:29 Everybody's serious.

1:36:30 It was an outlier to use Pascal a little

1:36:33 bit where there was one famous program called Wizardry.

1:36:36 It was one, like one of the great early role playing games.

1:36:39 That was written in Pascal, but it was almost nothing used Pascal there.

1:36:43 But I did learn Pascal and I remember doing all of my, like to this day,

1:36:47 I sketch in data structures when I'm thinking about something,

1:36:50 I'll open up a file and I'll start writing

1:36:54 struct definitions for how data is gonna be laid out.

1:36:56 And Pascal was kind of formative to that, because I remember

1:37:00 designing my RPGs in Pascal records structures and things like that.

1:37:04 And so I had gotten a Pascal compiler for the Apple IIGS that I could work on.

1:37:08 And the first IBM game that I developed, I did in Pascal.

1:37:12 And, and that's actually kind of an interesting story, again,

1:37:15 talking about the constraints and resources where I had an Apple IIGS,

1:37:20 I didn't have an IBM PC.

1:37:21 I wanted to port my applications to IBM,

1:37:24 because I thought I could make more money on it.

1:37:27 So, what I wound up doing is I rented a PC

1:37:30 for a week and bought a copy of Turbo Pascal.

1:37:33 And so I had a hard one week and this was

1:37:36 cutting into what minimal profit margin I had there.

1:37:38 But I had this computer for a week.

1:37:40 I had to get my program ported, before I had to return the PC.

1:37:44 Yeah.

1:37:45 And that was kind of what the first thing that I had done

1:37:47 on the IBM PC and what led me to the taking the job at Soft Disk.

1:37:52 And Turbo Pascal.

1:37:53 How's that different from regular Pascal?

1:37:55 Is it different compiler or something like that?

1:37:57 So, it was a product of Borland, which before Microsoft kind of killed them,

1:38:00 they were the hot stuff developer tools company.

1:38:04 You had Borland Turbo Pascal and Turbo C and Turbo Prologue,

1:38:08 I mean all the different things.

1:38:09 But what they did was they took

1:38:11 a supremely pragmatic approach of making something useful.

1:38:14 It was one of these great examples where Pascal

1:38:17 was an academic language and you had things like

1:38:20 the UCSDP system that Wizardry was actually written

1:38:23 in that they did manage to make a game with that.

1:38:27 But it was not a super practical system.

1:38:30 While Turbo Pascal was,

1:38:32 it was called Turbo because it was blazingly fast to compile,

1:38:35 I mean really ridiculously 10 to 20 times

1:38:39 faster than most other compilers at the time.

1:38:41 But it also had very pragmatic access to look,

1:38:44 you can just poke at the hardware in these different ways.

1:38:46 And we have libraries that let you do things.

1:38:49 And it was a perfectly good way to write games.

1:38:52 And this is one of those things where people

1:38:54 have talked about different paths that computer development could

1:38:57 have taken where C took over the world

1:39:01 for reasons that came out of Unix and eventually Linux.

1:39:04 And that was not a foregone conclusion at all.

1:39:07 And people can make real reasoned,

1:39:09 rational arguments that the world might've been

1:39:12 better if it had gone a Pascal route.

1:39:14 I'm somewhat agnostic on that, where I do know

1:39:17 from experience it was perfectly good enough to do that.

1:39:21 And it had some fundamental improvements.

1:39:23 Like it had range checked arrays as an option there,

1:39:26 which could avoid many of C's real hazards that happened in a security space.

1:39:31 But C one, they were basically operating at about the same level of abstraction.

1:39:35 It was a systems programming language.

1:39:38 But you said Pascal had a more emphasis on data structures.

1:39:41 I actually, in the tree of languages the Pascal come before C,

1:39:47 did it inspire a lot-- They were pretty contemporaneous.

1:39:49 So, Pascal's Lineage went to modular two and eventually

1:39:52 Oberon which was another Niklaus Wirth kind of experimental language.

1:39:58 But they were all good enough at that level.

1:40:01 Now some of the classic academic

1:40:03 oriented Pascals were just missing fundamental things.

1:40:05 Like, oh, you can't access this core system thing,

1:40:08 because we're just using it to teach students.

1:40:10 But Turbo Pascal showed that only modest changes

1:40:13 to it really did make it a completely

1:40:16 capable language and it had some reasons why

1:40:18 you could implement it as a single pass compiler.

1:40:20 So, it could be way, way faster,

1:40:22 although less scope for optimizations if you do it that way.

1:40:25 And it did have some range checking options.

1:40:28 It had a little bit better typing capability.

1:40:30 You'd have properly typed enums sorts of things and other stuff that C lacked.

1:40:35 But C was also clearly good enough and it wound up

1:40:38 with a huge inertia from the Unix ecosystem and everything that came with that.

1:40:43 Garbage collection.

1:40:44 [John] No, it was not garbage collected.

1:40:45 It's the same kind of thing as C.

1:40:46 Same manual.

1:40:47 So, you could still have your use after freeze and all those other problems,

1:40:50 but just getting rid of array overruns,

1:40:53 at least if you were compiled with that debugging option,

1:40:56 certainly would've avoided a lot of problems and could have a lot of benefits.

1:40:59 But, so anyways, that was the next thing, I had to learn C,

1:41:02 because C was where it seemed like, most of the things were going.

1:41:07 So, I abandoned Pascal and I started working in C.

1:41:09 I started hacking on these hardware things,

1:41:11 dealing with the graphics controllers and the EGA

1:41:15 systems and what we most wanted to do.

1:41:18 So, at that time we had, we were sitting in our darkened office playing,

1:41:22 all the different console video games and we're figuring out what do we want

1:41:26 to kind of, what games do we want to make for our Gamers Edge product there?

1:41:30 And so we had one of the first super Nintendos sitting there

1:41:34 and we had an older Nintendo and we were looking at all those games.

1:41:37 And the core thing that those consoles did that you just didn't

1:41:40 get on the PC games was this ability to have a massive

1:41:44 scrolling world where most of the games that you would make

1:41:46 on the PC and earlier personal computers would be a static screen.

1:41:51 You move little things around on it and you interact

1:41:54 like that, maybe you go to additional screens as you move.

1:41:58 But arcade games and consoles had this wonderful ability to just

1:42:02 have a big world that you're slowly moving your window through.

1:42:06 And that was for those types of games, the kind of action exploration,

1:42:10 adventure games, that was a super, super important thing.

1:42:13 And PC games just didn't do that.

1:42:15 And what I had had come across was

1:42:18 a couple different techniques for implementing that on the PC.

1:42:22 And they're not hard complicated things.

1:42:24 When I explained 'em now, they're pretty straightforward,

1:42:28 but just nobody was doing it.

1:42:29 You sound like Einstein describing his five papers as pretty straightforward.

1:42:33 I understand.

1:42:34 But they're nevertheless revolutionary.

1:42:36 So, side scrolling is a game changer.

1:42:38 [John] Yeah, it's scrolling-- It's a genius invention.

1:42:40 There's tighter vertical.

1:42:41 And some of the consoles had different limitations,

1:42:43 about you could do one but not the other.

1:42:45 And there were similar things going on as advancements,

1:42:48 even in the console space where you'd have like

1:42:50 the original Mario game was like just horizontal scrolling.

1:42:54 And then later Mario Games added vertical aspects to it

1:42:57 and different things that you were doing to explore,

1:43:01 kind of expand the capabilities there.

1:43:02 And so much of the early game design for decades was removing limitations,

1:43:07 letting you do things that you envisioned as a designer,

1:43:10 you wanted the player to experience,

1:43:11 but the hardware just couldn't really or you didn't know how to make it happen.

1:43:16 It felt impossible.

1:43:18 You can imagine that you want to create,

1:43:20 like this big world through which you can side scroll,

1:43:23 like through which you can walk and then you ask yourself a question,

1:43:28 how do I actually build that in a way that's, like the latency is low enough,

1:43:33 the hard work can actually deliver

1:43:36 that in such a way that's a compelling experience.

1:43:39 Yeah and we knew what we wanted to do,

1:43:40 because we were playing all of these console games,

1:43:42 playing all these Nintendo games and arcade games.

1:43:45 Clearly there was a whole world of awesome things

1:43:47 there that we just couldn't do on the PC,

1:43:49 at least initially because every programmer can tell,

1:43:52 it's like if you wanna scroll, you can just redraw the whole screen.

1:43:55 But then it turns out, well, you're going five frames per second.

1:43:58 That's not an interactive fun experience.

1:44:01 You wanna be going 30 or 60 frames per second or something.

1:44:04 And it just didn't feel like that was possible.

1:44:06 It felt like the PCs had to get five

1:44:09 times faster for you to make a playable game there.

1:44:12 And interestingly, I wound up with two

1:44:15 completely different solutions for the scrolling problem.

1:44:18 And this is a theme that runs through

1:44:22 everything where all of these big technical advancements,

1:44:25 it turns out there's always a couple different ways of doing them.

1:44:28 And it's not like you found the one true way of doing it.

1:44:31 And we'll see this as we go into 3D games and things later.

1:44:35 But, so the scrolling,

1:44:36 the first set of scrolling tricks that I got was the hardware

1:44:41 had this ability to, you could shift like inside the window of memory.

1:44:46 So, the EGA cards at the time had 256 kilobytes of memory.

1:44:51 And it was awkwardly set up in this planer

1:44:55 format where instead of having 256 or 24 million colors,

1:45:00 you had 16 colors, which is four bits.

1:45:03 So you had four bit planes, 64K a piece.

1:45:06 Of course 60 4K is a nice round number for 16 bit of dressing.

1:45:10 So, your graphics card had a 16 bit window that you could look

1:45:15 at and you could tell it to start the video scan out anywhere inside there.

1:45:18 So, there were a couple games that had taken this approach.

1:45:22 If you could make a two by two screen or a one by four screen and you could

1:45:26 do scrolling really easily like that, you could just

1:45:28 lay it all out and just pan around there,

1:45:31 but you just couldn't make it any bigger,

1:45:32 because that's all the memory that was there.

1:45:34 The first insight to the scrolling that I had was,

1:45:38 well, if we make a screen that's just one tile larger,

1:45:42 and we usually had tiles that were 16 pixels by 16 pixels,

1:45:45 the little classic Mario block that you run into, lots of art

1:45:49 gets drawn that way and your screen is a certain number of tiles.

1:45:52 But if you had one little buffer region outside of that, you could

1:45:57 easily pan around inside that 16 pixel region that could be perfectly smooth.

1:46:01 But then what happens if you get to the edge and you want to keep going?

1:46:06 The first way we did scrolling was what I call the adaptive tile refresh,

1:46:10 which was really just a matter of you get to the edge and then you

1:46:14 go back to the original point and then only change the tiles that have actually,

1:46:19 that are different between where it was.

1:46:21 In most of the games at the time if you think about sort of your classic,

1:46:25 Super Mario Brothers game, you've got big fields of blue sky,

1:46:29 long rows of the same brick texture and there's a lot of commonality.

1:46:34 It's kind of like a data compression thing.

1:46:36 If you take the screen and you set it down on top of each other,

1:46:40 in general, only about 10% of the tiles were actually different there.

1:46:45 So, this was a way to go ahead and say, well,

1:46:48 I'm gonna move it back and then I'm only going to change those 10,

1:46:51 20, whatever percent tiles there.

1:46:54 And that meant that it was essentially five times

1:46:57 faster than if you were redrawing all of the tiles.

1:46:59 And that worked well enough for us to do a bunch of these games for Gamers Edge,

1:47:04 we had a lot of these scrolling games,

1:47:06 like slurred acts and shadow nights and things like that, that we were

1:47:09 cranking out at this high rate that had this scrolling effect on it.

1:47:13 And it worked well enough.

1:47:14 There were design challenges there where if you made the worst case,

1:47:18 if you made a checkerboard over the entire screen,

1:47:20 you scroll over one and every single tile changes

1:47:23 and your frame rates now five frames per second,

1:47:25 because it had to redraw everything.

1:47:27 So, the designers had a little bit that they had to worry about,

1:47:29 they had to make these relatively plain looking levels,

1:47:32 but it was still pretty magical.

1:47:34 It was something that we hadn't seen before.

1:47:36 And the first thing that we wound up doing with that was,

1:47:41 I had just gotten this working and Tom Hall was sitting there with me and we

1:47:46 were looking over at our Super Nintendo

1:47:49 on the side there with Super Mario three running, and we had the technology,

1:47:54 we had the tools set up there and we stayed up all

1:47:57 night and we basically cloned the first level of Super Mario Brothers.

1:48:01 Performance wise as well?

1:48:02 Yeah and so and we had our little character running and jumping in there.

1:48:06 It was close to pixel accurate as far as all of the backgrounds and everything,

1:48:11 but the gaming was just stuff that we

1:48:13 cobbled together from previous games that I had written.

1:48:15 I just kind of like really kitbashed the whole thing together to make this demo.

1:48:19 And that was one of the rare cases when I said I,

1:48:21 I don't usually do these all night programming things.

1:48:24 There's probably only two memorable ones that I can think about.

1:48:28 One was the all-nighter to go ahead and to get

1:48:31 our Dangerous Dave in copyright infringement is how we titled it,

1:48:35 because we had a game called Dangerous Dave,

1:48:37 which was running around with the shotgun shooting things.

1:48:39 And we were just taking our most beloved game at the time there,

1:48:43 the Super Mario Three,

1:48:44 and sort of sticking Dave inside that with this new scrolling

1:48:48 technology that was going perfectly smooth for him as it ran.

1:48:54 And Tom and I just kind of literally the next morning,

1:48:57 kind of left and we left a disc on the desk

1:49:01 for John Romero and Jay Wilbur to see and just said, run this.

1:49:05 And we eventually made it back in later in the day.

1:49:08 And it was, like they grabbed us and pulled us in pulled us into the room.

1:49:13 And that was the point where they were like, we gotta do something with this.

1:49:17 We're gonna make a company, we're gonna go make our own games.

1:49:21 Where this was something that we were able to just kind

1:49:24 of hit them with a hammer of an experience like, "Wow,

1:49:26 this is just like so much cooler than

1:49:29 "what we thought was possible there." And initially

1:49:32 we tried to get Nintendo to let us make Super Mario three on the PC.

1:49:36 That's really what we wanted to do.

1:49:37 We were like, "Hey, we can finish this.

1:49:40 "It's line of sight for this'll be great."

1:49:42 And we sent something to Nintendo and we

1:49:45 heard that it did get looked at in Japan

1:49:48 and they just weren't interested in that.

1:49:50 But that's another one of those life could have gone a very different

1:49:53 way where we could have been like Nintendo's House PC team at that point.

1:49:59 And to find the direction of Wolfenstein and Doom

1:50:04 and Quake could have been a Nintendo creation.

1:50:09 Yeah, so at the same time that we were just doing our first scrolling demos,

1:50:13 we reached out to Scott Miller at Apogee and said, it's like,

1:50:18 "Hey, we do wanna make some games." These things that you think you want,

1:50:21 those are nothing, what do you see what we can actually do now?

1:50:24 This is gonna be amazing.

1:50:26 And he just like popped right up and sent a check to us

1:50:29 where we at that point we still thought he might be a fraud,

1:50:32 that he was just lying about all of this.

1:50:34 But he was totally correct on how much

1:50:36 money he was making with his shareware titles.

1:50:39 And this was his kind of real brainstorm about this, where

1:50:43 Shareware was this idea that software doesn't have a fixed price.

1:50:47 If you use it, you send outta the goodness

1:50:49 of your heart some money to the creator.

1:50:51 And there were a couple utilities that did make some significant

1:50:54 success like that, but for the most part it didn't really work.

1:50:58 Now, there wasn't much software in a pure shareware model that was successful.

1:51:03 The Apogee innovation was to take something,

1:51:07 call it shareware, split it into three pieces.

1:51:10 You always made a trilogy and you would put the first piece out,

1:51:14 but then you buy the whole trilogy for some shareware amount, which in reality,

1:51:19 it meant that the first part was a demo where you kind of like

1:51:22 the demo went everywhere for free and you paid money to get the whole set,

1:51:26 but it was still played as shareware.

1:51:28 And we were happy to have the first one go everywhere.

1:51:31 And it wasn't a crippled demo where the first episode of all of these trilogies,

1:51:35 it was a real complete game and probably 20 times as many

1:51:38 people played that part of it thought they had a great game,

1:51:41 had found fond memories of it but never paid us a dime.

1:51:45 But enough people were happy with that, where it was really quite successful.

1:51:50 And these early games that we didn't think

1:51:52 very much of, compared to commercial quality games,

1:51:55 but they were doing really good business,

1:51:57 some fairly crude things and people, it was good business people enjoyed it.

1:52:02 And it wasn't like you were taking a crapshoot on what you were getting.

1:52:05 You just played a third of the experience and you

1:52:08 loved it enough to hand write out a check

1:52:10 and put it in an envelope and address it and send

1:52:13 it out to Apogee to get the rest of them.

1:52:16 So, it was a really pretty feel

1:52:19 good business prospect there because everybody was happy,

1:52:22 they knew what they were getting when they send it in.

1:52:26 And they would send in fan mail if you're going

1:52:27 into the trouble of addressing a letter and filling out an envelope,

1:52:31 you write something in it.

1:52:32 And there were just the literal bags of fan mail for the shareware games.

1:52:37 So, people loved them.

1:52:39 I should mention that for you,

1:52:41 the definition of wealth is being able to have pizza whenever you want.

1:52:46 For me, there was a dream, because I would play shareware games over and over,

1:52:51 the part that's free over and over.

1:52:53 And it was very deeply fulfilling experience.

1:52:56 But, I dreamed of a time when I could actually afford the full experience.

1:53:02 And this is kind of this dream land beyond

1:53:05 the horizon where you could find out what else is there.

1:53:09 In some sense, even just playing the shareware was,

1:53:15 it's the limitation of that, life is limited, eventually all die.

1:53:21 In that way, shareware was like somehow really fulfilling to have

1:53:27 this kind of mysterious thing beyond what's free always there.

1:53:32 It's kind of, I don't know,

1:53:33 maybe it's because a part of my childhood is playing shareware games.

1:53:37 That was a really fulfilling experience.

1:53:39 It's so interesting how that model still brought joy to so many people.

1:53:44 20x people that played it.

1:53:45 Yeah, I felt very good about that.

1:53:46 And I would run into people, it's like that would say, oh,

1:53:49 I loved that game, that you had early on Commander Keen whatever.

1:53:53 And they meant just the first episode that they got to see everywhere.

1:53:58 That's me, I played the crap outta Commander Keen.

1:54:01 And that was all good.

1:54:03 Yeah, yeah.

1:54:04 But so we were in this position where Scott Miller

1:54:06 was just fronting us cash saying, yeah, make a game.

1:54:10 But we did not properly pull the trigger and say, "All right,

1:54:14 we're quitting our jobs." We were like, we're gonna do both.

1:54:17 We're gonna keep working at Soft Disc working on this and then we're going

1:54:22 to go ahead and make a new game for Apogee at the same time.

1:54:26 And this eventually did lead to some legal problems and we had trouble.

1:54:31 It all got worked out in the end, but it was not a good call at the time there.

1:54:36 And your legal mind at the time was not stellar.

1:54:39 You were not thinking in terms in legal terms.

1:54:42 No, I definitely wasn't.

1:54:44 None of us were.

1:54:45 And in hindsight, yeah,

1:54:47 it's like how did we think we were gonna get away with like

1:54:49 even using our work computers to write software for our breakaway new company.

1:54:56 It was not a good plan.

1:54:58 How did Commander Keen come to be?

1:55:01 So, the design process,

1:55:02 we would start from, we had some idea of what we wanted to do.

1:55:05 We wanted to do a Mario-like game.

1:55:08 It was gonna be a side scroller, it was gonna use the technology.

1:55:11 We had some sense of what it would have to look like,

1:55:14 because of the limitations of this adaptive tile refresh technology.

1:55:17 It had to have fields of relatively constant tiles.

1:55:21 You couldn't just paint up a background and then move that around.

1:55:25 The early design or all the design for Commander Keen really

1:55:28 came from Tom Hall where he was kind of the main

1:55:33 creative mind for the early id Software stuff where we had

1:55:37 an interesting division of things where Tom was all creative in design.

1:55:42 I was all programming,

1:55:43 John Romero was an interesting bridge where he was both a very good programmer

1:55:47 and also a very good designer and artist

1:55:50 and kind of straddled between the areas.

1:55:52 But Commander Keen was very much Tom Hall's

1:55:55 baby and he came up with all the design

1:55:57 and backstory for the different things of kind

1:56:00 of, a mad scientist little kid with I am,

1:56:04 building a rocket ship and a zap gun and visiting alien worlds and doing

1:56:09 all of this that the background that we lay the game inside of.

1:56:13 And there's not a whole lot to any of these things.

1:56:16 Design for us was always just what we needed to do

1:56:19 to make the game that was gonna be so much fun to play.

1:56:23 And we made our, we laid out our first trilogy of games, the shareware formula.

1:56:27 It was gonna be three pieces.

1:56:29 We would make Commander Keen one, two, and three.

1:56:31 And we just really started busting on all that work.

1:56:35 And it went together really quickly.

1:56:37 It was like three months or something that while

1:56:40 we were still making games every month for Gamers' Edge,

1:56:43 we were sharing technology between that.

1:56:45 I'd write a bunch of code for this and we'd just kind of use it for both.

1:56:48 Again, not a particularly good idea there that had consequences for us.

1:56:53 But in three months we got our first game out and all of a sudden

1:56:58 it was three times as successful

1:57:00 as the most successful thing Apogee had had before.

1:57:03 And we were making like $30,000 a month,

1:57:05 immediately from the Commander Keen stuff.

1:57:09 And that was again, a surprise to us.

1:57:11 It was more than we thought that was gonna make.

1:57:15 And we said, well, we're gonna certainly

1:57:17 roll into another set of titles from this.

1:57:19 And in that three months, I had come up with a much better way of doing

1:57:23 the scrolling technology that was not the adaptive tile refresh,

1:57:27 which in some ways was even simpler.

1:57:29 And these things, so many of the great ideas

1:57:32 of technology are things that are back of the envelope designs.

1:57:36 I make this comment about modern machine learning where all

1:57:39 the things that are really important practically in the last decade are,

1:57:42 each of them fits on the back of an envelope.

1:57:44 There are these simple little things,

1:57:46 they're not super dense, hard to understand technologies.

1:57:51 And so the second scrolling trick was just a matter of like, okay,

1:57:55 we know we've got this 64K window and the question was always like,

1:58:00 well you could make a two by two but you can't go off the edge.

1:58:04 But I finally asked, well what actually happens if you just go off the edge?

1:58:09 If you take your start and you say it's like, okay, I can move over.

1:58:13 I'm scrolling, I can move over, I can move down.

1:58:15 I'm scrolling.

1:58:16 I get to what should be the bottom of the memory window?

1:58:19 It's like, well what if I just keep going and I

1:58:22 say I'm gonna start at, what happens if I start at FFFE

1:58:26 at the very end of the 64K block and it turns

1:58:29 out it just wraps back around to the top of the block.

1:58:33 And I'm like, "Oh well this makes

1:58:35 everything easy." You can just scroll the screen

1:58:37 everywhere and all you have to draw is just one new line of tiles,

1:58:40 which everything you expose,

1:58:42 it might be unaligned off various parts of the screen memory, but it just works.

1:58:48 That no longer had the problem of, you had to have fields of the similar colors,

1:58:52 because it doesn't matter what you're doing,

1:58:54 you could be having a completely unique world and you're

1:58:57 just drawing the new strip as it comes on.

1:58:59 But it might be like you said unaligned, so it can be all over the place.

1:59:03 Yeah and it turns out it doesn't matter.

1:59:04 I would have two page flipped screens.

1:59:06 As long as they didn't overlap,

1:59:07 they moved in series through this two dimensional window of graphics.

1:59:12 And that was one of those like, well this is so simple, this just works.

1:59:17 It's faster there.

1:59:19 It seemed like there was no downside.

1:59:21 Funny thing was, it turned out after we shipped titles

1:59:25 with this, there were what they called super VGA cards,

1:59:29 the cards that would allow higher resolutions

1:59:31 and different features that the standard ones didn't.

1:59:35 And on some of those cards, this was a weird compatibility quirk again,

1:59:40 because nobody thought this was not what it was designed to do.

1:59:43 And some of those cards had more memory,

1:59:45 they had more than just 256K in four planes.

1:59:48 They had five 12K or a megabyte.

1:59:51 And on some of those cards, I scroll my window down and then it

1:59:56 goes into initialized memory that actually exists there,

1:59:59 rather than wrapping back around to the top.

2:00:01 And then I was in the tough position of, do

2:00:04 I have to track every single one of these?

2:00:06 And it was a madhouse back then with, there were 20 different

2:00:09 video card vendors with all slightly

2:00:11 different implementations of their non-standard functionality.

2:00:14 So, either I needed to natively program all of the VGA cards there

2:00:20 to map in that memory and keep scrolling down through all of that.

2:00:24 Or I kind of punted and took the easy solution

2:00:27 of when you finally did run to the edge of the screen,

2:00:30 I accepted a hitch and just copied the whole screen up there.

2:00:33 So, on some of those cards, it was a compatibility mode.

2:00:38 In the normal ones, when it all worked fine,

2:00:40 everything was just beautifully smooth.

2:00:42 But if you had one of those cards where it did

2:00:44 not wrap the way I wanted it to, you'd be scrolling around,

2:00:48 scrolling around and then eventually you'd have a little hitch

2:00:50 where 200 milliseconds or something that was not super smooth.

2:00:54 Yeah, it froze a little bit.

2:00:55 And it's a binary thing.

2:00:57 Is it one of the standard screens or is it one of the weird ones?

2:01:00 The super VGA ones.

2:01:02 Yeah.

2:01:02 Okay.

2:01:03 And so we would default to, and I think that was one of those that changed,

2:01:06 over the kind of course of deployment where early on we

2:01:09 would have a normal mode and then you would enable

2:01:12 the compatibility flag if your screen did this crazy flickery

2:01:15 thing when you got to a certain point in the game.

2:01:18 And then later I think it probably got enabled

2:01:20 by default as just more and more of the cards.

2:01:23 It kind of did not do exactly the right thing.

2:01:26 And that's the two-edged sword of doing unconventional

2:01:28 things with technology where you can find something

2:01:31 that nobody thought about doing that kind

2:01:33 of scrolling trick when they set up those cards.

2:01:36 But the fact that nobody thought that was the primary reason when I was

2:01:39 relying on that, then I wound up being broken on some of the later cards.

2:01:44 Let me take a bit of a tangent,

2:01:45 but ask you about the hacker ethic, 'cause you mentioned shareware,

2:01:51 it's an interesting world, the world of people that make money,

2:01:56 the business and the people that build systems, the engineers.

2:02:02 And what is the hacker ethic?

2:02:05 You've been a man of the people and you've

2:02:08 embodied at least the part of that ethic.

2:02:12 What does it mean?

2:02:13 What did it mean to you at the time?

2:02:14 What does it mean to you today?

2:02:16 So, Stephen Levy's book "Hackers" was a really

2:02:18 formative book for me as a teenager.

2:02:21 I mean I read it several times and there was all

2:02:24 of the great lore of the early MIT era of hackers and ending up

2:02:29 at the end with, it kind of went through the early MIT hackers

2:02:34 and then the Silicon Valley hardware hackers

2:02:36 and then the game hackers in part three.

2:02:39 And at that time as a teenager, I really was kind of bitter in some ways.

2:02:44 Like I thought I was born too late,

2:02:46 I thought I missed the window there and I really thought I

2:02:50 belonged in that third section of that book with the game hackers.

2:02:53 And they were talking about the Williams

2:02:56 at Sierra and Origin Systems with Richard Garriott,

2:02:58 and it's like, I really wanted to be there.

2:03:02 And I knew that was now a few years in the past it, it was not to be,

2:03:08 but the early days, especially the early MIT hacker days,

2:03:12 talking a lot about this sense of the hacker ethic,

2:03:16 that there was this sense that it was about sharing information, being good,

2:03:20 not keeping it to yourself and that it's not a zero sum game that you

2:03:25 can share something with another programmer

2:03:28 and it doesn't take it away from you.

2:03:30 You then have somebody else doing something.

2:03:33 And I also think that there's an aspect

2:03:35 of it where it's this ability to take joy

2:03:39 in other people's accomplishments where it's not the cutthroat

2:03:42 bit of like I have to be first,

2:03:44 I have to be recognized as the one that did this in some way.

2:03:48 But being able to see somebody do something and say, "Holy shit,

2:03:52 that's amazing." And just taking joy in the ability

2:03:55 of something amazing that somebody else does.

2:03:58 And the big thing that I was able to do through id Software was this ability

2:04:05 to eventually release the source code for most

2:04:07 of our, like all of our really seminal game titles.

2:04:10 And that was a, it was a stepping stone process where we were

2:04:14 kind of surprised early on where people were able to hack the existing games.

2:04:19 And of course I had experience with that.

2:04:21 I remember hacking my copies of Ultima, so I'd give myself,

2:04:24 9999 gold and raise my levels and break out the sector editor.

2:04:29 And so I was familiar with all of that.

2:04:31 So, it was just, it was with a smile when

2:04:33 I started to see people doing that to our games.

2:04:35 Making level editors for Commander Keen or hacking up Wolfenstein 3D but I made

2:04:43 the pitch internally that we should actually release

2:04:46 our own tools for like what we did, what we used to create the games.

2:04:51 And that was a little bit debatable about well, we'll give people a leg up.

2:04:57 It's always like, what's that gonna mean for the competition?

2:05:00 [Lex] Yeah.

2:05:01 But the really hard pitch was to actually

2:05:04 release the full source code for the games

2:05:06 and it was a balancing act with the other people inside the company where,

2:05:11 it's interesting how the programmers, generally did get,

2:05:17 certainly the people that I worked closely with, they did kind

2:05:21 of get that hacker ethic bit where you wanted to share your code,

2:05:24 you were proud of it,

2:05:25 you wanted other people to take it and do cool things with it.

2:05:28 But interestingly, the broader game industry

2:05:33 is a little more hesitant to embrace

2:05:36 that than like the group of people that we happen to have at id Software.

2:05:40 Where it was always a little interesting to me,

2:05:42 seeing how a lot of people in the game

2:05:45 modding community were very possessive of their code.

2:05:47 They did not want to share their code,

2:05:49 they wanted it to be theirs, it was their claim to fame.

2:05:52 And that was much more like what we tended to see with artists where

2:05:56 the artists understand something about credit and wanting

2:05:59 it to be known as their work.

2:06:02 And a lot of the game programmers, felt a little bit more like artists than

2:06:07 like hacker programmers in that it was about

2:06:10 building something that maybe felt more like art

2:06:12 to them than the more tool-based and exploration-based,

2:06:16 kind of hacking culture side of things.

2:06:19 Yeah.

2:06:19 So, it's so interesting that this kind of fear

2:06:23 that credit will not be sufficiently attributed to you.

2:06:28 And that's one of the things that I do bump into a lot,

2:06:30 because I try not to go clean.

2:06:34 I mean, it's easy for me to say,

2:06:35 because so much credit is heaped on me for the the id Software side of things.

2:06:39 But when people come up and they want to pick a fight and say no,

2:06:42 it's like that wasn't where first person gaming came from.

2:06:45 And you can point to some of like things on obscure

2:06:49 titles that I was never aware of or like the old

2:06:52 Plato systems or each personal computer had something that was 3D-ish

2:06:57 and moving around and I'm happy to say it's like no,

2:07:00 I mean I saw Battle Zone and Star Wars in the arcades.

2:07:03 I had seen 3D graphics, I had seen all these things that I'm

2:07:06 standing on the shoulders of lots of other people,

2:07:09 but sometimes these examples they pull out,

2:07:10 it's like, "Nah, I didn't know that existed." I mean there,

2:07:13 I had never heard of that before then that didn't contribute to what I made.

2:07:17 But there's plenty of stuff that did.

2:07:19 And I think there's good cases to be made that obviously Doom and Quake

2:07:25 and Wolfenstein were were formative examples

2:07:27 for what everything that came after that.

2:07:31 But I don't feel the need to go fight

2:07:34 and say claim primacy or initial invention of anything like that.

2:07:38 But a lot of people do want to.

2:07:40 I think when you fight for the credit

2:07:42 in that way and it does go against the hacker ethic,

2:07:45 you destroy something fundamental about the culture,

2:07:48 about the community that builds cool stuff.

2:07:51 I think credit ultimately,

2:07:55 I had this sort of, there's a famous wrestler and freestyle wrestling,

2:08:00 called Tatsuhiro Saito,

2:08:03 and he always preached that you should just focus on the art

2:08:08 of the wrestling and let people write your story however they want.

2:08:16 Te highest form of the art is just focusing on the art.

2:08:20 And that's something that is something,

2:08:22 about the hacker ethic is just focused on building cool stuff,

2:08:26 sharing it with other cool people and credit will

2:08:30 get assigned correctly in the long arc of history.

2:08:37 Yeah.

2:08:38 And I generally think that's true and you've got,

2:08:40 like there's some things there's,

2:08:43 there's the graphics technique that got labeled CarMax Reverse,

2:08:46 literally named and it turned out that I

2:08:49 wasn't the first person to figure that out.

2:08:51 Like most scientific things or mathematical things, you wind up, it's like,

2:08:55 "Oh this other person had actually done that, "somewhat

2:08:57 before." And then there's things that get attributed to me,

2:09:00 like the inverse square root hack that I actually didn't do.

2:09:03 I flat out that wasn't me.

2:09:04 And it's like, it's weird how the mimetic power of the internet.

2:09:07 I cannot convince people of that, yes.

2:09:12 It's just everything just gets attributed to you now,

2:09:14 even though you've never sought the credit of things.

2:09:17 I mean, but part of the fact

2:09:19 that humility behind that is what attracts the attributions.

2:09:25 Let's talk about a game, to me one of the greatest games ever made.

2:09:29 I know you could talk about Doom and Quake

2:09:30 and so on, but to me Wolfenstein 3D was like,

2:09:33 whoa, it blew my mind that that world like this could exist.

2:09:38 So, how did Wolfenstein 3D come to be in terms of the programming,

2:09:43 in terms of the design, in terms of some of the memorable

2:09:46 technical challenges And also actually just something

2:09:49 you haven't mentioned is how do these ideas come to be inside your mind,

2:09:58 the adaptive side scrolling.

2:10:00 So, the solutions to these technical challenges.

2:10:03 So, I usually can introspectively pull back,

2:10:06 pretty detailed accounts of how technology solutions

2:10:11 and design choices on my part came to be.

2:10:14 Where technically we had done two games,

2:10:17 3D games like that before where Hover Tank was the first one

2:10:21 which had flat shaded walls but did have the scaled enemies inside it.

2:10:25 And then Catacombs 3D which had textured walls,

2:10:28 scaled enemies and some more functionality,

2:10:34 like the disappearing walls and some other stuff.

2:10:37 But what's really interesting from a game

2:10:39 development standpoint is those games Catacombs 3D, Hover Tank and Wolfenstein,

2:10:45 they literally used the same code for a lot of the character

2:10:50 behavior that a 2D game that I had made earlier called Catacombs did,

2:10:54 where it was an overhead view game, kind of like gauntlet,

2:10:56 you're running around and you can open up doors,

2:10:58 pick up items, basic game stuff.

2:11:01 And the thought was that this exact same

2:11:05 game experience just presented in a different perspective.

2:11:09 It could be literally the same game, just with a different view into it,

2:11:13 would have a dramatically different impact on the players.

2:11:17 So, it wasn't a true 3D, you're saying that you could kind of fake it.

2:11:22 You can like scale enemies,

2:11:24 meaning things that are farther away, you can make 'em smaller.

2:11:27 So, from the game was a 2D map,

2:11:29 like all of our games used the same tool for creation.

2:11:33 We used the same map editor for creating Keen,

2:11:35 as Wolfenstein and Hover Tank and Catacombs and all this stuff.

2:11:39 So the game was a 2D grid made outta blocks and you could say,

2:11:43 well these are walls, these are where the enemies start.

2:11:45 Then they start moving around.

2:11:47 And these early games like Catacombs, you played it strictly in a 2D view.

2:11:51 It was a scrolling 2D view and that was kind of using an adaptive

2:11:54 tile refresh at the time to be able to do something like that.

2:11:57 And then the thought that these early games,

2:12:01 all it did was take the same basic enemy logic,

2:12:04 but instead of seeing it from the god's eye view on top,

2:12:07 you are inside it and turning from side to side yawing

2:12:10 your view and moving forwards and backwards and side to side.

2:12:13 And it's a striking thing where you always talk

2:12:17 about wanting to isolate and factor changes in values.

2:12:20 And this was one of those most pure cases

2:12:22 there where the rest of the game changed very little.

2:12:25 It was our normal kind of change the colors

2:12:27 on something and draw a different picture for it,

2:12:29 but it's kind of the same thing.

2:12:30 But the perspective changed in a really

2:12:33 fundamental way and it was dramatically different.

2:12:36 I can remember the reactions where the artist

2:12:40 Adrian that had been drawing the pictures for it,

2:12:42 we had a cool big troll thing in Catacombs 3D and we had these walls

2:12:46 that you could get a key and you

2:12:48 could make the blocks disappear and really simple stuff,

2:12:51 blocks could either be there or not there.

2:12:52 So, our idea of a door was being able to make a set of blocks just disappear.

2:12:57 And I remember the reaction where he had drawn these characters and he

2:13:00 was slowly moving around and like people had no experience with 3D navigation,

2:13:04 it was all still keyboard.

2:13:05 We didn't even have mice set up at that time.

2:13:08 But slowly moving, going up, picked up a key, go to a wall,

2:13:12 the wall disappears in a little animation

2:13:14 and there's a monster like right there.

2:13:16 And he practically fell out of his chair.

2:13:18 It was just like, ah.

2:13:19 And games just didn't do that.

2:13:22 The games were the god's eye view.

2:13:24 You were a little invested in your little guy,

2:13:26 you can be like happy or sad when things happen,

2:13:29 but you just did not get that of startle reaction.

2:13:32 You weren't inside your game.

2:13:34 Something in the back of your brain.

2:13:35 Some reptile brain thing is just going, "Oh,

2:13:38 shit something just happened." And that was

2:13:40 one of those early points where it's like,

2:13:42 yeah, this is gonna make a difference.

2:13:44 This is going to be powerful and it's gonna matter.

2:13:47 Were you able to imagine that in the idea stage or no?

2:13:51 So not that exact thing.

2:13:53 So again, we had cases like the arcade games,

2:13:56 Battle Zone and Star Wars that you could kind of see a 3D

2:13:59 world and things coming at you and you get some sense of it.

2:14:03 But nothing had done the kind of worlds that we

2:14:06 were doing and the sort of action based things.

2:14:08 3D at the time was really largely about the simulation thoughts.

2:14:13 And this is something that, really might have trended differently if not

2:14:18 for the id Software approach in the games where there were flight simulators,

2:14:23 there were driving simulators, you had like hard drive in and Microsoft

2:14:27 Flight Simulator and these were doing 3D and general

2:14:30 purpose 3D and ways that were more flexible

2:14:33 than what we were doing with our games.

2:14:35 But they were looked at as simulations.

2:14:38 They weren't trying to necessarily be fast or responsive

2:14:42 or letting you do kind of exciting maneuvers,

2:14:44 because they were trying to simulate reality and they

2:14:47 were taking their cues from the big systems,

2:14:49 the Evans and Sutherlands and the Silicon Graphics that were doing things.

2:14:52 But we were taking our cues from the console and arcade games,

2:14:56 we wanted things that were sort of quarter eaters that were

2:15:00 doing fast paced things that you could smack you around,

2:15:02 rather than just smoothly gliding you from place to place.

2:15:06 So, quarter years.

2:15:08 And a funny thing is, so much that that built into us that Wolfenstein,

2:15:13 still had lives and you had like one

2:15:15 of the biggest power ups in all these games, like was an extra life,

2:15:18 because you started off with three lives and you lose your lives and then

2:15:22 it's game over and there weren't save games in most of this stuff.

2:15:26 It sounds almost crazy to say this, but it

2:15:29 was an innovation in Doom to not have lives.

2:15:32 You could just play doom as long as you wanted.

2:15:33 You just restart at the the start of the level and why not?

2:15:36 This is like we aren't trying to take people's quarters,

2:15:39 they've already paid for the entire game.

2:15:41 We want them to have a good time and you would have some,

2:15:45 some old timer purists that might think that there's something

2:15:47 to the epic journey of making it to the end, having to restart all the way

2:15:51 from the beginning after a certain number of tries.

2:15:53 But now more fun is had when you just let people kind of keep trying

2:15:57 when they're stuck rather than having to go

2:15:58 all the way back and learn different things.

2:16:02 So, you've recommended the book,

2:16:03 "Game Engine Black Book Wolfenstein 3D" for technical exploration of the game.

2:16:07 So looking back 30 years,

2:16:10 what are some memorable technical innovations that made this perspective shift

2:16:15 into this world that's so immersive that scares you when a monster appears?

2:16:20 What were some things you had to solve?

2:16:22 So, one of the interesting things that come

2:16:24 back to the theme of deadlines and resource constraints,

2:16:27 the game Catacombs 3D we shipped,

2:16:32 we were supposed to be shipping this for Gamers'

2:16:33 Edge on a monthly cadence and I had slipped,

2:16:36 I was actually late, it slipped like six weeks,

2:16:39 because this was texture mapped walls doing stuff that I hadn't done before.

2:16:44 And at the six week point, it was still kind of glitchy and buggy.

2:16:48 There were things that I knew that if you

2:16:51 had a wall that was like almost edge on, you

2:16:53 could slide over to it and you could see

2:16:55 some things freak out or vanish or not work.

2:16:57 And I hated that, but I was up against the wall.

2:17:01 We had to ship the game.

2:17:03 It was still a lot of fun to play.

2:17:04 It was novel, nobody had seen it.

2:17:05 It gave you that startle reflex reaction.

2:17:09 So, it was worth shipping, but it had these things that I knew were kind

2:17:13 of flaky and janky and not what I was really proud of.

2:17:17 So, one of the things that I did very differently in Wolfenstein, I was went,

2:17:24 Catacombs used almost a conventional thing where you

2:17:27 had segments that were one dimensional polygons basically,

2:17:30 that were clipped and back faced and done kind

2:17:34 of like a very crude 3D engine from the professionals.

2:17:37 But I wasn't getting it done right.

2:17:39 I was not doing a good enough job.

2:17:41 I didn't really have line of sight to fix it, right?

2:17:45 There's stuff that of course I look back, it's like,

2:17:47 oh it's obvious how to do this and do the math right?

2:17:49 Do your clipping right, check all of this, how you handle the precision.

2:17:53 But I did not know how to do that at that time.

2:17:56 Was that the first 3D engine you wrote Catacombs 3D?

2:17:59 And Hover Tank had been a little bit

2:18:00 before that, but that had the flat shaded walls.

2:18:02 So the texture mapping on the walls was

2:18:04 what was bringing in some of these challenges.

2:18:06 That was hard for me and I couldn't solve it right at the time.

2:18:11 Can you describe what flat shading is and texture mapping?

2:18:13 So, the walls were solid color, one of 16 colors in Hover Tank.

2:18:19 So, that's easy, it's fast.

2:18:20 You just draw the solid color for everything.

2:18:23 Texture mapping is what we all see today where you have an image

2:18:26 that is stretched and distorted onto the walls

2:18:29 or the surfaces that you're working with.

2:18:31 And it was a long time for me to just

2:18:34 figure out how to do that without it distorting

2:18:37 in the wrong ways and I did not get it

2:18:40 all exactly right in Catacombs and I had these flaws.

2:18:44 So, that was important enough to me that rather than continuing to bang

2:18:48 my head on that when I wasn't positive I was gonna get it,

2:18:51 I went with a completely different approach for drawing,

2:18:54 for figuring out where the walls were,

2:18:56 which was a ray casting approach, which I had done in Catacombs 3D,

2:19:00 I had a bunch of C code trying

2:19:02 to make this work right and it wasn't working right.

2:19:05 In Wolfenstein, I wound up going to a very small amount of assembly code.

2:19:11 So, in some ways this should be a slower way of doing it,

2:19:14 but by making it a smaller amount of work

2:19:16 that I could more tightly optimize, it worked out.

2:19:19 And Wolfenstein 3D was just absolutely rock solid.

2:19:22 It was nothing glitched in there.

2:19:25 The game just was pretty much through all of that and I was super proud of that.

2:19:29 But eventually, like in the later games, I went back to the more span based

2:19:35 things where I could get more total efficiency,

2:19:37 once I really did figure out how to do it.

2:19:40 So, there were two sort of key technical things to Wolfenstein.

2:19:43 One will this ray casting approach, which you still to this day,

2:19:47 you see people go and say let's write a ray casting engine because it's

2:19:51 an understandable way of doing things that lets

2:19:53 you make games very much like that.

2:19:55 So, you see ray casters in JavaScript, ray casters in Python,

2:19:58 people that are basically going and reimplementing that approach

2:20:03 to taking a tiled world and casting out into it.

2:20:06 It works pretty well, but it's not the fastest way of doing it.

2:20:09 Can you describe what ray casting is?

2:20:11 So you start off and you've got your screen,

2:20:13 which is 320 pixels across at the time if

2:20:16 you haven't sized down in the window for greater speed.

2:20:19 And at every pixel there's gonna be an angle

2:20:22 from, you've got your position in the world

2:20:24 and you're gonna just run along that angle and keep going until you hit a block.

2:20:28 So, up to 320 times across there, it's gonna throw a cast array out

2:20:34 into the world from wherever your origin is until it

2:20:37 runs into a wall and then it can figure out exactly where on the wall it hits.

2:20:42 The performance challenge of that is as it's

2:20:44 going out every block it's crossing it checks, is this a solid wall?

2:20:49 So, that means that in like the early Wolfenstein levels,

2:20:52 you're in a small jail cell going out into a small hallway,

2:20:55 it's super efficient for that, because you're

2:20:57 only stepping across three or four blocks.

2:21:00 But then if somebody makes a room that covers,

2:21:02 our maps we're limited to 64 by 64 blocks.

2:21:05 If you made one room that was nothing but walls at the far space,

2:21:09 it would go pretty slow,

2:21:11 because it would be stepping across 80 tile tests or something along the way.

2:21:16 By the way the physics of our universe seems to be competing in this very thing.

2:21:19 So, this maps nicely to the actual physics of our world.

2:21:23 Yeah, you get like-- Intuitively- I follow a little bit of something,

2:21:25 like Stephen Wolfram's work on, interconnected network information states

2:21:29 of that and it's beyond what I can have an informed opinion on.

2:21:35 But it's interesting that people are considering things like

2:21:38 that and have and have things that can back it up.

2:21:41 Yeah, there's whole different sets of interesting stuff there.

2:21:46 So, Wolfenstein 3D had ray casting.

2:21:48 So, ray casting and then the other kind

2:21:50 of key aspect was what I called compiled scalers,

2:21:54 where the idea of, you saw this in the earlier classic arcade games,

2:21:59 like Space Harrier and stuff where,

2:22:01 you would take a picture which is normally drawn directly on the screen

2:22:05 and then if you have the ability to make it bigger or smaller,

2:22:08 big chunky pixels or fizzly, small drop sample pixels.

2:22:12 That's the fundamental aspect of what

2:22:14 our characters were doing in these 3D games.

2:22:16 You would have, it's just like you might've drawn a tiny little character,

2:22:19 but now we can make 'em really big and make 'em really small and move it around.

2:22:23 That was the limited kind of 3D that we had for characters to make 'em turn,

2:22:27 there were literally eight different views of them.

2:22:29 You didn't actually have a 3D model that would rotate,

2:22:31 you just had these cardboard cutouts,

2:22:33 but that was good enough for that startle fight reaction and it

2:22:37 was kind of what we had to do deal with there.

2:22:40 So, a straightforward approach to do that, you could just write out your doubly

2:22:44 nested loop of you've got your stretch factor and it's like you've got a point,

2:22:48 you stretch by a little bit.

2:22:49 It might be on the same pixel,

2:22:50 it might be on the next pixel, it might have skipped a pixel.

2:22:53 You can write that out, but it's not gonna be fast enough where especially

2:22:56 you get a character for that right in your face,

2:22:59 monster covering almost the entire screen.

2:23:02 Doing that with a general purpose scaling routine,

2:23:05 would've just been much too slow.

2:23:06 It would've worked when they're small characters,

2:23:08 but then it would get slower and slower as they got closer to you

2:23:11 until right at the time when you most care about having a fast reaction time,

2:23:15 the game would be chunking down.

2:23:17 So, the fastest possible way to draw pixels

2:23:21 at that time was to, instead of saying,

2:23:26 I've got a general purpose version that can handle any scale I made,

2:23:32 I used a program to make essentially

2:23:35 a hundred or more separate little programs that was

2:23:38 optimized for, I will take an image and I will draw it 12 pixels tall,

2:23:42 I'll take an image, I'll draw it 14 pixels tall,

2:23:44 up by every two pixels, even for that.

2:23:47 So, you would have the most optimized code,

2:23:50 so that in the normal case where most of the world is fairly large,

2:23:54 like the pixels are big, we did not have a lot of memory.

2:23:58 So, in most cases that meant that you would load

2:24:01 a pixel color and then you would store it multiple times.

2:24:05 So, that was faster than even copying an image in a normal

2:24:10 conventional case because most of the time the image is expanded.

2:24:13 So, instead of doing one read, one write for a simple copy,

2:24:16 you might be doing one read and three or four writes as it got really big.

2:24:20 And that had the beneficial aspect of just when you

2:24:23 needed the performance most when things are covering the screen,

2:24:26 it was giving you the most acceleration for that.

2:24:28 By the way, were you able to understand this through

2:24:32 thinking about it or were you testing like the right speed?

2:24:36 So this again comes back to, I can find the antecedents for things like this.

2:24:41 So, in back in the Apple II days,

2:24:44 the graphics were essentially single bits at a time.

2:24:49 And if you wanted to make your little spaceship,

2:24:51 if you wanted to make it smoothly go across the world,

2:24:54 if you just took the image and you drew it out at the next location,

2:24:57 you would move by seven pixels at a time.

2:24:59 So it would go chunk, chunk, chunk.

2:25:01 If you wanted to make it move smoothly,

2:25:03 you actually had to make seven versions of the ship that were pre-shift.

2:25:07 You could write a program that would shift it dynamically,

2:25:09 but on a one megahertz processor that's not going anywhere fast.

2:25:13 So, if you wanted to do a smooth moving fast action game,

2:25:16 you made separate versions of each of these sprites.

2:25:20 Now, there were a few more tricks you could pull that if it still fast enough,

2:25:24 you could make a compiled shape where,

2:25:27 instead of this program that normally copies an image and it says like,

2:25:31 get this bite from here stored here, get this bite stored this bite.

2:25:35 If you've got the memory space, you could say,

2:25:38 I'm going to write the program that does nothing but draw this shape.

2:25:41 It's going to be like,

2:25:42 I'm going to load the immediate value 25, which is some bit pattern.

2:25:47 And then I'm going to store that at this location,

2:25:51 rather than loading something from memory that involved

2:25:54 indexing registers and this other slow stuff.

2:25:56 You could go ahead and say, no,

2:25:58 I'm gonna hard code the exact values of all of the image right into the program.

2:26:02 And this was always a horrible trade off there,

2:26:04 but you didn't have much memory and you didn't have much speed.

2:26:06 But if you had something that you wanted to go really fast,

2:26:09 you could turn it into a program.

2:26:11 And that was knowing about that technique is what

2:26:15 made me think about some of these, unwinding it

2:26:17 for the PC where people that didn't come

2:26:19 from that background were less likely to think about that.

2:26:23 I mean there's some deep parallels, probably to human cognition as well.

2:26:27 There's something about optimizing and compressing

2:26:32 the processing of a new information that requires

2:26:37 you to predict the possible ways in which the game or the world might unroll.

2:26:44 And you have something like compiled scaler is always there.

2:26:47 So, you have like you have a prediction of how the world will

2:26:52 unroll and you have some kind of optimized data structure for that prediction.

2:26:58 And then you can modify if the world turns out to be different,

2:27:01 you can modify a slight way.

2:27:02 And as far as building out techniques,

2:27:04 so much of the brain is about the associative context.

2:27:07 When you learn something,

2:27:09 it's in the context of something else and you can have faint,

2:27:12 tiny little hints of things.

2:27:13 And I do think there are some deep things around,

2:27:16 like sparse distributed memories and boosting that.

2:27:19 It's like if you can just be slightly above

2:27:20 the noise floor of having some hint of something,

2:27:23 you can have things refined into pulling the memory back up.

2:27:26 So, being a programmer and having a toolbox

2:27:29 of like all of these things that, things that I did in all of these previous

2:27:33 lives of programming tasks that still matters to me,

2:27:36 about how I'm able to pull up some of these things.

2:27:38 Like in that case it was something I did

2:27:40 on the Apple II then being relevant for the PC.

2:27:43 And I have still cases when I would

2:27:45 work on mobile development then be like, "Okay,

2:27:48 I did something like this back in the the Doom days,

2:27:51 "but now it's a different environment," but I has still had that tie.

2:27:55 I can bring it in and I can transform it into what the world needs right now.

2:27:58 And I do think that's actually one of the very core

2:28:01 things with human cognition and brain-like

2:28:05 functioning is finding these ways about,

2:28:07 your brain is kind of everything everywhere, all at once.

2:28:10 It is just a set of all of this stuff that is

2:28:13 just fetched back by these queries that go into it and they

2:28:16 can just be slightly above the noise floor with random noise

2:28:19 in your neurons and synapses that are affecting exactly what gets pulled up.

2:28:24 So, you're saying some of these very specific solutions for different games,

2:28:28 you find that there's a kernel of an a deep

2:28:31 idea that's generalizable to other to other things.

2:28:34 Yeah, you can't predict what it's going to be, but that idea of like,

2:28:37 I called out that compiled shaders in the forward that I wrote for that the Game

2:28:42 engine black book as it's kind of an end point of unrolling code.

2:28:48 But that's one of those things that, thinking

2:28:49 about that and having that in your mind,

2:28:51 and I'm sure there are some programmers that you

2:28:53 know hear about that, think about it a little bit,

2:28:55 it's kind of the mind blown moment.

2:28:57 It's like, "Oh you can just turn all of that data into code"

2:29:00 and nowadays you have instruction cache issues

2:29:03 and that's not necessarily the best idea.

2:29:05 But there are different,

2:29:07 it's an idea that has power and has probably relevance in some other areas.

2:29:11 Maybe it's in a hardware point of view that there's

2:29:13 a way you approach building hardware that has that same,

2:29:16 you don't even have to think about iterating,

2:29:18 you just bake everything all the way into it in one place.

2:29:22 What is the story of how you came to Program Doom?

2:29:25 What are some memorable technical challenges or innovations within that game?

2:29:30 So, the path that we went after Wolfenstein got out and we were

2:29:34 on this crazy arc where Keen one through three more success than we thought,

2:29:38 keen four through six, even more success, Wolfenstein even more success.

2:29:42 So, we were on this crazy trajectory for things.

2:29:46 So actually our first box commercial project was a Commander Keen game,

2:29:50 but then Wolfenstein was going to have a game,

2:29:52 called Spear of Destiny, which was a commercial version, 60 new levels.

2:29:57 So, the rest of the team took the game engine,

2:29:59 pretty much as it was and started working on that.

2:30:02 We got new monsters, but it's basically reskins of the things there.

2:30:07 And there's a really interesting aspect about

2:30:09 that that I didn't appreciate until much, much later,

2:30:12 about how Wolfenstein clearly did tap out its limit about what you

2:30:17 wanna play all the levels and a couple of our license things.

2:30:21 There was a hard creative wall that you did

2:30:24 not really benefit much by continuing to beat on it.

2:30:27 But a game like Doom and other more modern games like Minecraft or something,

2:30:33 there's kind of a touring completeness level

2:30:35 of design freedom that you get in games that Wolfenstein clearly sat on one side

2:30:39 of, all the creative people in the world, could not go and do a masterpiece,

2:30:44 just with the technology that Wolfenstein had.

2:30:46 Wolfenstein could do Wolfenstein,

2:30:48 but you really couldn't do something crazy and different.

2:30:50 But it didn't take that much more capability to get

2:30:54 to Wolfenstein with the freeform lines and a little

2:30:57 bit more artistic freedom to get to the point

2:30:59 where people still announced new Doom levels today,

2:31:02 all these years after without having completely tapped out the creativity.

2:31:06 How did you put it touring complete-- Like tour complete design space.

2:31:10 Design space.

2:31:11 Where it's like we have the kind of computational universality

2:31:13 on a lot of things and how different substrates work.

2:31:17 But yeah, there's things where,

2:31:19 a box can be too small but above a certain point you kind of are at the point,

2:31:24 you really have almost unbounded creative ability there.

2:31:28 And Doom was the first time you crossed that line.

2:31:31 Yeah, where there were thousands of Doom levels created and some of 'em

2:31:35 still have something new and interesting to say to the world about it.

2:31:39 Is that line, can you introspect what that line was?

2:31:43 Is it in the design space?

2:31:44 Is it something about the programming capabilities

2:31:48 that you were able to add to the game?

2:31:51 So, the graphics fidelity was a necessary part,

2:31:54 because the block limitations in Wolfenstein,

2:31:57 what we had right there was not enough.

2:32:00 The full scale blocks, although Minecraft,

2:32:03 I really did show that perhaps blocks stacked in 3D and at one quarter the scale

2:32:09 of that or one eighth in volume is then sufficient to have all of that.

2:32:13 But the wall sized blocks that we had

2:32:16 in Wolfenstein was too much of a creative limitation.

2:32:18 We licensed the technology to a few other teams.

2:32:21 None of them made too much of a dent with that.

2:32:24 It just wasn't enough creative ability, but a little bit more,

2:32:28 whether it was the variable floors and ceilings

2:32:31 and arbitrary angles in Doom or the smaller foxhole

2:32:34 blocks in Minecraft is then enough to open it

2:32:38 up to just worlds and worlds of new capabilities.

2:32:42 What is binary space partitioning?

2:32:45 Which is one of the technologies, is it?

2:32:48 Yeah, so jump around a little bit on the story path there.

2:32:51 Yes.

2:32:51 So, while the team was working on Spirit Destiny for Wolfenstein.

2:32:54 We had met another development team, Raven Software,

2:32:58 while we were in Wisconsin and they were doing,

2:33:01 they had RPG background and I still kind of loved that.

2:33:04 And I offered to do a game engine for them to let them do

2:33:09 a 3D rendered RPG instead of the, like most RBG games were kind of hand drawn.

2:33:14 They made it look kind of 3D but it was done just all with artist work,

2:33:17 rather than a real engine.

2:33:19 And after Wolfenstein, this was still a tile based world,

2:33:23 but I added floors and ceilings and some lighting

2:33:25 and the ability to have some sloped floors in different areas.

2:33:28 And that was my intermediate step for a game called Shadow Caster.

2:33:32 And it had slowed down enough,

2:33:34 it was not fast enough to do our type of action things.

2:33:37 So, they had the screen crop down a little bit,

2:33:39 so you couldn't go the full screen width,

2:33:42 like we would try to do in Wolfenstein, but I learned a lot.

2:33:46 I got the floors and ceilings and lightings and it looked great.

2:33:48 They were great artists up there.

2:33:50 And it was an inspiration for us to look at some of that stuff.

2:33:54 But I had learned enough from that, that I had the plan for, I knew

2:33:59 faster ways to do the lighting and shadowing

2:34:01 and I wanted to do this freeform geometry.

2:34:03 I wanted to break out of this tile-based, 90 degree world limitations.

2:34:09 So, that was when we got our next stations and we were working with these higher

2:34:14 powered systems and we built an editor

2:34:17 that let us draw kind of arbitrary line segments.

2:34:20 And I was working hard to try

2:34:22 to make something that could render this fast enough.

2:34:25 I was pushing myself pretty hard.

2:34:27 And we were at a point where we

2:34:31 could see some things that looked amazingly cool,

2:34:33 but it wasn't really fast enough for the way I was doing it,

2:34:37 for this flexibility, it was no longer, I couldn't just ray cast into it.

2:34:40 And I had these very complex sets of lines and simple little worlds were okay,

2:34:45 but the cool things that we wanted to do, just weren't quite fast enough.

2:34:49 And I wound up taking a break at that point, and I did the port,

2:34:54 I did two ports of our games Wolfenstein to the Super Nintendo.

2:35:01 It was a crazy difficult thing to do which was an even slower processor.

2:35:05 It was like a couple megahertz processor.

2:35:09 And it had been this whole thing where we

2:35:12 had farmed out the work and it wasn't going well.

2:35:17 And I took it back over and trying to make it go fast on there,

2:35:21 where it really did not have much processing power.

2:35:25 The pixels were stretched up hugely and it

2:35:27 was pretty ugly when you looked at it,

2:35:29 but in the end it did come out fast enough

2:35:31 to play and still be kind of fun from that.

2:35:33 But that was where I started using BSP trees or binary space partitioning trees.

2:35:38 It was one of those things I had to make it faster there.

2:35:41 It was a stepping stone where it was reasonably

2:35:44 easy to understand in the grid world of Wolfenstein,

2:35:46 where it was all still 90 degree angles.

2:35:49 BSP trees were, I eased myself into it with that and it was a big success.

2:35:55 Then when I came back to working on Doom, I had this new tool in my toolbox.

2:36:00 It was gonna be a lot harder with the arbitrary angles of Doom.

2:36:03 This was where I really started grappling with Epsilon problems and just,

2:36:08 up until that point,

2:36:09 I hadn't really had to deal with the fact that I am so many numeric things.

2:36:13 This almost felt like a betrayal to me where people had told me

2:36:16 that I had mathematicians up on a bit of a pedestal where I was,

2:36:19 people think I'm a math wizard and I'm not.

2:36:22 I really, everything that I did was really

2:36:25 done with a solid high school math understanding, algebra two, trigonometry.

2:36:31 And that was what got me all the way through Doom and Quake and all

2:36:35 of that, of just understanding basics of matrices

2:36:37 and knowing it well enough to do something with it.

2:36:41 What's the Epsilon problems you ran into?

2:36:43 So, when you wind up taking a, like a sloped line and you say,

2:36:47 I'm going to intersect it with another sloped line,

2:36:50 then you wind up with something that's not

2:36:52 going to be on these nice grid boundaries.

2:36:54 With the Wolfenstein tile maps,

2:36:57 all you've got is horizontal and vertical lines, looking at it from above.

2:37:00 And if you cut one of them,

2:37:01 it's just obvious the other one gets cut exactly at that point.

2:37:04 But when you have angled lines, you're doing a kind of a slope intercept problem

2:37:08 and you wind up with rational numbers there where things

2:37:11 that are not going to evenly land on an integer

2:37:14 or on any fixed point value that you've got.

2:37:17 So, everything winds up having to snap to some fixed point value.

2:37:20 So, the lines slightly change their angle.

2:37:23 You wind up, if you cut something here, this one's gonna bend a little this way

2:37:26 and it's not gonna be completely straight.

2:37:28 And then you come down to all these questions

2:37:30 of, well this one is a point on an angled line.

2:37:35 You can't answer that in finite precision,

2:37:38 unless you're doing something with actual rational numbers.

2:37:41 And later on I did waste far too much time, chasing things like that.

2:37:44 How do you do precise arithmetic with rational numbers?

2:37:46 And it always blows up eventually, exponentially as you do enough.

2:37:50 So, these kind of things are impossible with computers?

2:37:53 So they're possible.

2:37:55 Again, there are paths to doing it,

2:37:57 but you can't fit them conveniently in any of the numbers.

2:38:00 You need to start using big nums

2:38:01 and different factor trackings of different things.

2:38:04 Right, so if you have any elements of OCD and you wanna do something perfectly,

2:38:09 you're screwed if you're working with floating point.

2:38:12 Yeah.

2:38:13 So, you had to deal with this for the first time.

2:38:15 And there were lots of challenges there about like, okay,

2:38:18 they build this cool thing and the way the BSP trees work is it

2:38:22 basically takes the walls and it carves

2:38:24 other walls by those walls in this clever

2:38:27 way that you can then take all of these fragments and then you can

2:38:31 for sure from any given point get an ordering of everything in the world.

2:38:35 And you can say, this goes in front of this, goes

2:38:37 in front of this, all the way back to the last thing.

2:38:40 And that's super valuable for graphics where

2:38:42 kind of a classic graphics algorithm would be, painter's algorithm.

2:38:46 You paint the furthest thing first and then

2:38:48 the next thing and then the next thing,

2:38:49 and then it comes up and it's all perfect for you.

2:38:52 That's slow because you don't wanna have to have drawn everything like that.

2:38:56 But you can also flip it around and draw the closest

2:38:58 thing to you and then if you're clever about it,

2:39:01 you can figure out what you need to draw that's visible beyond that.

2:39:05 And that's what BSP trees allow you to do.

2:39:07 Yeah, so it's combined with a bunch of other things,

2:39:10 but it gives you that ordering.

2:39:12 It's a clever way of doing things.

2:39:13 And I remember I had learned this from, one of my graphics bible at the time,

2:39:18 a book called "Foley and van Dam." And again,

2:39:20 it was a different world back there.

2:39:22 There was a small integer number of books

2:39:24 and this book that, this book that was,

2:39:27 it was big fat college textbook that I had read through many times.

2:39:32 I didn't understand everything in it.

2:39:34 Some of it wasn't useful to me,

2:39:35 but they had the little thing about finite orderings

2:39:39 of you draw little t-shaped thing and you can say

2:39:42 you can make a fixed ahead of time order

2:39:44 from this and you can generalize this with the BSP trees.

2:39:48 And I got a little bit more information about that and it was kind of fun.

2:39:51 Later while I was working on Quake, I got to meet Bruce Naer,

2:39:54 who was one of the original researchers

2:39:56 that developed those technologies for academic literature.

2:40:00 And that was kind of fun.

2:40:01 But I was very much just finding a tool that can help me solve what I was doing.

2:40:05 And I was using it in this very crude way in a two dimensional fashion,

2:40:09 rather than the general 3D.

2:40:10 The Epsilon problems got much worse in Quake

2:40:12 and dimensional when things angle in every way.

2:40:15 But eventually I did sort out how to do it reliably on Doom.

2:40:20 There were still a few edge cases in Doom that were not absolutely perfect,

2:40:24 where they even got terminologies in the communities.

2:40:27 Like when you got to something where it was messed up,

2:40:29 it was a hall of mirrors effect because

2:40:31 you'd sweep by and it wouldn't draw something there

2:40:33 and you would just wind up with the leftover

2:40:35 remnants as you flipped between the two pages.

2:40:39 But BSP trees were important for it,

2:40:41 but it's again worth noting that after we did Doom,

2:40:45 our major competition came from Ken Silverman's build Engine,

2:40:49 which was used for Duke Newcomb 3D and some of the other games for 3D realms.

2:40:54 And he used a completely different technology, nothing to do with BSP trees.

2:40:59 So, there's not just a one true way of doing things.

2:41:03 There were critical things about to make any of those games fast,

2:41:07 you had to separate your drawing into, you

2:41:09 drew vertical lines and you drew horizontal lines,

2:41:12 just kind of changing exactly what you would draw with them.

2:41:15 That was critical for the technologies at that time.

2:41:19 And like all the games that were kind

2:41:21 of like that, wound up doing something similar,

2:41:23 but there were still a bunch of other decisions that could be made.

2:41:26 And we made good enough decisions on everything on Doom.

2:41:30 We brought in multiplayer significantly and it was our first game

2:41:35 that was designed to be modified by the user community where we

2:41:38 had this whole setup of our WAD files and PWADs and things

2:41:41 that people could build with tools that we released to them.

2:41:44 And they eventually rewrote to be better than what we released.

2:41:47 But they could build things and you could

2:41:49 add it to your game without destructively modifying it,

2:41:52 which is what you had to do in all the early games.

2:41:54 You literally hacked the data files or the executable before,

2:41:58 while Doom was set up in this flexible way so that you could just say,

2:42:02 run the normal game with this added on on top

2:42:04 and it would overlay just the things that you wanted to there.

2:42:08 Would you say that Doom was kind of the first true 3D game that you created?

2:42:14 So, no, it's still, Doom would usually be called a two

2:42:16 and a half D game where it had three dimensional points on it.

2:42:20 And this is another one of these kind

2:42:21 of pedantic things that people love to argue about,

2:42:23 about what was the first 3D game I still like

2:42:26 and like every month probably I hear from somebody about,

2:42:29 well, was Doom really a 3D game or something?

2:42:32 And I give the the point where characters had three coordinates.

2:42:38 So, you had like an X, Y, and Z,

2:42:40 the Kakademon could be coming in very high and come down towards you.

2:42:44 The walls had three coordinates on them.

2:42:47 So, on some sense it's a 3D game engine,

2:42:50 but it was not a fully general 3D game engine.

2:42:53 You could not build a pyramid in Doom because you couldn't make a sloped wall,

2:42:59 which was slightly different where in that previous shadow caster game,

2:43:02 I couldn't have Vertexes and have a sloped floor there.

2:43:05 But the changes that I made for Doom to get higher

2:43:08 speed and a different set of flexibility traded away that ability.

2:43:11 But you literally couldn't make that, you

2:43:14 could make different heights of passages,

2:43:17 but you could not make a bridge over another area.

2:43:20 You could not go over and above it.

2:43:21 So, that's more, it still had some 2D limitations to it.

2:43:25 That's more about the building,

2:43:26 versus the actual experience, 'cause the experience is.

2:43:28 It felt like things would come at you, but again, you couldn't look up either.

2:43:32 [Lex] Right.

2:43:33 You could only pitch, it was four degrees of freedom,

2:43:36 rather than six degrees of freedom.

2:43:38 You did not have the ability to tilt your head this way or pitch up and down.

2:43:42 So, that takes us to Quake.

2:43:44 What was the leap there?

2:43:47 What was some fascinating technical challenges

2:43:50 and there were a lot or not challenges,

2:43:52 but innovations that you've come up with.

2:43:54 So, Quake was kind of the first thing where I did

2:43:57 have to kind of come face to face with my limitations.

2:44:01 Where it was the first thing where I really did kind of give it my all and still

2:44:06 come up a little bit short in terms of what and when I wanted to get it done.

2:44:11 And the company ran had some serious stresses, through the whole project.

2:44:16 And we bid off a lot.

2:44:19 So, the things that we set out to do was, it was going to be really a truth 3D

2:44:24 engine where it could do six degree of freedom.

2:44:26 You could have all the viewpoints, you could model anything.

2:44:31 It had a really remarkable new lighting

2:44:34 model with the surface caching and things.

2:44:37 That was one of those where it was starting to do some

2:44:39 things that they weren't doing even on the very high end systems.

2:44:43 And it was going to be completely programmable in the modding standpoint,

2:44:48 where the thing that you couldn't do in Doom,

2:44:49 you could replace almost all of the media,

2:44:52 but you couldn't really change the game.

2:44:54 There were still some people that were doing the hack setting of the executable,

2:44:58 they hacked things where you could change a few things about rules

2:45:01 and people made some early capture

2:45:03 the flag type things by hacking the executable,

2:45:06 but it wasn't really set out to do that.

2:45:08 Quake was going to have its own programming language

2:45:11 that the game was gonna be implemented in it,

2:45:12 and that would be able to be overwritten, just like any of the media.

2:45:16 Code was going to be data for that.

2:45:18 And you would be able to have expansion pacs

2:45:21 that changed fundamental things and mods and so on.

2:45:24 And the multiplayer was gonna be playable over the internet.

2:45:28 It was going to support a client server, rather than peer to peer.

2:45:32 So, we had the possibility of supporting larger numbers

2:45:34 of players in disparate locations with this full flexibility

2:45:39 of the programming overrides with full six degree of freedom

2:45:43 modeling and viewing and with this fancy new light mapped,

2:45:47 kind of surface caching side.

2:45:49 It was a lot.

2:45:50 And this was one of those things that if I

2:45:53 could go back and tell younger me to do something differently,

2:45:56 it would've been to split those innovations

2:45:59 up into two phases in two separate games.

2:46:02 What would be phase one and phase two?

2:46:03 So, it probably would've been,

2:46:05 taking the Doom rendering engine and bringing in the TCP IP client server.

2:46:10 [Lex] Focusing on the multiplayer.

2:46:12 And the Quake C, or would've been Doom C programming language there.

2:46:16 So, I would've split that into programming

2:46:19 language and networking with the same Doom engine,

2:46:21 rather than forcing everybody to go towards the Quake Engine,

2:46:25 which really meant getting a pentium, while it ran on a 486.

2:46:29 It was not a great experience there.

2:46:30 We could have made more people happier

2:46:33 and gotten two games done in 50% more time.

2:46:37 So, speaking of people happier, our mutual friend Joe Rogan,

2:46:42 it seems like the most important moment of his life is centered around Quake.

2:46:49 So, it was a definitive part of his life.

2:46:53 So, would he agree with your thinking that they should split?

2:46:59 So, he as a person who loves Quake and played Quake a lot,

2:47:03 would he agree that you should have done the Doom

2:47:06 engine and focus on the multiplayer for phase one

2:47:09 or in your looking back is the 3D world

2:47:14 that Quake created was also fundamental to the enriching experience?

2:47:19 So, I would say that what would've happened is,

2:47:22 you would've had a Doom-looking but Quake feeling game,

2:47:28 eight months earlier and then maybe six months after Quake actually shipped,

2:47:33 then there would've been the full running on a Pentium,

2:47:35 six degree of freedom graphics engine type things there.

2:47:38 So, it wouldn't have been there,

2:47:42 it would've been something amazingly cool earlier

2:47:45 and then something even cooler somewhat later where I would much rather in have

2:47:49 gone and done two one year development efforts,

2:47:53 cycle them through, be a little more pragmatic about

2:47:57 that, rather than killing us ourselves on the whole quake development.

2:48:01 But I would say it's obviously things worked out well in the end,

2:48:04 but looking back and saying, how would I optimize and do things differently?

2:48:08 That did seem to be a clear case where

2:48:11 going ahead and we had enormous momentum on Doom,

2:48:15 we did Doom Two as the kind of commercial boxed version,

2:48:19 after our shareware success with the original,

2:48:22 but we could have just made another Doom game.

2:48:25 Adding those new features in it would've been huge.

2:48:28 We would've learned all the same lessons,

2:48:30 but faster and it would've given six degree of freedom

2:48:34 and Pentium class systems a little bit more time to get mainstream,

2:48:37 because we did cut out a lot of people with the hardware requirements for Quake.

2:48:43 Was there any dark moments for you personally,

2:48:44 psychologically in having such harsh deadlines

2:48:51 and having to also meet difficult technical challenges?

2:48:56 So, I've never really had really dark black places.

2:49:00 I mean, I can't necessarily put myself in anyone else's shoes,

2:49:03 but I understand a lot of people have significant

2:49:08 challenges with kind of their mental health and wellbeing.

2:49:12 And I've been super stressed.

2:49:15 I've been unhappy as a teenager in various ways,

2:49:18 but I've never really gone to a very dark place.

2:49:23 I just seem to be largely immune to what really wrecks people.

2:49:29 I mean, I've had plenty of time

2:49:31 when I'm very unhappy and miserable about something, but it's never hit me.

2:49:35 Like, I believe it winds up hitting some other people.

2:49:38 I've born up well under whatever stresses, have kind of fallen on me.

2:49:44 And I've always coped best on that when all I need

2:49:47 to do is usually just kind of bear down on my work.

2:49:51 I pull myself out of whatever hole I

2:49:53 might be slipping into by actually making progress.

2:49:57 I mean, maybe if I was in a position

2:49:59 where I was never able to make that progress, I could have slid down further.

2:50:03 But I've always been in a place where, okay, a little bit more work.

2:50:07 Maybe I'm in a tough spot here, but I always know if I just keep pushing,

2:50:12 eventually I break through and I make progress.

2:50:14 I feel good about what I'm doing.

2:50:16 I am and that's been enough for me so far in my life.

2:50:20 Have you seen it in the distance,

2:50:23 like ideas of depression or contemplating suicide?

2:50:28 Have you seen those things far?

2:50:30 So, what was interesting when I was a teenager,

2:50:33 I was probably on some level a troubled youth.

2:50:37 I was unhappy most of my teenage years.

2:50:40 I really, I wanted to be on my own, doing programming all the time.

2:50:44 As soon as I was 18, 19, even though I was poor,

2:50:47 I was doing exactly what I wanted and I was very happy.

2:50:50 But high school was not a great time for me.

2:50:53 And I had a conversation with like the school

2:50:56 counselor and they're kind of running their script.

2:50:58 It's like, okay, is kind of a weird kid here, let's carefully probe around.

2:51:02 It's like do you ever think about ending it all?

2:51:05 I'm like, no, of course not.

2:51:07 Never, not at all.

2:51:08 I this is temporary, things are going to be better.

2:51:11 [Lex] Wow.

2:51:13 And that's always been kind of the case for me.

2:51:15 And obviously that's not that way

2:51:17 for everyone and other people do react differently.

2:51:20 What was your escape from the troubled youth?

2:51:24 Like music, video games, books?

2:51:33 How did you escape from a world that's

2:51:35 full of cruelty and suffering and that's absurd.

2:51:38 Yeah, I mean, I was not a victim of cruelty and suffering.

2:51:41 It's like I was an unhappy, somewhat petulant youth in my point where I'm

2:51:46 not putting myself up with anybody else's suffering,

2:51:49 but I was unhappy objectively.

2:51:52 And I am, the things that I did that very much characterized my childhood were,

2:51:57 I had books, comic books, Dungeons and Dragons, arcade games, video games.

2:52:03 Like some of my fondest childhood memories are the convenience stores,

2:52:07 the 7-Elevens and QuikTrips,

2:52:08 because they had a spinner rack of comic books and they had

2:52:12 a little side room with two or three video games, arcade games in it.

2:52:15 And that was very much my happy place, if I could,

2:52:19 I get my comic books and if I could go to a library

2:52:22 and go through those, the little 000

2:52:25 section where computer books were supposed to be.

2:52:27 And there were a few sad little books there,

2:52:28 but still just being able to sit down and go through that.

2:52:31 And I read a ridiculous number of books,

2:52:35 both fiction and nonfiction as a teenager.

2:52:38 And my rebel my rebelling in high school was just

2:52:43 sitting there with my nose in a book, ignoring the class.

2:52:45 And through lots of it.

2:52:46 And teachers had a range of reactions to that.

2:52:49 Some more accepting of it than others.

2:52:53 I'm with you on that.

2:52:54 So, let us return to Quake for bit with the technical challenges.

2:52:58 What everything together from the networking to the graphics.

2:53:05 What are some things you remember that were innovations you had

2:53:09 to come up with in order to make it all happen?

2:53:12 Yeah, so there were a bunch of things on Quake where on the one hand,

2:53:16 the idea that I built my own programming language to implement

2:53:19 the game in, looking back and I try to tell people,

2:53:22 it's like every high level programmer sometime in their career

2:53:26 goes through and they invent their own language.

2:53:28 It just seems to be a thing that's pretty broadly done.

2:53:30 People will be like, I'm gonna go write a computer programming language.

2:53:33 And I don't regret having done it.

2:53:37 But after that, I switched from Quake C,

2:53:40 my quirky little, pseudo object entity-oriented language there.

2:53:45 Quake Two went back to using DLLs with C and then

2:53:48 Quake Three I implemented my own C interpreter or compiler,

2:53:51 which was a much smarter thing to do

2:53:53 that I should have done originally for Quake.

2:53:55 But building my own language was an experience, I learned a lot from that.

2:53:59 And then there was a generation of game

2:54:01 programmers that learned programming with Quake C,

2:54:04 which I feel kind of bad about, because I mean we give JavaScript a lot of crap,

2:54:08 but Quake C was nothing to write home about there,

2:54:13 but it allowed people to do magical things.

2:54:15 You get into programming, not because you love the the BNF syntax of a language,

2:54:21 it's because the language lets you do something that you cared about.

2:54:24 And here is very much you could

2:54:26 do something in a whole beautiful three-dimensional world.

2:54:29 Yeah and the idea and the fact that the code for the game was out there,

2:54:32 you could say, I like the shotgun, but I want it to be more badass.

2:54:36 You go in there and say, okay, now it does 200 points damage.

2:54:39 And if you go around with a big grin on your face,

2:54:41 blowing up monsters all over the game.

2:54:43 So yeah, it is not what I would do today going back with that language,

2:54:49 but that was a big part of it, learning about the networking stuff,

2:54:54 because it's interesting where I learn these things by reading books.

2:54:57 So, I would get a book on networking,

2:54:59 find something I read all about it and learn,

2:55:01 okay, packets they can be, out of order lost or duplicated.

2:55:06 These are all the things that can theoretically happen to packets.

2:55:09 So, I wind up spending all this time thinking

2:55:11 about how do we deal about all of that?

2:55:13 And it turns out, of course in the real world, those are things that yes,

2:55:16 theoretically can happen with multiple routes,

2:55:18 but they really aren't things that you're

2:55:20 99.999% of your packets have to deal with.

2:55:24 So, there was learning experiences about lots of that and like why when

2:55:30 TCP is appropriate versus UDP and how if you do things in UDP,

2:55:34 you wind up reinventing TCP badly in almost all cases.

2:55:37 So, there's good arguments for using both for different parts

2:55:42 of the game process transitioning from level to level and all.

2:55:46 But the graphics were the showcase of what Quake was all about.

2:55:51 It was this graphics technology that nobody had seen there.

2:55:55 And it was a while before, there were competitive things out there and it went

2:56:00 a long time internally really not working where we

2:56:04 were even building levels where the game just was

2:56:07 not at all shippable with large fractions of the world,

2:56:11 like disappearing, not being there or being really slow in various parts of it.

2:56:16 And it was this act of faith.

2:56:18 It's like, I think I'm gonna be able to fix this.

2:56:20 I think I'm gonna be able to make this work.

2:56:23 And lots of stuff changed where the level

2:56:26 designers would build something and then have

2:56:28 to throw it away as something fundamental

2:56:30 the kind of graphics or level technology change.

2:56:33 And so there were two big things

2:56:37 that contributed to making it possible at that timeframe.

2:56:41 Two new things.

2:56:42 There was certainly hardcore optimized, low level assembly language.

2:56:45 And this was where I had hired Michael Abrash, away from Microsoft,

2:56:50 and he had been one of my early

2:56:52 inspirations where that back in the soft softest days,

2:56:54 the library of magazines that they had,

2:56:57 some of my most treasured ones were Michael Abrash's articles in "Dr.

2:57:01 Dobbs journal." And it was amazing, after all of our success in Doom,

2:57:06 we were able to kind of hit him up and say, "Hey,

2:57:08 we'd like you to come work at id Software." And he was in the senior

2:57:12 technical role at Microsoft and he was on track for, and this was

2:57:16 right when Microsoft was starting to take off and I did eventually convince

2:57:20 him that what we were doing was gonna be really amazing with Quake.

2:57:24 It was going to, it was gonna be something nobody had seen before.

2:57:28 It had these aspects of what we were talking about.

2:57:31 And we had Metaverse talk back then.

2:57:33 We had read "Snow Crash" and we knew about this and Michael was big

2:57:38 into the science fiction and we would talk

2:57:41 about all that and kind of spin this tail.

2:57:42 And it was some of the same

2:57:44 conversations that we have today about the Metaverse,

2:57:46 about how you could have different areas linked together by portals and you

2:57:50 could have user generated content and changing out all of these things.

2:57:54 So, you really were created in the Metaverse with Quake?

2:57:57 And we talked about things like,

2:57:58 used to be advertised as a virtual reality experience.

2:58:02 That was the first wave of virtual reality was in the late '80s and early '90s.

2:58:07 You had like the "Lawnmower Man" movie and you had Time and Newsweek,

2:58:12 talking about the early VPL headsets.

2:58:14 And of course that cratered so hard that people didn't wanna

2:58:17 look at virtual reality for decades afterwards where it was just,

2:58:21 it was smoke and mirrors.

2:58:23 It was not real in the sense that you

2:58:25 could actually do something real and valuable with it.

2:58:28 But still we had that kind of common set of talking points and we

2:58:33 were talking about what these games could

2:58:35 become and how you'd like to see people, building all of these creative things,

2:58:39 because we were seeing an explosion of work with Doom

2:58:42 at that time where people were doing amazingly cool things.

2:58:45 Like we saw cooler levels than we had built coming out of the user community.

2:58:49 And then people finding ways to change the characters in different ways.

2:58:54 And it was great.

2:58:54 And we knew what we were doing in Quake was removing those last things.

2:58:58 There was some quirky things with a couple

2:59:00 of the data types that didn't work right for overriding.

2:59:03 And then the core thing about the programming model,

2:59:07 and I was definitely going to hit all of those in Quake,

2:59:09 but the graphics side of it was, it was still, I knew what I wanted to do and it

2:59:17 was one of these hubris things where it's like,

2:59:20 well, so far I've been able to kind of kick everything that I set out to go do.

2:59:26 But Quake was definitely a little bit more

2:59:29 than could be comfortably chewed at that point.

2:59:33 But Michael was one of the strongest

2:59:36 programmers and graphics programmers that I knew,

2:59:39 and he was one of the people that I

2:59:40 trusted to write assembly code better than I could.

2:59:44 And there's a few people that I can point

2:59:46 to, about things like this where I'm a world class optimizer.

2:59:49 I mean, I make things go fast,

2:59:51 but I recognize there's a number of people that can write tighter assembly code,

2:59:56 tighter SIMD code or tighter CUDA code than I can write.

3:00:01 My best strengths are a little bit more at the system level.

3:00:05 I mean, I'm good at all of that, but the most leverage comes from making

3:00:09 the decisions that are a little bit higher up where you figure out how

3:00:13 to change your large scale problems so

3:00:15 that these lower level problems are easier

3:00:17 to do or it makes it possible to do them in a uniquely fast way.

3:00:23 So, most of my big wins in a lot

3:00:26 of ways from, all the way from the early games through

3:00:30 VR and the aerospace work that I'm doing and or did

3:00:32 and hopefully the AI work that I'm working on now,

3:00:35 is finding an angle on something that means you

3:00:39 trade off something that you maybe think you need,

3:00:41 but it turns out you don't need.

3:00:43 And by making a sacrifice in one place,

3:00:45 you can get big advantages in another place.

3:00:49 Is it clear at which level of the system those big advantages can be gained?

3:00:54 It's not always clear.

3:00:55 And that's why the thing that, that I try to make one

3:00:59 of my core values and I proselytize to a lot of people is,

3:01:03 trying to know the entire stack, trying to see through everything that happens.

3:01:08 And it's almost impossible on, like the web browser

3:01:11 level of things where there's so many levels to it,

3:01:13 but you should at least understand what they all are,

3:01:15 even if you can't understand, all the performance characteristics at each level.

3:01:20 But it goes all the way down to literally the hardware.

3:01:23 So, what is this chip capable of and what

3:01:27 is this software that you're writing capable of?

3:01:29 And then when this architecture you put

3:01:30 on top of that, then the ecosystem around it,

3:01:33 all the people that are working on it.

3:01:35 So, there are all these decisions and they're

3:01:39 never made in a globally optimal way,

3:01:41 but sometimes you can drive a thread of global optimality through it.

3:01:45 You can't look at everything.

3:01:46 It's too complicated.

3:01:47 But sometimes you can step back up and make a different decision.

3:01:51 And we kind of went through this on the graphics side on Quake where

3:01:54 in some ways it was kind of bad where Michael would spend his time writing,

3:01:59 like I'd rough out the basic routines, like, okay,

3:02:02 here's our span rusterizer and he would spend a month writing this, beautiful

3:02:07 cycle optimized piece of assembly language that does what I asked it to do.

3:02:13 And he did it faster than like my original code would do or probably what

3:02:16 I would be able to do even if I had spent that month on it.

3:02:20 But then we'd have some cases when I'd be like, okay,

3:02:23 well I figured out at this higher level,

3:02:25 instead of drawing these in a painter's order here,

3:02:28 I do a span buffer and it cuts out 30% or 40% of all of these pixels,

3:02:34 but it means you need to rewrite, kind of this interface of all of that.

3:02:37 And I could tell that wore on him a little bit,

3:02:39 but in the end it was the right thing to do where we wound

3:02:43 up changing that rasterization approach and we

3:02:45 wound up with a super optimized assembly language,

3:02:48 core loop and then a good system around,

3:02:51 which minimized how much that had to be called.

3:02:54 And so in order to be able to do this, kind of system level thinking,

3:02:58 whether we're talking about game development, aerospace, nuclear energy, AI, VR,

3:03:08 you have to be able to understand the hardware, the low level software,

3:03:12 the high level software, the design decisions,

3:03:15 the whole thing, the full stack of it.

3:03:18 Yeah and that's where a lot of these things,

3:03:20 become possible when you're really, when you're bringing the future forward.

3:03:23 I mean there's a pace that everything,

3:03:25 just kind of glides towards where we have a lot

3:03:27 of progress that's happening at such a, so many different ways.

3:03:30 You kind of slide towards progress,

3:03:32 just left to your own programs just get faster

3:03:34 for a while it wasn't clear if they were gonna get fatter,

3:03:37 more than they get quicker than they get faster and it cancels out.

3:03:40 But it is clear now in retrospect now,

3:03:42 programs just get faster and have gotten faster for a long time.

3:03:46 But if you wanna do something,

3:03:48 like back at that original talking about scrolling games,

3:03:52 say what this needs to be five times faster,

3:03:54 well we can wait six years and just,

3:03:57 it'll naturally get that much faster at that time.

3:04:00 Or you come up with some really clever way of doing it.

3:04:03 So, there are those opportunities like that in a whole bunch of different areas.

3:04:08 Now, most programmers don't need to be thinking about that.

3:04:11 There's not that many, there's a lot of opportunities

3:04:14 for this, but it's not everyone's workaday type stuff.

3:04:17 So, everyone doesn't have to know how all these things work.

3:04:20 They don't have to know how their compiler works,

3:04:22 how the processor chip manages cash eviction and all these low level things.

3:04:28 But sometimes there are powerful opportunities that you can look at and say,

3:04:33 we can bring the future five years faster.

3:04:37 We can do something that, wouldn't it be great if we could do this?

3:04:40 Well, we can do it today if we make a certain set of decisions.

3:04:44 And it is in some ways smoke and mirrors where you say it's like,

3:04:48 Doom was a lot of smoke and mirrors where

3:04:50 people thought it was more capable than it actually was,

3:04:53 but we picked the right smoke and mirrors to deploy in the game

3:04:57 where by doing this, people will think that it's more general,

3:05:00 if we are gonna amaze them with what they've got here

3:05:03 and they won't notice that it doesn't do these other things.

3:05:07 So, smart decision making at that point,

3:05:09 that's where that kind of global holistic top-down view can work.

3:05:16 And I'm really a strong believer

3:05:20 that technology should be sitting at that table, having those discussions,

3:05:25 because you do have cases where you say,

3:05:26 well you wanna be the Jonathan Ivy or whatever,

3:05:28 where it's a pure design solution.

3:05:32 And in some cases now where you truly have almost infinite resources.

3:05:37 Like if you're trying to do a scrolling game on the PC now,

3:05:41 you don't even have to talk to a technology person.

3:05:43 You can just have, any intern can make that go run

3:05:46 as fast as it needs to there and it can be completely design-based.

3:05:50 But if you're trying to do something that's hard,

3:05:53 either that can't be done for resources like VR on a mobile

3:05:57 chip set or that we don't even know how to do yet,

3:05:59 like artificial general intelligence,

3:06:02 it's probably going to be a matter of coming at it from an angle.

3:06:05 Like, I mean for AGI we have some of like,

3:06:07 some of the harder principles about how you can SI or there are theoretical

3:06:12 ways that you can say this is

3:06:14 the optimal learning algorithm that can solve everything,

3:06:16 but it's completely impractical.

3:06:18 You just can't do that.

3:06:20 So, clearly you have to make some concessions for general

3:06:24 intelligence and nobody knows what the right ones are yet.

3:06:27 So, people are taking different angles of attack.

3:06:29 I hope I've got something clever to come up with in that space.

3:06:34 It's been surprising to me and I think it perhaps it is a principle

3:06:38 of progress that smoke and mirrors somehow is the way you build the future.

3:06:42 You kind of fake it till you make it and you almost always make it.

3:06:47 And I think that's going to be the way we achieve AGI,

3:06:49 that's going to be the way we build consciousness into our machines is there's

3:06:56 philosophers debate about the touring test is

3:06:59 essentially about faking it till you make it.

3:07:02 You start by faking it.

3:07:04 And I think that always leads to making it.

3:07:08 Because if we look at history-- Arguments when as soon

3:07:11 as people start talking about and consciousness and Chinese rooms and things,

3:07:15 it's like I just check out,

3:07:17 I just don't think there's any value in those conversations.

3:07:20 It's just like, go ahead, tell me it's not gonna work.

3:07:22 I'm gonna do my best to try to make it work anyways.

3:07:25 I don't know if you work with legged robots,

3:07:26 there's a bunch of these, they sure as heck make me

3:07:32 feel like they're cautious in a certain way that's not here today,

3:07:37 but is you could see the kernel.

3:07:41 It's like the flame, the beginnings of a flame.

3:07:46 We don't have line of sight,

3:07:47 but there's glimmerings of light in the distance for all of these things.

3:07:51 Yeah, I'm hearing murmuring in a distant room.

3:07:54 Well, let me ask you a human question here.

3:07:56 In the game design space, you've done a lot of incredible work throughout,

3:08:01 but in terms of game design, you have changed the world and there's

3:08:06 a few people around you that did the same.

3:08:08 So, famously there's some animosity, there's much love,

3:08:13 but there's some animosity between you and John Romero,

3:08:16 what is at the core of that animosity and human tension.

3:08:20 So there really hasn't been,

3:08:22 for a long time and even at the beginning it's like,

3:08:25 yes I did push Romero out of the company

3:08:29 and this is one of the things that I look back,

3:08:32 if I could go back telling my younger self, some advice about things,

3:08:37 the original founding kind of corporate structure of id

3:08:42 Software really led to a bunch of problems.

3:08:45 We started off with us as equal partners and we had a buy sell agreement,

3:08:50 because we didn't want outsiders to be telling us what to do inside the company.

3:08:54 And that did lead to a bunch of the problems where I was sitting here going,

3:08:59 it's like, alright, I'm working harder than anyone.

3:09:02 I'm doing these technologies, nobody's done before,

3:09:06 but we're all equal partners and then I see somebody that's not working as hard.

3:09:11 And I mean, I can't say I was the most mature about that.

3:09:16 I was 20 something years old and it did bother me when I'm like,

3:09:21 everybody, okay, we need all pull together and we've done it before.

3:09:25 Everybody we know we can do this if we get together and we grind it all out.

3:09:29 But not everybody wanted to do that for all time and I was the youngest,

3:09:34 one of the crowd there.

3:09:35 I had different sets of kind of backgrounds and motivations

3:09:40 and left at that point where it was all right,

3:09:44 either everybody has to be contributing,

3:09:47 like up to this level or they need to get pushed out, that was not a situation.

3:09:55 And I look back on it and now we pushed people outta the company that could

3:09:59 have contributed if there was a different framework

3:10:02 for them and the modern kind of Silicon Valley,

3:10:04 like let your stock vest over a time period

3:10:06 and maybe it's non-voting stock and all those different things.

3:10:09 We knew nothing about any of that.

3:10:11 I mean, we didn't know what we were

3:10:13 doing in terms of corporate structure or anything.

3:10:16 So, if you think the framework was different,

3:10:18 some of the human tension could have been

3:10:19 a little bit of-- It almost certainly would have.

3:10:21 I mean I look back at that and it's like

3:10:24 even trying to summon up in my mind it's like,

3:10:28 I know I was really, really angry about,

3:10:31 like Romero not working as hard as I wanted him to work or not

3:10:36 carrying his load on the design for Quake and coming up with things there.

3:10:40 But he was definitely doing things.

3:10:43 He made some of the best levels there.

3:10:44 He was working with some of our external teams,

3:10:47 like Raven on the licensing side of things.

3:10:50 But there were differences of opinion about it.

3:10:53 But he landed right on his feet.

3:10:57 He went and he got $20 million from IDOs to go do Ion Storm

3:11:00 and he got to do things his way and spun up three teams simultaneously,

3:11:05 because that was always one of the challenging things in at id,

3:11:08 where we were doing these single string, one project after another.

3:11:13 And I think some of them, wanted to grow the company more.

3:11:17 And I didn't because I knew people that were saying that, "Oh,

3:11:19 companies turned to shit when you got

3:11:21 50 employees." It's just a different world there.

3:11:24 And I loved our little dozen people working on the projects,

3:11:28 but you can look at it and say, "Well, business realities matter." It's like,

3:11:33 you're super successful here and we could take a swing and a miss on something,

3:11:36 but you do it a couple times and you're outta luck.

3:11:38 There's a reason companies try to have, multiple teams running at one time.

3:11:44 And so that was again, something I didn't really appreciate back then.

3:11:49 So, if you look past all that, you did create some amazing things together.

3:11:53 What did you love about John Romero?

3:11:55 What did you respect and appreciate about him?

3:11:57 What did you admire about him?

3:11:59 What did you learn from him?

3:12:01 When I met him, he was the coolest programmer I had ever met.

3:12:04 He had done all of this stuff.

3:12:05 He had made all of these games.

3:12:07 He had worked at, one of the companies that I thought

3:12:10 was the coolest at Origin Systems and he knew all this stuff.

3:12:14 He made things happen fast and he could,

3:12:17 he was also kind of a polymath about this where he could do, he made his own,

3:12:20 he drew his own art, he made his own levels as well as, he worked on sound

3:12:25 design systems on top of actually being a really good programmer.

3:12:29 And we had we went through a little,

3:12:32 it was kind of fun where one of the early things

3:12:34 that we did where there was kind of the young buck bit

3:12:36 going in where I was the new guy and he was

3:12:40 the, he was the top man programmer at the Soft Disc Area.

3:12:43 And eventually we had sort of a challenge

3:12:46 over the weekend that we were gonna like

3:12:48 race to implement this game to port one of our PC games down to the Apple II.

3:12:52 And that was where we finally kind of became clear, it's like, okay,

3:12:56 CarMax stands a little bit apart on the programming side of things,

3:12:59 but Romero then very gracefully moved into, well he'll work on the tools,

3:13:04 he'll work on the systems,

3:13:06 do some of the game design stuff as well as contributing

3:13:09 on starting to lead the design aspects of a lot of things.

3:13:12 So, he was enormously valuable in the early stuff and so much of Doom

3:13:18 and even Quake have his stamp on it in a lot of ways.

3:13:21 But he wasn't at the same level of focus

3:13:25 that I brought to the work that we were doing there.

3:13:29 And he really did, we hit such a degree of success

3:13:33 that it was all in the press about that the Rockstar game programmers.

3:13:38 I mean it's the Beatles problem.

3:13:40 Yeah, I mean, he ate it up and he did personify,

3:13:43 there was the whole game developers with Ferraris that we had there.

3:13:48 And I thought that led to some challenges there.

3:13:52 But so much of the stuff that was great in the games did come from him.

3:13:59 And I would certainly not take that away from him.

3:14:01 And even after we parted ways and he took

3:14:04 his swing with IDOs in some ways he was like,

3:14:08 he was ahead of the curve with mobile gaming as well,

3:14:10 where one of his companies after IDOs was working on feature

3:14:15 phone game development and I wound up doing some of that just,

3:14:19 before the iPhone crossing over into the iPhone phase there.

3:14:23 And that was something that clearly did turn out to be a huge thing,

3:14:26 although he was too early for what he was working on at that time.

3:14:30 We've had pretty cordial relationships where I was happy to talk

3:14:35 with him anytime I'd run into him at a conference.

3:14:38 I haven't actually had some other people just say it's like, oh,

3:14:41 you shouldn't go over there and give him the time

3:14:44 of day or felt that Masters of Doom was,

3:14:47 like portray played things up in a way that I shouldn't be too happy with.

3:14:52 But I'm okay with all of that and I know.

3:14:55 So you still got love in your heart?

3:14:57 Yeah, I mean, I just talked with him like last year,

3:15:00 I guess it was even this year about

3:15:01 mentioning that I'm going off doing this AI stuff.

3:15:03 I'm going big into artificial intelligence and he had

3:15:07 bunch of ideas for how AI is gonna play

3:15:09 into gaming and asked if I was interested in collaborating

3:15:12 and it's not in line with what I'm doing, but I wish almost everyone the best.

3:15:19 I mean, I know I may not have parted on the best of terms with some people,

3:15:24 but I was thrilled to see Tom Hall writing VR games now.

3:15:29 He wrote working on a game called "Demio," which is really an awesome VR game.

3:15:33 It's like "Dungeons and Dragons" we all

3:15:35 used to play "Dungeons and Dragons" together.

3:15:36 That was one of the things that was what we did on Sundays in the early days,

3:15:40 I would Dungeon Master and they'd all play and so it really

3:15:43 made me smile seeing Tom involved with an RPG game in virtual reality.

3:15:50 You were the CTO of Oculus VR since 2013

3:15:54 and maybe lessen your involvement a bit in 2019.

3:16:00 Oculus was acquired by Facebook now Meta in 2014.

3:16:04 You've spoken brilliantly about both the low level details,

3:16:07 the experimental design and the big picture vision of virtual reality.

3:16:12 Let me ask you about the Metaverse, the big question here,

3:16:15 both philosophically and technically, how hard is it to build the Metaverse?

3:16:20 What is the metaverse in your view,

3:16:22 you started with discussing and thinking about quake as a kind

3:16:25 of a metaverse as you think about it today.

3:16:28 What is the metaverse the thing that could create this compelling user value,

3:16:34 this experience that will change the world and how hard is it to build it?

3:16:39 So, the term comes from Neil Stevenson's book,

3:16:41 "Snow Crash," which many of us had read, back in the '90s.

3:16:44 It was one of those kind of formative books.

3:16:46 And there was this sense that the possibilities and kind

3:16:53 of the freedom and unlimited capabilities to build a virtual world,

3:16:57 that does whatever you want,

3:16:59 whatever you ask of it has been a powerful draw for generations of developers,

3:17:04 game developers specifically and people that are thinking,

3:17:06 about more general purpose applications.

3:17:09 So, we were talking about that back in the Doom

3:17:12 and Quake days about how do you wind up

3:17:15 with an interconnected set of worlds that you kind of visit

3:17:18 from one to another and as webpage were becoming a thing,

3:17:21 you start thinking about what is

3:17:24 the interactive kind of 3D-based equivalent of this?

3:17:27 And there were a lot of really bad takes.

3:17:29 You had like VRML then, virtual reality markup languages.

3:17:34 And there's aspects like that came from people saying,

3:17:38 well what kind of capabilities should we develop to enable this?

3:17:43 And that kind of capability-first work has usually not panned out very well.

3:17:48 On the other hand, we have successful games

3:17:51 that started with things like Doom and Quake

3:17:53 and communities that formed around those and whether

3:17:56 it was server lists in the early

3:17:58 days or literal portal link between different games

3:18:01 and then modern things that are on completely

3:18:04 different order of magnitude like Minecraft and Fortnite

3:18:07 that have a hundred million plus users.

3:18:11 I still think that that's the right way to go

3:18:14 to build the Metaverse is you build something that's amazing

3:18:17 that people love and people wind up spending all their time

3:18:20 in, because it's awesome and you expand the capabilities of that.

3:18:24 So, even if it's a very basic experience?

3:18:26 As long as it's, Minecraft is an amazing case study in so many things.

3:18:30 What's been able to be done with that is really enlightening.

3:18:36 And there are other cases where, like right now Roblox is basically a game

3:18:41 construction kit aimed at kids and that was

3:18:44 a capability first play and it's achieving scale

3:18:46 that's on the same order of those things.

3:18:48 So, it's not impossible, but my preferred bet would be,

3:18:53 you make something amazing that people love and you make it better and better.

3:18:56 And that's where I could say we could have gone back and followed a path kind

3:19:00 of like that in the early days if you just kind of take the same game.

3:19:04 Whether it's when Activision demonstrated that you could make Call

3:19:08 of Duty every year and not only is it not bad,

3:19:10 people kind of love it and it's very profitable.

3:19:13 The idea that you could have taken something like that, take a great game,

3:19:18 release a new version every year that lets

3:19:20 the capabilities grow and expand to start saying it's like,

3:19:24 okay, it's a game about running around and shooting things,

3:19:26 but now you can have, bring your media into it.

3:19:30 You can add persistence of social sense,

3:19:33 signs of life or whatever you want to add to it.

3:19:37 I still think that's quite a good position to take.

3:19:41 And I think that while Meta is doing

3:19:44 a bottoms up capability approach with Horizon Worlds,

3:19:47 where it's a fairly general purpose,

3:19:50 creators can build whatever they want in their sort of thing,

3:19:55 it's hard to compare and compete with something like Fortnite,

3:19:58 which also has enormous amounts of creativity,

3:20:01 even though it was not designed originally as a general purpose sort of thing.

3:20:05 So, we have examples on both sides.

3:20:08 Me personally, I would've bet on trying to do entertainment,

3:20:13 valuable destination first and expanding from there.

3:20:17 So, can you imagine the thing that will be kind of, if we look back

3:20:23 a couple of centuries from now and you

3:20:26 think about the experiences that marked the singularity,

3:20:30 the transition in where most of our world moved into virtual reality.

3:20:37 What do you think those experiences will look like?

3:20:40 So, I do think it's gonna be kind of like the way the web

3:20:43 slowly took over where you're the frog in the pot of water that's slowly

3:20:48 heating up where having lived through all of that, I remember when it was

3:20:52 shocking to start seeing the first website

3:20:54 address on a billboard when you're like,

3:20:57 "Hey, my computer world is infecting the real

3:21:00 world." This is spreading out in some way.

3:21:03 But there's still when you look back and say, "Well,

3:21:05 what made the web take off?" And it wasn't a big bang sort of moment there,

3:21:12 it was a bunch of little things that turned out not to even

3:21:15 be the things that are relevant now that brought them into it.

3:21:18 Well I wonder if from, I mean like you said, you're not a historian,

3:21:23 so maybe there's a historian out there

3:21:26 that could really identify that moment data-driven way.

3:21:30 It could be like MySpace or something like that.

3:21:33 Maybe the first major social network that really

3:21:37 reached into non-Geek World or something like that.

3:21:42 I think that's kind of the fallacy of historians though,

3:21:45 looking for some of those kind of primary dominant,

3:21:48 causes where so many of these things are like, we see an exponential curve,

3:21:52 but it's not because like one thing is going exponential,

3:21:55 it's because we have hundreds of little sigmoid curves,

3:21:58 overlapped on top of each other and they just happen to keep adding

3:22:02 up so that you've got something kind of going exponential at any given point.

3:22:06 But no single one of them was the critical thing.

3:22:09 There were dozens and dozens of things.

3:22:11 I mean, seeing the transitions of stuff like

3:22:13 as obviously MySpace giving way to other things, but even like blogging,

3:22:17 giving way to social media and getting resurrected

3:22:20 in other guises and things that happened there.

3:22:24 And the memes with dancing baby GIF

3:22:26 or whatever all your base not belonged to us.

3:22:29 Whatever those early memes that led to the modern

3:22:31 memes and the humor on the different evolution of humor

3:22:36 on the internet that I'm sure the historians will

3:22:38 also write books about from the different website that support,

3:22:42 that create the infrastructure for that humor,

3:22:44 like Reddit and all that kind of stuff.

3:22:46 So, people will go back and they will name firsts in critical moments.

3:22:50 But it's probably going to be a poor approximation of what actually happens.

3:22:54 And we've already seen, like in the VR space where it didn't play out

3:22:59 the way we thought it would in terms of what was

3:23:02 gonna be like when the modern era of VR basically started

3:23:05 with my E3 demo of Doom Three on the Rift prototype.

3:23:08 So, we're like first person shooters in VR, match made in heaven, right?

3:23:12 And that didn't work out that way at all.

3:23:14 They have the most comfort problems with it.

3:23:18 And then the most popular virtual reality app is Beat Saber,

3:23:22 which nobody predicted back then.

3:23:24 What's that make you like from First Principles?

3:23:28 If you were to like reverse engineer that, why

3:23:31 are these like silly fun games the most?

3:23:34 It actually makes very clear sense when you analyze it from hindsight and look

3:23:40 at the engineering reasons where it's not

3:23:42 just that it was a magical, quirky idea.

3:23:44 It was something that played almost perfectly to what

3:23:48 turned out to be the real strengths of VR.

3:23:50 Where the one thing that I really underestimated

3:23:53 importance in VR was the importance of the controllers.

3:23:55 I was still thinking we could do a lot more

3:23:57 with the Game Pad and just the amazingness of taking any existing game.

3:24:01 Being able to move your head around

3:24:03 and look around that, that was really amazing.

3:24:06 But the controllers were super important.

3:24:09 But the problem is, so many things that you do with the controllers just suck.

3:24:13 It feels like it breaks the illusion,

3:24:14 like trying to pick up glasses with the controllers where you're like, "Oh,

3:24:17 use the grip button when you're kind of close "and it'll snap

3:24:20 into your hand." All of those things are unnatural actions that you do them,

3:24:25 and it's still part of the VR experience.

3:24:27 But Beat Saber winds up playing only to the strengths.

3:24:32 It completely hides all the weaknesses of it,

3:24:34 because you are holding something in your hand,

3:24:37 you keep a solid grip on it the whole time.

3:24:38 It slices through things without ever bumping into things.

3:24:41 You never get into the point where I'm knocking on this table,

3:24:45 but in VR, my hand just goes right through it.

3:24:48 So, you've got something that slices through.

3:24:51 So, it's never your brain telling you, "Oh,

3:24:53 I should have hit something." You've got a lightsaber here.

3:24:55 It's just, you expect it to slice through everything.

3:24:58 Audio and music turned out to be a really powerful aspect of virtual

3:25:03 reality where you're blocking the world

3:25:04 off and constructing the world around you and being something that can run

3:25:09 efficiently on, even this relatively low powered

3:25:12 hardware and can have a valuable loop in a small amount of time.

3:25:17 Where a lot of modern games,

3:25:18 you're supposed to sit down and play it for an hour, just to get anywhere.

3:25:22 Sometimes a new game takes an hour to get through the tutorial

3:25:25 level and that's not good for VR for a couple reasons.

3:25:27 You do still have the comfort issues if you're moving around at all,

3:25:30 but you've also got just discomfort from the headset,

3:25:34 battery lifespan on the mobile versions.

3:25:37 So, having things that do break down into three and four minute windows of play,

3:25:41 that turns out to be very valuable from a gameplay standpoint.

3:25:45 So, it winds up being kind of a perfect

3:25:47 storm of all of these things that are really good.

3:25:49 It doesn't have any of the comfort problems.

3:25:52 You're not navigating around, you're standing still.

3:25:54 All the stuff flies at you.

3:25:56 It has placed audio strengths.

3:25:58 It adds the whole, the whole fitness in VR.

3:26:01 Nobody was thinking about that back at the beginning.

3:26:04 And it turns out that that is an excellent daily fitness thing to be doing.

3:26:09 If you go play an hour of "Beat Saber" or "Supernatural" or something

3:26:13 that is legit solid exercise and it's more fun than doing it,

3:26:18 just about any other way there.

3:26:20 So, that's kind of the arcade stage of things.

3:26:22 If I were to say with my experience with VR,

3:26:26 the thing that I think is powerful is the, maybe it's not here yet,

3:26:32 but the degree to which it is immersive in the way that Quake is immersive,

3:26:39 it takes you to another world for me, because I'm a fan of role playing games,

3:26:43 the elder scroll series like Sky Room or even Daggerfall,

3:26:50 it just takes you to another world.

3:26:52 And when you're not in that world, you miss not being there.

3:26:56 And then you just, you kind of wanna stay there forever.

3:26:58 'Cause life is shitty and you just wanna go to this place.

3:27:04 Is that there was a time when we were kind of asked to come up with like,

3:27:10 what's your view about VR?

3:27:11 And my pitch was that it should be better inside the headset than outside.

3:27:17 It's the world as you want it.

3:27:19 Yeah.

3:27:20 And everybody thought that was dystopian and like that's like, "Oh,

3:27:23 you're just gonna forget about the world

3:27:25 outside." And I don't get that mindset where

3:27:28 the idea that if you can make the world better inside the headset than outside,

3:27:33 you've just improved the person's life that's has a headset that can wear it.

3:27:38 And there are plenty of things that we

3:27:40 just can't do for everyone in the real world.

3:27:42 Everybody can't have Richard Branson's private island,

3:27:44 but everyone can have a private VR island and it

3:27:47 can have the things that they want on it.

3:27:49 And there's a lot of these kind of rivalry goods

3:27:51 in the real world that VR can just be better at.

3:27:54 We can do a lot of things like that that can be very, very rich.

3:27:59 So yeah, I want the, I think it's gonna be a positive thing,

3:28:02 this world where people want to go back

3:28:04 into their headset where it can be better

3:28:06 than somebody that's living in a tiny apartment

3:28:08 can have a palatial estate in virtual reality.

3:28:12 They can have all their friends from all

3:28:13 over the world come over and visit them without

3:28:15 everybody getting on a plane and meeting in someplace

3:28:18 and dealing with all the other logistics hassles.

3:28:21 There is real value in the presence that you can get for remote meetings.

3:28:26 It's all the little things that we need to sort out,

3:28:29 but those are things that we have line of sight on.

3:28:32 People that have been in like a good VR meeting,

3:28:36 using workrooms where you can say, "Oh,

3:28:38 that was better than a Zoom meeting." But of course

3:28:41 it's more of a hassle to get into it.

3:28:42 Not everyone has the headset.

3:28:44 Interoperability is worse.

3:28:46 You can't have you cap out at a certain number.

3:28:48 There's all these things that need to be fixed,

3:28:50 but that's one of those things you can

3:28:51 look at and say we know there's value there.

3:28:54 We just need to really grind hard,

3:28:56 file off all the rough edges and make that possible.

3:28:59 So, you do think we have line of sight,

3:29:01 because there's a reason like, I do this podcast in person for example.

3:29:10 It's doing it remotely, it it's not the same.

3:29:14 And if somebody were to ask me why it's not the same,

3:29:16 I wouldn't be able to write down exactly why.

3:29:19 But you're saying that it's possible,

3:29:23 whatever the magic is for in-person interaction,

3:29:27 that immersiveness of the experience, we are almost there.

3:29:32 Yes, so the idea like, I am doing a VR interview with someone,

3:29:37 I'm not saying it's here right now,

3:29:39 but you can see glimmers of what it should be.

3:29:42 And we largely know what would need to be fixed and improved to like you say,

3:29:48 there's a difference between at remote interview,

3:29:50 doing a podcast over Zoom or something and face-to-face.

3:29:53 There's that sense of presence,

3:29:55 that immediacy, the super low latency, responsiveness,

3:29:59 being able to see all the subtle things there,

3:30:01 just occupying the same field of view.

3:30:03 And all of those are things that we absolutely can do in VR.

3:30:07 And that simple case of a small meeting with a couple people,

3:30:11 that's the much easier case than everybody thinks.

3:30:13 The ready player one multiverse with a thousand

3:30:16 people going across a huge bridge to amazing places.

3:30:20 That's harder in a lot of other technical ways.

3:30:22 Not to say we can't also do

3:30:23 that, but that's further away and has more challenges.

3:30:26 But this small thing about being able to have a meeting

3:30:29 with one or a few people and have it feel real, feel like you're there,

3:30:35 like you have the same interactions and talking with them,

3:30:37 you get subtle cues as we start getting eye and face

3:30:41 tracking and some of the other things on high-end headsets,

3:30:43 a lot of that is going to come over and it doesn't have to be as good.

3:30:49 This is an important thing that people miss,

3:30:51 where there was a lot of people that, especially rich

3:30:54 people that would look at VR and say it's like, oh, this just isn't that good.

3:30:59 And I'd say it's like, well you've already been courtside backstage and on pit

3:31:04 row and you've done all of these experiences,

3:31:07 because you get to do them in real life.

3:31:08 But most people don't get to and even if the experience is only half as good,

3:31:13 if it's something that they never would've gotten to do before,

3:31:15 it's still a very good thing.

3:31:17 And as we can push that number up over time.

3:31:20 It has a minimum viable value level when

3:31:24 it does something that is valuable enough to people,

3:31:27 as long as it's better inside the headset on any

3:31:29 metric than it is outside and people choose to go there,

3:31:32 we're on the right path and we have

3:31:34 a value gradient that I'm just always hammering on.

3:31:37 We can just follow this value gradient.

3:31:39 Just keep making things better, rather than going for that one.

3:31:43 Close your eyes swing for the fences, kind of silver bullet approach.

3:31:48 Well, I wonder if there's a value gradient for in-person meetings.

3:31:51 Because if you get that right, I mean that would change the world.

3:31:55 [John] Yeah.

3:31:55 That it doesn't need to, I mean you don't need ready player one.

3:31:59 but I wonder if there's that value gradient you can follow along

3:32:04 because if there is and you follow it then there'll be a certain,

3:32:10 like phase shift at a certain point where people will shift from Zoom to this.

3:32:18 I wonder what are the bottlenecks?

3:32:23 Is it software?

3:32:24 Is it hardware?

3:32:25 Is it all about latency?

3:32:27 So, I have big arguments internally,

3:32:30 about strategic things like that where like the next headset that's coming out

3:32:36 that we've made various announcements about is gonna be a higher end headset,

3:32:40 more expensive, more features.

3:32:42 Lots of people wanna make those trade-offs.

3:32:45 We'll see what the market has to say about the exact trade-offs we've made here.

3:32:49 But if you wanna replace Zoom, you need to have something that everybody has.

3:32:53 [Lex] So, you want something you like cheaper.

3:32:56 I like cheaper because also lighter and cheaper,

3:33:00 wind up being a virtuous cycle there where expensive

3:33:04 and more features tends to also lead towards heavier.

3:33:07 And it just kind of goes, it's like, let's add more features.

3:33:09 The features are not, they have physical presence and weight and draw

3:33:14 from batteries and all of those things.

3:33:16 So, I've always favored a lower end, cheaper, faster approach.

3:33:21 That's why I was always behind the mobile side of VR,

3:33:24 rather than the higher end PC headsets.

3:33:26 And I think that's proven out well.

3:33:29 But there's, you always, ideally we have a whole range of things,

3:33:32 but if you've only got one or two things,

3:33:35 it's important that those two things cover

3:33:37 the scope that you think is most important.

3:33:40 When we're in a world when it's like cell

3:33:42 phones and there's 50 of 'em on the market,

3:33:44 covering every conceivable ecological niche you want, that's gonna be great,

3:33:47 but we're not gonna be there for a while.

3:33:50 Where are the bottlenecks?

3:33:51 Is it the hardware or the software?

3:33:53 Yeah, so right now you can play, you can get workrooms on Quest and you can

3:33:59 set up these things and it's a pretty good experience.

3:34:01 It's surprisingly good.

3:34:02 I haven't tried it.

3:34:03 Is it surprisingly good.

3:34:05 Yeah, the voice latency is better on that than a lot better than a Zoom meeting.

3:34:10 So, you've got a better sense of immediacy there.

3:34:13 The expressions that you get from the current hardware

3:34:16 with just kind of your controllers and your head

3:34:20 is pretty realistic feeling and you've got a pretty

3:34:22 good sense of being there with someone with that.

3:34:24 Are these like avatars of people?

3:34:27 Like do you get to see their body and they're sitting around a table?

3:34:32 [John] Yeah.

3:34:33 And it feels is better than Zoom?

3:34:35 Better than, yeah, better than you'd expect for that.

3:34:37 It is definitely, yeah,

3:34:40 I'd say it's quite a bit better than Zoom when everything's working right.

3:34:43 But there's still all the rough edges of, the reason Zoom

3:34:47 became so successful is because they just nailed the usability of everything.

3:34:51 It's high quality with a absolutely first rate experience and we

3:34:55 are not there yet with any of the VR stuff.

3:34:58 I'm trying to push hard to get, I keep talking about,

3:35:02 it's like it needs to just be one click to make everything happen.

3:35:05 And we're getting there in our home environment,

3:35:07 not the whole work room's application,

3:35:09 but the main home where you can now kind of go over and click

3:35:12 an invite and it still winds up taking five times longer than it should.

3:35:16 But we're getting close to that where you click there,

3:35:19 they click on their button and then they're

3:35:21 sitting there in this good presence with you.

3:35:23 But latencies need to get a lot better.

3:35:25 User interface needs to get a lot better.

3:35:28 Ubiquity of the headsets needs to get better.

3:35:30 We need to have a hundred million of 'em out there,

3:35:33 just so that everybody knows somebody that uses this all the time.

3:35:37 Well I think it's a virtuous cycle,

3:35:38 because I do think the interface is the thing

3:35:42 that makes or breaks this kind of revolution.

3:35:48 It's so interesting how, like you said, one click,

3:35:50 but it's also like how you achieve that one click.

3:35:54 I don't know what is, can I ask a dark question?

3:35:58 Maybe let's keep it outside of Meta,

3:36:00 but this is about Meta but also Google and big companies.

3:36:05 Are they able to do this kind of thing?

3:36:07 It seems like, let me put on my cranky old man hat,

3:36:12 they seem to not do a good job of creating

3:36:17 these user-friendly interfaces as they get bigger and bigger as a company.

3:36:22 Like Google has created,

3:36:24 some of the greatest interfaces ever early on and it's, I mean,

3:36:29 creating Gmail, just so many brilliant interfaces and she

3:36:34 seems to getting crappier and crappier at that.

3:36:37 Same with Meta, same with Microsoft.

3:36:42 It's just, it seems to get worse and worse at that.

3:36:44 I don't know what is it,

3:36:46 because you've become more conservative, careful, risk averse.

3:36:49 Is that why?

3:36:51 Can you speak to that?

3:36:52 So, it's been really eye-opening to me, working inside a tech titan where I am.

3:36:57 I had my small companies and then we are acquired

3:37:01 by a mid-size game publisher and then Oculus getting acquired by Meta.

3:37:06 And Meta has grown by a factor of many,

3:37:08 just in the eight years since the acquisition.

3:37:13 So, I did not have experience with this.

3:37:16 And it was interesting because I remember

3:37:19 like previously my benchmark for kind of use

3:37:22 of resources was some of the government

3:37:24 programs I interacted with on the aerospace side.

3:37:26 And I remember thinking there was, okay, there's an Air Force program and they

3:37:30 spent $50 million and they didn't launch anything.

3:37:34 They didn't even build anything.

3:37:35 It was just kind of like they made a bunch of papers

3:37:39 and had some parts in a warehouse and nothing came of it.

3:37:42 It's like $50 million and I've had to radically recalibrate my sense of like

3:37:49 how much money can be spent with-- [Lex] Without a product at the end.

3:37:53 Resources on the plus side VR has turned out,

3:37:58 we've built pretty much exactly what,

3:38:02 we just passed the 10-year mark then from my, I like my first demo

3:38:06 of the Rift and if I could have said what I wanted to have,

3:38:09 it would've been a standalone,

3:38:11 inside out tracked 4K resolution headset that could

3:38:15 still plug into a PC for High-end rendering.

3:38:18 And that's exactly what we've got on Quest Two right now.

3:38:21 Yes, first of all, let's pause on that with me being cranky and everything.

3:38:24 What Meta achieved with Oculus and so on is incredible.

3:38:30 I mean this is this when I thought about the future of VR,

3:38:34 this is what I imagined in terms of hardware I would say.

3:38:36 And maybe in terms of the experience as well,

3:38:39 but it's still not there somehow- On the one hand

3:38:43 we did kind of achieve it and win and we've sold, we're a success right now.

3:38:48 But the amount of resources that have gone into it,

3:38:51 it winds up getting floated up in accounting where

3:38:53 Mark did announce that they spent $10 billion a year, like on Reality Labs.

3:38:59 Now Reality Labs covers a lot.

3:39:01 It was, VR was not the large part of it, also had portal and Spark and the big

3:39:07 AR research efforts and it's been expanding

3:39:09 out to include AI and other things there where there's a lot going on there.

3:39:15 But $10 billion was just a number that I had trouble processing.

3:39:20 I feel sick to my stomach, thinking about that much money being spent.

3:39:24 But that's how they demonstrate commitment to this where

3:39:28 it's not more so than like yeah, Google goes and cancels all of these projects,

3:39:34 different things like that while Meta is really sticking with the funding

3:39:38 of VR and AR is still further out with it.

3:39:41 So, there's something to be said for that.

3:39:43 It's not just gonna vanish the work's going in.

3:39:46 I just wish it could be all those resources, could be applied more effectively.

3:39:51 Yeah, because I see all these cases, I point out these examples of how a third

3:39:56 party that we're kind of competing with in various ways,

3:39:58 there's a number of these examples and they do work

3:40:01 with a 10th of the people that we do internally.

3:40:05 And a lot of it comes from, yes,

3:40:07 there's the small company can just go do it while

3:40:10 in a big company you do have to worry about,

3:40:12 is there some SDK internally that you should be using,

3:40:16 'cause another team's making it.

3:40:18 You have to have your cross-functional group meetups for different things.

3:40:22 You do have more concerns about privacy

3:40:25 or diversity and equity and safety of different things,

3:40:28 parental issues and things that a small startup company

3:40:31 can just kind of cowboy off and do something interesting.

3:40:36 And there's a lot more that is a problem

3:40:39 that you have to pay attention to in the big companies.

3:40:41 But I'm not willing to believe that we are within even

3:40:44 a factor of two or four of what the efficiency could be.

3:40:48 I am constantly kind of crying out for it's like, we can do better than this.

3:40:53 Yeah and you wonder what the mechanisms to unlock that efficiency are.

3:40:57 There is some sense in a large company that, like

3:41:03 an individual engineer might not believe that they can change the world.

3:41:07 Maybe you delegate a little bit of the responsibility to be

3:41:11 the one who changes the world in a big company, I think.

3:41:15 But the reality is like the world will get changed by a single engineer anyway.

3:41:21 So, whether inside Google or inside a startup, it doesn't matter.

3:41:25 It's just like Google and Meta needs to help those engineers believe.

3:41:29 They're the ones that are gonna decrease that latency,

3:41:32 it'll take one John Carmack like the 20-year-old

3:41:36 Carmack that's inside Meta right now to change everything.

3:41:40 And I try to point that out and push people.

3:41:43 It's like, try to go ahead and when you see some,

3:41:46 because you get the silo mentality where you're like,

3:41:48 "Okay, I know something's not right over there,

3:41:50 "but I'm staying in my lane here." And there's a couple people that I can think

3:41:56 about that are willing to just like hop

3:41:58 all over the place and man, I treasure them.

3:42:00 The people that are just willing to, they're fearless,

3:42:03 they will go over and they will

3:42:05 go rebuild the kernel and change this distribution

3:42:07 and go in and hack the firmware over here to get something done right.

3:42:11 And that is relatively rare,

3:42:14 there's thousands of developers and you've got a small handful that are

3:42:17 willing to operate at that level and it's potentially risky for them.

3:42:22 The the politics are real in a lot of that.

3:42:24 And I'm in the very much the privileged position of I am,

3:42:29 I'm more or less untouchable where I've been dinged like

3:42:32 twice for, it's like you said something insensitive in that post.

3:42:35 And you should probably not say that, but for the most part, yes,

3:42:40 I get away with I every week I'm posting something,

3:42:43 pretty loud and opinionated internally.

3:42:47 And I think that's useful for the company.

3:42:50 But yeah, it's rare to have a position like that and I

3:42:55 can't necessarily offer advice for how someone can do that.

3:42:58 Well, you could offer advice to a company in general

3:43:01 to give a little bit of freedom for the young,

3:43:05 wild, like the wildest ideas come from the young minds.

3:43:10 And so you need to give the young minds freedom to think big and wild and crazy.

3:43:16 And for that they have to be opinionated.

3:43:18 They have to think crazy ideas and thoughts and pursue them with a full passion,

3:43:26 without being slowed down by bureaucracy or managers and all that kind of stuff.

3:43:31 Obviously startups really empower that.

3:43:33 But big companies could too.

3:43:34 And that's a design challenge for company,

3:43:37 for big companies to see how can you enable that?

3:43:40 How can you empower that?

3:43:41 'Cause the big company, there are so many resources there.

3:43:43 And they do amazing things do get accomplished,

3:43:46 but there's so much more that could come out of that.

3:43:49 And I'm hope, I'm always hopeful.

3:43:51 I'm an optimist in almost everything.

3:43:53 I think things can get better.

3:43:55 I think that they can improve things that you go through

3:43:57 a path and you're learning kind of what does and doesn't work.

3:44:01 And I'm not ready to be fatalistic about the kind of the outcome of any of that.

3:44:07 Me neither.

3:44:07 I know too many good people inside of those large companies that are incredible.

3:44:12 You have a friendship with Elon Musk, often when I talk to him,

3:44:17 he'll bring up how incredible of an engineer

3:44:19 and just a big picture thinker you are, he has a huge amount of respect for you.

3:44:26 I have never been a fly on the wall,

3:44:28 between the discussion between the two of you.

3:44:30 I just wonder, is there something you guys debate, argue about, discuss?

3:44:36 Is there some interesting problems that the two of you think about?

3:44:41 You come from different worlds.

3:44:42 Maybe there's some intersection in aerospace,

3:44:45 maybe there's some intersection in your new

3:44:49 efforts in artificial intelligence in terms of thinking.

3:44:53 Is there something interesting you could say about

3:44:55 sort of the debates that two of you have?

3:44:57 So, I think in some ways we do have a kind of similar background

3:45:01 where we're almost exactly the same age

3:45:03 and we had kind of similar programming backgrounds

3:45:06 on the personal computers and even some of the books that we would read

3:45:10 and things that would kind of turn us into the people that we are today.

3:45:14 And I think there is a degree of sensibility similarities where we kind of call

3:45:21 bullshit on the same things and kind

3:45:23 of see the same opportunities in different technology.

3:45:27 And there's that sense of, I always talk

3:45:29 about the speed of light solutions for things.

3:45:31 And he's thinking about kind of minimum

3:45:34 manufacturing and engineering and operational standpoints for things.

3:45:38 And so, I mean, I first met Elon right at the start of the aerospace

3:45:43 era where I wasn't familiar with, I was still in my game dev bubble.

3:45:47 I really wasn't familiar with all the startups that were going and being

3:45:51 successful and what went on with PayPal and all of his different companies.

3:45:54 But I met him as I was starting to do Armadillo Aerospace

3:45:58 and he came down with kind of his right hand propulsion guy.

3:46:03 And we talked about rockets what can we do with this?

3:46:07 And it was kind of specific things about

3:46:09 like how are our flight computers set up?

3:46:12 What are different propellant options?

3:46:14 What can happen with different ways of putting things together?

3:46:19 And then in some ways, he was certainly the biggest player in the sort of alt

3:46:24 space community that was going on in the early 2000s.

3:46:27 He was the most well-funded, although,

3:46:31 his funding in the larger scheme of things compared

3:46:33 to a, like a NASA or something like that was really tiny.

3:46:38 It was a lot more than I had at the time.

3:46:40 But it was interesting.

3:46:42 I had a point years later when I realized, okay,

3:46:45 like my financial resources at this point are basically what

3:46:49 Elon's was when he went all in on SpaceX and Tesla.

3:46:54 And I think in many corners he does not get the respect

3:47:00 that he should about being a wealthy person that could just retire.

3:47:04 And he went all in where he was really going to, he could have gone bust.

3:47:11 And there's plenty of people you look at the sad athletes

3:47:15 or entertainers that had all the money in the world and blew it.

3:47:18 And he could have been the business case example of that.

3:47:22 But the things that he was doing,

3:47:25 space exploration, electrification of transportation,

3:47:29 solar city type things, these are big world level things.

3:47:34 And I have a great deal of admiration that he was willing

3:47:37 to throw himself so completely into that because in contrast with myself,

3:47:43 I was doing Armadillo Aerospace with this tightly bounded,

3:47:46 it was John's crazy money at the time that had a finite limit on it.

3:47:51 It was never going to impact me or my family if it completely failed.

3:47:56 And I was still hedging my bets working in software

3:47:59 at the time when he had been really all in there.

3:48:04 And I have a huge amount of respect for that.

3:48:08 And people do not, the other thing I

3:48:09 get irritated with is people that say it's like,

3:48:12 "Oh, Elon's just a business guy." "He just got like,

3:48:15 "he was gifted the money "and he's just kind of investing in all

3:48:18 of this." When he was really deeply involved in a lot of the decisions,

3:48:24 not all of 'em were perfect,

3:48:25 but he cared very much about engine material selection, propellant selection.

3:48:31 And for years he'd be kind of telling me it's like,

3:48:35 get off that hydrogen peroxide stuff.

3:48:37 It's like liquid oxygen is the only proper oxidizer for this.

3:48:41 And unlike the times that I've gone through the factories with him,

3:48:47 we're talking very detailed things about like how this weld is made,

3:48:51 how this subassembly goes together,

3:48:53 what are like startup shutdown behaviors of the different things.

3:48:58 So, he is really in there at a very detailed level.

3:49:02 And I think that he is the best modern example now

3:49:06 of someone that tries to, that can

3:49:09 effectively micromanage some decisions on things,

3:49:11 on both Tesla and SpaceX to some degree where he cares enough about it.

3:49:16 I worry a lot that he stretched too thin,

3:49:19 that you get Boring Company and Neuralink and Twitter and all

3:49:23 the other possible things there where I know I've got,

3:49:27 I've got limits on how much I can pay attention

3:49:30 to that I have to kind of box off different amounts of time.

3:49:34 And I look back at like, at my aerospace side of things,

3:49:36 it's like I did not go all in on that.

3:49:38 I did not commit myself at a level

3:49:40 that it would've taken to be successful there.

3:49:43 And yeah and it's kind of a weird thing, just like having a discussion with him.

3:49:49 He's the richest man in the world right now.

3:49:50 But he operates on a level that is still very

3:49:55 much in my wheelhouse on a technical side of things.

3:50:00 Doing that systems level type of thinking where you can go

3:50:03 to the low level details and go up high to the big picture.

3:50:07 Do you think in aerospace arena in the next five,

3:50:11 10 years, do you think we're gonna put a human on Mars?

3:50:16 Like what do you think is the interesting point.

3:50:20 No, in fact, I made a bet with someone,

3:50:23 with a group of people kind of this about, whether boots on Mars by 2030.

3:50:27 And this was kind of a fun story because I was at an Intel sponsored event

3:50:34 and we had a bunch of just world class

3:50:36 brilliant people and we were talking about computing stuff,

3:50:39 but the after dinner conversation was like, what are some other things?

3:50:42 How are they gonna go in the future?

3:50:43 And one of the ones tossed up on the whiteboard was like, boots on Mars by 2030.

3:50:49 And most of the people in the room thought, yes.

3:50:51 They thought that like, SpaceX is kicking ass,

3:50:54 we've got all this possible stuff, seems likely that it's gonna go that way.

3:50:59 And I said, no, I think less than 50% chance that it's going to make it there.

3:51:05 And people were kind of like, "Oh, why the pessimism or whatever." And of course

3:51:10 I'm an optimist at almost everything,

3:51:12 but for me to be the one kind of outlier saying, no, I don't think so.

3:51:16 Then I started saying some of the things I said,

3:51:19 well, let's be concrete about it.

3:51:21 Let's bet $10,000 that it's not gonna happen.

3:51:24 And this was really a startling thing to see that I,

3:51:29 again, room full of brilliant people,

3:51:31 but as soon as like money came on the line and they were like,

3:51:35 do I wanna put $10,000 in?

3:51:36 I was not the richest person in the room.

3:51:38 There are people much better off than I was.

3:51:41 There's a spectrum.

3:51:42 But as soon as they started thinking it's like, oh,

3:51:46 I could lose money by keeping my position right now.

3:51:50 And all these engineers, they engaged their brain,

3:51:53 they started thinking it's like, okay, launch windows, launch delays.

3:51:57 Like how many times would it take to get this right?

3:52:00 What historical precedents do we have?

3:52:02 And then it mostly came down to it's like, well what about in transit by 2030?

3:52:08 And then what about I, different things or would you hand would you go for 2032?

3:52:13 But one of the people did go ahead

3:52:15 and was optimistic enough to make a bet with me.

3:52:18 So, I have a $10,000 bet that by 2030,

3:52:21 I think it's gonna happen shortly thereafter.

3:52:24 I think there will probably be infrastructure on Mars by 2030,

3:52:27 but I don't think that we'll have humans on Mars in 2030.

3:52:31 I think it's possible, but I think it's less than a 50% chance.

3:52:34 So, I felt safe making that bet.

3:52:37 Well I think you had an interesting point.

3:52:39 Correct me if I'm wrong, that's a dark one,

3:52:42 that should perhaps help people appreciate Elon Musk,

3:52:48 which is in this particular effort, Elon is critical to the success.

3:52:56 SpaceX seems to be critical to 20th humans on Mars by 2030 or thereabouts.

3:53:07 So, if something happens to Elon, then all of this collapses.

3:53:14 And this is in contrast to the the other $10,000 bet I made kind

3:53:18 of recently and that was self-driving cars

3:53:20 at like a level five running around cities.

3:53:23 And people have kind of nitpicked

3:53:25 that, that we probably don't mean exactly level five,

3:53:27 but the guy I'm having the bet with is we're gonna be,

3:53:31 we know what we mean about this.

3:53:33 [Lex] Jeff Atwood.

3:53:34 Yeah, Coding horror and stack flow and all.

3:53:37 [Lex] Yeah.

3:53:38 But yeah, I mean it's just, he doesn't think that people are gonna be

3:53:41 riding around in Robotaxis in 2030 in major cities.

3:53:45 Just like you take an Uber now and think I think it will.

3:53:48 [Lex] And you think you think it will.

3:53:49 And the difference is everybody looks at this, it's like, "Oh,

3:53:52 but Tesla's been wrong for years." They've been

3:53:54 promising it for years and it's not here yet.

3:53:56 And the reason this is different than the bet with Mars is

3:54:00 Mars really is more than is comfortable a bet on Elon Musk.

3:54:06 That is his thing and he is really going

3:54:10 to move heaven and earth to try to make that happen.

3:54:13 And perhaps not even SpaceX.

3:54:15 [John] Yeah.

3:54:16 Perhaps just Elon Musk.

3:54:18 Yeah, because if Elon went away and SpaceX

3:54:21 went public and got a board of directors,

3:54:23 there are more profitable things they could be

3:54:26 doing than focusing on human presence on Mars.

3:54:29 So, this really is a sort of personal thing there.

3:54:32 And in contrast with that, self-driving cars have a dozen credible companies,

3:54:38 working really hard.

3:54:40 And while yes, it's going slower than most people thought it would,

3:54:45 betting against that is a bet against almost the entire world

3:54:49 in terms of all of these companies that have all of these incentives.

3:54:52 It's not just one guy's passion project.

3:54:56 And I do think that it is solvable.

3:54:59 Although I recognize it's not a hundred percent chance because it's possible.

3:55:03 The long tail of self-driving problems winds up being an AGI complete problem.

3:55:08 I think there's plenty of value to mine out of it with narrow AI

3:55:11 and I think that it's going to happen probably more so than people expect,

3:55:16 but it's that whole sigmoid curve where you over,

3:55:19 you overestimate the near term progress

3:55:21 and you underestimate the long-term progress.

3:55:23 And I think self-driving is gonna be like that.

3:55:26 And I think 2030 is still a pretty good bet.

3:55:30 Yeah, unfortunately self-driving is a problem that is safety critical.

3:55:38 Meaning that if you don't do it well, people get hurt.

3:55:42 But the other side of that is people are terrible drivers.

3:55:46 So, it is not going to be,

3:55:48 that's probably gonna be the argument that gets it through is like,

3:55:50 we can save 10,000 lives a year by taking imperfect self-driving

3:55:56 cars and letting them take over a lot of driving responsibilities.

3:55:59 It's like, was it 30,000 people a year

3:56:02 die in auto accidents right now in America?

3:56:04 And a lot of those are preventable.

3:56:06 And the problem is you'll have people

3:56:08 that every time a Tesla crashes into something,

3:56:11 you've got a bunch of people that literally have vested interests shorting

3:56:14 Tesla to come out and make it the worst thing in the world.

3:56:17 And people will be fighting against that.

3:56:19 But optimist in me again, I think that we will have systems that are

3:56:24 statistically safer than human drivers and we will be

3:56:27 saving thousands and thousands of lives every year when

3:56:31 we can hand over more of those responsibilities to it.

3:56:34 I do still think as a person who studied

3:56:36 this problem very deeply from a human side as well,

3:56:41 it's still an open problem how good/bad humans are driving.

3:56:46 It's a kind of funny thing we say about each other.

3:56:49 All humans suck at driving, everybody except you, of course.

3:56:54 Like we think we're good at driving.

3:56:56 But after really studying it, I think you start to notice,

3:57:03 'cause I've watched hundreds of hours of humans

3:57:06 driving with the projects of this kind of thing.

3:57:08 You've noticed that even with the distraction, even with everything else,

3:57:13 humans are able to do some incredible things with the attention.

3:57:19 Even when you're just looking at a smartphone,

3:57:21 just to get cues from the environment to make less seconds decisions,

3:57:26 to use instinctual type of decisions that actually

3:57:29 save your ass time and time and time again and are able to do that with so

3:57:36 much uncertainty around you in such tricky dynamic environments.

3:57:40 I don't know, I don't know exactly how hard is

3:57:45 it to beat that kind of skill of common sense reasoning.

3:57:51 So, this is one of those interesting things that there have been a lot

3:57:54 of studies about how experts in their field

3:57:56 usually underestimate the progress that's going to happen,

3:57:59 because an expert thinks about all the problems they deal with and they're like,

3:58:03 damn, I'm gonna have a hard time solving all of this.

3:58:06 And they filter out the fact that they are one expert in a field of thousands.

3:58:10 And you think about, yeah, I can't do all of that.

3:58:13 And you sometimes forget about the scope

3:58:15 of the ecosystem that you're embedded in.

3:58:18 And if you think back eight years,

3:58:19 very specifically the state of AI and machine learning, where was that?

3:58:23 We had just gotten res nets probably at that point.

3:58:26 And you look at all the amazing magical things that have happened in eight years

3:58:31 and they do kind of seem to be happening a little faster in recent years also.

3:58:36 And you project that eight more years into the future where again I

3:58:39 think there's a 50% chance we're gonna have signs of life of AGI,

3:58:43 which we can put through driver's ed if

3:58:45 we need to, to actually build self-driving cars.

3:58:48 And I think that the narrow systems are

3:58:50 going to have real value demonstrated well before then.

3:58:54 So, signs of life in AGI, you've mentioned that, okay,

3:59:00 first of all, you're one of the most brilliant people on this earth.

3:59:04 You could be solving a number of different problems,

3:59:08 as you've mentioned, you mind was attracted to nuclear energy.

3:59:12 Obviously virtual reality with the metaverse is

3:59:14 something you could have a tremendous impact on.

3:59:16 So, I do wanna say a quick thing about nuclear energy where

3:59:19 this is something that, this so precisely feels like aerospace before SpaceX,

3:59:27 where from everything that I know about all

3:59:30 of these, the physics of this stuff hasn't changed.

3:59:33 And the reasons why things are expensive now are not fundamental.

3:59:38 I somebody should be going into a really hard Elon Musk style visions,

3:59:46 economical vision, not fusion, where the fusion is the kind of the darling

3:59:52 of people that want to go and do nuclear,

3:59:54 because it doesn't have the taint that fission has in a lot of people's minds.

3:59:58 But it's an almost absurdly complex thing where nuclear fusion is,

4:00:04 you look at the tocomax or any of the things

4:00:06 that people are building and it's doing all of this infrastructure,

4:00:09 just at the end of the day to make something hot,

4:00:12 so that you can then turn into energy,

4:00:14 through a conventional power plant and all of that work,

4:00:18 which we think we've got line of sight on.

4:00:20 But even if it comes out, then you have to do all of that immensely complex,

4:00:25 expensive stuff just to make something hot.

4:00:27 Where nuclear fission is basically,

4:00:29 you put these two rocks together and they get hot all by themselves.

4:00:33 That is just that much simpler.

4:00:35 It's just orders of magnitude simpler and the actual rocks,

4:00:39 the refined uranium is not very expensive.

4:00:41 It's a couple percent of the cost of electricity.

4:00:45 That's why I made that point where you could have

4:00:47 something which was five times less efficient than current systems.

4:00:52 And if the rest of the plant was a whole bunch cheaper,

4:00:54 you could still be super, super valuable.

4:00:57 So, how much of the pie do you

4:01:00 think could be solved by nuclear energy by fission?

4:01:04 So, how much could it become the primary source of energy on earth?

4:01:09 It could be most of it,

4:01:10 like the reserves of uranium as it stands now, could not power the whole earth.

4:01:13 But you get into breeder reactors and thorium

4:01:16 and things like that that you do for conventional fission.

4:01:19 There is enough for everything.

4:01:22 Now, I mean, solar photovoltaic has been amazing.

4:01:25 One of my current projects is working on an off-grid

4:01:29 system and it's been fun just kind of, again,

4:01:31 putting my hands on all the stripping

4:01:33 the wires and wiring things together and doing all

4:01:35 of that and just having followed that a little

4:01:37 bit from the outside over the last couple decades,

4:01:40 there's been semiconductor like magical progress in what's going on there.

4:01:45 So, I'm all for all of that, but it

4:01:48 doesn't solve everything and nuclear really still does seem

4:01:51 like the smart money bet for what you should

4:01:54 be getting for baseband on a lot of things.

4:01:56 And solar may be cheaper for peaking over air conditioning loads during

4:02:01 the summer and things that you can push around in different ways.

4:02:05 But it's one of those things that's,

4:02:07 it's just strange how we've had the technology sitting there,

4:02:10 but these non-technical reasons on the social optics

4:02:13 of it has been this major forcing function

4:02:17 for something that, really should be at the cornerstone

4:02:21 of all of the world's concerns with energy.

4:02:24 It's interesting how the non-technical factors,

4:02:27 have really dominated something that is so fundamental to kind

4:02:30 of the existence of the human race as we know it today.

4:02:35 And much of the troubles of the world,

4:02:36 including wars in different parts of the world,

4:02:39 like Ukraine is energy based and yeah,

4:02:42 it's just sitting right there to be solved.

4:02:47 That said, I mean to me personally,

4:02:50 I think it's clear that if AGI were to be achieved,

4:02:53 that would change the course of human history.

4:02:56 So, AGI wise, I was making this decision about what do I

4:03:01 want to focus on after VR and I'm still working on VR regularly.

4:03:06 I spend a day a week kind of consulting with Meta and Boz styles me,

4:03:11 the consulting CTO is kind of like the Sherlock Holmes

4:03:15 that comes in and consults on some of the specific tough issues.

4:03:18 And I'm still pretty passionate about all of that, but I have been figuring out

4:03:24 how to compartmentalize and force that into a smaller

4:03:27 box to work on some other things.

4:03:29 And I did come down to this decision,

4:03:30 between working on economical nuclear fission or artificial

4:03:35 general intelligence and the fission side of things.

4:03:39 I've got a bunch of interesting things going that way.

4:03:42 But it would take, that would be a fairly big project thing to do.

4:03:46 I don't think it's needs to be as big as people expect.

4:03:49 I do think something original SpaceX sized,

4:03:51 you build it, power your building off of it,

4:03:55 and then the government I think will come around

4:03:57 to what you need to, everybody loves an existence proof.

4:04:01 I think it's possible somebody should be

4:04:03 doing this, but it's gonna involve some politics.

4:04:05 It's going to involve decent sized teams and a bunch

4:04:08 of this cross-functional stuff that I don't love.

4:04:11 While the artificial general intelligence side of things,

4:04:15 it seems to me like this is

4:04:18 the highest leverage moment for potentially a single individual,

4:04:24 potentially in the history of the world where

4:04:26 the things that we know about the brain,

4:04:30 about what we can do with artificial intelligence.

4:04:32 Nobody can say absolutely on any of these things,

4:04:36 but I am not a madman for saying that it is likely that the code

4:04:42 for artificial general intelligence is going to be

4:04:45 tens of thousands of lines of code, not millions of lines of code.

4:04:50 This is code that conceivably one individual could write,

4:04:53 unlike writing a new web browser or operating system.

4:04:57 And based on the progress that AI

4:05:00 machine learning has made in the recent decade,

4:05:03 it's likely that the important things that we don't know are relatively simple.

4:05:08 There's probably a handful of things and my bet is that I

4:05:13 think there's less than six key insights that need to be made.

4:05:17 Each one of them can probably be written on the back of an envelope.

4:05:20 We don't know what they are, but when they're put together in concert with GPUs

4:05:25 at scale and the data that we all have access

4:05:28 to, that we can make something that behaves like a human

4:05:32 being or like a living creature and that can then be

4:05:36 educated in whatever ways that we need to get

4:05:38 to the point where we can have universal remote workers where

4:05:42 anything that somebody does mediated by a computer and doesn't

4:05:46 require physical interaction that an AGI will be able to do.

4:05:50 We can already simulate the equivalent of the Zoom

4:05:54 meetings with avatars and synthetic deepfakes and whatnot.

4:05:59 We can definitely do that.

4:06:00 We have superhuman capabilities on any narrow thing

4:06:04 that we can formalize and make a loss function for.

4:06:08 But there's things we don't know how to do now,

4:06:10 but I don't think they are unapproachable hard.

4:06:13 Now, that's incredibly hubristic to say that it's like,

4:06:17 but I think that what I said a couple years ago is a 50% chance that somewhere

4:06:22 there will be signs of life of AGI

4:06:24 in 2030 and I've probably increased that slightly.

4:06:28 I may be at 55, 60% now,

4:06:30 because I do think there's a little sense of acceleration there.

4:06:34 So, I wonder what the and by the way

4:06:36 you also written that, I bet with hindsight we'll find

4:06:40 that clear antecedents of all the critical remaining steps for AGI

4:06:45 are already buried somewhere in the vast literature of today.

4:06:48 So, the ideas are already there.

4:06:51 I think that's likely the case.

4:06:52 One of the things that appeals to so many people,

4:06:54 including me about the promise of AGI is we know that we're only

4:06:59 drinking from a straw from the fire hose of all the information out there.

4:07:03 I mean, you look at just in a very narrowly bounded field,

4:07:07 like machine learning,

4:07:08 like you can't read all the papers that come out all the time.

4:07:11 You can't go back and read all the clever things that people

4:07:14 did in the '90s or earlier that people have forgotten about,

4:07:17 because they didn't pan out at the time when

4:07:19 they were trying to do them with 12 neurons.

4:07:21 So that this idea that, yeah, I think there are gems buried in some of the older

4:07:28 literature that was not the path taken by everything.

4:07:31 And you can see a kind of herd mentality on the things that happen right now.

4:07:35 It's almost funny to see, it's like, oh,

4:07:37 Google does something and OpenAI does something and Meta

4:07:39 does something and they're the same people that all

4:07:42 talk to each other and they're all one-upping each

4:07:44 other and they're all capable of implementing each other's work,

4:07:47 given a month or two after somebody has an announcement of that.

4:07:51 But there's a whole world of possible approaches to machine learning and I

4:07:57 think that we probably will in hindsight go back and see it's like, yeah,

4:08:02 that was kind of clearly predicted by this early paper here and this turns

4:08:06 out that if you do this and this and take this result from animal

4:08:10 training and this thing from neuroscience over here and put it together and set

4:08:15 up this curriculum for them to learn in, that that's kind of what it took.

4:08:19 You don't have too many people now that are still saying it's not possible

4:08:23 or it's gonna take hundreds of years and 10 years ago you would get,

4:08:27 you would get a collection of experts and you would have a decent chunk

4:08:30 on the margin that either say not

4:08:33 possible or couple hundred years, might be centuries.

4:08:36 And the median estimate would be like 50, 70 years.

4:08:40 And it's been coming down and I know with me saying

4:08:43 eight years for something that still puts me on the optimistic side,

4:08:46 but it's not crazy out in the fringes.

4:08:49 And just being able to look at that a Meta level,

4:08:51 about the trend of the trend of the predictions,

4:08:55 going down there, the idea that something could be happening relatively soon.

4:09:01 Now, I do not believe in fast takeoffs.

4:09:04 That's one of the safety issues that people say.

4:09:06 It's like, oh, it's gonna go foom and the AI's gonna take over the world.

4:09:10 There's a lot of reasons I don't think that's a credible position.

4:09:14 And I think that we will go from a point

4:09:16 where we start seeing things that credibly look like,

4:09:20 look like animals behaviors and have a human voice box wired into them.

4:09:25 It's like, I tried to get Elon to say, it's like, you're your pig at neuralink.

4:09:29 Give it a human voice box and let it start learning human words.

4:09:33 I think that, I think animal intelligence is closer

4:09:37 to human intelligence than a lot of people like to think.

4:09:39 And I think that culture and modalities of IO are

4:09:42 make the Gulf seem a lot bigger than it actually is.

4:09:45 There's just that smooth spectrum of how the brain developed

4:09:49 and cortexes and scaling of different things going on there.

4:09:53 Cultural modalities of IO, yes languages,

4:09:57 the sort of loss in translation, conceals a lot of intelligence.

4:10:02 And so when you're thinking about signs of life or AGI,

4:10:06 you're thinking about human interpretable signs.

4:10:10 So, the example I give,

4:10:11 if we get to the point where you've got a learning disabled toddler,

4:10:15 some kind of real special needs child

4:10:18 that can still interact with their favorite TV show and video game and can be

4:10:23 trained and learn in some appreciably human-like way,

4:10:27 at that point you can deploy an army of engineers, cognitive scientists,

4:10:32 developmental education people and you've got so many advantages there.

4:10:37 Unlike real education where you can do rollbacks and AB testing

4:10:40 and you can find a golden path through a curriculum of different things.

4:10:44 If you get to that point learning disabled toddler,

4:10:47 I think that it's gonna be a done deal.

4:10:51 But do you think we'll know it when we see it?

4:10:53 So, there's been a lot of really

4:10:56 interesting general learning progress from DeepMind, OpenAI a little bit too.

4:11:02 I tend to believe that Tesla autopilot,

4:11:06 deserves a lot more credit than is getting for making progress on the general,

4:11:12 on sort of on doing the multitask learning

4:11:15 thing and increasing the number of tasks and automating

4:11:18 that process of sort of learning from discovering

4:11:24 the edge cases and learning from the edge cases.

4:11:26 It's really approaching from a different angle,

4:11:30 the general learning problem of AGI,

4:11:33 but the more clear approach comes from DeepMind where you

4:11:36 have these kind of game situations and you build systems there,

4:11:41 but I don't know, people seem to be quite.

4:11:47 Yes, there will always be people that just

4:11:49 won't believe it and I fundamentally don't care.

4:11:52 I mean, I don't care if they don't believe it.

4:11:54 When it starts doing people's jobs and I mean,

4:11:57 I don't care about the philosophical zombie argument at all.

4:12:00 Yes, absolutely, absolutely.

4:12:01 But do you think you will notice that something

4:12:05 special has happened here and or because to me,

4:12:10 I've been noticing a lot of special things.

4:12:12 I think, you know, a lot of credit should go to DeepMind for Alpha Zero that was

4:12:19 truly special through self play mechanisms achieve sort

4:12:23 of solve problems that used be thought unsolvable,

4:12:26 like the game of go also, I mean,

4:12:29 protein folding starting to get into that space where learning is doing.

4:12:34 At first, there's not, it wasn't end-to-end learning.

4:12:37 And so now it's end-to-end learning of a very

4:12:41 difficult previously thought unsolvable problem of protein folding.

4:12:45 And so yeah, where do you think would be a really magical moment for you?

4:12:54 There have been incredible things happening in recent years.

4:12:57 Like you say, all of the things from DeepMind,

4:12:59 OpenAI that have been huge showpiece things,

4:13:02 but when you really get down to it and you read

4:13:05 the papers and you look at the way the models are going,

4:13:08 it's still like a feed forward.

4:13:10 You push something in, something comes out on the end,

4:13:13 I mean maybe there's diffusion models or Monte Carlo tree

4:13:16 rollouts and different things going on, but it's not a being,

4:13:20 it's not close to a being that's going through a lifelong learning process.

4:13:27 So you want something that kind of gives signs of a being,

4:13:30 like what's the difference between a neural network,

4:13:36 a feedforward neural network and a being?

4:13:39 So fundamentally, the brain is a recurrent

4:13:42 neural network generating an action policy.

4:13:45 I mean, it's implemented on a biological substrate.

4:13:47 And it's interesting thinking about things like that where we know

4:13:50 fundamentally the brain is not a convolutional neural network or a transformer.

4:13:55 Those are specialized things that are very valuable for what we're doing,

4:13:59 but it's not the way the brain's doing.

4:14:00 Now, I do think consciousness and AI in general is a substrate independent

4:14:06 mechanism where it doesn't have to be implemented the way the brain is.

4:14:09 But if you've only got one existence proof,

4:14:11 there's certainly some value in caring about what it says and does.

4:14:16 And so the idea that anything that can be done with a narrow

4:14:21 AI that you can quantify up a loss function for or reward mechanism,

4:14:25 you're almost certainly going to be able to produce something that's more

4:14:29 resource effective to train and deploy and use in an inference mode,

4:14:33 train a whole lot using an inference.

4:14:35 But a living being is gonna be something that's a continuous,

4:14:39 lifelong learned, task agnostic thing.

4:14:42 And while lot.

4:14:44 So the lifelong learning is really important too, and the long-term memory.

4:14:48 So memory is a big weird part of that puzzle.

4:14:52 We've got and again, I have all the respect in the world

4:14:55 for the amazing things that are being done now,

4:14:57 but sometimes they can be taken a little bit out of context

4:15:00 with things like there's some smoke and mirrors going on, like the gato,

4:15:04 the recent work, the multitask learning stuff,

4:15:07 it's amazing that it's one model that plays all the Atari

4:15:11 games I am as well as doing all of these other things.

4:15:14 But of course it didn't learn to do all of those.

4:15:17 It was instructed in doing that by other

4:15:20 reinforcement learners going through and doing that.

4:15:23 And even in the case of all the games,

4:15:25 it's still going with a specific hand-coded reward function in each

4:15:29 of those Atari games where it's not that, how does it?

4:15:32 It just wants to spend its summer afternoon playing

4:15:35 Atari because that's the most interesting thing for it.

4:15:37 So it's, again, not a general, it's not learning the way humans learn.

4:15:42 And there's, I believe a lot of things that are challenging to make

4:15:45 a loss function for that you

4:15:47 can train through these existing conventional things.

4:15:50 We are gonna chip away at all the things

4:15:53 that people do that we can turn into narrow AI problems.

4:15:58 And billions, probably trillions of dollars

4:16:01 of value are gonna be created by that.

4:16:03 But there's still gonna be a set of things.

4:16:05 And we've got questionable cases like the self-driving

4:16:08 car where it's possible, it's not my bet,

4:16:11 but it's plausible that the long tail could be problematic enough

4:16:15 that that really does require a full on artificial general intelligence.

4:16:19 The counter argument is that data solves almost every,

4:16:22 everything's an interpolation problem if you have enough data.

4:16:25 And Tesla may be able to get enough data from all

4:16:28 of their deployed stuff to be able to work like that, but maybe not.

4:16:32 And there are all the other problems about,

4:16:34 like say you want to have a strategy meeting and you want to go

4:16:37 ahead and bring in all of your remote workers and your consultants and you want

4:16:41 a world where some of those could be AIs that are talking and interacting

4:16:46 with you in an area that is too murky to have a crisp loss function.

4:16:51 But they still have things that on some level,

4:16:54 they're rewarded on some internal level for building a valuable

4:16:58 to humans kind of life and ability to interact with things.

4:17:04 See, I still think that self-driving cars solving

4:17:07 that problem will take us very far towards AGI.

4:17:09 You might not need AGI, but I am really inspired by what Autopilot is doing.

4:17:15 Waymo, so some of the other companies,

4:17:19 I think Waymo leads the way there is also really interesting,

4:17:23 but they don't have quite as ambitious of an effort

4:17:26 in terms of learning based sort of data hungry approach to driving,

4:17:31 which I think is very close to the kind

4:17:34 of thing that would take us far towards AGI.

4:17:37 Yeah, and it's a funny thing because as far as I can tell,

4:17:40 Elon is completely serious about all

4:17:42 of his concerns about AGI being an existential threat.

4:17:46 And I tried to draw him out to talk about AI and he just didn't want to.

4:17:50 And I think that, I get that little fatalistic sense from him

4:17:54 and it's weird because his company could very well be the leading company.

4:17:58 Leading towards a lot of that, where Tesla being a super pragmatic

4:18:03 company that's doing things because they really wanna solve this actual problem.

4:18:06 It's different vibe than the research oriented companies where

4:18:10 it's a great time to be an AI researcher.

4:18:12 You've got your pick of trillion dollar companies that will pay

4:18:15 you to kind of work on the problems you're interested in.

4:18:18 But that's not necessarily driving hard towards

4:18:20 the core problem of AGI as something that's going

4:18:24 to produce a lot of value by doing things

4:18:26 that people currently do or would like to do.

4:18:30 I mean, I have a million questions to you about your ideas about AGI,

4:18:35 but do you think it needs to be embodied?

4:18:39 Do you think it needs to have a body to start to notice

4:18:42 the signs of life and to develop the kind of system that's able to reason,

4:18:49 perceive the world in the way that an AGI should and act in the world?

4:18:53 So should we be thinking about robots or can

4:18:55 this be achieved in a purely digital system?

4:18:58 So I have a clear opinion on that and that's that, no,

4:19:01 it does not need to be embodied in the physical world where

4:19:04 you could say most of my career is about making simulated virtual worlds.

4:19:09 You know, in games or virtual reality.

4:19:12 And so on a fundamental level,

4:19:13 I believe that you can make a simulated environment that provides

4:19:16 much of the value of what the real environment does.

4:19:20 And restricting yourself to operating at real

4:19:22 time in the physical world with physical objects,

4:19:25 I think is an enormous handicap.

4:19:27 I mean, that's one of the real lessons driven home by all

4:19:31 my aerospace work is that reality is a bitch in so many ways there,

4:19:36 where dealing with all the mechanical components,

4:19:38 like everything fails Murphy's Law,

4:19:40 even if you've done it right before on your fifth one,

4:19:42 it might come out differently.

4:19:44 So yeah, I think that anybody that is all in on the embodied aspect of it,

4:19:50 they are tying a huge weight to their ankles.

4:19:53 And I think that I would almost count them out,

4:19:57 anybody that's making that a cornerstone of their belief about it,

4:20:00 I would almost write them off as being worried about them getting to AGI first,

4:20:04 I was very surprised that Elon's big on the humanoid robots.

4:20:09 I mean like the NASA robot stuff was always almost a gag line.

4:20:12 Like, what are you doing people?

4:20:14 Well that's very interesting 'cause he has a very pragmatic view of that.

4:20:18 That's just a way to solve a particular problem in a factory.

4:20:23 Now I do think that once you have an AGI,

4:20:26 robotic bodies, humanoid bodies are going to be enormously valuable.

4:20:30 I just don't think they're helpful getting to AGI.

4:20:32 Well he has a very sort of practical view,

4:20:34 which I disagree with and argue with him,

4:20:37 but it's a practical view that there's,

4:20:39 you could transfer the problem of driving to the problem

4:20:45 of robotic manipulation because so much of it is perception.

4:20:49 It's perception and action, and it's just a different context.

4:20:53 And so you can apply all the same kind

4:20:55 of data engine learning processes to a different environment.

4:20:59 And so why not you apply it to the humanoid robot environment?

4:21:03 But I think I do think that there's a certain magic to the embodied robot.

4:21:13 That may be the thing that finally convinces people.

4:21:15 Yes.

4:21:16 But again, I don't really care that much about convincing people.

4:21:18 You know, the world that I'm looking towards is you go to the website and say,

4:21:24 I want five frank one A's to work on my team today.

4:21:28 And they all spin up and they start showing up in your Zoom meetings.

4:21:31 To push back, but also to agree with you.

4:21:33 But first to push back.

4:21:34 I do think you need to convince people

4:21:37 for them to welcome that thing into their life.

4:21:41 I think there's enough businesses that operate on an objective,

4:21:44 kind of profit loss sort of basis that, I mean,

4:21:47 if you look at how many things, again,

4:21:49 talking about the world as an evolutionary space there,

4:21:52 when you do have free markets and you have entrepreneurs,

4:21:55 you are gonna have people that are gonna be

4:21:58 willing to go out and try whatever crazy things.

4:22:00 And when it proves to be beneficial,

4:22:03 there's fast followers in all sorts of places.

4:22:06 Yeah and you're saying that, I mean, Quake and VR is a kind of embodiment,

4:22:11 but just in a digital world and if you're able to demonstrate,

4:22:16 if you're able to do something productive in that kind of digital reality,

4:22:22 then AGI doesn't need to have a body.

4:22:26 Yeah, it's like one of the really practical technical

4:22:28 questions that I kind of keep arguing with myself over.

4:22:31 If you're doing a training and learning and you've got, like,

4:22:34 you can watch Sesame Street and you can play master system games or something,

4:22:38 is it enough to have just a video feed that, is that video coming

4:22:42 in or should it literally be on a virtual TV set in a virtual room,

4:22:47 even if it's a simple room just to have that sense of you're looking

4:22:51 at a 2D projection on a screen versus

4:22:53 having the screen beamed directly into your retinas.

4:22:56 And I think it's possible to maybe get past some of these signs

4:23:01 of life of things with the just

4:23:03 kind of projected directly into the receptor fields,

4:23:06 but eventually for more kind of human emotional connection for things.

4:23:12 Probably having some VR room with a lot of screens

4:23:15 in it for the AI to be learning in is likely helpful.

4:23:19 It may be a world of different AIs, interacting with each other.

4:23:22 That self play I do think is

4:23:23 one of the critical things where socialization wise,

4:23:25 one of the other limitations I set for myself thinking about thing these is

4:23:30 I need something that is at least potentially real time because I want,

4:23:35 it's nice, you can always slow down time.

4:23:37 You can run on a subscale system and test an algorithm at some lower level.

4:23:42 And if you've got extra horsepower,

4:23:43 running it faster than real time is a great thing.

4:23:46 But I want to be able to have the AIs

4:23:51 either socially interact with each other or critically with actual people.

4:23:55 Your sort of child development psychiatrist that comes

4:23:58 in and interacts and does the good boy bad boy sort of thing

4:24:02 as they're going through and exploring different things.

4:24:05 And it's nice to, I come back to the value of constraints in a lot of ways.

4:24:10 And if I say, well one of my constraints is real time operation, I mean,

4:24:14 it might still be a huge data center full of computers,

4:24:17 but it should be able to interact on a Zoom meeting with people.

4:24:22 And that's how you also do start convincing people,

4:24:24 even if it's not a robot body moving around,

4:24:26 which eventually gets to irrefutable levels.

4:24:29 But if you can go ahead and not just

4:24:31 type back and forth to a GPT bot on something,

4:24:34 but you're literally talking to them in an embodied over

4:24:38 Zoom form and working through problems with them or exploring situations,

4:24:43 having conversations that are fully stateful and learned,

4:24:47 I think that that's a valuable thing.

4:24:50 So I do keep all of my eyes on things that can

4:24:53 be implemented within sort of that 30 frames per second kind of work.

4:24:58 And I think that's feasible.

4:24:59 Do you think the most compelling experiences that are first will

4:25:03 be for pleasure or for business as they ask in airports?

4:25:07 So meaning is if it's interacting with AI agents,

4:25:15 will it be sort of like friends entertainment,

4:25:22 almost like a therapist or whatever, that kind of interaction?

4:25:26 Or is it in the business setting something like you said,

4:25:29 brainstorming different ideas,

4:25:31 sort of, this is all a different formulation of kind

4:25:34 of a touring test or the spirit of the original touring test.

4:25:37 Where do you think the biggest benefit will first come?

4:25:40 So it's gonna start off hugely expensive.

4:25:42 I mean, you're gonna,

4:25:44 if we're still all guessing about what compute is gonna be necessary,

4:25:47 I fall on the side of, I don't think

4:25:49 you run the numbers and you're like 86 billion neurons,

4:25:52 a hundred trillion synapses.

4:25:54 I don't think those all need to be weights.

4:25:55 I don't think we need models that are quite that big evaluated quite that often.

4:26:00 I base that on, we've got reasonable estimates

4:26:03 of what some parts of the brain do.

4:26:04 We don't have the neocortex formula,

4:26:07 but we kind of get some of the other sensory processing and it doesn't

4:26:10 feel like we need to, we can simulate that in computers for less weights,

4:26:14 but still it's probably going to be thousands

4:26:18 of GPUs to be running a human level AGI, depending on how it's implemented,

4:26:23 that might give you sort of a clan of 128 and kind of run in batch people,

4:26:28 depending on whether there's sparsity in the way

4:26:31 the weights and things are set up, if it is a reasonably dense thing,

4:26:35 then just the memory bandwidth trade offs means

4:26:37 you get 128 of 'em at the same time.

4:26:40 And either it's all feeding together,

4:26:42 learning in parallel or kind of all running

4:26:44 together kind of talking to a bunch of people.

4:26:47 But still, if you've got thousands of GPUs necessary to run these things,

4:26:51 it's gonna be kind of expensive.

4:26:53 Where it might start off a thousand

4:26:56 dollars an hour for your even post development

4:26:59 or something for that, which would be something

4:27:01 that you would only use for a business.

4:27:04 You know, something where you think they're gonna help you

4:27:06 make a strategic decision or point out something super important.

4:27:10 But I also am completely confident that we will have another

4:27:14 factor of a thousand in cost performance increase in AGI type calculations.

4:27:20 Not in general computing necessarily,

4:27:22 but there's so much more that we can do with packaging,

4:27:25 making those right trade-offs,

4:27:26 all those same types of things that in the couple next couple decades,

4:27:30 thousand X easy and then you're down to a dollar

4:27:32 an hour and then you're kind of like,

4:27:35 well I should have an entourage of AIs that are following me

4:27:39 around helping me out on anything that I want them to do.

4:27:43 That's one interesting trajectory, but I'll push back 'cause I have,

4:27:47 so for, in that case,

4:27:50 if you wanna pay thousands of dollars, it should actually provide some value.

4:27:55 I think it's easier for cheaper to provide value via a dumb

4:28:02 AI that will take a store's AGI to just have a friend.

4:28:09 I think there's an ocean of loneliness in the world

4:28:12 and I think an effective friend that doesn't have to be perfect,

4:28:16 that doesn't have to be intelligent, that has to be empathic.

4:28:20 Having emotional intelligence, having ability to remember things,

4:28:24 having ability to listen.

4:28:26 Most of us don't listen to each other.

4:28:28 One of the things that love and when you care about somebody,

4:28:31 when you love somebody is when you listen.

4:28:34 And that is something we treasure about each other.

4:28:37 And if an AI can do that kind of thing,

4:28:41 I think that provides a huge amount of value and very importantly provides

4:28:46 value in its ability to listen and understand versus provide really good advice.

4:28:53 I think providing really good advice is very difficult,

4:28:58 is another next level step that would,

4:29:01 I think it's just easier to do companionship.

4:29:05 Yeah, I wouldn't disagree.

4:29:06 I mean, I think that there's very few things that I

4:29:09 would argue can't be reduced to some kind of a narrow AI.

4:29:13 I think we can do trillion dollars of value

4:29:16 easily and all the things that can be done there.

4:29:18 And a lot of it can be done with smoke

4:29:20 and mirrors without having to go the whole thing.

4:29:22 I mean, there's going to be the equivalent of the doom,

4:29:26 the doom version for the AGI, that's not really AGI, it's all smoke and mirrors.

4:29:30 But it happens to do enough valuable things

4:29:33 that it's enormously useful and valuable to people.

4:29:36 But at some point you do wanna get to the point where you have the fully

4:29:39 general thing and you stop making bespoke specialized

4:29:42 systems for each thing and you wind up, start using the higher level language

4:29:47 instead of writing everything in assembly language.

4:29:50 What about consciousness, the C word?

4:29:54 Do you think that's fundamental to solving AGI

4:29:58 or is it a quirk of human cognition?

4:30:02 So I think most of the arguments about

4:30:05 consciousness don't have a whole lot of merit.

4:30:08 I think that consciousness is kind

4:30:11 of the way the brain feels when it's operating.

4:30:15 Yes.

4:30:15 And this idea that I do generally subscribe

4:30:19 to sort of the pandemonium theories of consciousness

4:30:21 where there's all these things bubbling around and I

4:30:23 think of them as kind of slightly randomized,

4:30:26 sparse, distributed memory bit strings of things that are kind of happening,

4:30:30 recalling different associative memories.

4:30:32 And eventually you get some level of consensus and it

4:30:35 bubbles up to the point of being a conscious thought there.

4:30:38 And the little bits of stochasticity that are sitting

4:30:41 on in this as it cycles between different things and recalls different memory,

4:30:45 that's largely our imagination and creativity.

4:30:49 So I don't think there's anything deeply magical about it.

4:30:52 Certainly not symbolic.

4:30:54 I think it is generally the flow of these associations

4:30:57 drawn up with stochastic noise overlaid on top of them.

4:31:02 And I think so much of that is like, it depends on what you happen to have

4:31:06 in your field of view as some other thought

4:31:08 was occurring to you that overlay and blend

4:31:10 into the next key that queries your memory for things.

4:31:13 And that kind of determines how your chain of consciousness goes.

4:31:18 So that's kind of the quality of the subjective

4:31:21 experience of it is not essential for intelligence.

4:31:25 I don't think so, I don't think there's anything really important there.

4:31:28 What about some other human qualities,

4:31:30 like fear of mortality and stuff like that?

4:31:32 Like the fact that this ride ends, is that important?

Study with Looplines Download Captions Watch on YouTube