John Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets #309

Transcript

00:00:00 I remember the reaction where he had drawn these characters

00:00:02 and he was slowly moving around

00:00:04 and like people had no experience with 3D navigation.

00:00:06 It was all still keyboard.

00:00:07 We didn’t even have mice set up at that time,

00:00:10 but slowly moving, going up, picked up a key, go to a wall.

00:00:14 The wall disappears in a little animation

00:00:16 and there’s a monster like right there.

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

00:00:20 It was just like, ah, and games just didn’t do that.

00:00:24 You know, the games were the God’s eye view.

00:00:26 You were a little invested in your little guy.

00:00:28 You can be like, you know, happy or sad when things happen,

00:00:32 but you just did not get that kind of startled reaction.

00:00:34 You weren’t inside the game.

00:00:36 Something in the back of your brain,

00:00:38 some reptile brain thing is just going,

00:00:40 oh shit, something just happened.

00:00:42 And that was one of those early points where it’s like,

00:00:44 yeah, this is going to make a difference.

00:00:47 This is going to be powerful and it’s going to matter.

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

00:00:55 widely considered to be one of the greatest programmers

00:00:58 ever.

00:00:59 He was the cofounder of id Software

00:01:01 and the lead programmer on several games

00:01:03 that revolutionized the technology, the experience,

00:01:07 and the role of gaming in our society,

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

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

00:01:19 helping to create portals into virtual worlds

00:01:23 and to define the technological path

00:01:25 to the metaverse and meta.

00:01:28 And now he has been shifting some of his attention

00:01:30 to the problem of artificial general intelligence.

00:01:34 This was the longest conversation on this podcast

00:01:38 at over five hours.

00:01:40 And still, I could talk to John many, many more times,

00:01:43 and we hope to do just that.

00:01:46 This is the Lux Readman podcast.

00:01:48 To support it, please check out our sponsors

00:01:50 in the description.

00:01:52 And now, dear friends, here’s John Carmack.

00:01:56 What was the first program you’ve ever written?

00:02:00 Do you remember?

00:02:01 Yeah, I do.

00:02:02 So I remember being in a radio shack

00:02:04 going up to the TRS 80 computers

00:02:06 and learning just enough to be able to do

00:02:09 10 print John Carmack.

00:02:12 And it’s kind of interesting how, of course,

00:02:15 Carnegie and Ritchie kind of standardized Hello World

00:02:19 as the first thing that you do

00:02:20 in every computer programming language in every computer,

00:02:22 but not having any interaction

00:02:24 with the cultures of Unix or any other standardized things.

00:02:28 It was just like, well, what am I gonna say?

00:02:29 I’m gonna say my name.

00:02:30 And then you learn how to do go to 10

00:02:33 and have it scroll all off the screen.

00:02:34 And that was definitely the first thing

00:02:37 that I wound up doing on a computer.

00:02:39 Can I ask you a programming advice?

00:02:41 I was always told in the beginning

00:02:42 that you’re not allowed to use go to statements.

00:02:44 That’s really bad programming.

00:02:45 Is this correct or not?

00:02:46 Jumping around code, can we look at the philosophy

00:02:50 and the technical aspects of the go to statement

00:02:53 that seems so convenient,

00:02:55 but it’s supposed to be bad programming?

00:02:55 Well, so certainly back in the day

00:02:57 in basic programming languages,

00:02:58 you didn’t have proper loops.

00:03:00 You didn’t have four whiles and repeats.

00:03:02 That was the land of Pascal for people

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

00:03:07 So you had no choice but to use go tos.

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

00:03:13 which were a thousand line basic program

00:03:15 is a really big program.

00:03:16 They did tend to sort of degenerate into madness.

00:03:19 You didn’t have good editors or code exploration tools.

00:03:23 So you would wind up fixing things in one place,

00:03:26 add a little patch.

00:03:27 And there’s reasons why structured programming

00:03:29 generally helps understanding,

00:03:31 but go tos aren’t poisonous.

00:03:33 Sometimes they’re the right thing to do.

00:03:35 Usually it’s because there’s a language feature missing

00:03:38 like nested breaks or something

00:03:40 where it can sometimes be better to do a go to cleanup

00:03:44 or go to error rather than having multiple flags,

00:03:48 multiple if statements littered throughout things.

00:03:50 But it is rare.

00:03:51 I mean, if you gripped through all of my code right now,

00:03:55 I don’t think any of my current code bases

00:03:57 would actually have a go to,

00:03:58 but deep within sort of the technical underpinnings

00:04:02 of a major game engine,

00:04:03 you’re gonna have some go tos in a couple of places probably.

00:04:07 Yeah, the infrastructure on top of,

00:04:09 like the closer you get to machine code,

00:04:11 the more go tos you’re gonna see,

00:04:12 the more of these like hacks you’re going to see

00:04:15 because the set of features available to you

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

00:04:22 So print John Carmack,

00:04:25 when is the first time,

00:04:28 if we could talk about love,

00:04:30 that you fell in love with programming?

00:04:31 You said like, this is really something special.

00:04:34 It really was something

00:04:36 that was one of those love at first sight things

00:04:38 where just really from the time

00:04:39 that I understood what a computer was even,

00:04:42 I mean, I remember looking through old encyclopedias

00:04:45 of the black and white photos of the IBM mainframes

00:04:48 at the reel to reel tape decks.

00:04:50 And for people nowadays,

00:04:52 it can be a little hard to understand

00:04:53 what the world was like then from information gathering

00:04:56 where I would go to the libraries

00:04:58 and there would be a couple books on the shelf

00:05:01 about computers and they would be very out of date

00:05:03 even at that point, just not a lot of information,

00:05:06 but I would grab everything that I could find

00:05:09 and devour everything.

00:05:10 Whenever Time or Newsweek had some article about computers,

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

00:05:16 It just, it felt like this magical thing to me,

00:05:19 this idea that the computer would just do exactly

00:05:23 what you told it to.

00:05:24 I mean, and there’s a little bit of the genie monkey’s paw

00:05:26 sort of issues there where you’d better be really,

00:05:28 really careful with what you’re telling it to do,

00:05:31 but it wasn’t gonna back talk you.

00:05:33 It wasn’t gonna have a different point of view.

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

00:05:37 And if you had the right commands,

00:05:39 you could make it do these pretty magical things.

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

00:05:46 So beyond the print, John Carmack.

00:05:48 So I can remember as going through the learning process

00:05:51 where you find at the start,

00:05:53 you’re just learning how to do

00:05:54 the most basic possible things.

00:05:56 And I can remember stuff like a Superman comic

00:05:59 that RadioShack commissioned to have,

00:06:02 it’s like Superman had lost some of his super brain

00:06:04 and kids had to use RadioShack TRS 80 computers

00:06:07 to do calculations for it to help him

00:06:09 kind of complete his heroics.

00:06:11 And I’d find little things like that

00:06:15 and then get a few basic books

00:06:17 to be able to kind of work my way up.

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

00:06:22 I had a couple of books

00:06:23 that would teach me important things about it.

00:06:25 I had one book that I could start to learn

00:06:28 a little bit of assembly language from,

00:06:30 and I’d have a few books on basic

00:06:32 and some things that I could get from the libraries.

00:06:34 But my goals in the early days

00:06:37 was almost always making games of various kinds.

00:06:40 I loved the arcade games and the early Atari 2600 games.

00:06:44 And being able to do some of those things myself

00:06:47 on the computers was very much what I aspired to.

00:06:51 And it was a whole journey where

00:06:53 if you learn normal basic,

00:06:54 you can’t do any kind of an action game.

00:06:56 You can write an adventure game.

00:06:57 You can write things where you say, what do you do here?

00:07:00 I get sword attack troll, that type of thing.

00:07:03 And that can be done in the context of basic.

00:07:07 But to do things that had moving graphics,

00:07:09 there were only the most limited things

00:07:11 you could possibly do.

00:07:12 You could maybe do breakout or pong

00:07:14 or that sort of thing in low resolution graphics.

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

00:07:20 that I was kind of fond of was on the Apple II computers,

00:07:25 they had a mode called low resolution graphics

00:07:28 where of course all graphics were low resolution back then,

00:07:31 but regular low resolution graphics,

00:07:34 it was a grid of 40 by 40 pixels normally,

00:07:37 but they could have 16 different colors.

00:07:39 And I wanted to make a game kind of like

00:07:42 the arcade game Vanguard, just a scrolling game.

00:07:44 And I wanted to just kind of have it scroll vertically up.

00:07:47 And I could move a little ship around.

00:07:49 You could manage to do that in basic,

00:07:50 but there’s no way you could redraw the whole screen.

00:07:53 And I remember at the time just coming up

00:07:56 with what felt like a brainstorm to me

00:07:58 where I knew enough about the way the hardware was controlled

00:08:02 where the text screen and the low resolution graphics screen

00:08:05 were basically the same thing.

00:08:06 And all those computers could scroll their text screen

00:08:09 reasonably.

00:08:10 You could do a listing and it would scroll things up.

00:08:12 And I figured out that I could kind of tweak just a couple

00:08:16 things that I barely understood to put it into a graphics mode

00:08:19 and I could draw graphics and then I could just

00:08:21 do a line feed at the very bottom of the screen.

00:08:24 And then the system would scroll it all up

00:08:26 using an assembly language routine

00:08:28 that I didn’t know how to write back then.

00:08:30 So that was like this first great hack

00:08:33 that sort of had analogs later on in my career

00:08:36 for a lot of different things.

00:08:37 So I found out that I could draw a screen.

00:08:39 I could do a line feed at the bottom.

00:08:40 It would scroll it up once.

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

00:08:44 And that was my first way to kind of scroll

00:08:47 the screen, which was interesting in that that played

00:08:50 a big part later on in the id Software days as well.

00:08:53 So do efficient drawing where you

00:08:57 don’t have to draw the whole screen,

00:08:59 but you draw from the bottom using

00:09:01 the thing that was designed in the hardware for text output.

00:09:04 Yeah.

00:09:05 Where so much of, until recently,

00:09:08 game design was limited by what you could actually

00:09:12 get the computer to do.

00:09:13 Where it’s easy to say, OK, I want to scroll the screen.

00:09:16 You just redraw the entire screen at a slight offset.

00:09:19 And nowadays, that works just fine.

00:09:21 Computers are ludicrously fast.

00:09:24 But up until a decade ago or so, there

00:09:28 were all these things everybody wanted to do.

00:09:30 But if they knew enough programming

00:09:31 to be able to make it happen, it would happen too slow

00:09:34 to be a good experience.

00:09:36 Either just ridiculously slow or just slow enough

00:09:39 that it wasn’t fun to experience it like that.

00:09:42 So much of the first couple of decades of the programming work

00:09:45 that I did was largely figuring out

00:09:47 how to do something that everybody

00:09:49 knows how they want it to happen.

00:09:51 It just has to happen 2 to 10 times faster

00:09:54 than the straightforward way of doing things

00:09:57 would make it happen.

00:09:58 And it’s different now because at this point, lots of things

00:10:02 you can just do in the most naive possible way,

00:10:05 and it still works out.

00:10:06 You don’t have nearly the creative limitations

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

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

00:10:14 But I do generally, I’m not going

00:10:16 to do the angry old man shaking my fist at the clouds bit

00:10:20 where back in my day, programmers

00:10:21 had to do real programming.

00:10:23 It’s amazing that you can just pick an idea

00:10:26 and go do it right now.

00:10:27 And you don’t have to be some assembly language wizard

00:10:30 or deep GPU arcanist to be able to figure out

00:10:33 how to make your wishes happen.

00:10:35 Well, there’s still, see, that’s true.

00:10:38 But let me put on my old man with a fist hat

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

00:10:45 still requires you to operate at the limits

00:10:48 of the current system.

00:10:49 So we’ll probably talk about this.

00:10:51 But if you talk about building the metaverse

00:10:54 and building a VR experience that’s compelling,

00:10:57 it probably requires you to not, to go to assembly

00:11:01 or maybe not literally, but sort of spiritually

00:11:05 to go to the limits of what the system is capable of.

00:11:08 And that really was why virtual reality

00:11:10 was specifically interesting to me

00:11:13 where it had all the ties to,

00:11:15 you could say that even back in the early days,

00:11:17 I have some old magazine articles

00:11:19 that’s talking about Doom as a virtual reality experience

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

00:11:25 So you could say that we’ve been trying to build

00:11:27 those virtual experiences from the very beginning.

00:11:29 And in the modern era of virtual reality,

00:11:32 especially on the mobile side of things,

00:11:34 when it’s standalone and you’re basically using

00:11:36 a cell phone chip to be able to produce

00:11:39 these very immersive experiences,

00:11:41 it does require work.

00:11:43 It’s not at the level of what an old school

00:11:45 console game programmer would have operated at

00:11:48 where you’re looking at hardware registers

00:11:50 and you’re scheduling all the DMA accesses,

00:11:53 but it is still definitely a different level

00:11:55 than what a web developer or even a PC Steam game developer

00:12:00 usually has to work at.

00:12:01 And again, it’s great.

00:12:02 There’s opportunities for people that wanna operate

00:12:04 at either end of that spectrum there

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

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

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

00:12:19 Your favorite, but also the best.

00:12:22 You’ve seen throughout your career,

00:12:25 you’re considered by many to be

00:12:26 the greatest programmer ever.

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

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

00:12:34 So let me ask you these kind of ridiculous questions

00:12:36 of what’s the best band of all time,

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

00:12:41 Everything has all the caveats about it.

00:12:43 But so what I use, so nowadays I do program

00:12:47 a reasonable amount of Python for AI, ML sorts of work.

00:12:52 I’m not a native Python programmer.

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

00:12:57 I understand what it’s good for.

00:12:58 But you don’t dream in Python.

00:13:00 I do not.

00:13:00 And it has some of those things

00:13:02 where there’s some amazing stats when you say,

00:13:04 if you just start, if you make a loop,

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

00:13:10 you can be thousands to potentially a million times slower

00:13:14 than a proper GPU tensor operation.

00:13:17 And these are staggering numbers.

00:13:19 You can be as much slower as we’ve almost gotten faster

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

00:13:26 So your intuitions about inefficiencies

00:13:28 within the Python sort of…

00:13:30 It keeps hitting me upside the face

00:13:32 where it’s gotten to the point now I understand.

00:13:34 It’s like, okay, you just can’t do a loop

00:13:35 if you care about performance in Python.

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

00:13:41 into some big vector operation

00:13:43 or something that’s going to be done completely

00:13:44 within a C++ library.

00:13:47 But the other hand is it’s amazingly convenient

00:13:49 and you just see stuff that people are able

00:13:52 to cobble together by you just import

00:13:54 a few different things and you can do stuff

00:13:56 that nobody on earth could do 10 years ago.

00:13:58 And you can do it in a little cookbook thing

00:14:00 that you copy paste it out of a website.

00:14:02 So that is really great.

00:14:04 When I’m sitting down to do what I consider

00:14:06 kind of serious programming, it’s still in C++.

00:14:10 And it’s really kind of a C flavored C++ at that

00:14:13 where I’m not big into the modern template

00:14:17 metaprogramming sorts of things.

00:14:18 I see a lot of train wrecks coming from

00:14:21 some of that over abstraction.

00:14:23 I spent a few years really going kind of deep

00:14:26 into the kind of the historical Lisp work

00:14:30 and Haskell and some of the functional programming

00:14:32 sides of things.

00:14:33 And there is a lot of value there

00:14:37 in the way you think about things.

00:14:38 And I changed a lot of the way I write my C and C++ code

00:14:42 based on what I learned about the value

00:14:44 that comes out of not having this random mutable state

00:14:48 that you kind of lose track of.

00:14:50 Because something that many people don’t really appreciate

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

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

00:14:58 it’s the whole lifespan of the program.

00:15:00 And that’s when it’s not necessarily just

00:15:02 how fast you wrote it or how fast it operates,

00:15:05 but it’s how can it bend and adapt

00:15:07 as situations change.

00:15:09 And then the thing that I’ve really been learning

00:15:11 in my time at Meta with the Oculus and VR work

00:15:14 is it’s also how well it hands off

00:15:16 between the continuous kind of revolving door of programmers

00:15:19 taking over maintenance and different things

00:15:21 and how you get people up to speed in different areas.

00:15:24 And there’s all these other different aspects of it.

00:15:27 So C++ is a good language for handover between engineers.

00:15:32 Probably not the best.

00:15:34 And there’s some really interesting aspects to this

00:15:36 where in some cases languages

00:15:39 that are not generally thought well of for many reasons,

00:15:43 like C is derided pretty broadly that yes,

00:15:46 obviously all of these security flaws

00:15:48 that happen with the memory and unsafeness

00:15:50 and buffer overruns and the things that you’ve got there,

00:15:53 but there is this underappreciated aspect

00:15:56 to the language is so simple, anyone can go.

00:15:59 And if you know C, you can generally jump in someplace

00:16:03 and not have to learn what paradigms they’re using

00:16:06 because there just aren’t that many available.

00:16:08 I think there’s some really, really well written C code.

00:16:12 Like I find it great that if I’m messing around

00:16:15 with something in open BSD say,

00:16:17 I mean, I can be walking around in the kernel

00:16:19 and I’m like, I understand everything that’s going on here.

00:16:22 It’s not hard for me to figure out what I need to do

00:16:25 to make whatever change that I need to

00:16:29 while you can have more significant languages.

00:16:32 Like it’s a downside of Lisp

00:16:34 where I don’t regret the time that I spent with Lisp.

00:16:37 I think that it did help my thinking

00:16:40 about programming in some ways,

00:16:42 but the people that are the biggest defenders of Lisp

00:16:45 are saying how malleable of a language it is

00:16:47 that if you write a huge Lisp program,

00:16:50 you’ve basically invented your own kind of language

00:16:53 and structure because it’s not the primitives

00:16:55 of the language you’re using very much.

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

00:16:59 And then a language like Racket,

00:17:01 kind of one of the more modern Lisp versions,

00:17:03 it’s essentially touted as a language

00:17:05 for building other languages.

00:17:07 And I understand the value of that

00:17:10 for a tiny little project,

00:17:12 but the idea of that for one of these longterm

00:17:14 supported by lots of people kind of horrifies me

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

00:17:20 okay, you can’t touch this code till you educate yourself

00:17:23 on all of these things that we’ve built on top of that.

00:17:26 And it was interesting to see how when Google made Go,

00:17:30 a lot of the criticisms of that are it’s like,

00:17:33 wow, this is not a state of the art language.

00:17:35 This language is just so simple and almost crude.

00:17:38 And you could see the programming language people

00:17:40 just looking down at it.

00:17:41 But it does seem to be quite popular as basically saying,

00:17:45 this is the good things about C,

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

00:17:49 You don’t need to restructure your brain

00:17:52 to write good code in it.

00:17:53 So I wish that I had more opportunity

00:17:56 for doing some work in Go.

00:17:59 Rust is the other modern language that everybody talks about

00:18:02 that I’m not fit to pass judgment on.

00:18:04 I’ve done a little bit beyond Hello World.

00:18:06 I wrote some like video decompression work in Rust

00:18:09 just as an exercise, but that was a few years ago

00:18:12 and I haven’t really used it since.

00:18:15 The best programming language is the one that works generally

00:18:17 that you’re currently using.

00:18:19 Because that’s another trap is in almost every case

00:18:22 I’ve seen when people mixed languages on a project,

00:18:25 that’s a mistake.

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

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

00:18:31 And we have, I get meta, we have a lot of projects

00:18:34 that use kind of React frameworks.

00:18:36 So you’ve got JavaScript here

00:18:37 and then you have C++ for real work.

00:18:40 And then you may have Java interfacing

00:18:42 with some other part of the Android system.

00:18:44 And those are all kind of horrible things.

00:18:47 And that was one thing that I remember talking

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

00:18:54 man, I wish we could have just said,

00:18:56 we’re only hiring C++ programmers.

00:18:59 And he just thought from the Facebook meta perspective,

00:19:02 well, we just wouldn’t be able to find enough.

00:19:05 With the thousands of programmers they’ve got there,

00:19:08 it is not necessarily a dying breed,

00:19:10 but you can sure find a lot more Java

00:19:12 or JavaScript programmers.

00:19:14 And I kind of mentioned that to Elon one time

00:19:17 and he was kind of flabbergasted about that.

00:19:21 It’s like, well, you just,

00:19:22 you go out and you find those programmers

00:19:23 and you don’t hire the other programmers

00:19:25 that don’t do the languages that you wanna use.

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

00:19:29 they’re using JavaScript on a bunch of the SpaceX work

00:19:32 for the UI side of things.

00:19:33 When you go find UI programmers,

00:19:35 they’re JavaScript programmers.

00:19:36 I wonder if that’s because there’s a lot

00:19:38 of JavaScript programmers.

00:19:39 Because I do think that great programmers are rare.

00:19:44 That it’s not, you know, if you just look at statistics

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

00:19:51 that doesn’t tell you the story

00:19:53 of what the great programmers are using.

00:19:55 And so you have to really look at what you were speaking to,

00:19:59 which is the fundamentals of a language.

00:20:00 What does it encourage?

00:20:01 How does it encourage you to think?

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

00:20:05 There is something about C++

00:20:08 that has elements of creativity,

00:20:11 but forces you to be an adult about your programming.

00:20:15 It expects you to be an adult.

00:20:16 It does not force you to.

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

00:20:23 in terms of building large systems

00:20:25 and coming up with interesting solutions,

00:20:27 but at the same time have the sort of the good

00:20:31 software engineering practices that amend themselves

00:20:35 to real world systems.

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

00:20:41 So if we, you know, aliens visit in thousands of years,

00:20:46 and humans are long gone, something tells me

00:20:49 that most of the systems they find will be run by humans.

00:20:53 Will be running JavaScript.

00:20:55 I kind of think that if we’re living in a simulation,

00:20:58 it’s written in JavaScript.

00:21:01 You know, for the longest time, even still,

00:21:05 JavaScript didn’t get any respect,

00:21:08 and yet it runs so much of the world,

00:21:10 and an increasing number of the world.

00:21:12 Is it possible that everything will be written

00:21:15 in JavaScript one day?

00:21:16 So the engineering under JavaScript

00:21:18 is really pretty phenomenal.

00:21:21 The systems that make JavaScript run as fast

00:21:24 as it does right now are kind of miracles

00:21:27 of modern engineering in many ways.

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

00:21:34 for all the things that it’s being used for,

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

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

00:21:45 But I think for a lot of people,

00:21:47 it does reasonably the necessary things.

00:21:50 It’s still a C flavored language.

00:21:52 It’s still a braces and semicolon language.

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

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

00:22:02 I think garbage collection is unequivocally a good thing

00:22:07 for most programs to be written in.

00:22:08 It’s funny that I still, just this morning,

00:22:11 I was seeing a Twitter thread

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

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

00:22:18 You will run into some people that are top notch programmers

00:22:21 that just say, no, this is literally not a good thing.

00:22:24 Oh, because it makes you lazy?

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

00:22:28 And I do disagree.

00:22:29 I think that there is so much objective data

00:22:33 on the vulnerabilities that have happened

00:22:35 in C and C++ programs,

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

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

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

00:22:44 You write enough C code,

00:22:45 you’re going to shoot yourself in the foot.

00:22:47 And garbage collection is a very great thing

00:22:50 for the vast majority of programs.

00:22:51 It’s only when you get into the tightest of real time things

00:22:54 that you start saying, it’s like, no,

00:22:56 the garbage collection has more costs

00:22:58 than it has benefits for me there,

00:22:59 but that’s not 99 plus percent

00:23:02 of all the software in the world.

00:23:04 So JavaScript is not terrible in those ways.

00:23:09 And so much of programming is not the language itself.

00:23:14 It’s the infrastructure around that surrounds it.

00:23:17 All the libraries that you can get

00:23:19 and the different stuff that you can,

00:23:20 ways you can deploy it,

00:23:22 the portability that it gives you.

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

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

00:23:31 the web stack about everything that has to go

00:23:34 when you do something really trivial in JavaScript

00:23:36 and it shows up on a web browser

00:23:38 to kind of X ray through that

00:23:40 and see everything that has to happen

00:23:42 for your one little JavaScript statement

00:23:44 to turn into something visible in your web browser,

00:23:48 it’s very, very disquieting,

00:23:51 just the depth of that stack

00:23:53 and the fact that so few people can even comprehend

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

00:23:59 But it’s again, I have to caution myself

00:24:02 to not be the in the good old days old man about it

00:24:05 because clearly there’s enormous value here.

00:24:08 The world does run on JavaScript

00:24:11 to a pretty good approximation there

00:24:13 and it’s not falling apart.

00:24:14 There’s a bunch of scary stuff

00:24:16 where you look at console logs

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

00:24:20 but it’s still kind of limping along

00:24:22 and nobody really notices.

00:24:24 But so much of my systems design

00:24:28 and systems analysis goes around.

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

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

00:24:36 And it sounds horrible, but in a lot of cases,

00:24:39 you can be a thousand times off your speed of light,

00:24:42 velocity for something and it’s still be okay.

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

00:24:48 the optimal thing in a larger system standpoint

00:24:51 where there’s a lot of things

00:24:52 that you don’t wanna have to parachute in someone like me

00:24:55 to go in and say, make this webpage run

00:24:59 a thousand times faster,

00:25:01 make this web app into a hardcore native application

00:25:05 that starts up in 37 milliseconds

00:25:08 and everything responds in less than one frame latency.

00:25:11 That’s just not necessary.

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

00:25:15 to do software like that,

00:25:16 when they can take somebody right out of a bootcamp

00:25:19 and say, spin up an application for this.

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

00:25:26 And it’s like, that applies in a lot of areas

00:25:29 where it’s kind of interesting how a lot of our appliances

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

00:25:36 sometimes at the expense of robustness in some other ways

00:25:39 or higher costs in other ways

00:25:41 where there’s interesting things

00:25:42 where energy or electricity could become much cheaper

00:25:46 in a future world.

00:25:47 And that could change our engineering trade offs

00:25:49 for the way we build certain things

00:25:50 where you could throw away efficiency

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

00:25:56 I mean, that’s one of the directions

00:25:59 I was considering swerving into was nuclear energy.

00:26:02 When I was kind of like, what do I wanna do next?

00:26:04 It was either gonna be cost effective nuclear fission

00:26:08 or artificial general intelligence.

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

00:26:14 people don’t understand how cheap nuclear fuel is.

00:26:18 And there would be ways that,

00:26:21 you could be a quarter of the efficiency or less,

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

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

00:26:31 So there’s like some of these thoughts

00:26:32 around like direct fission energy conversion,

00:26:35 fission fragment conversion,

00:26:36 that maybe you build something

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

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

00:26:42 So that applies a lot in programming

00:26:45 where it’s always good to know what you could do.

00:26:49 If you really sat down and took it far,

00:26:52 because sometimes there’s discontinuities

00:26:53 like around user reaction times,

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

00:26:59 operating in one second and 750 milliseconds,

00:27:02 not that huge.

00:27:03 You’ll see it in webpage statistics,

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

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

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

00:27:13 It’s just like doing your bidding instantly

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

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

00:27:19 So sometimes it’s important to really crunch hard

00:27:23 to get over some threshold,

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

00:27:28 for lots of work where it just doesn’t pay

00:27:31 to even go that extra mile.

00:27:33 And there are craftsmen that just don’t wanna buy that

00:27:36 and more power to them.

00:27:37 If somebody just wants to say,

00:27:39 no, I’m going to be, my pride is in my work,

00:27:42 I’m never going to do something

00:27:44 that’s not as good as I could possibly make it,

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

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

00:27:53 and you do pick your battles

00:27:55 and you deploy your resources in the play

00:27:57 that’s going to give you the best user value in the end.

00:28:00 Well, if you look at the evolution of life on Earth

00:28:04 as a kind of programming effort,

00:28:10 it seems like efficiency isn’t the thing

00:28:13 that’s being optimized for.

00:28:15 Like natural selection is very inefficient,

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

00:28:21 of adaptations building more and more complex systems

00:28:24 that are more and more intelligent,

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

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

00:28:30 It’s like this giant mess

00:28:33 that things naturally die off if they don’t work

00:28:36 and if they become useful to people,

00:28:39 they kind of naturally live

00:28:40 and then you build this community,

00:28:42 large community of people that are generating code

00:28:45 and some code is sticky, some is not

00:28:48 and nobody knows the inefficiencies or the efficiencies

00:28:52 or the breaking points, like how reliable this code is

00:28:54 and you kind of just run it, assume it works

00:28:57 and then get unpleasantly surprised

00:29:00 and then that’s very kind of the evolutionary process.

00:29:03 So that’s a really good analogy

00:29:04 and we can go a lot of places with that

00:29:06 where in the earliest days of programming,

00:29:09 when you had finite, you could count the bytes

00:29:11 that you had to work on this,

00:29:13 you had all the kind of hackers playing code golf

00:29:15 to be one less instruction

00:29:17 than the other person’s multiply routine

00:29:19 to kind of get through and it was so perfectly crafted.

00:29:22 It was a crystal piece of artwork when you had a program

00:29:26 because there just were not that many,

00:29:28 you couldn’t afford to be lazy in different ways

00:29:31 and in many ways I see that as akin to the symbolic AI work

00:29:34 where again, if you did not have the resources to just say,

00:29:38 well, we’re gonna do billions and billions

00:29:40 of programmable weights here,

00:29:42 you have to turn it down into something

00:29:44 that is symbolic and crafted like that

00:29:47 but that’s definitely not the way DNA and life

00:29:51 and biological evolution and things work.

00:29:55 On the one hand, it’s almost humbling

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

00:30:00 We’ve got a couple of billion base pairs

00:30:02 and it’s like this all fits on a thumb drive for years now

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

00:30:08 You’ve got maybe 50 megabytes

00:30:10 and this is not like Shannon Limit perfectly

00:30:13 information dense conveyances here.

00:30:17 It’s like these are messy codes,

00:30:19 they’re broken up into amino acids.

00:30:21 A lot of them don’t do important things

00:30:23 or they do things in very awkward ways

00:30:26 but it is this process of just accumulation

00:30:29 on top of things and you need scale,

00:30:33 both you need scale for the population for that to work out

00:30:36 and in the early days in the 50s and 60s,

00:30:39 the kind of ancient era of computers

00:30:42 where you could count when they say like

00:30:44 when the internet started even in the 70s,

00:30:46 there were like 18 hosts or something on it.

00:30:48 It was this small finite number

00:30:50 and you were still optimizing everything

00:30:52 to be as good as you possibly could be

00:30:54 but now it’s billions and billions of devices

00:30:57 and everything going on and you can have

00:31:00 this very much natural evolution going on

00:31:03 where lots of things are tried,

00:31:06 lots of things are blowing up,

00:31:07 venture capitalists lose their money

00:31:09 when a startup invested in the wrong tech stack

00:31:11 and things completely failed or failed the scale

00:31:14 but good things do come out of it

00:31:17 and it’s interesting to see the mimetic evolution

00:31:21 of the way different things happen

00:31:22 like mentioning hello world at the beginning.

00:31:24 It’s funny how some little thing like that

00:31:26 where everybody, every programmer knows hello world now

00:31:29 and that was a completely arbitrary sort of decision

00:31:32 that just came out of the dominance of Unix and C

00:31:35 and early examples of things like that.

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

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

00:31:44 and win the fitness war for whether it’s mind space

00:31:48 or programming techniques or anything.

00:31:50 Like there’s a site on Stack Exchange called CodeGolf

00:31:54 where people compete to write the shortest possible program

00:31:57 for a particular task in all the different kinds

00:32:00 of languages and it’s really interesting to see

00:32:04 folks kind of, they’re masters of their craft,

00:32:10 really play with the limits of programming languages.

00:32:13 It’s really beautiful to see

00:32:14 and across all the different programming languages,

00:32:17 you get to see some of these weird programming languages

00:32:20 and mainstream ones, difference between Python 2 and 3,

00:32:25 you get to see the difference between C and C++ and Java

00:32:27 and you get to see JavaScript, all of that

00:32:30 and it’s kind of inspiring to see how much depth

00:32:38 of possibility there is within programming languages

00:32:41 that CodeGolf kind of tasks reveal.

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

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

00:32:51 That’s the way to build large systems

00:32:52 but it’s nice to see that the possibility

00:32:54 of creative genius is still within those languages.

00:32:57 It’s laden within those languages.

00:33:00 So given that you are once again,

00:33:03 one of the greatest programmers ever,

00:33:05 what do you think makes a good programmer?

00:33:08 Maybe a good modern programmer.

00:33:10 So I just gave a long rant slash lecture at Meta

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

00:33:20 everything that we’re doing really should flow

00:33:23 from user value, all the good things that we’re doing.

00:33:26 It’s like, we’re not technical people.

00:33:28 It’s like, you shouldn’t be taking pride

00:33:30 just in the specific thing.

00:33:32 Like CodeGolf is the sort of thing, it’s a fun puzzle game

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

00:33:38 It’s like, we’re solving problems for people

00:33:40 or we’re providing entertainment to people.

00:33:41 We’re doing something of value to people

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

00:33:46 So we wanna be providing a net value

00:33:49 over what they could be doing

00:33:51 but instead they’re choosing to use our products.

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

00:33:56 but I fundamentally do think that’s how you make

00:33:59 the world a better place.

00:34:00 If you have given more value to people

00:34:02 than it took you and your team to create,

00:34:05 then the world’s a better place.

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

00:34:10 chosen to use your product

00:34:11 and their life feels better for that.

00:34:13 And if you’ve produced that economically,

00:34:16 that’s a really good thing.

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

00:34:22 you’ve just kind of shoveled a lot of cash

00:34:24 into a wood chipper there

00:34:25 and you should maybe not feel so good

00:34:28 about what you’re doing.

00:34:29 So being proud about like a specific architecture

00:34:33 or a specific technology or a specific code sequence

00:34:36 that you’ve done, it’s great to get a little smile

00:34:39 like a tiny little dopamine hit for that

00:34:41 but the top level metrics should be

00:34:43 that you’re building things of value.

00:34:45 Now you can get into the argument about how you,

00:34:48 what is user value?

00:34:49 How do you actually quantify that?

00:34:51 And there can be big arguments about that

00:34:53 but it’s easy to be able to say,

00:34:55 okay, this pissed off user there is not getting value

00:34:57 from what you’re doing.

00:34:59 This user over there with the big smile on their face,

00:35:01 the moment of delight when something happened,

00:35:04 there’s a value that’s happened there.

00:35:05 I mean, you have to at least accept

00:35:07 that there is a concept of user value

00:35:09 even if you have trouble exactly quantifying it,

00:35:12 you can usually make relative arguments about it.

00:35:15 Well, this was better than this, we’ve improved things.

00:35:18 So being a servant to the user is your job

00:35:23 when you’re a developer, you wanna be producing something

00:35:26 that other people are gonna find valuable.

00:35:30 And if you are technically inclined

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

00:35:35 to be able to make a design that’s going to produce

00:35:39 the most value for the least amount of effort.

00:35:41 And it always has to be kind of divided,

00:35:44 there’s a ratio there where you,

00:35:45 it’s a problem at the big tech companies,

00:35:48 whether it’s Meta Google, Apple, Microsoft, Amazon,

00:35:52 companies that have almost infinite money.

00:35:55 I mean, I know their CFO will complain

00:35:57 that it’s not infinite money

00:35:58 but from most developers standpoints

00:36:00 it really does feel like it.

00:36:02 And it’s almost counterintuitive

00:36:04 that if you’re working hard as a developer on something,

00:36:07 there’s always this thought,

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

00:36:12 more megahertz, then my product will be better.

00:36:16 And that sense that at certain points, it’s certainly true

00:36:19 that if you are really hamstrung by this,

00:36:22 removing an obstacle will make a better product,

00:36:25 make more value.

00:36:26 But if you’re not making your core design decisions

00:36:30 in this fiercely competitive way

00:36:33 where you’re saying feature A or feature B,

00:36:35 you can’t just say, let’s do both.

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

00:36:41 You’re just saying, well, they both seem good.

00:36:43 I don’t wanna necessarily have to pick out

00:36:45 which one is better or how much better

00:36:47 and tell team B that, sorry, we’re not gonna do this

00:36:51 because A is more important.

00:36:53 But that notion of always having to really critically value

00:36:57 what you’re doing, your time, the resources you expend,

00:36:59 even the opportunity cost of doing something else,

00:37:02 that’s super important.

00:37:04 Well, let me ask you about the big debates

00:37:07 that you’re mentioning of how to measure value.

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

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

00:37:22 the designer route of imagining

00:37:26 sort of somebody using a thing

00:37:28 and imagining a smile on their face,

00:37:30 imagining the experience of love and joy

00:37:34 that you have when you use the thing.

00:37:35 That’s from a design perspective

00:37:37 or if you’re building more like a lower level thing

00:37:40 for like Linux, you imagine a developer

00:37:43 that might come across this and use it

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

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

00:37:52 Is it measurable?

00:37:53 So I imagine like Meta and Google

00:37:57 will probably try to measure the thing.

00:37:58 They’ll try to, it’s like you try to optimize engagement

00:38:01 or something, let’s measure engagement.

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

00:38:05 I mean, I admire the designer ethic of like,

00:38:09 think of a future that’s immeasurable

00:38:13 and you try to make somebody in that future

00:38:15 that’s different from today happy.

00:38:17 So I do usually favor,

00:38:20 if you can get any kind of a metric that’s good,

00:38:23 by all means, listen to the data.

00:38:25 But you can go too far there where we’ve had problems

00:38:28 where it’s like, hey, we had a performance regression

00:38:30 because our fancy new telemetry system

00:38:33 is doing a bazillion file writes

00:38:36 to kind of archive this stuff

00:38:37 because we needed to collect information

00:38:38 to determine if we were doing,

00:38:40 if our plans were good.

00:38:42 So when information is available,

00:38:45 you should never ignore it.

00:38:46 I mean, all of it.

00:38:47 For actual users using the thing,

00:38:49 human beings using the thing,

00:38:51 large number of human beings,

00:38:52 and you get to see sort of a lot of large numbers.

00:38:54 So there’s the zero to one problem

00:38:55 of when you’re doing something really new,

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

00:38:59 But one of the points that I’ve been making at Meta

00:39:02 is we have more than enough users now

00:39:05 that anything somebody wants to try in VR,

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

00:39:10 You do not get to make a completely

00:39:13 greenfield blue sky pitch and say,

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

00:39:18 I challenge everyone.

00:39:20 There are going to be people,

00:39:21 whether it’s working in VR on your,

00:39:24 like on your desktop replacement

00:39:26 or communicating with people in different ways

00:39:29 or playing the games.

00:39:31 There are going to be probably millions of people,

00:39:35 or at least if you pick some tiny niche

00:39:37 that we’re not in right now,

00:39:38 there’s still going to be thousands of people out there

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

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

00:39:46 Don’t invent fictional users.

00:39:47 Don’t make an Alice Bob Charlie

00:39:50 that fits whatever matrix of tendencies

00:39:53 that you want to break the market down to,

00:39:55 because it’s a mistake to think about imaginary users

00:39:58 when you’ve got real users that you could be working with.

00:40:01 But on the other hand,

00:40:03 there is value to having a kind of wholeness

00:40:07 of vision for a product.

00:40:09 And companies like Meta have,

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

00:40:16 like SpaceX or Apple in the Steve Jobs era,

00:40:20 where you have a very powerful leading personality

00:40:23 that can micromanage at a very low level

00:40:26 and can say it’s like, no, that handle needs to be different

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

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

00:40:34 They also burn through a lot of employees

00:40:37 that have horror stories to tell

00:40:39 about working there afterwards.

00:40:41 My position is that you’re at your best

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

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

00:40:49 of everything below them.

00:40:51 And they can have an informed opinion

00:40:53 about everything that’s going on.

00:40:55 And you take somebody, you’ve got to believe

00:40:57 that somebody that has 30, 40 years of experience,

00:41:01 you would hope that they’ve got wisdom

00:41:02 that the just out of bootcamp person contributing

00:41:06 doesn’t have.

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

00:41:09 you probably shouldn’t do it that way

00:41:10 or even just don’t do it that way, do it another way.

00:41:14 So there’s value there,

00:41:15 but it can’t go beyond a certain level.

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

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

00:41:23 about technical things because he was not operating

00:41:25 at that level.

00:41:28 But when it does work and you do get

00:41:30 that kind of passionate leader

00:41:32 that’s thinking about the entire product

00:41:34 and just really deeply cares

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

00:41:39 I think that’s got a lot of value.

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

00:41:42 well, we wanna have these independent teams

00:41:44 that are bubbling up the ideas

00:41:46 because it’s almost it’s anti capitalist

00:41:49 or anti free market to say,

00:41:50 it’s like I want my grand, my great leader

00:41:53 to go ahead and dictate all these points there

00:41:55 where clearly free markets bring up things

00:41:57 that you don’t expect.

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

00:42:01 like it didn’t turn out at all

00:42:03 the way the early people thought

00:42:04 were gonna be the key applications

00:42:06 and things that would not have been approved

00:42:08 by the dark cabal making the decisions

00:42:12 about what gets into the store turn out

00:42:14 to in some cases be extremely successful.

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

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

00:42:22 It’s like, hey, make me VR dictator

00:42:23 and I’ll go in and get shit done.

00:42:25 I am, and that’s just, it’s not in the culture at Meta.

00:42:28 You know, and they understand the trade offs they,

00:42:31 and that’s just not the way,

00:42:32 that’s not the company that they want,

00:42:34 the team that they wanna do.

00:42:37 It’s fascinating because VR and we’ll talk about it more.

00:42:40 It’s still unclear to me

00:42:44 in what way VR will change the world

00:42:46 because it does seem clear that VR

00:42:48 will somehow fundamentally transform this world

00:42:51 and it’s unclear to me how yet.

00:42:54 Let me know when you wanna get into that.

00:42:56 Who will?

00:42:57 Well, hold on a second.

00:42:58 So in the stick to the you being the best programmer ever.

00:43:02 Okay, in the early days when you didn’t have,

00:43:05 when you didn’t have adult responsibilities

00:43:07 of leading teams and all that kind of stuff

00:43:09 and you can focus on just being a programmer,

00:43:13 what did the productive day in the life

00:43:15 of John Carmack look like?

00:43:17 How many hours is the keyboard?

00:43:19 How much sleep?

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

00:43:24 What was it like?

00:43:25 What times did you wake up?

00:43:26 So I was able to be remarkably consistent

00:43:29 about what was good working conditions for me

00:43:32 for a very long time.

00:43:34 I was never one of the programmers

00:43:37 that would do all nighters going through work

00:43:40 for 20 hours straight.

00:43:41 It’s like my brain generally starts turning to mush

00:43:43 after 12 hours or so.

00:43:45 But the hard work is really important

00:43:48 and I would work for decades.

00:43:51 I would work 60 hours a week.

00:43:52 I would work a 10 hour day, six days a week

00:43:55 and try to be productive at that.

00:43:58 Now my schedule shifted around a fair amount

00:44:00 when I was young without any kids

00:44:02 and any other responsibilities.

00:44:04 I was on one of those cycling schedules

00:44:06 where I’d kind of get in an hour later each day

00:44:08 and roll around through the entire time

00:44:11 and I’d wind up kind of pulling in at two or three

00:44:13 in the afternoon sometimes and then working again

00:44:16 past midnight or two in the morning.

00:44:19 And that was, when it was just me trying

00:44:22 to make things happen and I was usually isolated off

00:44:26 in my office, people generally didn’t bother me much at in

00:44:30 and I could get a lot of programming work done that way.

00:44:34 I did settle into a more normal schedule

00:44:36 when I was taking kids to school and things like that.

00:44:39 So kids were the forcing function that got you to wake up

00:44:42 at the same time each day.

00:44:43 It’s not clear to me that there was much of a difference

00:44:46 in the productivity with that where I kind of feel,

00:44:50 if I just get up when I feel like it,

00:44:52 it’s usually a little later each day

00:44:54 but I just recently made the focusing decision

00:44:57 to try to push my schedule back a little bit earlier

00:44:59 to getting up at eight in the morning

00:45:01 and trying to shift things around.

00:45:04 Like I’m often doing experiments with myself

00:45:07 about what should I be doing to be more productive

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

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

00:45:18 I cover like four miles a day and I would usually do that

00:45:22 just as the sun’s going down here in Texas now

00:45:25 and it’s still really damn hot but I’d go out

00:45:27 at 8.30 or something and cover the time there

00:45:31 and then the showering and it was putting a hold in my day

00:45:34 where I would have still a couple hours after that

00:45:36 and sometimes my best hours were at night

00:45:38 when nobody else is around, nobody’s bothering me

00:45:41 but that hole in the day was a problem

00:45:43 so just a couple weeks ago, I made the change

00:45:46 to go ahead and say, all right,

00:45:47 I’m gonna get up a little earlier,

00:45:48 I’m gonna do a walk or get out there first

00:45:51 so I can have more uninterrupted time.

00:45:53 So I’m still playing with factors like this

00:45:55 as I kind of optimize my work efforts

00:45:59 but it’s always been, it was 60 hours a week

00:46:03 for a very long time.

00:46:04 To some degree, I had a little thing in the back of my head

00:46:06 where I was almost jealous of some of the programmers

00:46:08 that would do these marathon sessions

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

00:46:13 he would be one of those people

00:46:14 that would fall asleep under his desk sometimes

00:46:16 and all the kind of classic hacker tropes about things

00:46:19 and a part of me was like always a little bothered

00:46:22 that that wasn’t me, that I wouldn’t go program

00:46:25 20 hours straight because I’m falling apart

00:46:28 and not being very effective after 12 hours.

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

00:46:32 that’s fine when you’re doing that

00:46:34 but it never, you’re not doing smart work much after,

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

00:46:40 I mean, that’s something that a lot of people

00:46:41 don’t really get in their gut

00:46:43 where there are people that work on four hours of sleep

00:46:46 and are smart and can continue to do good work

00:46:48 but then there’s a lot of people that just fall apart.

00:46:51 So I do tell people that I always try

00:46:54 to get eight hours of sleep.

00:46:55 It’s not this, you know, push yourself harder,

00:46:58 get up earlier, I just do worse work

00:47:00 where, you know, you can work a hundred hours a week

00:47:04 and still get eight hours of sleep

00:47:05 if you just kind of prioritize things correctly

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

00:47:12 There was a comment that a game dev made

00:47:14 that I know there’s a backlash against really hard work

00:47:18 in a lot of cases and I get into online arguments

00:47:21 about this all the time but he was basically saying,

00:47:24 yeah, 40 hours a week, that’s kind of a part time job

00:47:27 and if you were really in it,

00:47:29 you’re doing what you think is important,

00:47:31 what you’re passionate about, working more gets more done

00:47:34 and it’s just really not possible to argue with that

00:47:39 if you’ve been around the people

00:47:40 that work with that level of intensity

00:47:42 and just say, it’s like, no, they should just stop.

00:47:45 And we had, I kind of came back around to that

00:47:49 a couple of years ago where I was using

00:47:51 the fictional example of, all right, some people say,

00:47:55 they’ll say with a straight face, they think, no,

00:47:57 you are less productive if you work

00:47:59 more than 40 hours a week.

00:48:01 And they’re generally misinterpreting things

00:48:03 where your marginal productivity for an hour

00:48:05 after eight hours is less than in one of your peak hours

00:48:08 but you’re not literally getting less done.

00:48:11 There is a point where you start breaking things

00:48:13 and getting worse behavior and everything out of it

00:48:16 where you’re literally going backwards

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

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

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

00:48:27 to crash into Earth, destroy all of human life.

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

00:48:34 that are building the interceptor

00:48:35 that’s going to deflect the asteroid,

00:48:38 do you want them to clock out at five

00:48:40 because damn it, they’re just gonna go do worse work

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

00:48:44 And it seems absurd.

00:48:47 And that’s a hypothetical though

00:48:48 and everyone can dismiss that.

00:48:49 But then when coronavirus was hitting

00:48:52 and you have all of these medical personnel

00:48:54 that are clearly pushing themselves really, really hard

00:48:58 and I’d say, it’s like, okay,

00:48:59 do you want all of these scientists working on treatments

00:49:03 and vaccines and caring for all of these people?

00:49:05 Are they really screwing everything up

00:49:07 by working more than eight hours a day?

00:49:09 And of course people say, I’m just an asshole

00:49:11 to say something like that, but it’s the truth.

00:49:15 Working longer gets more done.

00:49:17 Well, so that’s kind of the layer one.

00:49:20 But I’d like to also say that,

00:49:22 at least I believe, depending on the person,

00:49:25 depending on the task, working more and harder

00:49:30 will make you better for the next week

00:49:35 in those peak hours.

00:49:37 So there’s something about a deep dedication to a thing

00:49:42 that kind of gets deep in you.

00:49:44 So the hard work isn’t just about the raw hours

00:49:48 of productivity, it’s the thing it does to you

00:49:54 in the weeks and months after too.

00:49:56 You’re tempering yourself in some ways.

00:49:59 And I think, it’s like Jiro dreams of sushi.

00:50:01 If you really dedicate yourself completely

00:50:03 to making the sushi, to really putting in the long hours,

00:50:08 day after day after day, you become a true craftsman

00:50:12 of the thing you’re doing.

00:50:14 Now there’s, of course, discussions about

00:50:16 are you sacrificing a lot of personal relationships?

00:50:18 Are you sacrificing a lot of other possible things

00:50:21 you could do with that time?

00:50:22 But if you’re talking about purely being a master

00:50:28 or a craftsman of your art,

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

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

00:50:37 Yeah, and I don’t gainsay anybody

00:50:38 that wants to work the minimum amount.

00:50:41 They’ve got other priorities in their life.

00:50:42 My only argument that I’m making,

00:50:44 it’s not that everybody should work hard,

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

00:50:49 working longer and harder

00:50:50 is the path to getting it accomplished.

00:50:53 Well, let me ask you about this then,

00:50:56 the mythical work life balance.

00:51:01 For an engineer, it seems like

00:51:03 that’s one of the professions for a programmer

00:51:07 where working hard does lead to greater productivity in it.

00:51:12 But it also raises the question of

00:51:17 sort of personal relationships and all that kind of stuff,

00:51:19 family, and how are you able to find work life balance?

00:51:24 Is there advice you can give,

00:51:25 maybe even outside of yourself?

00:51:27 Have you been able to arrive at any wisdom

00:51:29 on this part in your years of life?

00:51:32 I do think that there’s a wide range of people

00:51:34 where different people have different needs.

00:51:36 It’s not a one size fits all.

00:51:38 I am certainly what works for me.

00:51:40 I can tell enough that I’m different

00:51:45 than a typical average person

00:51:46 in the way things impact me,

00:51:48 the things that I want to do,

00:51:50 my goals are different,

00:51:51 and sort of the levers to impact things are different,

00:51:55 where I have literally never felt burnout,

00:51:59 and I know there’s lots of brilliant, smart people

00:52:02 that do world leading work that get burned out,

00:52:05 and it’s never hit me.

00:52:08 I’ve never been at a point where I’m like,

00:52:11 I just don’t care about this.

00:52:13 I don’t want to do this anymore.

00:52:14 But I’ve always had the flexibility

00:52:16 to work on lots of interesting things.

00:52:18 I can always just turn my gaze to something else

00:52:21 and have a great time working on that.

00:52:23 And so much of the ability to actually work hard

00:52:27 is the ability to have multiple things to choose from

00:52:29 and to use your time on the most appropriate thing.

00:52:33 There are time periods where it’s the best time

00:52:36 for me to read a new research paper

00:52:38 that I need to really be thinking hard about it.

00:52:41 Then there’s a time that maybe I should just scan

00:52:43 and organize my old notes

00:52:44 because I’m just not on top of things.

00:52:47 Then there’s the time that,

00:52:48 all right, let’s go bang out a few hundred lines of code

00:52:51 for something.

00:52:52 So switching between them has been real valuable.

00:52:57 So you’ll always have kind of joy in your heart

00:52:59 for all the things you’re doing,

00:53:01 and that is a kind of work life balance

00:53:03 as a first sort of step.

00:53:04 Yeah, I do. So you’re always happy.

00:53:06 I do.

00:53:07 Well, happy.

00:53:08 Yeah, I mean, that’s like a lot of people would say

00:53:10 that often I look like kind of a grim person,

00:53:12 you know, with just sitting there with a neutral expression

00:53:15 or even like knitted brows and a frown on my face

00:53:17 as I’m staring at something.

00:53:18 That’s what happiness looks like for you.

00:53:20 Yeah, it’s kind of true where that it’s like,

00:53:24 okay, I’m pushing through this, I’m making progress here.

00:53:27 I know that doesn’t work for everyone.

00:53:30 I know it doesn’t work for most people.

00:53:33 But what I am always trying to do in those cases

00:53:35 is I don’t want to let somebody

00:53:37 that might be a person like that be told by someone else

00:53:40 that no, don’t even try that out as an option

00:53:44 where work life balance versus kind of your life’s work

00:53:48 where there’s a small subset of the people

00:53:51 that can be very happy being obsessive about things.

00:53:55 And, you know, obsession can often get things done

00:53:58 that just practical, prudent, pedestrian work won’t

00:54:03 or at least won’t for a very long time.

00:54:05 There’s legends of your nutritional intake

00:54:10 in the early days.

00:54:11 What can you say about sort of as a, you know,

00:54:15 being a programmer as a kind of athlete?

00:54:17 So what was the nutrition that fueled?

00:54:21 I have never been that great on really paying attention

00:54:25 to it where I’m good enough that I don’t eat a lot.

00:54:29 You know, I’ve never been like a big heavy guy,

00:54:31 but it was interesting where one of the things

00:54:34 that I can remember being an unhappy teenager,

00:54:36 not having enough money and like,

00:54:38 one of the things that bothered me

00:54:40 about not having enough money

00:54:41 is I couldn’t buy pizza whenever I wanted to.

00:54:43 So I got rich and then I bought a whole lot of pizza.

00:54:46 So that was defining, like, that’s what being rich felt like.

00:54:50 A lot of the little things, like I could buy all the pizza

00:54:52 and comic books and video games that I wanted to.

00:54:55 And it really didn’t take that much,

00:54:58 but the pizza was one of those things

00:55:00 that it’s absolutely true that for a long time

00:55:03 at id Software, I had a pizza delivered every single day.

00:55:06 You know, the delivery guy knew me by name

00:55:09 and I didn’t find out until years later

00:55:11 that apparently I was such a good customer

00:55:13 that they just never raised the price on me.

00:55:15 And I was using this six year old price for the pizzas

00:55:18 that they were still kind of sending my way every day.

00:55:21 So you were doing eating once a day or were you?

00:55:25 It would be spread out.

00:55:26 You know, you have a few pieces of pizza,

00:55:28 you have some more later on

00:55:29 and I’d maybe have something at home.

00:55:31 It was one of the nice things that Facebook Meta

00:55:34 is they feed you quite well.

00:55:36 You get a different, I guess now it’s DoorDash

00:55:39 sorts of things delivered,

00:55:40 but they take care of making sure

00:55:42 that everybody does get well fed.

00:55:44 And I probably had better food those six years

00:55:47 that I was working in the Meta office there

00:55:49 than I used to before.

00:55:51 But it’s worked out okay for me.

00:55:53 My health has always been good.

00:55:55 I get a pretty good amount of exercise

00:55:57 and I don’t eat to excess

00:55:59 and I avoid a lot of other kind of not so good

00:56:02 for you things.

00:56:03 So I’m still doing quite well at my age.

00:56:05 Did you have a kind of, I don’t know,

00:56:10 spiritual experience with food or coffee

00:56:13 or any of that kind of stuff?

00:56:15 I mean, you know, the programming experience,

00:56:17 you know, with music or like I listen to brown noise

00:56:21 on a program or like creating an environment

00:56:24 and the things you take into your body,

00:56:26 just everything you construct

00:56:27 can become a kind of ritual

00:56:29 that empowers the whole process, the programming.

00:56:32 Did you have that relationship with pizza or?

00:56:34 It would really be with Diet Coke.

00:56:35 I mean, there still is that sense of, you know,

00:56:38 drop the can down, crack open the can of Diet Coke.

00:56:40 All right, now I mean business.

00:56:41 We’re getting to work here.

00:56:44 Still to this day?

00:56:45 Yeah.

00:56:45 Is Diet Coke still a part of it?

00:56:46 Yeah, probably eight or nine a day.

00:56:49 Nice.

00:56:50 Okay, what about your setup?

00:56:52 How many screens?

00:56:53 What kind of keyboard?

00:56:55 Is there something interesting?

00:56:56 What kind of IDE, Emacs Vim or something modern?

00:57:02 Linux, what operating system laptop

00:57:04 or any interesting thing that brings you joy?

00:57:06 So I kind of migrated cultures

00:57:09 where early on through all of game dev,

00:57:11 there was sort of one culture there,

00:57:13 which was really quite distinct

00:57:14 from the more the Silicon Valley venture,

00:57:17 you know, culture for things.

00:57:19 They’re different groups

00:57:20 and they have pretty different mores

00:57:21 and the way they think about things where,

00:57:24 and I still do think a lot of the big companies

00:57:26 can learn things from the hardcore game development

00:57:30 side of things where it still boggles my mind

00:57:32 how hostile to debuggers and IDEs that so much of them,

00:57:39 the kind of big money, get billions of dollars,

00:57:41 Silicon Valley venture backed funds are.

00:57:44 Oh, that’s interesting.

00:57:45 Sorry, so you’re saying like big companies

00:57:48 like Google and Meta are hostile to?

00:57:50 They are not big on debuggers and IDEs.

00:57:52 Like so much of it is like Emacs, Vim for things.

00:57:55 And we just assume that debuggers don’t work

00:57:58 most of the time for the systems.

00:58:01 And a lot of this comes from a sort of Linux bias

00:58:03 on a lot of things where I did come up

00:58:06 through the personal computers and then the DOS

00:58:09 and then Windows and it was Borland tools

00:58:14 and then Visual Studio and.

00:58:16 Do you appreciate the buggers?

00:58:18 Very much so.

00:58:19 I mean, a debugger is how you get a view into a system

00:58:22 that’s too complicated to understand.

00:58:23 I mean, anybody that thinks just read the code

00:58:25 and think about it.

00:58:26 That’s an insane statement in the,

00:58:28 you can’t even read all the code on a big system.

00:58:31 You have to do experiments on the system

00:58:34 and doing that by adding log statements,

00:58:36 recompiling and rerunning it

00:58:39 is an incredibly inefficient way of doing it.

00:58:41 I mean, yes, you can always get things done

00:58:43 even if you’re working with stone knives and bear skins.

00:58:46 That is the mark of a good programmer

00:58:48 is that given any tools,

00:58:50 you will figure out a way to get it done,

00:58:52 but it’s amazing what you can do

00:58:54 with sometimes much, much better tools

00:58:57 where instead of just going through this iterative

00:58:59 compile run debug cycle,

00:59:02 you have the old Lisp direction of like,

00:59:05 you’ve got a REPL and you’re working interactively

00:59:07 and doing amazing things there.

00:59:08 But in many cases, a debugger

00:59:10 as a very powerful user interface that can stop,

00:59:13 examine all the different things in your program,

00:59:15 set all of these different breakpoints.

00:59:16 And of course you can do that with GDB or whatever there,

00:59:20 but this is one of the user interface

00:59:22 fundamental principles

00:59:23 where when something is complicated to do,

00:59:26 you won’t use it very often.

00:59:28 There’s people that will break out GDB

00:59:30 when they’re at their wits end

00:59:31 and they just have beat their head

00:59:33 against a problem for so long.

00:59:35 But for somebody that kind of grew up in game dev,

00:59:37 it’s like they were running into the debugger anyways

00:59:40 before they even knew there was a problem.

00:59:42 And you would just stop and see what was happening.

00:59:44 And sometimes you could fix things

00:59:46 even before you did one compile cycle.

00:59:50 You could be in the debugger and you would say,

00:59:52 well, I’m just going to change this right here.

00:59:54 And yep, that did the job and fix it and go on.

00:59:57 And for people who don’t know,

00:59:57 GDB is a sort of popular, I guess, Linux debugger

01:00:03 primarily for C++.

01:00:05 They handle most of the languages,

01:00:06 but it’s based on C as the original kind of Unix heritage.

01:00:10 And it’s kind of like command line.

01:00:11 It’s not user friendly.

01:00:13 It doesn’t allow for clean visualizations

01:00:15 and you’re exactly right.

01:00:17 So that you’re using this kind of debugger

01:00:18 usually when you’re at what’s end

01:00:21 and there’s a problem that you can’t figure out why

01:00:23 by just looking at the codes, you have to find it.

01:00:25 That’s how I guess normal programmers use it.

01:00:28 But you’re saying there should be tools

01:00:30 that kind of visualize and help you

01:00:32 as part of the programming process,

01:00:35 just the normal programming process

01:00:37 to understand the code deeper.

01:00:39 Yeah, when I’m working on like my C, C++ code,

01:00:42 I’m always running it from the debugger.

01:00:45 Just I type in the code, I run it many times.

01:00:48 The first thing I do after writing code

01:00:50 is set a break point and step through the function.

01:00:53 Now other people will say, it’s like,

01:00:54 oh, I do that in my head.

01:00:55 Well, your head is a faulty interpreter

01:00:57 of all those things there.

01:00:59 And I’ve written brand new code.

01:01:01 I wanna step in there

01:01:01 and I’m gonna single step through that,

01:01:03 examine lots of things

01:01:04 and see if it’s actually doing what I expected it to.

01:01:08 It is a kind of companion, the debugger.

01:01:12 Like you’re now coding in an interactive way

01:01:14 with another being.

01:01:17 The debugger is a kind of dumb being,

01:01:19 but it’s a reliable being.

01:01:21 That is an interesting question

01:01:22 of what role does AI play in that kind of,

01:01:25 with codecs and these kind of ability to generate code,

01:01:29 that might be, you might start having tools

01:01:32 that understand the code in interesting deep ways

01:01:35 that can work with you.

01:01:37 There’s a whole spectrum there

01:01:39 from static code analyzers and various kind of dynamic tools

01:01:43 there up to AI that can conceivably grok these programs

01:01:46 that literally no human can understand.

01:01:49 They’re too big, too intertwined and too interconnected,

01:01:51 but it’s not beyond the possibility of understanding.

01:01:54 It’s just beyond what we can hold in our heads

01:01:57 as kind of mutable state while we’re working on things.

01:02:00 And I’m a big proponent, again,

01:02:03 of things like static analyzers and some of that stuff

01:02:06 where you’ll find some people that don’t like being scolded

01:02:10 by a program for how they’ve written something

01:02:12 where it’s like, oh, I know better.

01:02:14 And sometimes you do, but that was something

01:02:16 that it was very, very valuable for me

01:02:20 when, and not too many people get an opportunity

01:02:23 like this to have.

01:02:24 This is almost one of those spiritual experiences

01:02:26 as a programmer, an awakening to,

01:02:28 the id software code bases

01:02:30 were a couple of million lines of code.

01:02:32 And at one point I had used a few

01:02:34 of the different analysis tools,

01:02:36 but I made a point to really go through

01:02:39 and scrub the code base using every tool that I could find.

01:02:43 And it was eyeopening where we had a reputation

01:02:45 for having some of the most robust, strongest code,

01:02:48 where there were some great things

01:02:50 that I remember hearing from Microsoft

01:02:52 telling us about crashes on Xbox.

01:02:54 And we had this tiny number that they said

01:02:56 were probably literally hardware errors.

01:02:59 And then you have other significant titles

01:03:01 that just have millions of faults

01:03:03 that are getting recorded all the time.

01:03:04 So I was proud of our code on a lot of levels,

01:03:07 but when I took this code analysis squeegee

01:03:10 through everything, it was shocking

01:03:14 how many errors there were in there.

01:03:16 Things that you can say, okay, this was a copy paste,

01:03:19 not changing something right here.

01:03:21 Lots of things that were, the most common problem

01:03:25 was something in a printf format string

01:03:27 that was the wrong data type that could cause crashes there.

01:03:30 And you really want the warnings for things like that.

01:03:33 Then the next most common was missing a check for null

01:03:36 that could actually happen, that could blow things up.

01:03:38 And those are obviously like top C, C++ things.

01:03:41 Everybody has those problems.

01:03:43 But the long tail of all of the different little things

01:03:46 that could go wrong there, and we had good programmers

01:03:49 and my own code, stuff that I’d be looking at,

01:03:51 it’s like, oh, I wrote that code, that’s definitely wrong.

01:03:53 We’ve been using this for a year

01:03:56 and it’s this submarine, this mine sitting there

01:03:59 waiting for us to step on.

01:04:01 And it was humbling.

01:04:03 It was, and I reached the conclusion

01:04:05 that anything that can be syntactically allowed

01:04:09 in your language, if it’s gonna show up eventually

01:04:13 in a large enough code base,

01:04:15 you’re not gonna, good intentions

01:04:16 aren’t going to keep it from happening.

01:04:18 You need automated tools and guardrails for things.

01:04:21 And those start with things like static types

01:04:24 and or even type hints in the more dynamic languages.

01:04:26 But the people that rebel against that,

01:04:30 that basically say that slows me down doing that.

01:04:33 There’s something to that, I get that.

01:04:35 I’ve written, I’ve cobbled things together in a notebook.

01:04:38 I’m like, wow, this is great that it just happened,

01:04:41 but yeah, that’s kind of sketchy,

01:04:42 but it’s working fine, I don’t care.

01:04:44 It does come back to that value analysis

01:04:47 where sometimes it’s right to not care.

01:04:49 But when you do care, if it’s going to be something

01:04:52 that’s going to live for years

01:04:53 and it’s gonna have other people working on it,

01:04:56 and it’s gonna be deployed to millions of people,

01:04:59 then you wanna use all of these tools.

01:05:01 You wanna be told it’s like, no,

01:05:02 you’ve screwed up here, here and here.

01:05:04 And that does require kind of an ego check about things

01:05:08 where you have to be open to the fact

01:05:11 that everything that you’re doing

01:05:12 is just littered with flaws.

01:05:14 It’s not that, oh, you occasionally have a bad day.

01:05:16 It’s just whatever stream of code you output,

01:05:19 there is going to be a statistical regularity of things

01:05:21 that you just make mistakes on.

01:05:24 And I do think there’s the whole argument

01:05:27 about test driven design and unit testing

01:05:29 versus kind of analysis and different things.

01:05:33 I am more in favor of the analysis and the stuff

01:05:36 that just like you can’t run your program

01:05:37 until you fix this rather than you can run it

01:05:40 and hopefully a unit test will catch it in some way.

01:05:42 Yeah, in my private code, I have asserts everywhere.

01:05:46 Yeah.

01:05:48 There’s something pleasant to me, pleasurable to me

01:05:52 about sort of the dictatorial rule of like,

01:05:55 this should be true at this point.

01:05:58 And too many times I’ve made mistakes

01:06:03 that shouldn’t have been made.

01:06:05 And I would assume I wouldn’t be the kind of person

01:06:08 that would make that mistake,

01:06:09 but I keep making that mistake.

01:06:10 Therefore, an assert really catches me,

01:06:13 really helps all the time.

01:06:15 So my code, I would say like 10 to 20% of my private code

01:06:19 just for personal use is probably asserts.

01:06:21 And they’re active comments.

01:06:22 That’s one of those things that in theory,

01:06:24 they don’t make any difference to the program.

01:06:27 And if it was all operating the way you expected

01:06:29 it would be, then they will never fire.

01:06:32 But even if you have it right

01:06:34 and you wrote the code right initially,

01:06:36 then circumstances change.

01:06:38 The world outside your program changes.

01:06:40 And in fact, that’s one of the things

01:06:42 where I’m kind of fond in a lot of cases

01:06:45 of static array size declarations,

01:06:47 where I went through this period where it’s like,

01:06:49 okay, now we have general collection classes.

01:06:51 We should just make everything variable

01:06:54 because I had this history of in the early days,

01:06:57 you get doom, which had some fixed limits on it.

01:07:00 Then everybody started making crazier and crazier things.

01:07:02 And they kept bumping up the different limits,

01:07:04 this many lines, this many sectors.

01:07:06 And it seemed like a good idea,

01:07:09 well, we should just make this completely generic.

01:07:10 It can go kind of go up to whatever.

01:07:13 And there’s cases where that’s the right thing to do,

01:07:17 but it also, the other aspect of the world

01:07:19 changing around you is it’s good to be informed

01:07:23 when the world has changed more than you thought it would.

01:07:25 And if you’ve got a continuously growing collection,

01:07:28 you’re never gonna find out.

01:07:29 You might have this quadratic slow down on something

01:07:32 where you thought, oh, I’m only ever gonna have

01:07:34 a handful of these, but something changes

01:07:36 and there’s a new design style.

01:07:38 And all of a sudden you’ve got 10,000 of them.

01:07:40 So I kind of like in many cases, picking a number,

01:07:44 some nice brown power of two number

01:07:47 and setting it up in there and having an assert saying,

01:07:49 it’s like, hey, you hit this limit.

01:07:52 You should probably think are the choices

01:07:54 that you’ve made around all of this still relevant

01:07:56 if somebody’s using 10 times more

01:07:59 than you thought they would.

01:08:00 Yeah, this code was originally written

01:08:02 with this kind of worldview,

01:08:04 with this kind of set of constraints.

01:08:06 You were thinking of the world in this way.

01:08:09 If something breaks, that means you gotta rethink

01:08:11 the initial stuff.

01:08:13 And it’s nice for it to do that.

01:08:16 Is there any stuff like a keyboard or monitors?

01:08:21 I’m a fairly pedestrian on a lot of that

01:08:23 where I did move to triple monitors

01:08:26 like in the last several years ago.

01:08:27 I had been dual monitor for a very long time.

01:08:30 And it was one of those things where probably years later

01:08:34 than I should have, I’m just like, well,

01:08:36 the video cards now generally have three output ports.

01:08:38 I should just put the third monitor up there.

01:08:40 That’s been a pure win.

01:08:41 I’ve been very happy with that.

01:08:44 But no, I don’t have fancy keyboard or mouse

01:08:47 or anything really going on.

01:08:48 The key things is an IDE that has helpful debuggers,

01:08:52 has helpful tools.

01:08:54 So it’s not the Emacs Vim route and then Dicode.

01:08:56 Yeah, so I did spend,

01:08:58 I spent one of my week long retreats where I’m like,

01:09:01 okay, I’m gonna make myself use,

01:09:04 it was actually classic VI,

01:09:05 which I know people will say you should never have done that.

01:09:07 You should have just used Vim directly.

01:09:09 But I gave it the good try.

01:09:11 It’s like, okay, I’m being in kind of classic

01:09:13 Unix developer mode here.

01:09:15 And I worked for a week on it.

01:09:18 I used Anki to like teach myself

01:09:20 the different little key combinations

01:09:22 for things like that.

01:09:23 And in the end, it was just like, all right,

01:09:26 this was kind of like my civil war reenactment phase.

01:09:28 It’s like, I’m going out there doing it

01:09:30 like they used to in the old days.

01:09:31 And it was kind of fun in that regard.

01:09:34 So many people right now.

01:09:35 They’re screaming as they’re listening to this.

01:09:38 So again, the out is that this was not modern Vim,

01:09:41 but still, yes, I was very happy to get back

01:09:44 to my visual studio at the end.

01:09:46 Yeah, I’m actually, I struggle with this a lot

01:09:49 because I use a Kinesis keyboard

01:09:52 and I use Emacs primarily.

01:09:56 And I feel like I can, exactly as you said,

01:09:59 I can understand the code.

01:10:00 I can navigate the code.

01:10:01 There’s a lot of stuff you could build with an Emacs

01:10:03 with using Lisp.

01:10:04 You can customize a lot of things for yourself

01:10:07 to help you introspect the code,

01:10:09 like to help you understand the code

01:10:11 and visualize different aspects of the code.

01:10:13 You can even run debuggers,

01:10:14 but it’s work and the world moves past you

01:10:18 and the better and better ideas are constantly being built.

01:10:21 And that puts a kind of,

01:10:25 I need to take the same kind of retreat

01:10:27 as you’re talking about,

01:10:28 but now I’m still fighting the civil war.

01:10:30 I need to kind of move into the 21st century.

01:10:33 And it does seem like the world is,

01:10:34 or a large chunk of the world is moving

01:10:37 towards visual studio code,

01:10:38 which is kind of interesting to me.

01:10:40 Again, it’s the JavaScript ecosystem on the one hand

01:10:43 and IDs are one of those things

01:10:45 that you want to be infinitely fast.

01:10:47 You want them to just kind of immediately respond.

01:10:50 And like, I mean, heck, I’ve got,

01:10:52 there’s someone I know,

01:10:53 I’m an old school game dev guy

01:10:55 that still uses visual studio six.

01:10:57 And on a modern computer,

01:10:59 everything is just absolutely instant

01:11:01 on something like that,

01:11:02 because it was made to work on a computer

01:11:04 that’s 10,000 or a hundred thousand times slower.

01:11:07 So just everything happens immediately.

01:11:10 And all the modern systems just feel,

01:11:13 they feel so crufty when it’s like,

01:11:15 oh, why is this refreshing the screen

01:11:17 and moving around and updating over here?

01:11:19 And something blinks down there

01:11:20 and you should update this.

01:11:21 And there are things that we’ve lost

01:11:25 with that incredible flexibility,

01:11:27 but lots of people get tons of value from it.

01:11:31 And I am super happy that that seems to be winning

01:11:33 over even a lot of the old Vim and Emacs people

01:11:36 that they’re kind of like,

01:11:37 hey, visual studio codes, maybe not so bad.

01:11:40 I am, that may be the final peacekeeping solution

01:11:43 where everybody is reasonably happy

01:11:45 with something like that.

01:11:47 So can you explain what a dot plan file is

01:11:50 and what role that played in your life?

01:11:53 Does it still continue to play a role?

01:11:55 Back in the early, early days of id Software,

01:11:58 one of our big things that was unique with what we did

01:12:01 is I had adopted next stations

01:12:04 or kind of next step systems

01:12:05 from Steve Jobs’s out in the woods away from Apple company.

01:12:11 And they were basically, it was kind of interesting

01:12:15 because I did not really have a background

01:12:17 with the Unix system.

01:12:18 So many of the people they get immersed in that in college

01:12:21 and that sets a lot of cultural expectations for them.

01:12:27 And I didn’t have any of that,

01:12:29 but I knew that my background was,

01:12:31 I was a huge Apple II fan boy.

01:12:34 I was always a little suspicious of the Mac.

01:12:36 I was not really what kind of I wanted to go with.

01:12:41 But when Steve Jobs left Apple and started Next,

01:12:44 this computer did just seem like one of those amazing things

01:12:46 from the future where it had all of this cool stuff in it.

01:12:50 And we were still back in those days working on DOS,

01:12:53 everything blew up.

01:12:54 You had reset buttons

01:12:55 because your computer would just freeze.

01:12:56 If you’re doing development work,

01:12:58 literally dozens of times a day,

01:12:59 your computer was just rebooting constantly.

01:13:02 And so this idea of, yes, any of the Unix workstations

01:13:06 would have given a stable development platform

01:13:08 where you don’t crash and reboot all the time.

01:13:11 But Next also had this really amazing graphical interface

01:13:15 and it was great for building tools.

01:13:17 And it used Objective C as kind of an interesting dead end

01:13:22 for things like that.

01:13:23 So Next was Unix based, it said Objective C.

01:13:26 So it has a lot of the elements.

01:13:27 That became Mac.

01:13:28 I mean, the kind of reverse acquisition of Apple by Next

01:13:31 where that took over

01:13:32 and became what the modern Mac system is.

01:13:35 And to find some of the developer,

01:13:38 like the tools and the whole community.

01:13:41 Yeah, you’ve still got,

01:13:42 if you’re programming on Apple stuff now,

01:13:43 there’s still all these NS somethings,

01:13:45 which was originally Next step objects

01:13:47 of different kinds of things.

01:13:49 But one of the aspects of those Unix systems

01:13:52 was they had this notion of a.plan file

01:13:56 where a.file is an invisible file.

01:14:00 Usually in your home directory or something.

01:14:02 And there was a trivial server running

01:14:03 on most Unix systems at the time

01:14:05 that when somebody ran a trivial little command

01:14:09 called finger, you could do finger

01:14:11 and then somebody’s address,

01:14:13 it could be anywhere on the internet

01:14:15 if you were connected correctly.

01:14:16 Then all that server would do was read the.plan file

01:14:20 in that user’s home directory

01:14:22 and then just spit it out to you.

01:14:24 And originally the idea was that could be

01:14:27 whether you’re on vacation, what your current project was.

01:14:30 It’s supposed to be like the plan of what you’re doing.

01:14:32 And people would use it for various purposes,

01:14:35 but all it did was dump that file over

01:14:39 to the terminal of whoever issued the finger command.

01:14:42 And at one point I started just keeping a list

01:14:46 of what I was doing in there,

01:14:48 which would be what I was working on in the day.

01:14:51 And I would have this little syntax.

01:14:53 I kind of got to myself about,

01:14:55 here’s something that I’m working on.

01:14:57 I put a star when I finish it.

01:14:58 I could have a few other little bits of punctuation.

01:15:01 And at the time it was,

01:15:02 it started off as being just like my to do list.

01:15:05 And it would be these trivial, obscure little things

01:15:08 like I fixed something with collision detection code,

01:15:12 made Fireball do something different

01:15:14 and just little one liners that people

01:15:16 that were following the games could kind of decipher.

01:15:20 But I did wind up starting to write much more in depth things.

01:15:24 I would have little notes of thoughts and insights

01:15:28 and then I would eventually start having little essays.

01:15:30 I would sometimes dump into the dot plan files

01:15:33 interspersed with the work logs of things that I was doing.

01:15:36 So in some ways it was like a super early proto blog

01:15:39 where I was just kind of dumping out what I was working on.

01:15:42 But it was interesting enough that there were a lot

01:15:45 of people that were interested in this.

01:15:48 So most of the people didn’t have Unix workstation.

01:15:51 So there were the websites back in the day

01:15:53 that would follow the Doom and Quake development

01:15:55 that would basically make a little service

01:15:58 that would go grab all the changes

01:15:59 and then people could just get it with a web browser.

01:16:02 And there was a period where like all of the little

01:16:04 kind of Dallas gaming diaspora of people

01:16:07 that were at all in that orbit,

01:16:09 there were a couple dozen plan files going on,

01:16:12 which was, and this was some years before blogging

01:16:15 really became kind of a thing.

01:16:17 And it was kind of a premonition

01:16:20 of sort of the way things would go.

01:16:22 And there was, it’s all been collected.

01:16:25 It’s available online in different places.

01:16:27 And it’s kind of fun to go back and look through

01:16:29 what I was thinking, what I was doing in the different areas.

01:16:32 Have you had a chance to look back?

01:16:33 Is there some interesting, very low level specific

01:16:37 to do items, maybe things you’ve never completed,

01:16:40 all that kind of stuff and high level philosophical essay

01:16:44 type of stuff that stands out?

01:16:46 Yeah, there’s some good stuff on both

01:16:48 where a lot of it was low level nitpicky details

01:16:51 about game dev and I’ve learned enough things

01:16:55 where there’s no project that I worked on

01:16:58 that I couldn’t go back and do a better job on now.

01:17:00 I mean, you just, you learn things,

01:17:02 hopefully if you’re doing it right,

01:17:03 you learn things as you get older

01:17:05 and you should be able to do a better job

01:17:07 at all of the early things.

01:17:08 And there’s stuff in Wolfenstein Doomquake that’s like,

01:17:12 oh, clearly I could go back and do a better job at this,

01:17:15 whether it’s something in the rendering engine side

01:17:17 or how I implemented the monster behaviors

01:17:20 or managed resources or anything like that.

01:17:22 Do you see the flaws in your thinking now?

01:17:24 Like looking back?

01:17:26 Yeah, I do.

01:17:27 I mean, sometimes I’ll get the,

01:17:29 I’ll look at it and say, yeah, I had a pretty clear view

01:17:31 of I was doing good work there.

01:17:33 And I haven’t really hit the point

01:17:35 where there was another programmer, Graham Devine,

01:17:38 who was, he had worked at ID and Seventh Guest

01:17:41 and he made some comment one time

01:17:43 where he said he looked back at some of his old notes

01:17:45 and he was like, wow, I was really smart back then.

01:17:48 And I don’t hit that so much where,

01:17:52 I mean, I look at it and I always know that,

01:17:54 yeah, there’s all the, you know, with aging,

01:17:56 you get certain changes in how you’re able to work problems,

01:18:00 but all of the problems that I’ve worked,

01:18:02 I’m sure that I could do a better job on all of them.

01:18:06 Oh, wow.

01:18:07 So you can still step right in.

01:18:08 If you could travel back in time and talk to that guy,

01:18:10 you would teach him a few things.

01:18:12 Yeah, absolutely.

01:18:14 That’s awesome.

01:18:15 What about the high level philosophical stuff?

01:18:18 Is there some insights that stand out that you remember?

01:18:20 There’s things that I was understanding about development

01:18:25 and, you know, in the industry and so on

01:18:28 that were in a more primitive stage

01:18:31 where I definitely learned a lot more in the later years

01:18:36 about business and organization and team structure.

01:18:41 There were, I mean, there were definitely things

01:18:44 that I was not the best person

01:18:46 or even a very good person about managing,

01:18:48 like how a team should operate internally,

01:18:51 how people should work together.

01:18:53 I was just, you know, just get out of my way

01:18:57 and let me work on the code and do this.

01:18:59 And more and more, I’ve learned how,

01:19:03 in the larger scheme of things,

01:19:04 how sometimes relatively unimportant

01:19:07 some of those things are,

01:19:08 where it is this user value generation

01:19:11 that’s the overarching importance for all of that.

01:19:14 And I didn’t necessarily have my eye on that ball correctly

01:19:17 through a lot of my, you know, my earlier years.

01:19:21 And there’s things that, you know,

01:19:23 I could have gotten more out of people

01:19:25 handling things in different ways.

01:19:27 I am, you know, I could have made, you know,

01:19:29 in some ways more successful products

01:19:32 by following things in different ways.

01:19:33 There’s mistakes that we made

01:19:35 that we couldn’t really have known

01:19:37 how things would have worked out,

01:19:38 but it was interesting to see in later years companies

01:19:41 like Activision showing that,

01:19:42 hey, you really can just do the same game,

01:19:44 make it better every year.

01:19:46 And you can look at that from a negative standpoint

01:19:48 and say, it’s like, oh, that’s just being derivative

01:19:50 and all that.

01:19:51 But if you step back again and say, it’s like, no,

01:19:53 are the people buying it still enjoying it?

01:19:55 Are they enjoying it more

01:19:56 than what they might have bought otherwise?

01:19:59 And you can say, no, that’s actually

01:20:00 a great value creation engine to do that

01:20:03 if you’re in a position where you can.

01:20:05 I, you know, don’t be forced into reinventing everything

01:20:09 just because you think that you need to.

01:20:12 You know, lots of things about business and team stuff

01:20:15 that could be done better, but the technical work,

01:20:18 the kind of technical visionary type stuff

01:20:20 that I laid out, I still feel pretty good about.

01:20:23 There are some classic old ones about my defending

01:20:26 of OpenGL versus D3D,

01:20:29 which turned out to be one of the more

01:20:32 probably important momentous things there

01:20:34 where it never, it was always a rear guard action on Windows

01:20:38 where Microsoft was just not gonna let that win.

01:20:42 But when I look back on it now,

01:20:44 that fight to keep OpenGL relevant

01:20:46 for a number of years there

01:20:48 meant that OpenGL was there when mobile started happening

01:20:52 and OpenGL ES was the thing that drove

01:20:55 all of the acceleration of the mobile industry.

01:20:58 And it’s really only in the last few years

01:21:00 as Apple’s moved to Metal

01:21:02 and some of the other companies have moved to Vulkan

01:21:04 that that’s moved away.

01:21:06 But really stepping back and looking at it,

01:21:09 it’s like, yeah, I sold tens of millions of games

01:21:11 for different things.

01:21:13 But billions and billions of devices wound up

01:21:17 with an appropriate capable graphics API

01:21:21 due in no small part to me thinking

01:21:23 that that was really important

01:21:25 that we not just give up and use Microsoft’s

01:21:30 at that time really terrible API.

01:21:32 The thing about Microsoft is the APIs don’t stay terrible.

01:21:35 They were terrible at the start, but a few versions on,

01:21:38 they were actually quite good.

01:21:40 And there was a completely fair argument to be made

01:21:42 that by the time DX9 was out,

01:21:45 it was probably a better programming environment

01:21:47 than OpenGL, but it was still a wonderful good thing

01:21:51 that we had an open standard

01:21:52 that could show up on Linux and Android and iOS

01:21:55 and eventually WebGL still to this day.

01:21:58 So that was one, that would be on my greatest hits list

01:22:02 of things that I kind of pushed with.

01:22:04 The impact it had on billions of devices, yes.

01:22:07 So let’s talk about it.

01:22:08 Can you tell the origin story of id Software?

01:22:12 Again, one of the greatest game developer companies ever.

01:22:16 It created Wolfenstein 3D games

01:22:18 that defined my life also in many ways

01:22:22 as a thing that made me realize

01:22:24 what computers are capable of in terms of graphics,

01:22:26 in terms of performance, it just unlocked something deep

01:22:31 in me and understanding what these machines are all about

01:22:34 as games can do that.

01:22:35 So Wolfenstein 3D, Doom, Quake,

01:22:37 and just all the incredible engineering innovation

01:22:40 that went into that.

01:22:41 So how did it all start?

01:22:44 So I’ll caveat upfront

01:22:45 that I usually don’t consider myself the historian

01:22:49 of the software side of things.

01:22:51 I usually do kind of point people at John Romero

01:22:55 for stories about the early days where I’ve never been,

01:23:00 like I’ve commented that I’m a remarkably

01:23:01 unsentimental person in some ways

01:23:03 where I don’t really spend a lot of time

01:23:05 unless I’m explicitly prodded to go back

01:23:07 and think about the early days of things.

01:23:10 And I didn’t necessarily make the effort

01:23:14 to archive everything exactly in my brain.

01:23:17 And the more that I work on machine learning and AI

01:23:19 and the aspects of memory

01:23:20 and how when you go back and polish certain things,

01:23:23 it’s not necessarily exactly the way it happened.

01:23:25 But having said all of that, from my view,

01:23:29 the way everything happened that led up to that was

01:23:34 after I was an adult

01:23:36 and kind of taking a few college classes

01:23:38 and deciding to drop out, I was doing,

01:23:40 I was hardscrabble contract programming work,

01:23:43 really struggling to kind of keep groceries

01:23:46 and pay my rent and things.

01:23:48 And the company that I was doing the most work for

01:23:50 was a company called Softdisk Publishing,

01:23:53 which had the sounds bizarre now business model

01:23:57 of monthly subscription software.

01:23:59 Before there was an internet that people could connect to

01:24:02 and get software, you would pay a certain amount

01:24:05 and every month they would send you a disc

01:24:07 that had some random software on it.

01:24:09 And people that were into computers

01:24:11 thought this was kind of cool.

01:24:12 And they had different ones for the Apple II,

01:24:14 the 2GS, the PC, the Mac, the Amiga,

01:24:18 lots of different things here.

01:24:20 So quirky little business,

01:24:21 but I was doing a lot of contract programming for them

01:24:24 where I’d write tiny little games

01:24:26 and sell them for 300, $500.

01:24:29 And one of the things that I was doing again

01:24:32 to keep my head above water here was

01:24:35 I decided that I could make one program

01:24:38 and I could port it to multiple systems.

01:24:41 So I would write a game like Dark Designs or Catacombs

01:24:44 and I would develop it on the Apple II, the 2GS

01:24:47 and the IBM PC, which apparently was the thing

01:24:51 that really kind of piqued the attention

01:24:54 of the people working down there.

01:24:56 Like Jay Wilbur was my primary editor

01:24:58 and Tom Hall was a secondary editor.

01:25:01 And they kept asking me, it’s like,

01:25:02 hey, you should come down and work for us here.

01:25:06 And I pushed it off a couple of times

01:25:08 because I was really enjoying my freedom

01:25:10 of kind of being off on my own.

01:25:11 Even if I was barely getting by, I loved it.

01:25:14 I was doing nothing but programming all day,

01:25:17 but I did have enough close scrapes with like,

01:25:20 damn, I’m just really out of money

01:25:21 that maybe I should get an actual job

01:25:25 rather than contracting these kind of one at a time things.

01:25:27 And Jay Wilbur was great.

01:25:29 He was like FedExing me the checks when I would need them.

01:25:32 I had to kind of get over whatever hump I was at.

01:25:35 So I took the, I finally took them up on their offer

01:25:38 to come down to Shreveport, Louisiana.

01:25:41 I was in Kansas city at the time,

01:25:43 drove down to through the Ozarks and everything

01:25:47 down to Louisiana and saw the soft disk offices,

01:25:51 went through, talked to a bunch of people,

01:25:53 met the people I had been working with remotely

01:25:56 at that time.

01:25:57 But the most important thing for me

01:25:59 was I met two programmers there,

01:26:01 John Romero and Lane Roth that for the first time ever,

01:26:04 I had met programmers that knew more cool stuff than I did

01:26:08 where the world was just different back then.

01:26:11 I was in Kansas city.

01:26:12 It was one of those smartest kid in the school

01:26:14 does all the computer stuff.

01:26:15 The teachers don’t have anything to teach him.

01:26:18 But all I had to learn from was these few books

01:26:20 at the library.

01:26:21 It was not much at all.

01:26:23 And there were some aspects of programming

01:26:25 that were kind of black magic to me.

01:26:27 Like, it’s like, oh, he knows how to format a track on,

01:26:30 I am on a low level drive programming interface.

01:26:34 And this was, I was still not at all sure

01:26:37 I was gonna take the job,

01:26:38 but I met these awesome programmers

01:26:40 that were doing cool stuff.

01:26:42 And Romero had worked at Origin Systems

01:26:44 and he had done like, so many different games ahead of time

01:26:49 that I did kind of quickly decide,

01:26:50 it’s like, yeah, I’ll go take the job down there.

01:26:53 And I settled down there, moved in

01:26:57 and started working on more little projects.

01:26:59 And the first kind of big change that happened down there

01:27:03 was the company wanted to make a gaming focused,

01:27:05 a PC gaming focused subscription.

01:27:08 Just like all their other,

01:27:09 it was the same formula that they used for everything.

01:27:11 Pay a monthly fee and you’ll get a disc

01:27:14 with one or two games just every month

01:27:16 and no choice in what you get, but we think it’ll be fun.

01:27:19 And that was the model they were comfortable with

01:27:21 and they said, all right,

01:27:22 we’re gonna start this gamers edge department.

01:27:25 And all of us that were interested in that,

01:27:27 like me, Romero, Tom Hall was kind of helping us

01:27:31 from his side of things, Jay would peek in

01:27:34 and we had a few other programmers working with us

01:27:37 at the time.

01:27:38 And we were going to just start making games,

01:27:41 just the same model.

01:27:43 And we dived in and it was fantastic.

01:27:45 Do you have to make new games?

01:27:47 Every month.

01:27:48 Every month.

01:27:49 Yeah.

01:27:50 And this, in retrospect, looking back at it,

01:27:52 that sense that I had done all this contract programming

01:27:55 and John Romero had done like far more of this

01:27:58 where he had done one of his teaching himself efforts

01:28:00 was he made a game for every letter of the alphabet.

01:28:03 It’s that sense of like,

01:28:04 I’m just gonna go make 26 different games,

01:28:06 give them a different theme.

01:28:07 And you learn so much when you go through

01:28:10 and you crank these things out

01:28:12 like on a biweekly, monthly basis,

01:28:14 something like that. From start to finish.

01:28:16 It’s not like just an idea.

01:28:17 It’s not just from the very beginning to the very end.

01:28:21 It’s done.

01:28:22 It has to be done.

01:28:24 There’s no delaying.

01:28:25 It’s done.

01:28:26 And you’ve got deadlines.

01:28:26 And that kind of rapid iteration pressure cooker environment

01:28:32 was super important for all of us developing the skills

01:28:35 that brought us to where we eventually went to.

01:28:38 I mean, people would say like,

01:28:39 like in the history of the Beatles,

01:28:41 like it wasn’t them being the Beatles.

01:28:43 It was them playing all of these other early works

01:28:46 that that opportunity to craft all of their skills

01:28:48 before they were famous,

01:28:49 that was very critical to their later successes.

01:28:53 And I think there’s a lot of that here

01:28:54 where we did these games that nobody remembers,

01:28:58 lots of little things that contributed

01:29:00 to building up the skillset for the things

01:29:02 that eventually did make us famous.

01:29:05 Yeah, Dostoevsky wrote The Gambler.

01:29:08 I had to write it in a month, just to make money.

01:29:12 And nobody remembers that probably

01:29:14 because he had to figure out,

01:29:15 because it’s literally,

01:29:17 he didn’t have enough time to write it fast enough.

01:29:21 So he had to come up with hacks.

01:29:23 Literally,

01:29:23 it again comes down to that point

01:29:25 where pressure and limitation of resources

01:29:28 is surprisingly important.

01:29:30 And it’s counterintuitive in a lot of ways

01:29:32 where you just think that if you’ve got all the time

01:29:34 in the world and you’ve got all the resources in the world,

01:29:36 of course, you’re gonna get something better.

01:29:38 But sometimes it really does work out

01:29:40 that the innovations, mother necessity,

01:29:44 where you can, or resource constraints,

01:29:46 and you have to do things when you don’t have a choice.

01:29:49 It’s surprising what you can do.

01:29:50 Is there any good games written in that time?

01:29:52 Would you say?

01:29:53 Some of them are still fun to go back and play

01:29:55 where you get the,

01:29:58 they were all about kind of,

01:29:59 the more modern term is game feel,

01:30:01 about how just the exact feel that things,

01:30:04 it’s not the grand strategy of the design,

01:30:06 but how running and jumping and shooting

01:30:08 and those things I feel in the moment.

01:30:11 And some of those are still,

01:30:13 if you sat down on them, you kind of go,

01:30:15 it’s a little bit different.

01:30:16 It doesn’t have the same movement feel,

01:30:17 but you move over and you’re like, bang, jump, bang.

01:30:20 It’s like, hey, that’s kind of cool still.

01:30:23 So you can get lost in the rhythm of the game.

01:30:25 Is that what you mean by feel?

01:30:27 Just like there’s something about it that pulls you in?

01:30:31 Nowadays, again, people talk about compulsion loops

01:30:33 and things where it’s that sense of exactly

01:30:37 what you’re doing, what your fingers are doing

01:30:38 on the keyboard, what your eyes are seeing,

01:30:41 and there are gonna be these sequences of things.

01:30:43 Grab the loot, shoot the monster,

01:30:44 jump over the obstacle, get to the end of the level.

01:30:47 These are eternal aspects of game design in a lot of ways,

01:30:50 but there are better and worse ways to do all of them.

01:30:53 And we did so many of these games

01:30:55 that we got a lot of practice with it.

01:30:58 So one of the kind of weird things

01:31:01 that was happening at this time

01:31:02 is John Romero was getting some strange fan mail.

01:31:06 And back in the days, this was before email.

01:31:09 So we literally got letters sometimes and telling him,

01:31:12 it’s like, oh, I wanna talk to you about your games.

01:31:14 I wanna reach out, different things.

01:31:17 And eventually it turned out

01:31:19 that these were all coming from Scott Miller

01:31:21 at Apogee Software.

01:31:23 And he was reaching out through,

01:31:26 he didn’t think he could contact John directly,

01:31:28 that he would get intercepted.

01:31:29 So he was trying to get him to contact him

01:31:31 through like back channel fan mail,

01:31:34 because he basically was saying,

01:31:35 hey, I’m making all this money on shareware games.

01:31:38 I want you to make shareware games,

01:31:40 because he had seen some of the games

01:31:42 that Romero had done.

01:31:44 And we looked at Scott Miller’s games

01:31:47 and we didn’t think they were very good.

01:31:50 We’re like, that can’t be making the kind of money

01:31:53 that he’s saying he’s making 10 grand or something

01:31:56 off of this game.

01:31:57 And we really thought that he was full of shit,

01:31:59 that it was a lie trying to get him into this.

01:32:03 But so that was kind of going on at one level.

01:32:07 And it was funny the moment when Romero realized

01:32:10 that he had some of these letters pinned up on his wall,

01:32:12 like all of his fans.

01:32:13 And then we noticed that they all had the same return

01:32:15 address with different names on them,

01:32:17 which was a little bit of a two edged sword there.

01:32:19 Trying to figure out the puzzle laid out before him.

01:32:23 Yeah, what happened after I kind of coincident with that

01:32:26 was I was working on a lot of the new technologies

01:32:29 where I was now full on the IBM PC for the first time,

01:32:33 where I was really a long hold out on Apple II forever.

01:32:37 And I loved my Apple II.

01:32:38 It was the computer I always wished I had

01:32:40 when I was growing up.

01:32:41 And when I finally did have one,

01:32:43 I was kind of clinging on to that well past it

01:32:46 sort of good use by day.

01:32:47 Is it the best computer ever made you would you say?

01:32:50 I wouldn’t make judgments like that about it,

01:32:53 but it was positioned in such a way,

01:32:54 especially in the school systems that it impacted

01:32:57 a whole lot of American programmers at least,

01:33:00 where there was programs that the Apple IIs

01:33:02 got into the schools and they had enough capability

01:33:05 that lots of interesting things happened with them.

01:33:08 In Europe, it was different.

01:33:09 You had your Amigas and Ataris and Acorns in the UK

01:33:13 and things that had different things.

01:33:16 But in the United States,

01:33:17 it was probably the Apple II made the most impact

01:33:19 for a lot of programmers of my generation.

01:33:23 But so I was really digging into the IBM

01:33:26 and this was even more so with the total focus

01:33:29 because I had moved to another city

01:33:30 where I didn’t know anybody that I wasn’t working with.

01:33:33 I had a little apartment and then at Softdisk,

01:33:36 again, the things that drew me to it,

01:33:38 I had a couple of programmers that knew more than I did

01:33:42 and they had a library.

01:33:43 They had a set of books and a set of magazines.

01:33:46 They had a couple of years of magazines,

01:33:47 the old Dr. Dobbs journal and all of these magazines

01:33:50 that had information about things.

01:33:53 And so I was just in total immersion mode.

01:33:56 It was eat, breathe, sleep, computer programming,

01:33:59 particularly the IBM for everything that I was doing.

01:34:03 And I was digging into a lot of these

01:34:05 low level hardware details

01:34:06 that people weren’t usually paying attention to,

01:34:08 the way the IBM EGA cards worked, which was fun for me.

01:34:13 I hadn’t had experience with things at that level.

01:34:16 And back then you could get hardware documentation

01:34:19 just down at the register levels.

01:34:21 This is where the CRTC register is.

01:34:23 This is how the color registers work

01:34:25 and how the different things are applied.

01:34:27 And they were designed for a certain reason.

01:34:29 They were designed for an application.

01:34:31 They had an intended use in mind,

01:34:33 but I was starting to look at other ways

01:34:36 that they could perhaps be exploited

01:34:38 that they weren’t initially intended for.

01:34:40 Could you comment on like, first of all, what operating system was there?

01:34:44 What instruction set was it?

01:34:45 Like, what are we talking about?

01:34:48 So this was DOS and x86.

01:34:50 So 16 bit, 8086.

01:34:52 The 286s were there and 386s existed.

01:34:55 They were rare.

01:34:56 We had a couple for our development systems,

01:34:59 but we were still targeting the more broad.

01:35:02 It was all DOS 16 bit.

01:35:04 None of this was kind of DOS extenders and things.

01:35:07 How different is it from the systems of today?

01:35:09 Is it kind of a precursor that’s similar?

01:35:12 Very little.

01:35:13 If you open up command.exe or com on Windows,

01:35:17 you see some of the remnants of all of that,

01:35:19 but it was a different world.

01:35:21 It was the 640K is enough world, and nothing was protected.

01:35:25 It crashed all the time.

01:35:26 You had TSRs or terminate and stay resident hacks

01:35:29 on top of things that would cause configuration problems.

01:35:33 All the hardware was manually configured in your auto exec.

01:35:37 So it was a very different world.

01:35:39 But the code is still the same, similar.

01:35:41 You could still write it.

01:35:42 My earliest code there was written in Pascal.

01:35:44 That was what I had learned at an earlier point.

01:35:47 So between BASIC and C++, there was Pascal.

01:35:51 So when BASIC assembly language, some of my intermediate stuff

01:35:55 was, well, you had to for performance.

01:35:57 BASIC was just too slow.

01:35:58 So most of the work that I was doing

01:36:00 as a contract programmer in my teenage years

01:36:02 was assembly language.

01:36:05 Wait, you wrote games in assembly?

01:36:07 Yeah, complete games in assembly language.

01:36:10 And it’s thousands and thousands of lines

01:36:12 of three letter acronyms for the instructions.

01:36:16 You don’t earn the once again greatest programmer ever label

01:36:21 without being able to write a game in assembly.

01:36:23 OK.

01:36:23 That’s good.

01:36:24 Everybody serious wrote their games in assembly language.

01:36:27 It was kind of a.

01:36:28 Everybody serious.

01:36:28 See what he said?

01:36:29 Everybody serious.

01:36:31 It was an outlier to use Pascal a little bit,

01:36:33 where there was one famous program called wizardry.

01:36:36 It was one of the great early role playing games

01:36:39 that was written in Pascal.

01:36:40 But it was almost nothing used Pascal there.

01:36:43 But I did learn Pascal.

01:36:45 And I remember doing all of my.

01:36:47 To this day, I sketch in data structures.

01:36:49 When I’m thinking about something, I’ll open up a file

01:36:52 and I’ll start writing struct definitions for how

01:36:55 data is going to be laid out.

01:36:56 And Pascal was kind of formative to that

01:36:58 because I remember designing my RPGs in Pascal record

01:37:02 structures and things like that.

01:37:04 And so I had gotten the Pascal compiler for the Apple 2GS

01:37:07 that I could work on.

01:37:08 And the first IBM game that I developed, I did in Pascal.

01:37:12 And that’s actually kind of an interesting story,

01:37:14 again, talking about the constraints and resources

01:37:17 where I had an Apple 2GS.

01:37:19 I didn’t have an IBM PC.

01:37:21 I wanted to port my applications to IBM

01:37:24 because I thought I could make more money on it.

01:37:27 So what I wound up doing is I rented a PC for a week

01:37:31 and bought a copy of Turbo Pascal.

01:37:33 And so I had a hard one week and this was cutting into

01:37:36 what minimal profit margin I had there.

01:37:38 But I had this computer for a week.

01:37:40 I had to get my program ported before I had to return

01:37:43 the PC and that was kind of what the first thing

01:37:46 that I had done on the IBM PC and what led me

01:37:49 to taking the job at Softdisk.

01:37:51 And Turbo Pascal, how’s that different from regular Pascal?

01:37:55 Is it a different compiler or something like that?

01:37:57 It was a product of Borland, which before Microsoft

01:38:00 kind of killed them, they were the hot stuff

01:38:02 developer tools company.

01:38:04 You had Borland, Turbo Pascal and Turbo C

01:38:06 and Prologue, I mean, all the different things.

01:38:09 But what they did was they took a supremely pragmatic

01:38:12 approach of making something useful.

01:38:14 It was one of these great examples where Pascal

01:38:17 was an academic language and you had things like

01:38:20 the UCSDP system that Wizardry was actually written in

01:38:23 that they did manage to make a game with that,

01:38:27 but it was not a super practical system.

01:38:30 While Turbo Pascal was, it was called Turbo

01:38:33 because it was blazingly fast to compile.

01:38:35 I mean, really ridiculously 10 to 20 times faster

01:38:39 than most other compilers at the time.

01:38:41 But it also had very pragmatic access to look,

01:38:44 you can just poke at the hardware in these different ways

01:38:46 and we have libraries that let you do things.

01:38:49 And it was a pretty good, it was a perfectly good way

01:38:51 to write games and this is one of those things

01:38:53 where people have talked about different paths

01:38:56 that computer development could have taken

01:38:58 where C took over the world for reasons

01:39:01 that came out of Unix and eventually Linux.

01:39:05 And that was not a foregone conclusion at all.

01:39:07 And people can make real reasoned rational arguments

01:39:10 that the world might’ve been better

01:39:12 if it had gone a Pascal route.

01:39:14 I’m somewhat agnostic on that where I do know

01:39:17 from experience, it was perfectly good enough to do that.

01:39:21 And it had some fundamental improvements

01:39:23 like it had range checked arrays as an option there,

01:39:26 which could avoid many of C’s real hazards

01:39:29 that happened in a security space.

01:39:31 But C1, they were basically offering it

01:39:33 about the same level of abstraction.

01:39:35 It was a systems programming language, but.

01:39:38 But you said Pascal had a more emphasis on data structures.

01:39:41 I actually, in the tree of languages,

01:39:44 did Pascal come before C?

01:39:48 They were pretty contemporaneous.

01:39:49 So Pascal’s lineage went to Modula 2 and eventually Oberon,

01:39:53 which was another Nicholas word, kind of experimental language.

01:39:58 But they were all good enough at that level.

01:40:01 Now, some of the classic academic oriented Pascals

01:40:04 were just missing fundamental things like, oh, you can’t

01:40:06 access this core system thing because we’re just

01:40:08 using it to teach students.

01:40:10 But Turbo Pascal showed that only modest changes to it

01:40:14 really did make it a completely capable language.

01:40:17 And it had some reasons why you could implement it

01:40:19 as a single pass compiler so it could be way, way faster,

01:40:22 although less scope for optimizations

01:40:24 if you do it that way.

01:40:26 And it did have some range checking options.

01:40:28 It had a little bit better typing capability.

01:40:30 You’d have properly typed enums, sorts of things,

01:40:33 and other stuff that C lacked.

01:40:35 But C was also clearly good enough.

01:40:37 And it wound up with a huge inertia

01:40:39 from the Unix ecosystem and everything that came with that.

01:40:42 Garbage collection?

01:40:43 No, it was not garbage collected.

01:40:45 It’s just the same kind of thing as C.

01:40:46 Same manual.

01:40:47 So you could still have your use after freeze

01:40:49 and all those other problems.

01:40:50 But just getting rid of array overruns,

01:40:53 at least if you were compiled with that debugging option,

01:40:56 certainly would have avoided a lot of problems

01:40:58 and could have a lot of benefits.

01:40:59 But so anyways, that was the next thing.

01:41:01 I had to learn C because C was where it seemed like most

01:41:04 of the things were going.

01:41:07 So I abandoned Pascal and I started working in C.

01:41:09 I started hacking on these hardware things dealing

01:41:11 with the graphics controllers and the EGA systems.

01:41:16 And what we most wanted to do, so at that time

01:41:19 we were sitting in our darkened office

01:41:22 playing all the different console video games.

01:41:24 And we were figuring out what games

01:41:27 do we want to make for our Gamer’s Edge product there.

01:41:30 And so we had one of the first Super Nintendos sitting there.

01:41:34 And we had an older Nintendo looking at all those games.

01:41:37 And the core thing that those consoles did that you just

01:41:40 didn’t get on the PC games was this ability

01:41:42 to have a massive scrolling world where

01:41:45 most of the games that you would make on the PC

01:41:47 and earlier personal computers would be a static screen.

01:41:51 You move little things around on it and you interact like that.

01:41:55 Maybe you go to additional screens as you move.

01:41:58 But arcade games and consoles had this wonderful ability

01:42:01 to just have a big world that you’re slowly

01:42:04 moving your window through.

01:42:06 And that was for those types of games,

01:42:08 that kind of action exploration adventure games,

01:42:10 that was a super, super important thing.

01:42:13 And PC games just didn’t do that.

01:42:16 And what I had come across was a couple

01:42:18 of different techniques for implementing that on the PC.

01:42:22 And they’re not hard, complicated things.

01:42:25 When I explain them now, they’re pretty straightforward.

01:42:28 But just nobody was doing it.

01:42:29 You sound like Einstein describing his five papers

01:42:31 is pretty straightforward.

01:42:33 I understand.

01:42:34 But they’re nevertheless revolutionary.

01:42:35 So side scrolling is a game changer.

01:42:38 Yeah, and scrolling is a genius invention.

01:42:40 It’s either vertical.

01:42:41 And some of the consoles had different limitations

01:42:43 about you could do one but not the other.

01:42:45 And there were similar things going on as advancements,

01:42:48 even in the console space, where you’d have the original Mario

01:42:51 game was just horizontal scrolling.

01:42:54 And then later, Mario games added vertical aspects to it

01:42:57 and different things that you were

01:42:59 doing to explore, kind of expand the capabilities there.

01:43:02 And so much of the early game design for decades

01:43:05 was removing limitations, letting you do things

01:43:08 that you envisioned as a designer,

01:43:10 you wanted the player to experience,

01:43:11 but the hardware just couldn’t really

01:43:14 or you didn’t know how to make it happen.

01:43:16 It felt impossible.

01:43:17 You can imagine that you want to create like this big world

01:43:21 through which you can side scroll,

01:43:23 like through which you can walk.

01:43:26 And then you ask yourself a question,

01:43:28 how do I actually build that in a way that’s

01:43:31 like the latency is low enough, the hardware can actually

01:43:35 deliver that in such a way that it’s a compelling experience.

01:43:38 Yeah, and we knew what we wanted to do

01:43:40 because we were playing all of these console games,

01:43:42 playing all these Nintendo games and arcade games.

01:43:45 Clearly, there was a whole world of awesome things

01:43:47 there that we just couldn’t do on the PC, at least initially.

01:43:51 Because every programmer can tell,

01:43:52 it’s like if you want to scroll, you can just

01:43:54 redraw the whole screen.

01:43:55 But then it turns out, well, you’re

01:43:56 going five frames per second.

01:43:58 That’s not an interactive fun experience.

01:44:01 You want to be going 30 or 60 frames per second or something.

01:44:04 And it just didn’t feel like that was possible.

01:44:06 It felt like the PCs had to get five times faster for you

01:44:10 to make a playable game there.

01:44:12 And interestingly, I wound up with two completely different

01:44:16 solutions for the scrolling problem.

01:44:18 And this is a theme that runs through everything, where

01:44:23 all of these big technical advancements, it turns out

01:44:25 there’s always a couple different ways of doing them.

01:44:28 And it’s not like you found the one true way of doing it.

01:44:31 And we’ll see this as we go into 3D games and things later.

01:44:35 But so the scrolling, the first set of scrolling tricks

01:44:38 that I got was the hardware had this ability to,

01:44:43 you could shift inside the window of memory.

01:44:47 So the EGA cards at the time had 256 kilobytes of memory.

01:44:51 And it was awkwardly set up in this planar format,

01:44:55 where instead of having 256 or 24 million colors,

01:45:00 you had 16 colors, which is four bits.

01:45:03 So you had four bit planes, 64k a piece.

01:45:06 Of course, 64k is a nice round number

01:45:08 for 16 bit addressing.

01:45:10 So your graphics card had a 16 bit window

01:45:13 that you could look at.

01:45:15 And you could tell it to start the video scan out

01:45:17 anywhere inside there.

01:45:19 So there were a couple games that

01:45:21 had taken this approach of you could make a 2 by 2 screen

01:45:23 or a 1 by 4 screen.

01:45:25 And you could do scrolling really easily like that.

01:45:28 You could just lay it all out and just pan around there.

01:45:30 But you just couldn’t make it any bigger

01:45:32 because that’s all the memory that was there.

01:45:35 The first insight to the scrolling that I had

01:45:37 was, well, if we make a screen that’s just one tile larger,

01:45:42 and we usually had tiles that were 16 pixels by 16 pixels,

01:45:45 the little classic Mario block that you run into,

01:45:48 lots of art gets drawn that way.

01:45:50 And your screen is a certain number of tiles.

01:45:52 But if you had one little buffer region outside of that,

01:45:56 you could easily pan around inside that 16 pixel region.

01:45:59 That could be perfectly smooth.

01:46:01 But then what happens if you get to the edge

01:46:04 and you want to keep going?

01:46:05 The first way we did scrolling was

01:46:08 what I called adaptive tile refresh, which was really

01:46:11 just a matter of you get to the edge

01:46:13 and then you go back to the original point

01:46:16 and then only change the tiles that have actually

01:46:19 that are different between where it was.

01:46:21 In most of the games at the time,

01:46:23 if you think about your classic Super Mario Brothers game,

01:46:26 you’ve got big fields of blue sky, long rows

01:46:30 of the same brick texture.

01:46:33 And there’s a lot of commonality.

01:46:34 It’s like a data compression thing.

01:46:36 If you take the screen and you set it down

01:46:38 on top of each other, in general, only about 10%

01:46:42 of the tiles were actually different there.

01:46:45 So this was a way to go ahead and say,

01:46:47 well, I’m going to move it back, and then I’m only

01:46:49 going to change those 10%, 20%, whatever percent tiles there.

01:46:54 And that meant that it was essentially five times faster

01:46:57 than if you were redrawing all of the tiles.

01:46:59 And that worked well enough for us

01:47:01 to do a bunch of these games for Gamer’s Edge.

01:47:04 We had a lot of these scrolling games like Slurred Axe

01:47:07 and Shadow Knights and things like that

01:47:09 that we were cranking out at this high rate that

01:47:11 had this scrolling effect on it.

01:47:13 And it worked well enough.

01:47:14 There were design challenges there

01:47:16 where if you made the worst case,

01:47:18 if you made a checkerboard over the entire screen,

01:47:20 you scroll over one and every single tile changes

01:47:23 and your frame rate’s now five frames per second

01:47:25 because it had to redraw everything.

01:47:27 So the designers had a little bit

01:47:28 that they had to worry about.

01:47:29 They had to make these relatively plain looking

01:47:32 levels, but it was still pretty magical.

01:47:34 It was something that we hadn’t seen before.

01:47:37 And the first thing that we wound up doing with that

01:47:41 was I had just gotten this working,

01:47:43 and Tom Hall was sitting there with me,

01:47:46 and we were looking over at our Super Nintendo on the side

01:47:49 there with Super Mario 3 running.

01:47:52 And we had the technology, we had the tools set up there,

01:47:56 and we stayed up all night.

01:47:57 And we basically cloned the first level

01:47:59 of Super Mario Brothers.

01:48:01 Performance wise as well?

01:48:02 Yeah.

01:48:02 And we had our little character running and jumping in there.

01:48:05 It was close to pixel accurate as far

01:48:09 as all the backgrounds and everything,

01:48:11 but the gaming was just stuff that we cobbled together

01:48:13 from previous games that I had written.

01:48:15 I just really kitbashed the whole thing together

01:48:18 to make this demo.

01:48:19 And that was one of the rare cases

01:48:21 when I said I don’t usually do these all night programming

01:48:24 things.

01:48:24 There’s probably only two memorable ones

01:48:26 that I can think about.

01:48:28 One was the all nighter to go ahead and get

01:48:31 our Dangerous Dave and copyright infringement

01:48:34 is how we titled it.

01:48:35 Because we had a game called Dangerous Dave running around

01:48:38 with a shotgun shooting things, and we were just

01:48:41 taking our most beloved game at the time there, the Super Mario

01:48:44 3, and sticking Dave inside that with this new scrolling

01:48:47 technology that was going perfectly smooth for them

01:48:53 as it ran.

01:48:54 And Tom and I just blearily the next morning left,

01:48:58 and we left a disk on the desk for John Romero and Jay

01:49:02 Wilbur to see and just said, run this.

01:49:05 And we eventually made it back in later in the day,

01:49:08 and it was like they grabbed us and pulled us into the room.

01:49:13 And that was the point where they were like,

01:49:15 we got to do something with this.

01:49:17 We’re going to make a company.

01:49:19 We’re going to go make our own games, where

01:49:21 this was something that we were able to just kind of hit them

01:49:24 with a hammer of an experience like, wow, this

01:49:27 is just like so much cooler than what we thought

01:49:30 was possible there.

01:49:31 And initially, we tried to get Nintendo

01:49:33 to let us make Super Mario 3 on the PC.

01:49:36 That’s really what we wanted to do.

01:49:38 We were like, hey, we can finish this.

01:49:40 It’s line of sight.

01:49:41 This will be great.

01:49:42 And we sent something to Nintendo,

01:49:45 and we heard that it did get looked at in Japan,

01:49:48 and they just weren’t interested in that.

01:49:50 But that’s another one of those life could

01:49:52 have gone a very different way, where

01:49:53 we could have been like Nintendo’s house PC team

01:49:57 at that point.

01:49:58 And define the direction of Wolfenstein and Doom and Quake

01:50:06 could have been a Nintendo creation.

01:50:08 Yeah.

01:50:09 So at the same time that we were just

01:50:11 doing our first scrolling demos, we

01:50:14 reached out to Scott Miller at Apogee and said,

01:50:17 it’s like, hey, we do want to make some games.

01:50:20 These things that you think you want, those are nothing.

01:50:22 What do you see what we can actually do now?

01:50:24 This is going to be amazing.

01:50:26 And he just popped right up and sent a check to us,

01:50:29 where at that point, we still thought

01:50:31 he might be a fraud, that he was just lying about all of this.

01:50:34 But he was totally correct on how much money

01:50:36 he was making with his shareware titles.

01:50:39 And this was his real brainstorm about this,

01:50:43 where shareware was this idea that software

01:50:45 doesn’t have a fixed price.

01:50:47 If you use it, you send out of the goodness of your heart

01:50:49 some money to the creator.

01:50:51 And there were a couple of utilities

01:50:53 that did make some significant success like that.

01:50:55 But for the most part, it didn’t really work.

01:50:58 Now, there wasn’t much software in a pure shareware model

01:51:01 that was successful.

01:51:03 The Apogee innovation was to take something,

01:51:07 call it shareware, split it into three pieces.

01:51:10 You always made a trilogy.

01:51:12 And you would put the first piece out,

01:51:14 but then you buy the whole trilogy

01:51:16 for some shareware amount, which in reality,

01:51:19 it meant that the first part was a demo,

01:51:21 where you kind of like the demo went everywhere for free

01:51:24 and you paid money to get the whole set.

01:51:26 But it was still play to shareware.

01:51:28 And we were happy to have the first one go everywhere.

01:51:31 And it wasn’t a crippled demo, where the first episode

01:51:33 of all these trilogies, it was a real complete game.

01:51:36 And probably 20 times as many people played that part of it,

01:51:39 thought they had a great game, had fond memories of it,

01:51:43 but never paid us a dime.

01:51:45 But enough people were happy with that,

01:51:48 where it was really quite successful.

01:51:50 And these early games that we didn’t think very much of

01:51:53 compared to commercial quality games,

01:51:55 but they were doing really good business,

01:51:57 some fairly crude things.

01:51:59 And people, it was good business.

01:52:01 People enjoyed it.

01:52:02 And it wasn’t like you were taking a crapshoot

01:52:04 on what you were getting.

01:52:05 You just played a third of the experience.

01:52:07 And you loved it enough to hand write out a check

01:52:10 and put it in an envelope and address it and send it out

01:52:13 to Apogee to get the rest of them.

01:52:16 So it was a really pretty feel good business prospect there,

01:52:20 because everybody was happy.

01:52:23 They knew what they were getting when they sent it in.

01:52:26 They would send in fan mail.

01:52:27 If you’re going to the trouble of addressing a letter

01:52:29 and filling out an envelope, you write something in it.

01:52:32 And there were just the literal bags of fan mail

01:52:35 for the shareware games, so people loved them.

01:52:38 I should mention that for you, the definition of wealth

01:52:42 is being able to have pizza whenever you want.

01:52:46 For me, there was a dream that I would play shareware games

01:52:50 over and over, the part that’s free, over and over.

01:52:53 And it was very deeply fulfilling experience.

01:52:56 But I dreamed of a time when I could actually

01:53:00 afford the full experience.

01:53:02 And this is kind of this dreamland beyond the horizon

01:53:05 when you could find out what else is there.

01:53:09 In some sense, even just playing the shareware was,

01:53:14 it’s the limitation of that.

01:53:17 You know, life is limited, eventually we all die.

01:53:21 In that way, shareware was somehow really fulfilling

01:53:26 to have this kind of mysterious thing beyond what’s free

01:53:31 always there.

01:53:32 It’s kind of, I don’t know, maybe it’s because

01:53:35 a part of my childhood is playing shareware games.

01:53:37 That was a really fulfilling experience.

01:53:39 It’s so interesting how that model still brought joy

01:53:43 to so many people.

01:53:44 The 20X people that played it.

01:53:45 I felt very good about that.

01:53:47 I would run into people that would say,

01:53:49 oh, I loved that game that you had early on,

01:53:52 Commander Keen, whatever.

01:53:53 And no, they meant just the first episode

01:53:57 that they got to see everywhere.

01:53:58 That’s me, I played the crap out of Commander Keen.

01:54:01 And that was all good.

01:54:03 Yeah, yeah.

01:54:04 But so we were in this position where Scott Miller

01:54:06 was just fronting us cash, saying, yeah, make a game.

01:54:10 But we did not properly pull the trigger and say,

01:54:14 all right, we’re quitting our jobs.

01:54:16 We were like, we’re gonna do both.

01:54:17 We’re gonna keep working at Softdisk, working on this.

01:54:21 And then we’re going to go ahead and make a new game

01:54:24 for Apogee at the same time.

01:54:27 And this eventually did lead to some legal problems.

01:54:29 And we had trouble.

01:54:31 It all got worked out in the end,

01:54:32 but it was not a good call at the time there.

01:54:35 And your legal mind at the time was not stellar.

01:54:39 You were not thinking in terms of the illegal terms.

01:54:42 No, I definitely wasn’t.

01:54:44 None of us were.

01:54:46 And in hindsight, yeah, it’s like,

01:54:47 how did we think we were gonna get away

01:54:48 with even using our work computers

01:54:51 to write software for our breakaway new company?

01:54:56 It was not a good plan.

01:54:58 How did Commander Keen come to be?

01:55:00 So the design process, we would start from,

01:55:04 we had some idea of what we wanted to do.

01:55:05 We wanted to do a Mario like game.

01:55:08 It was gonna be a side scroller.

01:55:10 It was gonna use the technology.

01:55:11 We had some sense of what it would have to look like

01:55:14 because of the limitations

01:55:15 of this adaptive tile refresh technology.

01:55:17 It had to have fields of relatively constant tiles.

01:55:21 You couldn’t just paint up a background

01:55:23 and then move that around.

01:55:25 The early design or all the design for Commander Keen

01:55:28 really came from Tom Hall,

01:55:30 where he was kind of the main creative mind

01:55:34 for the early id software stuff,

01:55:36 where we had an interesting division of things

01:55:39 where Tom was all creative and design.

01:55:42 I was all programming.

01:55:43 John Romero was an interesting bridge

01:55:45 where he was both a very good programmer

01:55:47 and also a very good designer and artist

01:55:50 and kind of straddled between the areas.

01:55:52 But Commander Keen was very much Tom Hall’s baby.

01:55:55 And he came up with all the design and backstory

01:55:59 for the different things of kind of a mad scientist,

01:56:02 little kid with building a rocket ship

01:56:06 and a zap gun and visiting alien worlds

01:56:09 and doing all of this that the background

01:56:11 that we lay the game inside of.

01:56:13 And there’s not a whole lot to any of these things.

01:56:16 Design for us was always just what we needed to do

01:56:19 to make the game that was gonna be so much fun to play.

01:56:23 And we laid out our first trilogy of games,

01:56:26 the shareware formula, it’s gonna be three pieces.

01:56:29 We make Commander Keen one, two, and three.

01:56:31 And we just really started busting on all that work.

01:56:35 And it went together really quickly.

01:56:37 It was like three months or something

01:56:39 that while we were still making games every month

01:56:41 for Gamer’s Edge, we were sharing technology between that.

01:56:45 I’d write a bunch of code for this

01:56:46 and we’d just kind of use it for both.

01:56:48 Again, not a particularly good idea there

01:56:50 that had consequences for us.

01:56:53 But in three months, we got our first game out

01:56:57 and all of a sudden it was three times as successful

01:57:00 as the most successful thing Apogee had had before.

01:57:03 And we were making like $30,000 a month

01:57:05 immediately from the Commander Keen stuff.

01:57:09 And that was again, a surprise to us.

01:57:11 It was more than we thought that that was gonna make.

01:57:15 And we said, well, we’re gonna certainly roll

01:57:17 into another set of titles from this.

01:57:19 And in that three months, I had come up

01:57:21 with a much better way of doing the scrolling technology

01:57:24 that was not the adaptive tile refresh,

01:57:27 which in some ways was even simpler.

01:57:29 And these things, so many of the great ideas of technology

01:57:33 are things that are back of the envelope designs.

01:57:36 I make this comment about modern machine learning

01:57:38 where all the things that are really important

01:57:40 practically in the last decade are,

01:57:42 each of them fits on the back of an envelope.

01:57:44 There are these simple little things.

01:57:46 They’re not super dense, hard to understand technologies.

01:57:51 And so the second scrolling trick was just a matter of like,

01:57:55 okay, we know we’ve got this 64K window.

01:57:58 And the question was always like,

01:58:00 well, you could make a two by two,

01:58:02 but you can’t go off the edge.

01:58:05 But I finally asked, well, what actually happens

01:58:07 if you just go off the edge?

01:58:09 If you take your start and you say, it’s like,

01:58:12 okay, I can move over, I’m scrolling,

01:58:14 I can move over, I can move down, I’m scrolling.

01:58:16 I get to what should be the bottom of the memory window.

01:58:19 It’s like, well, what if I just keep going?

01:58:21 And I say, I’m gonna start at,

01:58:24 what happens if I start at FFFE

01:58:26 at the very end of the 64K block?

01:58:29 And it turns out it just wraps back around to the top

01:58:32 of the block.

01:58:33 And I’m like, oh, well, this makes everything easy.

01:58:35 You can just scroll the screen everywhere

01:58:37 and all you have to draw is just one new line of tiles,

01:58:40 which everything you expose,

01:58:42 it might be unaligned off various parts

01:58:44 of the screen memory, but it just works.

01:58:48 That no longer had the problem of you had to have fields

01:58:50 of the similar colors because it doesn’t matter

01:58:53 what you’re doing, you could be having

01:58:54 a completely unique world and you’re just drawing

01:58:57 the new strip as it comes on.

01:58:59 But it might be, like you said, unaligned,

01:59:02 so it can be all over the place.

01:59:03 Yes, and it turns out it doesn’t matter.

01:59:04 I would have two page flipped screens,

01:59:06 as long as they didn’t overlap, they moved in series

01:59:09 through this two dimensional window of graphics.

01:59:12 And that was one of those like, well, this is so simple.

01:59:15 This just works, it’s faster,

01:59:19 there it seemed like there was no downside.

01:59:21 Funny thing was, it turned out after we shipped titles

01:59:25 with this, there were what they called super VGA cards,

01:59:29 the cards that would allow higher resolutions

01:59:31 and different features that the standard ones didn’t.

01:59:35 And on some of those cards,

01:59:38 this was a weird compatibility quirk again,

01:59:40 because nobody thought this was not

01:59:41 what it was designed to do.

01:59:43 And some of those cards had more memory.

01:59:45 They had more than just 256K and four planes.

01:59:48 They had 512K or a megabyte.

01:59:51 And on some of those cards, I scroll my window down

01:59:55 and then it goes into uninitialized memory

01:59:57 that actually exists there

01:59:59 rather than wrapping back around at the top.

02:00:01 And then I was in the tough position

02:00:04 of do I have to track every single one of these?

02:00:06 And it was a mad house back then

02:00:07 with there were 20 different video card vendors

02:00:10 with all slightly different implementations

02:00:12 of their nonstandard functionality.

02:00:14 So either I needed to natively program

02:00:17 all of the VGA cards there to map in that memory

02:00:22 and keep scrolling down through all of that,

02:00:24 or I kind of punted and took the easy solution

02:00:27 of when you finally did run to the edge of the screen,

02:00:30 I accepted a hitch and just copied the whole screen up there.

02:00:33 So on some of those cards, it was a compatibility mode.

02:00:38 In the normal ones, when it all worked fine,

02:00:40 everything was just beautifully smooth.

02:00:42 But if you had one of those cards

02:00:43 where it did not wrap the way I wanted it to,

02:00:46 you’d be scrolling around, scrolling around,

02:00:48 and then eventually you’d have a little hitch

02:00:50 where 200 milliseconds or something

02:00:52 that was not super smooth as it froze a little bit.

02:00:56 And this is the binary thing.

02:00:57 Is it one of the standard screens

02:00:59 or is it one of the weird ones, the Super VGA ones?

02:01:02 Yeah. Okay.

02:01:03 And so we would default to,

02:01:04 and I think that was one of those

02:01:05 that changed over the kind of course of deployment

02:01:09 where early on we would have a normal mode

02:01:11 and then you would enable the compatibility flag

02:01:13 if your screen did this crazy flickery thing

02:01:16 when you got to a certain point in the game.

02:01:18 And then later, I think it probably got enabled by default

02:01:21 as just more and more of the cards

02:01:23 kind of did not do exactly the right thing.

02:01:26 And that’s the two edged sword

02:01:27 of doing unconventional things with technology

02:01:30 where you can find something that nobody thought about

02:01:33 doing that kind of scrolling trick

02:01:34 when they set up those cards.

02:01:36 But the fact that nobody thought that was the primary reason

02:01:39 when I was relying on that,

02:01:40 then I wound up being broken on some of the later cards.

02:01:44 Let me take a bit of a tangent,

02:01:45 but ask you about the hacker ethic.

02:01:50 Cause you mentioned shareware.

02:01:51 It’s an interesting world.

02:01:53 The world of people that make money,

02:01:56 the business and the people that build systems,

02:02:00 the engineers.

02:02:02 And what is the hacker ethic?

02:02:05 You’ve been a man of the people

02:02:08 and you’ve embodied at least the part of that ethic.

02:02:12 What does it mean?

02:02:13 What did it mean to you at the time?

02:02:14 What does it mean to you today?

02:02:15 So Steven Levy’s book, Hackers,

02:02:17 was a really formative book for me as a teenager.

02:02:21 I mean, I read it several times

02:02:23 and there was all of the great lore

02:02:26 of the early MIT era of hackers

02:02:28 and ending up at the end with,

02:02:31 it kind of went through the early MIT hackers

02:02:34 and then the Silicon Valley hardware hackers

02:02:36 and then the game hackers in part three.

02:02:39 And at that time as a teenager,

02:02:41 I really was kind of bitter in some ways.

02:02:44 I thought I was born too late.

02:02:46 I thought I missed the window there.

02:02:48 And I really thought I belonged in that third section

02:02:52 of that book with the game hackers.

02:02:53 And they were talking about the Williams at Sierra

02:02:56 and origin systems with Richard Garriott.

02:02:59 And it’s like, I really wanted to be there.

02:03:02 And I knew that was now a few years in the past.

02:03:05 It was not to be,

02:03:08 but the early days, especially the early MIT hacker days,

02:03:12 talking a lot about this sense of the hacker ethic,

02:03:16 that there was this sense that

02:03:17 it was about sharing information, being good,

02:03:20 not keeping it to yourself,

02:03:22 and that it’s not a zero sum game,

02:03:24 that you can share something with another programmer

02:03:28 and it doesn’t take it away from you.

02:03:30 You then have somebody else doing something.

02:03:33 And I also think that there’s an aspect of it

02:03:35 where it’s this ability to take joy

02:03:39 in other people’s accomplishments,

02:03:41 where it’s not the cutthroat bit of like,

02:03:43 I have to be first,

02:03:44 I have to be recognized as the one that did this

02:03:47 in some way,

02:03:48 but being able to see somebody else do something

02:03:51 and say, holy shit, that’s amazing.

02:03:53 And just taking joy in the ability of something amazing

02:03:56 that somebody else does.

02:03:58 And the big thing that I was able to do through ID Software

02:04:03 was this ability to eventually release the source code

02:04:07 for most of our,

02:04:08 like all of our really seminal game titles.

02:04:10 And that was a, it was a stepping stone process

02:04:13 where we were kind of surprised early on

02:04:16 where people were able to hack the existing games.

02:04:20 And of course I had experience with that.

02:04:21 I remember hacking my copies of Ultima.

02:04:23 So I’d give myself 9999 gold and raise my levels

02:04:27 and break out the sector editor.

02:04:29 And so I was familiar with all of that.

02:04:31 So it was just, it was with a smile

02:04:33 when I started to see people doing that to our games,

02:04:35 I am making level editors for Commander Keen

02:04:38 or hacking up Wolfenstein 3D,

02:04:41 but I made the pitch internally

02:04:44 that we should actually release our own tools

02:04:47 for like what we did, what we use to create the games.

02:04:51 And that was a little bit debatable about,

02:04:55 well, will this let other, we’ll give people leg up.

02:04:57 It’s always like,

02:04:58 what’s that gonna mean for the competition?

02:05:00 But the really hard pitch was to actually release

02:05:04 the full source code for the games.

02:05:06 And it was a balancing act with the other people

02:05:10 inside the company where it’s interesting

02:05:13 how the programmers generally did get,

02:05:17 certainly the people that I worked closely with,

02:05:20 they did kind of get that hacker ethic bit

02:05:22 where you wanted to share your code.

02:05:24 You were proud of it.

02:05:25 You wanted other people to take it, do cool things with it.

02:05:28 But interestingly, the broader game industry

02:05:33 is a little more hesitant to embrace that

02:05:36 than like the group of people

02:05:38 that we happen to have at id Software,

02:05:40 where it was always a little interesting to me

02:05:42 seeing how a lot of people in the game modding community

02:05:45 were very possessive of their code.

02:05:47 They did not wanna share their code.

02:05:49 They wanted it to be theirs.

02:05:50 It was their claim to fame.

02:05:52 And that was much more like what we tended to see

02:05:55 with artists where the artists understand something

02:05:58 about credit and wanting it to be known as their work.

02:06:02 And a lot of the game programmers

02:06:05 felt a little bit more like artists

02:06:07 than like hacker programmers,

02:06:08 in that it was about building something

02:06:11 that maybe felt more like art to them

02:06:13 than the more tool based and exploration based

02:06:16 kind of hacking culture side of things.

02:06:19 Yeah, it’s so interesting that this kind of fear

02:06:23 that credit will not be sufficiently attributed to you.

02:06:27 And that’s one of the things that I do bump into a lot

02:06:30 because I try not to go…

02:06:34 I mean, it’s easy for me to say

02:06:35 because so much credit is heaped on me

02:06:37 for the id Software side of things.

02:06:39 But when people come up and they wanna pick a fight

02:06:42 and say, no, it’s like that wasn’t where first person gaming

02:06:45 came from and you can point to some of like things

02:06:48 on obscure titles that I was never aware of

02:06:51 or like the old Playdoh systems

02:06:53 or each personal computer had something that was 3Dish

02:06:57 and moving around.

02:06:58 And I’m happy to say it’s like, no, I mean,

02:07:01 I saw Battlezone and Star Wars in the arcades.

02:07:03 I had seen 3D graphics, I had seen all these things

02:07:06 that are standing on the shoulders of lots of other people.

02:07:09 But sometimes these examples they pull out,

02:07:10 it’s like, no, I didn’t know that existed.

02:07:12 I mean, I had never heard of that before then

02:07:15 that didn’t contribute to what I made,

02:07:17 but there’s plenty of stuff that did.

02:07:19 And I think there’s good cases to be made

02:07:23 that obviously Doom and Quake and Wolfenstein

02:07:26 were formative examples for what everything

02:07:29 that came after that.

02:07:31 But I don’t feel the need to go fight

02:07:34 and say claim primacy or initial invention

02:07:37 of anything like that.

02:07:38 But a lot of people do want to.

02:07:40 I think when you fight for the credit in that way

02:07:43 and it does go against the hacker ethic,

02:07:46 you destroy something fundamental about the culture,

02:07:48 about the community that builds cool stuff.

02:07:51 I think credit ultimately,

02:07:53 so I had this sort of,

02:07:58 there’s a famous wrestler and freestyle wrestling

02:08:00 called Buvai Sarasateeva.

02:08:03 And he always preached that you should just focus

02:08:07 on the art of the wrestling and let people

02:08:12 write your story however they want.

02:08:15 The highest form of the art is just focusing on the art.

02:08:20 And that is something about the hacker ethic

02:08:23 is just focus on building cool stuff,

02:08:26 sharing it with other cool people,

02:08:29 and credit will get assigned correctly

02:08:35 in the long arc of history.

02:08:37 Yeah, and I generally think that’s true.

02:08:39 And you’ve got,

02:08:42 there’s some things, there’s a graphics technique

02:08:44 that got labeled CarMax Reverse.

02:08:46 I am literally named,

02:08:48 and it turned out that I wasn’t the first person

02:08:50 to figure that out.

02:08:51 Most scientific things or mathematical things you wind up,

02:08:54 it’s like, oh, this other person

02:08:56 had actually done that somewhat before.

02:08:58 And then there’s things that get attributed to me

02:09:00 like the inverse square root hack that I actually didn’t do.

02:09:03 I flat out, that wasn’t me.

02:09:04 And it’s like, it’s weird how the memetic power

02:09:07 of the internet, I cannot convince people of that.

02:09:09 You’re like the Mark Twain of programming.

02:09:10 Yes.

02:09:12 Everything just gets attributed to you now,

02:09:14 even though you’ve never sought the credit of things.

02:09:18 But part of the fact of the humility behind that

02:09:21 is what attracts the attributions.

02:09:25 Let’s talk about a game.

02:09:27 I mean, one of the greatest games ever made.

02:09:29 I know you could talk about doing Quake and so on,

02:09:31 but to me, Wolfenstein 3D was like, whoa.

02:09:35 It blew my mind that a world like this could exist.

02:09:38 So how did Wolfenstein 3D come to be

02:09:42 in terms of the programming, in terms of the design,

02:09:44 in terms of some of the memorable technical challenges?

02:09:47 And also, actually just something you haven’t mentioned

02:09:50 is how did these ideas come to be inside your mind,

02:09:58 the adaptive side scrolling,

02:10:00 the solutions to these technical challenges?

02:10:03 So I usually can introspectively pull back

02:10:06 pretty detailed accounts of how technology solutions

02:10:11 and design choices on my part came to be,

02:10:14 where technically we had done two games,

02:10:17 3D games like that before,

02:10:19 where Hover Tank was the first one,

02:10:20 which had flat shaded walls,

02:10:22 but did have the scaled enemies inside it.

02:10:25 And then Catacombs 3D, which had textured walls,

02:10:28 scaled enemies, and some more functionality,

02:10:34 like the disappearing walls and some other stuff.

02:10:37 But what’s really interesting

02:10:38 from a game development standpoint is those games,

02:10:41 Catacombs 3D, Hover Tank, and Wolfenstein,

02:10:45 they literally used the same code

02:10:48 for a lot of the character behavior

02:10:50 that a 2D game that I had made earlier called Catacombs did,

02:10:54 where it was an overhead view game, kind of like Gauntlet,

02:10:56 you’re running around and you can open up doors,

02:10:58 pick up items, basic game stuff.

02:11:01 And the thought was that this exact same game experience

02:11:06 just presented in a different perspective.

02:11:09 It could be literally the same game

02:11:11 just with a different view into it,

02:11:13 would have a dramatically different impact on the players.

02:11:16 So it wasn’t a true 3D,

02:11:20 you’re saying that you could kind of fake it,

02:11:22 you can like scale enemies,

02:11:24 meaning things that are farther away,

02:11:25 you can make them smaller.

02:11:27 So the game was a 2D map,

02:11:29 like all of our games use the same tool for creation.

02:11:33 We use the same map editor for creating Keen as Wolfenstein

02:11:36 and Hover Tank and Catacombs and all this stuff.

02:11:39 So the game was a 2D grid made out of blocks.

02:11:42 And you could say, well, these are walls,

02:11:44 these are where the enemies start,

02:11:45 then they start moving around.

02:11:47 And these early games like Catacombs,

02:11:49 you played it strictly in a 2D view.

02:11:51 It was a scrolling 2D view,

02:11:53 and that was kind of using an adaptive tile refresh

02:11:55 at the time to be able to do something like that.

02:11:58 And then the thought that these early games,

02:12:01 all it did was take the same basic enemy logic,

02:12:04 but instead of seeing it from the God’s eye view on top,

02:12:07 you were inside it and turning from side to side,

02:12:10 yawing your view and moving forwards and backwards

02:12:12 and side to side.

02:12:14 And it’s a striking thing where you always talk about

02:12:17 wanting to isolate and factor changes in values.

02:12:20 And this was one of those most pure cases there

02:12:22 where the rest of the game changed very little.

02:12:25 It was our normal kind of change the colors on something

02:12:27 and draw a different picture for it,

02:12:29 but it’s kind of the same thing.

02:12:30 But the perspective changed in a really fundamental way.

02:12:33 And it was dramatically different.

02:12:36 I can remember the reactions where the artist, Adrian,

02:12:40 that had been drawing the pictures for it.

02:12:42 We had a cool big troll thing in Catacombs 3D,

02:12:45 and we had these walls that you could get a key

02:12:47 and you could make the blocks disappear,

02:12:49 get really simple stuff.

02:12:51 Blocks could either be there or not there.

02:12:52 So our idea of a door was being able to make a set of blocks

02:12:55 just disappear.

02:12:57 And I remember the reaction

02:12:58 where he had drawn these characters

02:13:00 and he was slowly moving around

02:13:01 and like people had no experience with 3D navigation.

02:13:04 It was all still keyboard.

02:13:05 We didn’t even have mice set up at that time,

02:13:08 but slowly moving, going up, picked up a key, go to a wall.

02:13:12 The wall disappears in a little animation

02:13:14 and there’s a monster like right there.

02:13:16 And he practically fell out of his chair.

02:13:18 It was just like, ah!

02:13:19 And games just didn’t do that.

02:13:22 The games were the God’s eye view.

02:13:24 You were a little invested in your little guy.

02:13:26 You can be like happy or sad when things happen,

02:13:29 but you just did not get that kind of startle reaction.

02:13:32 You weren’t inside the game.

02:13:33 Something in the back of your brain,

02:13:35 some reptile brain thing is just going,

02:13:37 oh shit, something just happened.

02:13:39 And that was one of those early points where it’s like,

02:13:42 yeah, this is gonna make a difference.

02:13:44 This is going to be powerful and it’s gonna matter.

02:13:47 Were you able to imagine that in the idea stage or no?

02:13:51 So not that exact thing.

02:13:53 So again, we had cases like the arcade games,

02:13:56 Battle Zone and Star Wars

02:13:58 that you could kind of see a 3D world

02:14:00 and things coming at you and you get some sense of it,

02:14:03 but nothing had done the kind of worlds that we were doing

02:14:06 and the sort of action based things.

02:14:08 3D at the time was really largely

02:14:12 about the simulation thoughts.

02:14:14 And this is something that really

02:14:16 might have trended differently

02:14:18 if not for the id Software approach in the games

02:14:20 where there were flight simulators,

02:14:23 there were driving simulators,

02:14:24 you had like hard drive in and Microsoft flight simulator.

02:14:28 And these were doing 3D and general purpose 3D

02:14:31 in ways that were more flexible

02:14:33 than what we were doing with our games,

02:14:35 but they were looked at as simulations.

02:14:38 They weren’t trying to necessarily be fast or responsive

02:14:42 or letting you do kind of exciting maneuvers

02:14:44 because they were trying to simulate reality

02:14:46 and they were taking their cues from the big systems,

02:14:49 the Evans and Sutherlands and the Silicon Graphics

02:14:51 that were doing things.

02:14:52 But we were taking our cues

02:14:54 from the console and arcade games.

02:14:56 We wanted things that were sort of quarter eaters

02:14:59 that were doing fast paced things

02:15:01 that you could smack you around

02:15:02 rather than just smoothly gliding you from place to place.

02:15:06 So.

02:15:07 Quarter eaters.

02:15:07 Yeah.

02:15:08 And you know, a funny thing is,

02:15:10 so much that that built into us

02:15:12 that Wolfenstein still had lives

02:15:15 and you had like one of the biggest power ups

02:15:16 in all these games like was an extra life

02:15:18 because you started off with three lives

02:15:20 and you lose your lives and then it’s game over

02:15:23 and there weren’t save games in most of this stuff.

02:15:26 It was, it sounds almost crazy to say this,

02:15:28 but it was an innovation in Doom

02:15:30 to not have lives.

02:15:32 You know, you could just play Doom as long as you wanted.

02:15:33 You just restart at the start of the level and why not?

02:15:36 This is like, we aren’t trying to take people’s quarters.

02:15:39 They’ve already paid for the entire game.

02:15:41 We want them to have a good time

02:15:43 and you would have some, you know,

02:15:45 some old timer purists that might think

02:15:47 that there’s something to the epic journey

02:15:48 of making it to the end,

02:15:50 having to restart all the way from the beginning

02:15:52 after a certain number of tries.

02:15:53 But now more fun is had when you just let people

02:15:56 kind of keep trying when they’re stuck

02:15:58 rather than having to go all the way back

02:15:59 and learn different things.

02:16:01 So you’ve recommended the book,

02:16:03 Game Engine Black Book Wolfenstein 3D

02:16:05 for technical exploration of the game.

02:16:07 So looking back 30 years,

02:16:10 what are some memorable technical innovations

02:16:13 that made this perspective shift into this world

02:16:16 that’s so immersive that scares you when a monster appears

02:16:20 or some things you have to solve?

02:16:22 So one of the interesting things

02:16:24 that come back to the theme of deadlines

02:16:26 and resource constraints,

02:16:27 the game Catacombs 3D,

02:16:31 we shipped, we were supposed to be shipping this

02:16:33 for Gamers Edge on a monthly cadence and I had slipped.

02:16:36 I was actually late.

02:16:37 It slipped like six weeks

02:16:39 because this was texture mapped walls

02:16:41 doing stuff that I hadn’t done before.

02:16:44 And at the six week point,

02:16:46 it was still kind of glitchy and buggy.

02:16:48 There were things that I knew that if you had a wall

02:16:51 that was like almost edge on, you could slide over to it

02:16:54 and you could see some things freak out

02:16:56 or vanish or not work.

02:16:57 And I hated that,

02:16:59 but I was up against the wall.

02:17:01 We had to ship the game.

02:17:03 It was still a lot of fun to play.

02:17:04 It was novel, nobody had seen it.

02:17:06 It gave you that startle reflex reaction.

02:17:09 So it was worth shipping,

02:17:11 but it had these things that I knew were kind of flaky

02:17:13 and janky and not what I was really proud of.

02:17:17 So one of the things that I did very differently

02:17:20 in Wolfenstein was I went,

02:17:24 Catacombs used almost a conventional thing

02:17:27 where you had segments that were one dimensional polygons

02:17:30 basically that were clipped and back faced

02:17:33 and done kind of like a very crude 3D engine

02:17:36 from the professionals,

02:17:37 but I wasn’t getting it done right.

02:17:39 I was not doing a good enough job.

02:17:41 I didn’t really have line of sight to fix it right.

02:17:45 There’s stuff that of course I look back,

02:17:46 it’s like, oh, it’s obvious how to do this

02:17:48 and do the math right, do your clipping right,

02:17:51 check all of this, how you handle the precision.

02:17:53 But I did not know how to do that at that time.

02:17:55 Was that the first 3D engine you wrote Catacombs 3D?

02:17:59 Yeah, Hover Tank had been a little bit before that,

02:18:00 but that had the flat shaded walls.

02:18:02 So the texture mapping on the walls

02:18:04 was what was bringing in some of these challenges

02:18:06 that was hard for me

02:18:08 and I couldn’t solve it right at the time.

02:18:11 Can you describe what flat shading is and texture mapping?

02:18:13 So the walls were solid color,

02:18:16 one of 16 colors in Hover Tank.

02:18:19 So that’s easy, it’s fast,

02:18:20 you just draw the solid color for everything.

02:18:23 Texture mapping is what we all see today

02:18:25 where you have an image that is stretched and distorted

02:18:28 onto the walls or the surfaces that you’re working with.

02:18:32 And it was a long time for me to just figure out

02:18:35 how to do that without it distorting in the wrong ways.

02:18:38 And I did not get it all exactly right in Catacombs

02:18:42 and I had these flaws.

02:18:44 So that was important enough to me

02:18:46 that rather than continuing to bang my head on that

02:18:49 when I wasn’t positive I was gonna get it,

02:18:51 I went with a completely different approach

02:18:53 for drawing for figuring out where the walls were

02:18:56 which was a ray casting approach,

02:18:58 which I had done in Catacombs 3D I had a bunch of C code

02:19:02 trying to make this work right and it wasn’t working right.

02:19:05 In Wolfenstein I wound up going to a very small amount

02:19:09 of assembly code.

02:19:11 So in some ways there should be a slower way of doing it

02:19:14 but by making it a smaller amount of work

02:19:16 that I could more tightly optimize it worked out

02:19:19 and Wolfenstein 3D was just absolutely rock solid.

02:19:22 It was nothing glitched in there.

02:19:25 The game just was pretty much flawless through all of that

02:19:28 and I was super proud of that.

02:19:31 But eventually like in the later games

02:19:33 I went back to the more span based things

02:19:35 where I could get more total efficiency

02:19:37 once I really did figure out how to do it.

02:19:40 So there were two sort of key technical things

02:19:42 to Wolfenstein, one was this ray casting approach

02:19:45 which you still to this day you see people go and say

02:19:48 let’s write a ray casting engine

02:19:50 because it’s an understandable way of doing things

02:19:53 that lets you make games very much like that.

02:19:55 So you see ray casters in JavaScript,

02:19:57 ray casters in Python, people that are basically going

02:20:00 and re implementing that approach to taking a tiled world

02:20:04 and casting out into it.

02:20:06 It works pretty well but it’s not the fastest way

02:20:08 of doing it.

02:20:09 Can you describe what ray casting is?

02:20:11 So you start off and you’ve got your screen

02:20:13 which is 320 pixels across at the time

02:20:15 if you haven’t sized down the window for greater speed

02:20:19 and at every pixel there’s gonna be an angle

02:20:22 from you’ve got your position in the world

02:20:24 and you’re going to just run along that angle

02:20:26 and keep going until you hit a block.

02:20:29 So up to 320 times across there

02:20:32 it’s gonna throw a cast array out into the world

02:20:35 from wherever your origin is until it runs into a wall

02:20:38 and then it can figure out exactly where on the wall it hits.

02:20:42 The performance challenge of that is as it’s going out

02:20:45 every block it’s crossing it checks is this a solid wall.

02:20:49 So that means that in like the early Wolfenstein levels

02:20:52 you’re in a small jail cell going out into a small hallway

02:20:55 it’s super efficient for that

02:20:57 because you’re only stepping across three or four blocks

02:21:00 but then if somebody makes a room that covers

02:21:02 our maps were limited to 64 by 64 blocks.

02:21:05 If you made one room that was nothing but walls

02:21:08 at the far space it would go pretty slow

02:21:11 because it would be stepping across 80 tile tests

02:21:14 or something along the way.

02:21:15 By the way the physics of our universe

02:21:17 seems to be competing in this very thing.

02:21:19 So this maps nicely to the actual physics of our world.

02:21:23 Yeah you get like I follow a little bit of something

02:21:25 like Steven Wolfram’s work on interconnected

02:21:28 network information states of that

02:21:30 and that’s it’s beyond what I can have an informed opinion

02:21:34 on but it’s interesting that people are considering

02:21:37 things like that and have things that can back it up.

02:21:42 Yeah there’s whole different sets

02:21:44 of interesting stuff there.

02:21:45 So Wolfenstein 3D had ray casting.

02:21:48 Ray casting and then the other kind of key aspect

02:21:51 was what I called compiled scalers

02:21:53 where the idea of you’d saw this in the earlier

02:21:58 classic arcade games like Space Harrier and stuff

02:22:01 where you would take a picture which is normally drawn

02:22:04 directly on the screen and then if you have the ability

02:22:06 to make it bigger or smaller big chunky pixels

02:22:09 or fizzly small drop sampled pixels.

02:22:12 That’s the fundamental aspect of what our characters

02:22:15 were doing in these 3D games.

02:22:16 You would have it’s just like you might have drawn

02:22:18 a tiny little character but now we can make them

02:22:20 really big and make them really small and move it around.

02:22:23 That was the limited kind of 3D that we had for characters.

02:22:26 To make them turn there were literally

02:22:27 eight different views of them.

02:22:29 You didn’t actually have a 3D model that would rotate.

02:22:31 You just had these cardboard cutouts.

02:22:33 But that was good enough for that startle fight reaction

02:22:36 and it was kind of what we had to deal with there.

02:22:40 So a straightforward approach to do that

02:22:42 you could just write out your doubly nested loop

02:22:44 of you’ve got your stretch factor

02:22:47 and it’s like you’ve got a point,

02:22:48 you stretch by a little bit,

02:22:49 it might be on the same pixel,

02:22:50 it might be on the next pixel,

02:22:51 it might have skipped a pixel.

02:22:53 You can write that out but it’s not gonna be fast enough

02:22:56 where especially you get a character for that

02:22:58 right in your face monster covering

02:23:00 almost the entire screen.

02:23:02 Doing that with a general purpose scaling routine

02:23:05 would have just been much too slow.

02:23:06 It would have worked when they’re small characters

02:23:08 but then it would get slower and slower

02:23:09 as they got closer to you until right at the time

02:23:12 when you most care about having a fast reaction time,

02:23:15 the game would be chunking down.

02:23:17 So the fastest possible way to draw pixels at that time

02:23:22 was to, instead of saying I’ve got a general purpose

02:23:28 version that can handle any scale,

02:23:31 I used a program to make essentially

02:23:35 a hundred or more separate little programs

02:23:37 that was optimized for I will take an image

02:23:40 and I will draw it 12 pixels tall.

02:23:42 I’ll take an image, I’ll draw it 14 pixels tall

02:23:44 up by every two pixels even for that.

02:23:47 So you would have the most optimized code

02:23:50 so that in the normal case

02:23:52 where most of the world is fairly large,

02:23:55 like the pixels are big,

02:23:57 we did not have a lot of memory.

02:23:58 So in most cases that meant that you would load

02:24:01 a pixel color and then you would store it multiple times.

02:24:05 So that was faster than even copying an image

02:24:09 in a normal conventional case

02:24:10 because most of the time the image is expanded.

02:24:13 So instead of doing one read, one write for a simple copy,

02:24:16 you might be doing one read and three or four writes

02:24:19 as it got really big.

02:24:20 And that had the beneficial aspect

02:24:22 of just when you needed the performance most

02:24:24 when things are covering the screen,

02:24:25 it was giving you the most acceleration for that.

02:24:28 By the way, were you able to understand this

02:24:32 through thinking about it or were you testing

02:24:34 like the right speed and like that?

02:24:36 This again comes back to, I can find the antecedents

02:24:40 for things like this.

02:24:41 So back in the Apple II days,

02:24:45 the graphics were essentially single bits at a time.

02:24:49 And if you wanted to make your little spaceship,

02:24:51 if you wanted to make it smoothly go across the world,

02:24:54 if you just took the image and you drew it out

02:24:56 at the next location, you would move by seven pixels

02:24:59 at a time, so it’d go chunk, chunk, chunk.

02:25:01 If you wanted to make it move smoothly,

02:25:03 you actually had to make seven versions of the ship

02:25:05 that were pre shifted.

02:25:07 You could write a program that would shift it dynamically,

02:25:09 but on a one megahertz processor,

02:25:11 that’s not going anywhere fast.

02:25:13 So if you wanted to do a smooth moving fast action game,

02:25:16 you made separate versions of each of these sprites.

02:25:20 Now there were a few more tricks you could pull

02:25:22 that if it still wasn’t fast enough,

02:25:24 you could make a compiled shape

02:25:26 where instead of this program that normally copies an image

02:25:31 and says like, get this byte from here, stored here,

02:25:33 get this byte, store this byte.

02:25:35 If you’ve got the memory space, you could say,

02:25:38 I’m going to write the program

02:25:39 that does nothing but draw this shape.

02:25:41 It’s going to be like,

02:25:43 I’m going to load the immediate value 25,

02:25:46 which is some bit pattern,

02:25:47 and then I’m going to store that at this location.

02:25:51 Rather than loading something from memory

02:25:53 that involved indexing registers and this other slow stuff,

02:25:56 you could go ahead and say,

02:25:57 no, I’m gonna hard code the exact values

02:26:00 of all of the image right into the program.

02:26:02 And this was always a horrible trade off there,

02:26:04 which you didn’t have much memory

02:26:05 and you didn’t have much speed.

02:26:07 But if you had something that you wanted to go really fast,

02:26:09 you could turn it into a program.

02:26:11 And that was, knowing about that technique

02:26:14 is what made me think about some of these unwinding it

02:26:17 for the PC where people that didn’t come

02:26:19 from that background were less likely to think about that.

02:26:23 I mean, there’s some deep parallels

02:26:25 probably to human cognition as well.

02:26:27 There’s something about optimizing and compressing

02:26:34 the processing of a new information

02:26:36 that requires you to predict the possible ways

02:26:39 in which the game or the world might unroll.

02:26:44 And you have something like compiled scaler is always there.

02:26:47 So you have like, like you have a prediction

02:26:51 of how the world will unroll

02:26:52 and you have some kind of optimized data structure

02:26:57 for that prediction.

02:26:58 And then you can modify if the world turns out

02:27:00 to be different, you can modify a slight way.

02:27:02 And as far as building out techniques,

02:27:04 so much of the brain is about the associative context.

02:27:06 You know, they’re just, when you learn something,

02:27:09 it’s in the context of something else

02:27:10 and you can have faint, tiny little hints of things.

02:27:13 And I do think there are some deep things

02:27:16 around like sparse distributed memories and boosting.

02:27:18 That’s like, if you can just be slightly

02:27:20 above the noise floor of having some hint of something,

02:27:23 you can have things refined into pulling the memory back up.

02:27:26 So having a, being a programmer and having a toolbox

02:27:29 of like all of these things that,

02:27:31 things that I did in all of these previous lives

02:27:33 of programming tasks that still matters to me

02:27:36 about how I’m able to pull up some of these things.

02:27:38 Like in that case, it was something I did on the Apple 2

02:27:41 then being relevant for the PC.

02:27:43 And I have still cases when I would,

02:27:46 when I would work on mobile development then be like,

02:27:48 okay, I did something like this back in the doom days,

02:27:51 but now it’s a different environment,

02:27:53 but I have still had that tie.

02:27:55 I can bring it in and I can transform it

02:27:56 into what the world needs right now.

02:27:59 And I do think that’s actually one of the very core things

02:28:01 with human cognition and brain like,

02:28:04 you know, brain like functioning

02:28:06 is finding these ways about you’ve got,

02:28:08 your brain is kind of everything everywhere all at once.

02:28:10 You know, it’s, it is just a set of all of this stuff

02:28:13 that is just fetched back by these queries that go into it.

02:28:16 And they can just be slightly above the noise floor

02:28:18 with a random noise in your neurons and synapses

02:28:21 that are affecting exactly what gets pulled up.

02:28:23 So you’re saying some of these very specific solutions

02:28:26 for different games,

02:28:28 you find that there’s a kernel of a deep idea

02:28:31 that’s generalizable to other, to other things.

02:28:34 Yeah, you can’t predict what it’s going to be,

02:28:36 but that idea of like,

02:28:37 I called out that compiled shaders in the forward

02:28:40 that I wrote for that, the game engine black book,

02:28:43 as you know, this is,

02:28:44 it’s kind of an end point of unrolling code,

02:28:48 but that’s one of those things that thinking about that

02:28:50 and having that in your mind.

02:28:51 And I’m sure there are some programmers

02:28:53 that, you know, hear about that.

02:28:54 Think about it a little bit.

02:28:55 It’s kind of the mind blown moment.

02:28:57 It’s like, oh, you can just turn all of that data into code.

02:29:00 And nowadays, you know, you have instruction cache issues

02:29:03 and that’s not necessarily the best idea,

02:29:05 but there are different,

02:29:07 it’s an idea that has power

02:29:09 and has probably relevance in some other areas.

02:29:11 Maybe it’s in a hardware point of view

02:29:13 that there’s a way you approach building hardware

02:29:15 that has that same,

02:29:16 you don’t even have to think about iterating.

02:29:18 You just bake everything all the way into it in one place.

02:29:22 What is the story of how you came to program Doom?

02:29:25 What are some memorable technical challenges

02:29:27 or innovations within that game?

02:29:29 So the path that we went after Wolfenstein got out

02:29:33 and we were on this crazy arc

02:29:35 where Keen one through three, more success than we thought,

02:29:38 Keen four through six, even more success,

02:29:41 Wolfenstein even more success.

02:29:42 So we were on this crazy trajectory for things.

02:29:46 So actually our first box commercial project

02:29:48 was the Commander Keen game,

02:29:50 but then Wolfenstein was going to have a game called

02:29:52 Spear of Destiny, which was a commercial version,

02:29:55 60 new levels.

02:29:57 So the rest of the team took the game engine

02:29:59 pretty much as it was and started working on that.

02:30:02 We got new monsters,

02:30:03 but it’s basically reskins of the things there.

02:30:07 And there’s a really interesting aspect about that

02:30:09 that I didn’t appreciate until much, much later

02:30:12 about how Wolfenstein clearly did tap out its limit

02:30:16 about what you want to play,

02:30:18 all the levels and a couple of our license things.

02:30:21 There was a hard creative wall

02:30:24 that you did not really benefit much

02:30:25 by continuing to beat on it.

02:30:27 But a game like Doom and other more modern games

02:30:31 like Minecraft or something,

02:30:33 there’s kind of a Turing completeness level

02:30:35 of design freedom that you get in games

02:30:37 that Wolfenstein clearly sat on one side of.

02:30:40 All the creative people in the world

02:30:42 could not go and do a masterpiece

02:30:43 just with the technology that Wolfenstein had.

02:30:46 Wolfenstein could do Wolfenstein,

02:30:48 but you really couldn’t do something crazy and different.

02:30:50 But it didn’t take that much more capability

02:30:53 to get to Wolfenstein with the freeform lines

02:30:56 and a little bit more artistic freedom

02:30:58 to get to the point where people still announce

02:31:00 new Doom levels today, all these years after

02:31:03 without having completely tapped out the creativity.

02:31:06 How did you put it?

02:31:07 Turing complete?

02:31:08 Yeah, Turing complete design space.

02:31:10 Design space.

02:31:11 Where it’s like, you know,

02:31:11 we have the kind of computational universality

02:31:14 on a lot of things and how different

02:31:16 subsurface work. For creativity.

02:31:17 But yeah, there’s things where a box can be too small,

02:31:20 but above a certain point,

02:31:22 you kind of are at the point where you really have

02:31:26 almost unbounded creative ability there.

02:31:28 And Doom was the first time you crossed that line.

02:31:31 Yeah, where there were thousands of Doom levels created,

02:31:35 and some of them still have something new and interesting

02:31:37 to say to the world about it.

02:31:38 Is that line, can you introspect what that line was?

02:31:43 Is it in the design space?

02:31:44 Is it something about the programming capabilities

02:31:48 that you were able to add to the game?

02:31:50 So the graphics fidelity was a necessary part

02:31:54 because the block limitations in Wolfenstein,

02:31:57 what we had right there was not enough.

02:32:00 The full scale blocks, although Minecraft really did show

02:32:04 that perhaps blocks stacked in 3D

02:32:07 and at one quarter of the scale of that,

02:32:09 or one eighth in volume,

02:32:11 is then sufficient to have all of that.

02:32:13 But the wall sized blocks that we had in Wolfenstein

02:32:16 was too much of a creative limitation.

02:32:18 We licensed the technology to a few other teams.

02:32:21 None of them made too much of a dent with that.

02:32:24 It just wasn’t enough creative ability.

02:32:27 But a little bit more,

02:32:28 whether it was the variable floors and ceilings

02:32:31 and arbitrary angles in Doom,

02:32:33 or the smaller voxel blocks in Minecraft,

02:32:37 is then enough to open it up

02:32:38 to just worlds and worlds of new capabilities.

02:32:41 What is binary space partitioning?

02:32:45 So the. Which is one of the technologies.

02:32:47 Yeah, so jump around a little bit on the story path there.

02:32:51 So while the team was working on Spirit Destiny

02:32:53 for Wolfenstein, we had met another development team,

02:32:57 Raven Software, while we were in Wisconsin.

02:32:59 And they were doing, they had RPG background

02:33:03 and I still kind of loved that.

02:33:04 And I offered to do a game engine for them

02:33:07 to let them do a 3D rendered RPG

02:33:10 instead of the, like most RPG games were kind of hand drawn.

02:33:14 They made it look kind of 3D,

02:33:15 but it was done just all with artist work

02:33:17 rather than a real engine.

02:33:19 And after Wolfenstein, this was still a tile based world,

02:33:23 but I added floors and ceilings and some lighting

02:33:25 and the ability to have some sloped floors

02:33:27 in different areas.

02:33:28 And that was my intermediate step

02:33:30 for a game called Shadowcaster.

02:33:32 And it had slowed down enough.

02:33:34 It was not fast enough to do our type of action things.

02:33:37 So they had the screen crop down a little bit.

02:33:39 So you couldn’t go the full screen width

02:33:42 like we would try to do in Wolfenstein, but I learned a lot.

02:33:46 I got the floors and ceilings and lightings

02:33:47 and it looked great.

02:33:48 They were great artists up there.

02:33:50 And it was an inspiration for us

02:33:52 to look at some of that stuff.

02:33:54 But I had learned enough from that,

02:33:57 that I had the plan for,

02:33:58 I knew faster ways to do the lighting and shadowing.

02:34:01 And I wanted to do this free form geometry.

02:34:03 I wanted to break out of this tile based

02:34:06 90 degree world limitations.

02:34:09 So we had, that was when we got our next stations

02:34:12 and we were working with these higher powered systems.

02:34:14 And we built an editor that let us draw

02:34:18 kind of arbitrary line segments.

02:34:20 And I was working hard to try to make something

02:34:22 that could render this fast enough.

02:34:26 I was pushing myself pretty hard.

02:34:28 And we were at a point where we could see some things

02:34:32 that looked amazingly cool,

02:34:33 but it wasn’t really fast enough for the way I was doing it.

02:34:37 For this flexibility, it was no longer,

02:34:39 I couldn’t just ray cast into it.

02:34:41 And I had these very complex sets of lines

02:34:43 and simple little worlds were okay.

02:34:45 But the cool things that we wanted to do

02:34:47 just weren’t quite fast enough.

02:34:49 And I wound up taking a break at that point.

02:34:52 And I did the port.

02:34:54 I did two ports of our games,

02:34:58 Wolfenstein to the Super Nintendo.

02:35:01 It was a crazy difficult thing to do,

02:35:04 which was an even slower processors,

02:35:06 like a couple of megahertz processor.

02:35:10 And it had been this whole thing

02:35:11 where we had farmed out the work and it wasn’t going well.

02:35:17 And I took it back over

02:35:18 and trying to make it go fast on there

02:35:21 where it really did not have much processing power.

02:35:25 The pixels were stretched up hugely

02:35:26 and it was pretty ugly when you looked at it.

02:35:29 But in the end, it did come out fast enough to play

02:35:31 and still be kind of fun from that.

02:35:33 But that was where I started using BSP trees

02:35:36 or binary space partitioning trees.

02:35:38 It was one of those things I had to make it faster there.

02:35:41 It was a stepping stone where it was reasonably easy

02:35:44 to understand in the grid world of Wolfenstein

02:35:46 where it was all still 90 degree angles.

02:35:49 BSP trees were, I eased myself into it with that.

02:35:53 And it was a big success.

02:35:56 Then when I came back to working on Doom,

02:35:58 I had this new tool in my toolbox.

02:36:00 It was gonna be a lot harder

02:36:02 with the arbitrary angles of Doom.

02:36:03 This was where I really started grappling

02:36:06 with epsilon problems.

02:36:07 And just up until that point,

02:36:09 I hadn’t really had to deal with the fact

02:36:11 that I am so many numeric things.

02:36:13 This almost felt like a betrayal to me

02:36:15 where people had told me that I had mathematicians

02:36:17 up on a bit of a pedestal where I was,

02:36:20 people think I’m a math wizard and I’m not.

02:36:22 I really, everything that I did was really done

02:36:25 with a solid high school math understanding.

02:36:29 Algebra two trigonometry and that was what got me

02:36:33 all the way through Doom and Quake and all of that,

02:36:35 of just understanding basics of matrices

02:36:38 and knowing it well enough to do something with it.

02:36:41 What’s the epsilon problems you ran into?

02:36:42 So when you wind up taking like a sloped line

02:36:46 and you say, I’m going to intersect it

02:36:48 with another sloped line,

02:36:50 then you wind up with something

02:36:52 that’s not going to be on these nice grid boundaries.

02:36:54 With the Wolfenstein tile maps,

02:36:57 all you’ve got is horizontal and vertical lines

02:36:58 looking at it from above.

02:37:00 And if you cut one of them, it’s just obvious

02:37:02 the other one gets cut exactly at that point.

02:37:04 But when you have angled lines,

02:37:06 you’re doing a kind of a slope intercept problem

02:37:08 and you wind up with rational numbers there

02:37:11 where things that are not going to evenly land on an integer

02:37:14 or even on any fixed point value that you’ve got.

02:37:17 So everything winds up having to snap

02:37:19 to some fixed point value.

02:37:20 So the lines slightly change their angle.

02:37:23 You wind up, if you cut something here,

02:37:25 this one’s going to bend a little this way

02:37:26 and it’s not going to be completely straight.

02:37:28 And then you come down to all these questions of,

02:37:30 well, this one is a point on an angled line.

02:37:35 You can’t answer that in finite precision

02:37:38 unless you’re doing something with actual rational numbers.

02:37:41 And later on, I did waste far too much time

02:37:43 chasing things like that.

02:37:44 How do you do precise arithmetic with rational numbers?

02:37:46 And it always blows up eventually, exponentially

02:37:49 as you do it.

02:37:50 So these kinds of things are impossible with computers.

02:37:53 So they’re possible.

02:37:55 Again, there are paths to doing it,

02:37:57 but you can’t fit them conveniently

02:37:59 in any of the numbers.

02:38:00 You need to start using big nums

02:38:01 and different factor trackings of different things.

02:38:04 So you have to, if you have any elements of OCD

02:38:08 and you want to do something perfectly,

02:38:09 you’re screwed if you’re working with floating point.

02:38:12 Yeah.

02:38:13 So you had to deal with this for the first time.

02:38:15 And there were lots of challenges there about like,

02:38:18 okay, they build this cool thing.

02:38:20 And the way the BSP trees work is it basically

02:38:22 takes the walls and it carves other walls by those walls

02:38:26 in this clever way that you can then

02:38:28 take all of these fragments.

02:38:30 And then you can for sure, from any given point,

02:38:33 get an ordering of everything in the world.

02:38:35 And you can say, this goes in front of this,

02:38:36 goes in front of this, all the way back to the last thing.

02:38:40 And that’s super valuable for graphics

02:38:42 where kind of a classic graphics algorithm

02:38:45 would be painter’s algorithm.

02:38:46 You paint the furthest thing first,

02:38:48 and then the next thing, and then the next thing,

02:38:49 and then it comes up and it’s all perfect for you.

02:38:52 That’s slow because you don’t want to have to have drawn

02:38:54 everything like that,

02:38:56 but you can also flip it around

02:38:57 and draw the closest thing to you.

02:38:59 And then if you’re clever about it,

02:39:01 you can figure out what you need to draw

02:39:03 that’s visible beyond that.

02:39:05 And that’s what BSP trees allow you to do.

02:39:07 Yeah, so it’s combined with a bunch of other things,

02:39:10 but it gives you that ordering.

02:39:12 It’s a clever way of doing things.

02:39:13 And I remember I had learned this

02:39:15 from one of my graphics Bible at the time,

02:39:18 a book called Foley and Van Damme.

02:39:20 And again, it was a different world back there.

02:39:22 There was a small integer number of books.

02:39:24 And this book that was big fat college textbook

02:39:29 that I had read through many times.

02:39:32 I didn’t understand everything in it.

02:39:34 Some of it wasn’t useful to me,

02:39:35 but they had the little thing about finite orderings

02:39:39 of you draw a little T shaped thing

02:39:41 and you can say you can make a fixed ahead of time order

02:39:44 from this and you can generalize this with the BSP trees.

02:39:48 And I got a little bit more information about that.

02:39:50 And it was kind of fun later while I was working on Quake,

02:39:53 I got to meet Bruce Naylor,

02:39:54 who is one of the original researchers

02:39:56 that developed those technologies for academic literature.

02:40:00 And that was kind of fun,

02:40:01 but I was very much just finding a tool

02:40:03 that can help me solve what I was doing.

02:40:05 And I was using it in this very crude way

02:40:07 in a two dimensional fashion, rather than the general 3D.

02:40:10 The Epsilon problems got much worse

02:40:12 in Quake and three dimensionals

02:40:13 when things angle in every way.

02:40:15 But eventually I did sort out

02:40:18 how to do it reliably on Doom.

02:40:20 There were still a few edge cases in Doom

02:40:22 that were not absolutely perfect

02:40:24 where they even got terminologies in the communities.

02:40:27 Like when you got to something where it was messed up,

02:40:29 it was a hall of mirrors effect

02:40:30 because you’d sweep by and it wouldn’t draw something there.

02:40:33 And you would just wind up with the leftover remnants

02:40:36 as you flipped between the two pages.

02:40:39 But BSP trees were important for it.

02:40:41 But it’s again worth noting that after we did Doom,

02:40:45 our major competition came from Ken Silverman

02:40:49 and his build engine, which was used for Duke Nukem 3D

02:40:51 and some of the other games for 3D Realms.

02:40:54 And he used a completely different technology,

02:40:56 nothing to do with BSP trees.

02:40:59 So there’s not just a one true way of doing things.

02:41:03 There were critical things about

02:41:05 to make any of those games fast.

02:41:07 You had to separate your drawing into,

02:41:09 you drew vertical lines and you drew horizontal lines,

02:41:12 just kind of changing exactly

02:41:14 what you would draw with them.

02:41:15 That was critical for the technologies at that time.

02:41:19 And like all the games that were kind of like that

02:41:21 wound up doing something similar,

02:41:23 but there were still a bunch of other decisions

02:41:25 that could be made.

02:41:26 And we made good enough decisions on everything on Doom.

02:41:30 We brought in multiplayer significantly

02:41:33 and it was our first game that was designed

02:41:35 to be modified by the user community

02:41:37 where we had this whole setup of our WAD files and PWADs

02:41:41 and things that people could build with tools

02:41:43 that we released to them.

02:41:44 And they eventually rewrote to be better

02:41:46 than what we released, but they could build things

02:41:48 and you could add it to your game

02:41:50 without destructively modifying it,

02:41:52 which is what you had to do in all the early games.

02:41:54 You literally hacked the data files or the executable

02:41:57 before while Doom was set up in this flexible way

02:42:00 so that you could just say,

02:42:02 run the normal game with this added on on top

02:42:04 and it would overlay just the things

02:42:06 that you wanted to there.

02:42:09 Would you say that Doom was kind of the first

02:42:11 true 3D game that you created?

02:42:14 So no, it’s still, Doom would usually be called

02:42:16 a two and a half D game

02:42:17 where it had three dimensional points on it.

02:42:20 And this is another one of these kind of pedantic things

02:42:22 that people love to argue about,

02:42:23 about what was the first 3D game.

02:42:25 I still, like every month probably I hear from somebody

02:42:29 about, well, was Doom really a 3D game or something?

02:42:34 And I give the point where characters had three coordinates.

02:42:38 So you had like an X, Y and Z,

02:42:40 the cacodamon could be coming in very high

02:42:42 and come down towards you.

02:42:45 The walls had three coordinates on them.

02:42:47 So on some sense it’s a 3D game engine,

02:42:50 but it was not a fully general 3D game engine.

02:42:53 You could not build a pyramid in Doom

02:42:56 because you couldn’t make a sloped wall,

02:42:59 which was slightly different

02:43:00 where in that previous shadow caster game,

02:43:02 I could have vertexes and have a sloped floor there,

02:43:05 but the changes that I made for Doom to get higher speed

02:43:08 and a different set of flexibility traded away that ability,

02:43:11 but you literally couldn’t make that.

02:43:13 You could not, you could make different heights of passages,

02:43:17 but you could not make a bridge over another area.

02:43:20 You could not go over and above it.

02:43:21 So it still had some 2D limitations to it.

02:43:24 That’s more about the building

02:43:26 versus the actual experience.

02:43:27 Cause the experience is.

02:43:29 It felt like things would come at you,

02:43:30 but again, you couldn’t look up either.

02:43:32 I am, you know, you could only pitch.

02:43:34 It was four degrees of freedom

02:43:36 rather than six degrees of freedom.

02:43:38 You did not have the ability to tilt your head this way

02:43:40 or pitch up and down.

02:43:42 So that takes us to Quake.

02:43:44 What was the leap there?

02:43:47 What was some fascinating technical challenges

02:43:50 and there were a lot or not challenges,

02:43:52 but innovations that you’ve come up with.

02:43:54 So Quake was kind of the first thing

02:43:56 where I did have to kind of come face to face

02:43:59 with my limitations,

02:44:01 where it was the first thing

02:44:02 where I really did kind of give it my all

02:44:05 and still come up, you know, come up a little bit short

02:44:08 in terms of what and when I wanted to get it done.

02:44:11 And the company ran,

02:44:13 they had some serious stresses through the whole project

02:44:16 and we bit off a lot.

02:44:19 So the things that we set out to do

02:44:21 was it was going to be really a true 3D engine

02:44:24 where it could do six degree of freedom.

02:44:26 You could have all the viewpoints.

02:44:29 You could model anything.

02:44:31 It had a really remarkable new lighting model

02:44:35 with the surface caching and things.

02:44:37 That was one of those where it was starting

02:44:38 to do some things that they weren’t doing

02:44:40 even on the very high end systems.

02:44:43 And it was going to be completely programmable

02:44:46 in the modding standpoint,

02:44:48 where the thing that you couldn’t do in Doom,

02:44:49 you could replace almost all of the media,

02:44:52 but you couldn’t really change the game.

02:44:55 There were still some people that were doing

02:44:57 the hex setting of the executable,

02:44:58 the dehacked things where you could change

02:45:00 a few things about rules

02:45:01 and people made some early capture the flag type things

02:45:04 by hacking the executable,

02:45:06 but it wasn’t really set out to do that.

02:45:08 Quake was going to have its own programming language

02:45:11 that the game was going to be implemented in it.

02:45:13 And that would be able to be overwritten

02:45:14 just like any of the media.

02:45:16 Code was going to be data for that.

02:45:18 And you would be able to have expansion packs

02:45:21 that changed fundamental things and mods and so on.

02:45:24 And the multiplayer was going to be playable

02:45:27 over the internet.

02:45:28 It was going to support a client server

02:45:30 rather than peer to peer.

02:45:32 So we had the possibility of supporting

02:45:34 larger numbers of players in disparate locations

02:45:37 with this full flexibility of the programming overrides

02:45:41 with full six degree of freedom modeling and viewing.

02:45:44 And with this fancy new light mapped

02:45:47 kind of surface caching side.

02:45:49 It was a lot.

02:45:50 And this was one of those things that

02:45:52 if I could go back and tell younger me

02:45:56 to do something differently,

02:45:57 it would have been to split those innovations up

02:45:59 into two phases in two separate games.

02:46:02 It will be phase one and phase two.

02:46:03 So it probably would have been taking

02:46:05 the Doom rendering engine and bringing in

02:46:08 the TCP IP client server.

02:46:10 Focusing on the multiplayer.

02:46:12 And the Quake C or would have been Doom C

02:46:15 programming language there.

02:46:16 So I would have split that into programming language

02:46:19 and networking with the same Doom engine

02:46:21 rather than forcing everybody to go towards

02:46:24 the Quake engine, which really meant getting a Pentium.

02:46:27 While it ran on a 486, it was not a great experience there.

02:46:31 We could have made more people happier

02:46:33 and gotten two games done in 50% more time.

02:46:37 So speaking of people happier, our mutual friend,

02:46:41 Joe Rogan, it seems like the most important moment

02:46:46 of his life is centered around Quake.

02:46:49 So it was a definitive part of his life.

02:46:53 So would he agree with your thinking that they should split?

02:46:59 So he is a person who loves Quake

02:47:01 and played Quake a lot.

02:47:03 Would he agree that you should have done the Doom engine

02:47:06 and focus on the multiplayer for phase one?

02:47:09 Or in your looking back, is the 3D world

02:47:14 that Quake created was also fundamental

02:47:17 to the enriching experience?

02:47:19 You know, I would say that what would have happened

02:47:21 is you would have had a Doom looking

02:47:25 but Quake feeling game eight months earlier

02:47:29 and then maybe six months after Quake actually shipped,

02:47:33 then there would have been the full running on a Pentium,

02:47:36 six degree of freedom graphics engine type things there.

02:47:38 So it’s not that it wouldn’t have been there.

02:47:42 It would have been something amazingly cool earlier

02:47:45 and then something even cooler somewhat later

02:47:47 where I would much rather have gone

02:47:50 and done two one year development efforts.

02:47:53 I’ve cycled them through.

02:47:54 I’ve been a little more pragmatic about that

02:47:57 rather than killing us ourselves on the whole Quake

02:48:00 development.

02:48:01 But I would say it’s obviously things worked out well

02:48:04 in the end, but looking back and saying,

02:48:06 how would I optimize and do things differently?

02:48:08 That did seem to be a clear case where I going ahead

02:48:13 and we had enormous momentum on Doom.

02:48:15 We did Doom two as the kind of commercial boxed version

02:48:19 after our shareware success with the original,

02:48:22 but we could have just made another Doom game

02:48:25 adding those new features in.

02:48:27 It would have been huge.

02:48:28 We would have learned all the same lessons, but faster.

02:48:31 And it would have given six degree of freedom

02:48:34 and Pentium class systems a little bit more time

02:48:37 to get mainstream because we did cut out a lot of people

02:48:40 with the hardware requirements for Quake.

02:48:42 Was there any dark moments for you personally,

02:48:44 psychologically in having such harsh deadlines

02:48:51 and having to solve so many difficult technical challenges?

02:48:54 So I’ve never really had really dark black places.

02:49:00 I mean, I can’t necessarily put myself

02:49:02 in anyone else’s shoes,

02:49:03 but I understand a lot of people have significant challenges

02:49:09 with kind of their mental health and wellbeing.

02:49:12 And I’ve been super stressed.

02:49:15 I’ve been unhappy as a teenager in various ways,

02:49:18 but I’ve never really gone to a very dark place.

02:49:23 I just seem to be largely immune to what really wrecks people.

02:49:29 I mean, I’ve had plenty of time when I’m very unhappy

02:49:32 and miserable about something,

02:49:33 but it’s never hit me like,

02:49:36 I believe it winds up hitting some other people.

02:49:38 I’ve borne up well under whatever stresses

02:49:41 have kind of fallen on me.

02:49:44 And I’ve always coped best on that

02:49:46 when all I need to do is usually

02:49:49 just kind of bear down on my work.

02:49:51 I pull myself out of whatever hole I might be slipping into

02:49:55 by actually making progress.

02:49:57 I mean, maybe if I was in a position

02:49:59 where I was never able to make that progress,

02:50:01 I could have slid down further,

02:50:03 but I’ve always been in a place where,

02:50:06 okay, a little bit more work,

02:50:07 maybe I’m in a tough spot here,

02:50:09 but I always know if I just keep pushing,

02:50:12 eventually I break through and I make progress,

02:50:14 I feel good about what I’m doing.

02:50:17 And that’s been enough for me so far in my life.

02:50:20 Have you seen it in the distance,

02:50:23 like ideas of depression or contemplating suicide?

02:50:28 Have you seen those things far?

02:50:30 So what was interesting, when I was a teenager,

02:50:33 I was probably on some level a troubled youth.

02:50:37 I was unhappy most of my teenage years.

02:50:40 I really, I wanted to be on my own

02:50:42 doing programming all the time.

02:50:44 As soon as I was 18, 19, even though I was poor,

02:50:47 I was doing exactly what I wanted and I was very happy,

02:50:50 but high school was not a great time for me.

02:50:53 And I had a conversation with like the school counselor

02:50:56 and they’re kind of running their script.

02:50:58 It’s like, okay, it’s kind of a weird kid here.

02:51:00 Let’s carefully probe around.

02:51:02 It’s like, do you ever think about ending it all?

02:51:05 I’m like, no, of course not.

02:51:07 Never, not at all.

02:51:08 This is temporary, things are going to be better.

02:51:13 And that’s always been kind of the case for me.

02:51:15 And obviously that’s not that way for everyone

02:51:18 and other people do react differently.

02:51:20 What was your escape from the troubled youth,

02:51:24 like music, video games, books?

02:51:33 How did you escape from a world

02:51:35 that’s full of cruelty and suffering and that’s absurd?

02:51:38 Yeah, I mean, I was not a victim of cruelty and suffering.

02:51:41 It’s like, I was an unhappy, somewhat petulant youth

02:51:44 in my point where I’m not putting myself up

02:51:48 with anybody else’s suffering,

02:51:49 but I was unhappy objectively.

02:51:52 And the things that I did

02:51:54 that very much characterized my childhood

02:51:57 were I had books, comic books,

02:52:00 Dungeons and Dragons, arcade games, video games.

02:52:03 Like some of my fondest childhood memories

02:52:06 are the convenience stores, the 711s and Quick Trips,

02:52:08 because they had a spinner rack of comic books

02:52:11 and they had a little side room

02:52:12 with two or three video games, arcade games in it.

02:52:15 And that was very much my happy place.

02:52:18 If I could, I get my comic books

02:52:20 and if I could go to a library

02:52:22 and go through those little zero, zero, zero section

02:52:25 where computer books were supposed to be.

02:52:27 And there were a few sad little books there,

02:52:28 but still just being able to sit down and go through that.

02:52:31 And I read a ridiculous number of books,

02:52:35 both fiction and nonfiction as a teenager.

02:52:38 And my rebelling in high school

02:52:42 was just sitting there with my nose in a book,

02:52:44 ignoring the class through lots of it.

02:52:46 And teachers had a range of reactions to that,

02:52:49 some more accepting of it than others.

02:52:53 I’m with you on that.

02:52:54 So let us return to Quake for a bit

02:52:56 with the technical challenges.

02:52:57 What everything together from the networking

02:53:03 to the graphics, what are some things you remember

02:53:07 that were innovations you had to come up with

02:53:10 in order to make it all happen?

02:53:12 Yeah, so there were a bunch of things on Quake

02:53:14 where on the one hand,

02:53:16 the idea that I built my own programming language

02:53:19 to implement the game in.

02:53:20 Looking back, and I try to tell people,

02:53:22 it’s like every high level programmer

02:53:25 sometime in their career goes through

02:53:26 and they invent their own language.

02:53:28 It just seems to be a thing that’s pretty broadly done.

02:53:30 People will be like,

02:53:31 I’m gonna go write a computer programming language.

02:53:33 And I don’t regret having done it,

02:53:37 but after that, I switched from Quake C,

02:53:40 my quirky little pseudo object oriented

02:53:43 or entity oriented language there.

02:53:45 Quake two went back to using DLLs with C

02:53:47 and then Quake three,

02:53:48 I implemented my own C interpreter or compiler,

02:53:51 which was a much smarter thing to do

02:53:53 that I should have done originally for Quake.

02:53:55 But building my own language was an experience.

02:53:57 I learned a lot from that.

02:53:59 And then there was a generation of game programmers

02:54:02 that learned programming with Quake C,

02:54:04 which I feel kind of bad about,

02:54:05 because we give JavaScript a lot of crap,

02:54:08 but Quake C was nothing to write home about there.

02:54:13 But it allowed people to do magical things.

02:54:15 You get into programming,

02:54:16 not because you love the BNF syntax of a language,

02:54:21 it’s because the language lets you do something

02:54:23 that you cared about.

02:54:24 And here’s very much,

02:54:25 you could do something

02:54:26 in a whole beautiful three dimensional world.

02:54:29 And the idea and the fact that the code

02:54:31 for the game was out there,

02:54:32 you could say, I liked the shotgun,

02:54:34 but I want it to be more bad ass.

02:54:36 You go in there and say,

02:54:37 okay, now it does 200 points damage.

02:54:39 And then you go around with a big grin on your face,

02:54:41 blowing up monsters all over the game.

02:54:43 So yeah, it is not what I would do today

02:54:48 going back with that language,

02:54:49 but that was a big part of it.

02:54:51 Learning about the networking stuff,

02:54:54 because it’s interesting where I learned these things

02:54:56 by reading books.

02:54:57 So I would get a book on networking and find something,

02:55:00 I read all about it and learn, okay, packets,

02:55:02 they can be out of order or lost or duplicated.

02:55:06 These are all the things

02:55:07 that can theoretically happen to packets.

02:55:09 So I wind up spending all this time thinking about

02:55:11 how do we deal about all of that?

02:55:13 And it turns out, of course, in the real world,

02:55:15 those are things that yes,

02:55:16 theoretically can happen with multiple routes,

02:55:18 but they really aren’t things that your 99.999%

02:55:22 of your packets have to deal with.

02:55:25 So there was learning experiences about lots of that.

02:55:28 Like why, when TCP is appropriate versus UDP

02:55:32 and how if you do things in UDP,

02:55:34 you wind up reinventing TCP badly in almost all cases.

02:55:37 So there’s good arguments for using both

02:55:41 for different game technology,

02:55:42 different parts of the game process,

02:55:44 transitioning from level to level and all.

02:55:46 But the graphics were the showcase

02:55:49 of what Quake was all about.

02:55:51 It was this graphics technology that nobody had seen there.

02:55:55 And it was a while before

02:55:57 there were competitive things out there.

02:55:59 And it went a long time internally really not working

02:56:03 where we were even building levels

02:56:05 where the game just was not at all shippable

02:56:09 with large fractions of the world,

02:56:11 like disappearing, not being there,

02:56:14 or being really slow in various parts of it.

02:56:16 And it was this act of faith.

02:56:18 It’s like, I think I’m gonna be able to fix this.

02:56:20 I think I’m gonna be able to make this work.

02:56:23 And lots of stuff changed

02:56:25 where the level designers would build something

02:56:27 and then have to throw it away as something fundamental

02:56:29 and the kind of graphics or level technology changed.

02:56:33 And so there were two big things

02:56:37 that contributed to making it possible at that timeframe.

02:56:41 Two new things.

02:56:42 There was certainly

02:56:43 hardcore optimized low level assembly language.

02:56:46 And this was where I had hired Michael Abrash

02:56:48 away from Microsoft.

02:56:50 And he had been one of my early inspirations

02:56:52 where back in the soft disk days,

02:56:54 the library of magazines that they had,

02:56:57 some of my most treasured ones

02:56:58 were Michael Abrash’s articles in Dr. Dobbs journal.

02:57:02 And it was amazing after all of our success in Doom,

02:57:06 we were able to kind of hit him up and say,

02:57:08 hey, we’d like you to come work at id Software.

02:57:10 And he was in the senior technical role at Microsoft.

02:57:13 And he was on track for,

02:57:15 and this was right when Microsoft was starting to take off.

02:57:18 And I did eventually convince him

02:57:21 that what we were doing

02:57:22 was gonna be really amazing with Quake.

02:57:24 It was gonna be something nobody had seen before.

02:57:28 It had these aspects of what we were talking about.

02:57:31 We had metaverse talk back then.

02:57:33 We had read Snow Crash and we knew about this.

02:57:36 And Michael was big into the science fiction

02:57:40 and we would talk about all that

02:57:41 and kind of spin this tale.

02:57:42 And it was some of the same conversations

02:57:45 that we have today about the metaverse,

02:57:46 about how you could have different areas

02:57:48 linked together by portals

02:57:50 and you could have user generated content

02:57:52 and changing out all of these things.

02:57:54 So you really were creating the metaverse with Quake.

02:57:56 And we talked about things like,

02:57:58 Duke used to be advertised as a virtual reality experience.

02:58:02 That was the first wave of virtual reality

02:58:05 was in the late 80s and early 90s,

02:58:07 you had like the Lawn Mower Man movie

02:58:10 and you had time in Newsweek

02:58:12 talking about the early VPL headsets.

02:58:14 And of course that cratered so hard

02:58:16 that people didn’t wanna look at virtual reality

02:58:18 for decades afterwards,

02:58:20 where it was just, it was smoke and mirrors.

02:58:23 It was not real in the sense

02:58:24 that you could actually do something

02:58:26 real and valuable with it.

02:58:28 But still we had that kind of common set of talking points.

02:58:32 And we were talking about what these games could become

02:58:36 and how you’d like to see people

02:58:37 building all of these creative things.

02:58:39 Because we were seeing an explosion of work

02:58:41 with Doom at that time,

02:58:42 where people were doing amazingly cool things.

02:58:45 Like we saw cooler levels that we had built

02:58:48 coming out of the user community.

02:58:49 And then people finding ways

02:58:51 to change the characters in different ways.

02:58:54 And it was great.

02:58:54 And we knew what we were doing in Quake

02:58:56 was removing those last things.

02:58:58 There was some quirky things

02:59:00 with a couple of the data types

02:59:01 that didn’t work right for overriding.

02:59:03 And then the core thing about the programming model.

02:59:07 And I was definitely going to hit all of those in Quake.

02:59:10 But the graphics side of it was still,

02:59:15 I knew what I wanted to do.

02:59:17 And it was one of these hubris things

02:59:20 where it’s like, well, so far I’ve been able

02:59:21 to kind of kick everything that I set out to go do.

02:59:26 But Quake was definitely a little bit more

02:59:29 than could be comfortably chewed at that point.

02:59:32 And, but Michael was one of the strongest programmers

02:59:36 and graphics programmers that I knew.

02:59:39 And he was one of the people that I trusted

02:59:40 to write assembly code better than I could.

02:59:44 And there’s a few people that I can point to

02:59:46 about things like this where I’m a world class optimizer.

02:59:49 I mean, I make things go fast,

02:59:51 but I recognize there’s a number of people

02:59:54 that can write tighter assembly code,

02:59:56 tighter SIMD code or tighter CUDA code

02:59:59 than I can write.

03:00:02 My best strengths are a little bit more at the system level.

03:00:05 I mean, I’m good at all of that,

03:00:07 but the most leverage comes from making the decisions

03:00:10 that are a little bit higher up

03:00:11 where you figure out how to change your large scale problems

03:00:15 so that these lower level problems are easier to do

03:00:18 or it makes it possible to do them in a uniquely fast way.

03:00:23 So most of my big wins in a lot of ways

03:00:27 from all the way from the early games through VR

03:00:30 and the aerospace work that I’m doing or did,

03:00:33 and hopefully the AI work that I’m working on now

03:00:35 is finding an angle on something

03:00:37 that means you trade off something

03:00:40 that you maybe think you need,

03:00:41 but it turns out you don’t need.

03:00:43 And by making a sacrifice in one place,

03:00:45 you can get big advantages in another place.

03:00:48 Is it clear at which level of the system

03:00:51 those big advantages can be gained?

03:00:54 It’s not always clear.

03:00:55 And that’s why the thing that I try

03:00:58 to make one of my core values,

03:01:00 and I proselytize to a lot of people

03:01:02 is trying to know the entire stack,

03:01:05 trying to see through everything that happens.

03:01:08 And it’s almost impossible

03:01:09 on like the web browser level of things

03:01:11 where there’s so many levels to it,

03:01:13 but you should at least understand what they all are,

03:01:15 even if you can’t understand

03:01:16 all the performance characteristics at each level,

03:01:20 but it goes all the way down to literally the hardware.

03:01:22 So what is this chip capable of?

03:01:26 And what is this software that you’re writing capable of?

03:01:29 And then with this architecture you put on top of that,

03:01:31 then the ecosystem around it,

03:01:33 all the people that are working on it.

03:01:35 So there are all these decisions

03:01:38 and they’re never made in a globally optimal way,

03:01:41 but sometimes you can drive a thread

03:01:43 of global optimality through it.

03:01:45 You can’t look at everything, it’s too complicated,

03:01:47 but sometimes you can step back up

03:01:49 and make a different decision.

03:01:51 And we kind of went through this on the graphic side

03:01:53 on Quake, where in some ways it was kind of bad

03:01:56 where Michael would spend his time writing,

03:01:59 like I’d rough out the basic routines,

03:02:01 like, okay, here’s our span rasterizer.

03:02:03 And he would spend a month writing

03:02:05 this beautiful cycle optimized piece of assembly language

03:02:10 that does what I asked it to do.

03:02:13 And he did it faster than like my original code would do,

03:02:16 or probably what I would be able to do

03:02:17 even if I had spent that month on it.

03:02:20 But then we’d have some cases when I’d be like,

03:02:22 okay, well, I figured out at this higher level

03:02:25 instead of drawing these in a painter’s order here,

03:02:28 I do a span buffer and it cuts out 30% or 40%

03:02:32 of all of these pixels,

03:02:34 but it means you need to rewrite kind of this interface

03:02:36 of all of that.

03:02:37 And I could tell that wore on him a little bit,

03:02:39 but in the end it was the right thing to do

03:02:41 where we wound up changing that rasterization approach

03:02:45 and we wound up with a super optimized

03:02:47 assembly language core loop

03:02:49 and then a good system around it

03:02:51 which minimized how much that had to be called.

03:02:54 And so in order to be able to do

03:02:55 this kind of system level thinking,

03:02:58 whether we’re talking about game development,

03:03:02 aerospace, nuclear energy, AI, VR,

03:03:07 you have to be able to understand the hardware,

03:03:10 the low level software, the high level software,

03:03:14 the design decisions, the whole thing,

03:03:16 the full stack of it.

03:03:18 Yeah, and that’s where a lot of these things

03:03:20 become possible.

03:03:21 When you’re really, when you’re bringing the future forward,

03:03:23 I mean, there’s a pace that everything

03:03:25 just kind of glides towards

03:03:26 where we have a lot of progress

03:03:27 that’s happening at such a different,

03:03:29 so many different ways you kind of slide towards progress

03:03:32 just left to your own, programs just get faster.

03:03:34 For a while it wasn’t clear

03:03:36 if they were gonna get fatter more than they get,

03:03:38 quicker than they get faster and it cancels out,

03:03:40 but it is clear now in retrospect,

03:03:42 no, programs just get faster

03:03:44 and have gotten faster for a long time.

03:03:46 But if you wanna do something

03:03:48 like back at that original talking about scrolling games,

03:03:52 say what, this needs to be five times faster.

03:03:54 Well, we can wait six years

03:03:57 and just it’ll naturally get that much faster at that time

03:04:00 or you come up with some really clever way of doing it.

03:04:03 So there are those opportunities like that

03:04:06 in a whole bunch of different areas.

03:04:08 Now, most programmers don’t need to be thinking about that.

03:04:11 There’s not that many,

03:04:13 there’s a lot of opportunities for this,

03:04:15 but it’s not everyone’s work a day type stuff.

03:04:17 So everyone doesn’t have to know how all these things work.

03:04:20 They don’t have to know how their compiler works,

03:04:22 how the processor chip manages cache eviction

03:04:26 and all these low level things.

03:04:28 But sometimes there are powerful opportunities

03:04:31 that you can look at and say,

03:04:33 we can bring the future five years faster.

03:04:37 We can do something that,

03:04:38 wouldn’t it be great if we could do this?

03:04:40 Well, we can do it today

03:04:42 if we make a certain set of decisions.

03:04:44 And it is in some ways smoke and mirrors

03:04:47 where you say it’s like,

03:04:48 Doom was a lot of smoke and mirrors

03:04:50 where people thought it was more capable

03:04:52 than it actually was,

03:04:53 but we picked the right smoke and mirrors

03:04:56 to deploy in the game where by doing this,

03:04:58 people will think that it’s more general.

03:05:01 We are gonna amaze them with what they’ve got here

03:05:03 and they won’t notice

03:05:05 that it doesn’t do these other things.

03:05:07 So smart decision making at that point,

03:05:09 that’s where that kind of global holistic top down view

03:05:15 can work.

03:05:16 And I’m really a strong believer

03:05:20 that technology should be sitting at that table

03:05:24 having those discussions

03:05:25 because you do have cases where you say,

03:05:26 well, you wanna be the Jonathan Ivy or whatever,

03:05:28 where it’s a pure design solution.

03:05:32 And that’s in some cases now

03:05:35 where you truly have almost infinite resources.

03:05:37 Like if you’re trying to do a scrolling game on the PC now,

03:05:41 you don’t even have to talk to a technology person.

03:05:43 You can just have,

03:05:45 any intern can make that go run as fast as it needs to there

03:05:48 and it can be completely design based.

03:05:50 But if you’re trying to do something that’s hard,

03:05:53 either that can’t be done for resources

03:05:55 like VR on a mobile chip set,

03:05:58 or that we don’t even know how to do yet,

03:05:59 like artificial general intelligence,

03:06:02 it’s probably going to be a matter

03:06:03 of coming at it from an angle.

03:06:05 Like, I mean, for AGI,

03:06:06 we have some of like what are some of the hudder principles

03:06:09 about how you can AXI or some of the,

03:06:11 there are theoretical ways that you can say,

03:06:13 this is the optimal learning algorithm

03:06:15 that can solve everything, but it’s completely impractical.

03:06:18 You just can’t do that.

03:06:20 So clearly you have to make some concessions

03:06:23 for general intelligence

03:06:25 and nobody knows what the right ones are yet.

03:06:27 So people are taking different angles of attack.

03:06:29 I hope I’ve got something clever

03:06:31 to come up with in that space.

03:06:34 It’s been surprising to me.

03:06:35 And I think perhaps it is a principle of progress

03:06:38 that smoke and mirrors somehow

03:06:40 is the way you build the future.

03:06:42 You kind of fake it till you make it

03:06:46 and you almost always make it.

03:06:47 And I think that’s going to be the way we achieve AGI.

03:06:50 That’s going to be the way we build consciousness

03:06:53 into our machines.

03:06:55 There’s philosophers debate about the Turing test

03:06:59 is essentially about faking it till you make it.

03:07:02 You start by faking it.

03:07:04 And I think that always leads to making it

03:07:09 because if we look at history.

03:07:10 Arguments when, as soon as people start talking about

03:07:13 qualia and consciousness and Chinese rooms and things,

03:07:16 it’s like, I just check out.

03:07:17 I just don’t think there’s any value in those conversations.

03:07:20 It’s just like, go ahead, tell me it’s not going to work.

03:07:22 I’m going to do my best to try to make it work anyways.

03:07:25 I don’t know if you work with legged robots.

03:07:26 There’s a bunch of these.

03:07:29 They sure as heck make me feel like they’re cautious

03:07:33 in a certain way that’s not here today,

03:07:37 but is you could see the kernel.

03:07:41 It’s like the flame, the beginnings of a flame.

03:07:45 We don’t have line of sight,

03:07:47 but there’s glimmerings of light in the distance

03:07:50 for all of these things.

03:07:51 Yeah, I’m hearing murmuring in a distant room.

03:07:54 Well, let me ask you a human question here.

03:07:56 You’ve in the game design space,

03:08:00 you’ve done a lot of incredible work throughout,

03:08:01 but in terms of game design, you have changed the world.

03:08:05 And there’s a few people around you that did the same.

03:08:08 So famously there’s some animosity, there’s much love,

03:08:13 but there’s some animosity between you and John Romero.

03:08:16 What is at the core of that animosity and human tension?

03:08:19 So there really hasn’t been for a long time.

03:08:24 And even at the beginning, it’s like,

03:08:25 yes, I did push Romero out of the company.

03:08:29 And this is one of the things that I look back,

03:08:32 if I could go back telling my younger self

03:08:35 some advice about things,

03:08:37 the original founding kind of corporate structure

03:08:41 of id Software really led to a bunch of problems.

03:08:45 We started off with us as equal partners

03:08:48 and we had a buy sell agreement

03:08:50 because we didn’t want outsiders

03:08:51 to be telling us what to do inside the company.

03:08:54 And that did lead to a bunch of the problems

03:08:57 where I was sitting here going,

03:08:59 it’s like, all right, I’m working harder than anyone.

03:09:02 I’m doing these technologies, nobody’s done before,

03:09:06 but we’re all equal partners.

03:09:08 And then I see somebody that’s not working as hard.

03:09:11 And I mean, I can’t say I was the most mature about that.

03:09:16 I was 20 something years old

03:09:18 and it did bother me when I’m like, everybody,

03:09:22 okay, we need to all pull together

03:09:23 and we’ve done it before everybody.

03:09:25 We know we can do this if we get together

03:09:27 and we grind it all out,

03:09:29 but not everybody wanted to do that for all time.

03:09:33 And I was the youngest one of the crowd there.

03:09:35 I had different sets of kind of backgrounds and motivations

03:09:40 and left at that point where it was, all right,

03:09:44 either everybody has to be contributing like up to this level

03:09:48 or they need to get pushed out was not,

03:09:52 that was not a great situation.

03:09:54 And I look back on it and know that we pushed people

03:09:57 out of the company that could have contributed

03:10:00 if there was a different framework for them.

03:10:02 And the modern kind of Silicon Valley,

03:10:04 like let your stock vest over a time period

03:10:07 and maybe it’s non voting stock

03:10:08 and all those different things.

03:10:09 We knew nothing about any of that.

03:10:11 I mean, we didn’t know what we were doing

03:10:13 in terms of corporate structure or anything.

03:10:16 So if you think the framework was different,

03:10:18 some of the human tension could have been a little bit.

03:10:20 It almost certainly would have.

03:10:22 I mean, I look back at that

03:10:24 and it’s like even trying to summon up in my mind,

03:10:27 it’s like, I know I was really, really angry about,

03:10:32 like Romero not working as hard as I wanted him to work

03:10:35 or not carrying his load on the design for Quake

03:10:39 and coming up with things there.

03:10:40 But he was definitely doing things.

03:10:43 He made some of the best levels there.

03:10:44 He was working with some of our external teams

03:10:47 like Raven on the licensing side of things,

03:10:50 but there were differences of opinion about it,

03:10:55 but he landed right on his feet.

03:10:57 He went and he got $20 million from Eidos

03:10:59 to go do Ion Storm and he got to do things his way

03:11:02 and spun up three teams simultaneously

03:11:05 because that was always one of the challenging things

03:11:08 in it where we were doing these single string,

03:11:11 one project after another.

03:11:13 And I think some of them wanted to grow the company more

03:11:16 and I didn’t because I knew people that were saying that,

03:11:19 oh, companies turn to shit when you got 50 employees.

03:11:22 It’s just a different world there.

03:11:24 And I loved our little dozen people working on the projects,

03:11:28 but you can look at it and say,

03:11:29 well, business realities matter.

03:11:31 It’s like, you’re super successful here

03:11:33 and we could take a swing and a miss on something,

03:11:36 but you do it a couple of times and you’re out of luck.

03:11:39 There’s a reason companies try to have multiple teams

03:11:43 running at one time.

03:11:45 And so that was, again,

03:11:47 something I didn’t really appreciate back then.

03:11:49 So if you look past all that,

03:11:51 you did create some amazing things together.

03:11:53 What did you love about John Romero?

03:11:55 What did you respect and appreciate about him?

03:11:57 What did you admire about him?

03:11:59 What did you learn from him?

03:12:00 When I met him, he was the coolest programmer

03:12:02 I had ever met.

03:12:04 He had done all of this stuff.

03:12:05 He had made all of these games.

03:12:07 He had worked at one of the companies

03:12:10 that I thought was the coolest at Origin Systems.

03:12:12 And he knew all this stuff.

03:12:14 He made things happen fast.

03:12:16 And he was also kind of a polymath about this

03:12:18 where he could do, he drew his own art.

03:12:21 He made his own levels,

03:12:22 as well as we worked on sound design systems

03:12:26 on top of actually being a really good programmer.

03:12:29 And we went through a little,

03:12:32 it was kind of fun where one of the early things

03:12:34 that we did where there was kind of the young buck bit

03:12:36 going in where I was the new guy.

03:12:39 And he was the top man programmer at the soft disk area.

03:12:44 And eventually we had sort of a challenge over the weekend

03:12:47 that we were gonna like race to implement this game,

03:12:49 to port one of our PC games back down to the Apple II.

03:12:52 And that was where we finally kind of became clear.

03:12:55 It’s like, okay, Carmack stands a little bit apart

03:12:57 on the programming side of things.

03:13:00 But Romero then very gracefully moved into,

03:13:03 well, he’ll work on the tools, he’ll work on the systems,

03:13:06 do some of the game design stuff,

03:13:07 as well as contributing on,

03:13:09 starting to lead the design aspects of a lot of things.

03:13:12 So he was enormously valuable in the early stuff.

03:13:16 And so much of Doom and even Quake have his stamp on it

03:13:20 in a lot of ways.

03:13:21 But he wasn’t at the same level of focus

03:13:25 that I brought to the work that we were doing there.

03:13:29 And he really did, we hit such a degree of success

03:13:33 that it was all in the press about that.

03:13:35 The rockstar game programmers.

03:13:38 I mean, it’s the Beatles problem.

03:13:40 Yeah, I mean, he ate it up and he did personify.

03:13:43 There was the whole game developers with Ferraris

03:13:46 that we had there.

03:13:49 And I thought that led to some challenges there.

03:13:53 But so much of the stuff that was great in the games

03:13:58 did come from him.

03:13:59 And I would certainly not take that away from him.

03:14:01 And even after we parted ways and he took his swing

03:14:05 with Eidos, in some ways, he was ahead of the curve

03:14:09 with mobile gaming as well, where

03:14:11 one of his companies after Eidos was working on feature phone

03:14:15 game development.

03:14:16 And I wound up doing some of that

03:14:19 just before the iPhone crossing over into the iPhone phase

03:14:22 there.

03:14:23 And that was something that clearly

03:14:24 did turn out to be a huge thing, although he

03:14:27 was too early for what he was working on at that time.

03:14:31 We’ve had pretty cordial relationships

03:14:34 where I was happy to talk with him any time I’d

03:14:35 run into him at a conference.

03:14:38 I have actually had some other people just say,

03:14:40 it’s like, oh, you shouldn’t go over there

03:14:42 and give him the time of day.

03:14:44 Or felt that Masters of Doom played things up in a way

03:14:50 that I shouldn’t be too happy with.

03:14:52 But I’m OK with all of that.

03:14:54 So you’ve still got love in your heart.

03:14:56 Yeah, I mean, I just talked with him like last year,

03:14:59 or I guess it was even this year,

03:15:01 about mentioning that I’m going off doing this AI stuff.

03:15:03 I’m going big into artificial intelligence.

03:15:06 And he had a bunch of ideas for how

03:15:09 AI is going to play into gaming.

03:15:10 And asked if I was interested in collaborating.

03:15:13 And it’s not in line with what I’m doing.

03:15:16 But I do wish almost everyone the best.

03:15:19 I mean, I know I may not have partnered

03:15:21 on the best of terms with some people.

03:15:24 But I was thrilled to see Tom Hall writing VR games now.

03:15:29 He wrote, I’m working on a game called Demio, which

03:15:31 is really an awesome VR game.

03:15:33 It’s like Dungeons and Dragons.

03:15:35 We all used to play Dungeons and Dragons together.

03:15:36 That was one of the things.

03:15:37 That was what we did on Sundays in the early days.

03:15:40 I would Dungeon Master, and they’d all play.

03:15:42 And so it really made me smile seeing

03:15:44 Tom involved with an RPG game in virtual reality.

03:15:49 You were the CTO of Oculus VR since 2013,

03:15:54 and maybe less than a year involved in a bit in 2019.

03:16:00 Oculus was acquired by Facebook Now Meta in 2014.

03:16:04 You’ve spoken brilliantly about both the low level details,

03:16:07 the experimental design, and the big picture

03:16:09 vision of virtual reality.

03:16:12 Let me ask you about the metaverse, the big question

03:16:14 here, both philosophically and technically.

03:16:18 How hard is it to build the metaverse?

03:16:20 What is the metaverse in your view?

03:16:22 You started with discussing and thinking about Quake

03:16:24 as a kind of a metaverse.

03:16:27 As you think about it today, what is the metaverse,

03:16:31 the thing that could create this compelling user value,

03:16:34 this experience that will change the world,

03:16:36 and how hard is it to build it?

03:16:39 So the term comes from Neal Stephenson’s book Snow Crash,

03:16:42 which many of us had read back in the 90s.

03:16:44 It was one of those kind of formative books.

03:16:47 And there was this sense that the possibilities

03:16:53 and kind of the freedom and unlimited capabilities

03:16:56 to build a virtual world that does whatever you want,

03:16:59 whatever you ask of it, has been a powerful draw

03:17:02 for generations of developers, game developers specifically,

03:17:05 and people that are thinking about more general purpose

03:17:08 applications.

03:17:10 So we were talking about that back in the Doom and Quake days

03:17:13 about how do you wind up with an interconnected set of worlds

03:17:17 that you kind of visit from one to another.

03:17:19 And as web pages were becoming a thing,

03:17:21 you start thinking about what is the interactive kind

03:17:25 of 3D based equivalent of this.

03:17:27 And there were a lot of really bad takes.

03:17:29 You had like Vermol and virtual reality markup languages.

03:17:34 And there’s aspects like that that came from people saying,

03:17:38 well, what kind of capabilities should we

03:17:40 develop to enable this?

03:17:43 And that kind of capability first work

03:17:45 has usually not panned out very well.

03:17:48 On the other hand, we have successful games

03:17:51 that started with things like Doom and Quake and communities

03:17:54 that formed around those, whether it

03:17:56 was server lists in the early days

03:17:58 or literal portaling between different games,

03:18:01 and then modern things that are on completely different order

03:18:04 of magnitude like Minecraft and Fortnite that

03:18:07 have 100 million plus users.

03:18:11 I still think that that’s the right way

03:18:13 to go to build the metaverse is you build something that’s

03:18:16 amazing that people love and people wind up

03:18:18 spending all their time in because it’s awesome.

03:18:21 And you expand the capabilities of that.

03:18:24 So even if it’s a very basic experience, if it’s awesome.

03:18:28 Minecraft is an amazing case study in so many things.

03:18:31 That’s basic as it gets.

03:18:32 What’s been able to be done with that is really enlightening.

03:18:36 And there are other cases where, like right now,

03:18:39 Roblox is basically a game construction kit aimed at kids.

03:18:43 And that was a capability first play.

03:18:45 And it’s achieving scale that’s on the same order

03:18:48 of those things.

03:18:49 So it’s not impossible, but my preferred bet

03:18:52 would be you make something amazing that people love

03:18:55 and you make it better and better.

03:18:56 And that’s where I could say we could have gone back

03:18:59 and followed a path like that in the early days

03:19:02 if you just take the same game, whether it’s

03:19:05 when Activision demonstrated that you could make

03:19:07 Call of Duty every year.

03:19:09 And not only is it not bad, people love it.

03:19:12 And it’s very profitable.

03:19:14 The idea that you could have taken something like that,

03:19:17 take a great game, release a new version every year

03:19:20 that lets the capabilities grow and expand

03:19:23 to start saying it’s like, OK, it’s

03:19:24 a game about running around and shooting things,

03:19:26 but now you can bring your media into it.

03:19:30 You can add persistence of social signs of life

03:19:35 or whatever you want to add to it.

03:19:37 I still think that’s quite a good position to take.

03:19:41 And I think that while Meta is doing a bottoms up capability

03:19:45 approach with Horizon Worlds where it’s

03:19:48 a fairly general purpose, creators

03:19:51 can build whatever they want in their sort of thing,

03:19:55 it’s hard to compare and compete with something

03:19:57 like Fortnite, which also has enormous amounts of creativity

03:20:01 even though it was not designed originally

03:20:03 as a general purpose sort of thing.

03:20:05 So we have examples on both sides.

03:20:08 Me personally, I would have bet on trying

03:20:11 to do entertainment, valuable destination first,

03:20:15 and expanding from there.

03:20:16 So can you imagine the thing that will be kind of,

03:20:22 if we look back a couple of centuries from now

03:20:25 and you think about the experiences that

03:20:29 marked the singularity, the transition where most

03:20:34 of our world moved into virtual reality,

03:20:37 what do you think those experiences will look like?

03:20:40 So I do think it’s going to be kind of like the way the web

03:20:43 slowly took over, where you’re the frog

03:20:46 in the pot of water that’s slowly heating up,

03:20:48 where having lived through all of that,

03:20:51 I remember when it was shocking to start

03:20:53 seeing the first website address on a billboard when you’re

03:20:57 like, hey, my computer world is infecting the real world.

03:21:00 This is spreading out in some way.

03:21:03 But when you look back and say, well,

03:21:05 what made the web take off?

03:21:08 And it wasn’t a big bang sort of moment there.

03:21:12 It was a bunch of little things that turned out

03:21:14 not to even be the things that are relevant now

03:21:17 that brought them into it.

03:21:18 So I wonder if, I mean, like you said, you’re not a historian.

03:21:23 So maybe there is a historian out there

03:21:26 that could really identify that moment, data driven way.

03:21:30 It could be like MySpace or something like that.

03:21:33 Maybe the first major social network that really reached

03:21:37 into non geek world or something like that.

03:21:42 I think that’s kind of the fallacy of historians, though,

03:21:45 looking for some of those kind of primary dominant causes

03:21:48 where so many of these things are like we

03:21:51 see an exponential curve.

03:21:52 But it’s not because like one thing is going exponential.

03:21:55 It’s because we have hundreds of little sigmoid curves

03:21:59 overlapped on top of each other.

03:22:00 And they just happen to keep adding up

03:22:02 so that you’ve got something kind of going exponential

03:22:05 at any given point.

03:22:06 But no single one of them was the critical thing.

03:22:09 There were dozens and dozens of things.

03:22:11 I mean, seeing the transitions of stuff

03:22:13 like as obviously MySpace giving way to other things,

03:22:16 but even like blogging giving way to social media

03:22:20 and getting resurrected in other guises.

03:22:22 And the memes with the dancing baby GIF

03:22:26 or whatever the all your base now belong to us.

03:22:29 Whatever those early memes that led to the modern memes

03:22:32 and the different evolution of humor on the internet

03:22:37 that I’m sure the historians will also write books about

03:22:40 from the different website that support

03:22:42 to create the infrastructure for that humor like Reddit

03:22:45 and all that kind of stuff.

03:22:46 So people will go back, and they will name

03:22:48 firsts and critical moments.

03:22:50 But it’s probably going to be a poor approximation of what

03:22:53 actually happens.

03:22:54 And we’ve already seen in the VR space

03:22:57 where it didn’t play out the way we thought it would in terms

03:23:01 of what was going to be like when the modern era of VR

03:23:04 basically started with my E3 demo of Doom 3

03:23:07 on the Rift prototype.

03:23:08 So we’re like first person shooters in VR,

03:23:10 match made in heaven, right?

03:23:12 And that didn’t work out that way at all.

03:23:15 They have the most comfort problems with it.

03:23:18 And then the most popular virtual reality app

03:23:21 is Beat Saber, which nobody predicted back then.

03:23:24 What’s that make you like from first principles

03:23:28 if you were to reverse engineer that?

03:23:31 Why are these silly fun games the most?

03:23:35 It actually makes very clear sense

03:23:37 when you analyze it from hindsight

03:23:40 and look at the engineering reasons

03:23:41 where it’s not just that it was a magical quirky idea.

03:23:45 It was something that played almost perfectly

03:23:47 to what turned out to be the real strengths of VR

03:23:50 where the one thing that I really underestimated

03:23:52 importance in VR was the importance of the controllers.

03:23:55 I was still thinking we could do a lot more

03:23:57 with the game pad and just the amazingness

03:24:00 of taking any existing game,

03:24:01 being able to move your head around and look around,

03:24:04 that that was really amazing.

03:24:06 But the controllers were super important.

03:24:09 But the problem is so many things

03:24:10 that you do with the controllers just suck.

03:24:13 It feels like it breaks the illusion

03:24:14 like trying to pick up glasses with the controllers

03:24:16 where you’re like, oh, use the grip button

03:24:18 when you’re kind of close and it’ll snap into your hand.

03:24:21 All of those things are unnatural actions

03:24:24 that you do them and it’s still part of the VR experience.

03:24:27 But Beat Saber winds up playing only to the strengths.

03:24:32 It completely hides all the weaknesses of it

03:24:34 because you are holding something in your hand.

03:24:37 You keep a solid grip on it the whole time.

03:24:39 It slices through things without ever bumping into things.

03:24:42 You never get into the point where,

03:24:44 I’m knocking on this table,

03:24:45 but in VR, my hand just goes right through it.

03:24:48 So you’ve got something that slices through.

03:24:51 So it’s never your brain telling you,

03:24:53 oh, I should have hit something.

03:24:54 You’ve got a lightsaber here.

03:24:55 It’s just, you expect it to slice through everything.

03:24:58 Audio and music turned out to be a really powerful aspect

03:25:02 of virtual reality where you’re blocking the world off

03:25:05 and constructing the world around you.

03:25:07 And being something that can run efficiently

03:25:10 on even this relatively low powered hardware

03:25:13 and can have a valuable loop in a small amount of time

03:25:17 where a lot of modern games,

03:25:19 you’re supposed to sit down and play it for an hour

03:25:21 just to get anywhere.

03:25:22 Sometimes a new game takes an hour

03:25:23 to get through the tutorial level.

03:25:25 And that’s not good for VR for a couple reasons.

03:25:27 You do still have the comfort issues

03:25:29 if you’re moving around at all,

03:25:31 but you’ve also got just discomfort from the headset,

03:25:34 battery lifespan on the mobile versions.

03:25:37 So having things that do break down

03:25:39 into three and four minute windows of play,

03:25:42 that turns out to be very valuable

03:25:43 from a gameplay standpoint.

03:25:45 So it winds up being kind of a perfect storm

03:25:48 of all of these things that are really good.

03:25:50 It doesn’t have any of the comfort problems.

03:25:52 You’re not navigating around.

03:25:53 You’re standing still.

03:25:54 All the stuff flies at you.

03:25:56 It has placed audio strengths.

03:25:59 It adds the whole fitness in VR.

03:26:01 Nobody was thinking about that back at the beginning.

03:26:04 And it turns out that that is an excellent

03:26:07 daily fitness thing to be doing.

03:26:09 If you go play an hour of Beat Saber

03:26:11 or Supernatural or something,

03:26:13 that is legit solid exercise.

03:26:16 And it’s more fun than doing it

03:26:17 just about any other way there.

03:26:19 So that’s kind of the arcade stage of things.

03:26:23 If I were to say with my experience with VR,

03:26:27 the thing that I think is powerful is the,

03:26:30 maybe it’s not here yet,

03:26:32 but the degree to which it is immersive

03:26:35 in the way that Quake is immersive.

03:26:38 It takes you to another world.

03:26:40 For me, because I’m a fan of role playing games,

03:26:44 the Elder Scrolls series,

03:26:47 like Skyrim or even Daggerfall,

03:26:50 it just takes you to another world.

03:26:52 And when you’re not in that world,

03:26:53 you miss not being there.

03:26:55 And then you just, you kind of want to stay there forever

03:26:58 because life is shitty.

03:27:00 And you just want to go to this place.

03:27:04 Is that there was a time when we were kind of asked

03:27:09 to come up with like, what’s your view about VR?

03:27:12 And my pitch was that it should be better

03:27:15 inside the headset than outside.

03:27:17 It’s the world as you want it.

03:27:19 And everybody thought that was dystopian.

03:27:21 And like, that’s like, oh,

03:27:23 you’re just going to forget about the world outside.

03:27:25 And I don’t get that mindset where the idea

03:27:29 that if you can make the world better inside the headset

03:27:32 than outside, you’ve just improved the person’s life

03:27:36 that has a headset that can wear it.

03:27:38 And there are plenty of things that we just can’t do

03:27:41 for everyone in the real world.

03:27:42 Everybody can’t have Richard Branson’s Private Island,

03:27:44 but everyone can have a private VR Island

03:27:47 and it can have the things that they want on it.

03:27:49 And there’s a lot of these kind of rivalrous goods

03:27:51 in the real world that VR can just be better at.

03:27:55 We can do a lot of things like that

03:27:57 that can be very, very rich.

03:27:59 So yeah, I want the,

03:28:01 I think it’s going to be a positive thing,

03:28:02 this world where people want to go back into their headset,

03:28:05 where it can be better than somebody that’s living

03:28:07 in a tiny apartment can have a palatial estate

03:28:10 in virtual reality.

03:28:11 They can have all their friends from all over the world

03:28:13 come over and visit them without everybody getting

03:28:16 on a plane and meeting in some place

03:28:19 and dealing with all the other logistics hassles.

03:28:21 There is real value in the presence that you can get

03:28:25 for remote meetings.

03:28:26 It’s all the little things that we need to sort out,

03:28:30 but those are things that we have line of sight on.

03:28:32 People that have been in like a good VR meeting

03:28:35 using work rooms where you can say,

03:28:38 oh, that was better than a Zoom meeting.

03:28:40 But of course it’s more of a hassle to get into it.

03:28:42 Not everyone has the headset.

03:28:44 Interoperability is worse.

03:28:46 You can’t have, you cap out at a certain number.

03:28:48 There’s all these things that need to be fixed,

03:28:50 but that’s one of those things you can look at and say,

03:28:52 we know there’s value there.

03:28:54 We just need to really grind hard,

03:28:56 file off all the rough edges and make that possible.

03:28:59 So you do think we have line of sight

03:29:02 because there’s a reason like,

03:29:06 I do this podcast in person, for example.

03:29:09 So doing it remotely, it’s not the same.

03:29:14 And if somebody were to ask me why it’s not the same,

03:29:16 I wouldn’t be able to write down exactly why.

03:29:20 But you’re saying that it’s possible,

03:29:23 whatever the magic is for in person interaction,

03:29:26 that immersiveness of the experience,

03:29:30 we are almost there.

03:29:32 Yes, so the idea of like,

03:29:34 I’m doing a VR interview with someone.

03:29:37 I’m not saying it’s here right now,

03:29:39 but you can see glimmers of what it should be.

03:29:42 And we largely know what would need to be fixed

03:29:46 and improved to, like you say,

03:29:48 there’s a difference between at remote interview

03:29:50 doing a podcast over Zoom or something and face to face.

03:29:53 There’s that sense of presence, that immediacy,

03:29:56 the super low latency responsiveness,

03:29:59 being able to see all the subtle things there,

03:30:01 just occupying the same field of view.

03:30:03 And all of those are things

03:30:04 that we absolutely can do in VR.

03:30:07 And that simple case of a small meeting

03:30:10 with a couple of people, that’s the much easier case

03:30:13 than everybody thinks the Ready Player One multiverse

03:30:15 with a thousand people going across a huge bridge

03:30:18 to amazing places,

03:30:20 that’s harder in a lot of other technical ways.

03:30:22 Not to say we can’t also do that,

03:30:24 but that’s further away and has more challenges.

03:30:26 But this small thing about being able to have a meeting

03:30:29 with one or a few people and have it feel real,

03:30:33 feel like you’re there,

03:30:35 like you have the same interactions and talking with them,

03:30:37 you get subtle cues as we start getting eye

03:30:40 and face tracking and some of the other things

03:30:42 on high end headsets.

03:30:43 A lot of that is going to come over

03:30:46 and it doesn’t have to be as good.

03:30:49 This is an important thing that people miss

03:30:51 where there was a lot of people that,

03:30:54 especially rich people that would look at VR and say,

03:30:57 it’s like, oh, this just isn’t that good.

03:30:59 And I’d say, it’s like, well,

03:31:00 you’ve already been courtside backstage and on pit row

03:31:05 and you’ve done all of these experiences

03:31:06 because you get to do them in real life.

03:31:08 But most people don’t get to.

03:31:10 And even if the experience is only half as good,

03:31:13 if it’s something that they never would have gotten

03:31:15 to do before, it’s still a very good thing.

03:31:17 And as we can just, we can push that number up over time.

03:31:20 It has a minimum viable value level

03:31:24 when it does something that is valuable enough to people,

03:31:27 as long as it’s better inside the headset on any metric

03:31:29 than it is outside and people choose to go there,

03:31:32 we’re on the right path.

03:31:33 And we have a value gradient

03:31:35 that I’m just always hammering on.

03:31:37 We can just follow this value gradient,

03:31:39 just keep making things better

03:31:41 rather than going for that one, close your eyes,

03:31:44 swing for the fences, kind of silver bullet approach.

03:31:48 Well, I wonder if there’s a value gradient

03:31:50 for in person meetings, because if you get that right,

03:31:53 I mean, that would change the world.

03:31:54 Yeah. That it doesn’t need to,

03:31:57 I mean, you don’t need a ready player one.

03:31:59 But I wonder if there’s that value gradient

03:32:02 you can follow along, because if there is and you follow it,

03:32:08 then there’ll be a certain like phase shift

03:32:11 at a certain point where people will shift

03:32:14 from Zoom to this.

03:32:18 I wonder, what are the bottlenecks?

03:32:23 Is it software, is it hardware?

03:32:25 Is it like, is it all about latency?

03:32:27 So I have big arguments internally

03:32:30 about strategic things like that,

03:32:32 where like the next headset that’s coming out

03:32:36 that we’ve made various announcements about

03:32:38 is gonna be a higher end headset,

03:32:40 more expensive, more features.

03:32:41 Lots of people wanna make those trade offs.

03:32:45 We’ll see what the market has to say

03:32:47 about the exact trade offs we’ve made here.

03:32:49 But if you wanna replace Zoom,

03:32:51 you need to have something that everybody has.

03:32:55 So you like cheaper.

03:32:56 I like cheaper because also lighter and cheaper

03:33:00 wind up being a virtuous cycle there

03:33:03 where expensive and more features

03:33:05 tends to also lead towards heavier.

03:33:07 And it just kind of goes, it’s like, let’s add more features.

03:33:09 The features are not, they have physical presence

03:33:13 and weight and draw from batteries and all of those things.

03:33:16 So I’ve always favored a lower end, cheaper, faster approach.

03:33:21 That’s why I was always behind the mobile side of VR

03:33:24 rather than the higher end PC headsets.

03:33:26 And I think that’s proven out well.

03:33:29 But there’s, ideally we have a whole range of things,

03:33:32 but if you’ve only got one or two things,

03:33:35 it’s important that those two things cover

03:33:37 the scope that you think is most important.

03:33:40 When we’re in a world when it’s like cell phones

03:33:42 and there’s 50 of them on the market

03:33:44 covering every conceivable ecological niche you want,

03:33:46 that’s gonna be great,

03:33:47 but we’re not gonna be there for a while.

03:33:49 Where are the bottlenecks?

03:33:51 Is it the hardware or the software?

03:33:53 Yeah, so right now you can play,

03:33:56 you can get work rooms on Quest

03:33:58 and you can set up these things

03:34:00 and it’s a pretty good experience.

03:34:01 It’s surprisingly good.

03:34:02 I haven’t tried it.

03:34:03 It’s surprisingly good.

03:34:05 Yeah, the voice latency is better on that

03:34:08 than a lot better than a Zoom meeting.

03:34:10 So you’ve got a more, a better sense of immediacy there.

03:34:13 The expressions that you get from the current hardware

03:34:17 with just kind of your controllers and your head

03:34:20 is pretty realistic feeling.

03:34:21 You’ve got a pretty good sense of being there

03:34:23 with someone with it.

03:34:24 Are these like avatars of people?

03:34:27 Yeah.

03:34:28 Do you get to see their body?

03:34:29 Yeah.

03:34:30 And they’re sitting around a table?

03:34:32 Yeah.

03:34:33 And it feels better than Zoom?

03:34:35 It feels better than you, yeah,

03:34:36 better than you’d expect for that.

03:34:37 It is definitely, yeah, I’d say it’s quite a bit better

03:34:42 than Zoom when everything’s working right,

03:34:43 but there’s still all the rough edges of,

03:34:46 the reason Zoom became so successful

03:34:48 is because they just nailed the usability of everything.

03:34:51 It’s high quality with a absolutely first rate experience.

03:34:54 And we are not there yet with any of the VR stuff.

03:34:58 I’m trying to push hard to get,

03:35:00 I keep talking about it’s like,

03:35:02 it needs to just be one click to make everything happen.

03:35:05 And we’re getting there in our home environment,

03:35:07 not the whole work rooms application,

03:35:09 but the main home where you can now kind of go over

03:35:11 and click and invite,

03:35:12 and it still winds up taking five times longer

03:35:15 than it should,

03:35:16 but we’re getting close to that where you click there,

03:35:19 they click on their button and then they’re sitting there

03:35:22 in this good presence with you,

03:35:23 but latencies need to get a lot better.

03:35:25 User interface needs to get a lot better.

03:35:28 Ubiquity of the headsets needs to get better.

03:35:30 We need to have a hundred million of them out there

03:35:33 just so that everybody knows somebody

03:35:35 that uses this all the time.

03:35:37 Well, I think it’s a virtuous cycle

03:35:38 because I do think the interface

03:35:44 is the thing that makes or breaks this kind of revolution.

03:35:48 It’s so interesting how like you said one click,

03:35:50 but it’s also like how you achieve that one click.

03:35:53 I don’t know.

03:35:54 What is, can I ask a dark question?

03:35:58 Maybe let’s keep it outside of meta,

03:36:00 but this is about meta, but also Google and big company.

03:36:05 Are they able to do this kind of thing?

03:36:07 It seems like, let me put on my cranky old man hat,

03:36:12 is they seem to not do a good job

03:36:15 of creating these user friendly interfaces

03:36:20 as they get bigger and bigger as a company.

03:36:22 Like Google has created some of the greatest interfaces ever

03:36:27 early on in its, I mean, creating Gmail,

03:36:30 just so many brilliant interfaces

03:36:33 and it just seems to be getting crappier

03:36:35 and crappier at that.

03:36:37 Same with meta, same with Microsoft.

03:36:42 It’s just, it seems to get worse and worse at that.

03:36:45 I don’t know what it is,

03:36:46 because you’ve become more conservative,

03:36:47 careful, risk averse.

03:36:49 Is that why?

03:36:51 Can you speak to that?

03:36:51 It’s been really eye opening to me

03:36:53 working inside a tech titan,

03:36:55 where I had my small companies

03:36:59 and then we’re acquired by a midsize game publisher

03:37:03 and then Oculus getting acquired by meta

03:37:06 and meta has grown by a factor of many

03:37:08 just in the eight years since the acquisition.

03:37:12 So I did not have experience with this

03:37:16 and it was interesting because I remember like previously

03:37:19 my benchmark for kind of use of resources

03:37:23 was some of the government programs I interacted with

03:37:25 on the aerospace side.

03:37:26 And I remember thinking there was,

03:37:28 okay, there’s an air force program

03:37:30 and they spent $50 million and they didn’t launch anything.

03:37:34 They didn’t even build anything.

03:37:35 It was just kind of like they made a bunch of papers

03:37:39 and had some parts in a warehouse and nothing came of it.

03:37:42 It’s like $50 million and I’ve had to radically recalibrate

03:37:47 my sense of like how much money can be spent

03:37:50 with mediocre resources.

03:37:54 Where on the plus side, VR has turned out,

03:37:58 we’ve built pretty much exactly what,

03:38:02 we just passed the 10 year mark then

03:38:03 from like my first demo of the Rift.

03:38:06 And if I could have said what I wanted to have,

03:38:09 it would have been a standalone inside out tracked

03:38:12 4K resolution headset that I,

03:38:15 that could still plug into a PC for high end rendering.

03:38:18 And that’s exactly what we’ve got on Quest 2 right now.

03:38:20 Yes, first of all, let’s pause on that

03:38:22 with me being cranky and everything.

03:38:24 It’s what Meta achieved with Oculus and so on is incredible.

03:38:30 I mean, this is, when I thought about the future of VR,

03:38:34 this is what I imagined in terms of hardware, I would say.

03:38:36 And maybe in terms of the experience as well,

03:38:39 but it’s still not there somehow.

03:38:42 On the one hand, we did kind of achieve it and win.

03:38:44 And we’ve got, we’ve sold, we’re a success right now,

03:38:48 but the amount of resources that have gone into it,

03:38:51 it winds up getting cluttered up in accounting

03:38:53 where Mark did announce that they spent $10 billion a year,

03:38:58 like on Reality Labs.

03:38:59 Now Reality Labs covers a lot.

03:39:01 It was, VR was not the large part of it.

03:39:04 It also had Portal and Spark

03:39:05 and the big AR research efforts.

03:39:08 And it’s been expanding out to include AI

03:39:11 and other things there where there’s a lot going on there.

03:39:15 But $10 billion was just a number

03:39:18 that I had trouble processing.

03:39:20 It’s just, I feel sick to my stomach

03:39:22 thinking about that much money being spent.

03:39:24 But that’s how they demonstrate commitment to this,

03:39:27 where it’s not more so than like, yeah,

03:39:31 Google goes and cancels all of these projects,

03:39:34 different things like that,

03:39:36 while Meta is really sticking with the funding of VR

03:39:39 and AR is still further out with it.

03:39:41 So there’s something to be said for that.

03:39:44 It’s not just gonna vanish, the work’s going in.

03:39:46 I just wish it could be,

03:39:48 all those resources could be applied more effectively

03:39:51 because I see all these cases.

03:39:53 I point out these examples of how a third party

03:39:56 that we’re kind of competing with in various ways.

03:39:58 There’s a number of these examples

03:40:00 and they do work with a 10th of the people

03:40:03 that we do internally and a lot of it comes from,

03:40:06 yes, the small company can just go do it

03:40:10 while in a big company, you do have to worry about,

03:40:13 is there some SDK internally that you should be using

03:40:16 because another team’s making it,

03:40:18 you have to have your cross functional group meetups

03:40:21 for different things.

03:40:22 You do have more concerns about privacy

03:40:25 or diversity and equity and safety of different things,

03:40:28 parental issues and things that a small startup company

03:40:31 can just kind of cowboy off and do something interesting.

03:40:36 And there’s a lot more that is a problem

03:40:39 that you have to pay attention to in the big companies,

03:40:41 but I’m not willing to believe that we are within

03:40:43 even a factor of two or four

03:40:46 of what the efficiency could be.

03:40:48 I am constantly kind of crying out for it’s like,

03:40:52 we can do better than this.

03:40:53 And you wonder what the mechanisms

03:40:55 to unlock that efficiency are.

03:40:57 I don’t, there is some sense in a large company

03:41:02 that like an individual engineer might not believe

03:41:05 that they can change the world.

03:41:07 Maybe you delegate a little bit of the responsibility

03:41:11 to be the one who changes the world in a big company,

03:41:14 I think, but the reality is like the world will get changed

03:41:19 by a single engineer anyway.

03:41:21 So if whether inside Google or inside a startup,

03:41:24 it doesn’t matter, it’s just like Google

03:41:26 and Meta needs to help those engineers believe

03:41:29 they’re the ones that are gonna decrease that latency.

03:41:32 It’ll take one John Carmack, the 20 year old Carmack

03:41:37 that’s inside Meta right now to change everything.

03:41:40 And I try to point that out and push people.

03:41:43 It’s like, try to go ahead.

03:41:45 And when you see some, because there is,

03:41:46 you get the silo mentality where you’re like,

03:41:48 okay, I know something’s not right over there,

03:41:50 but I’m staying in my lane here.

03:41:53 And there’s a couple of people that I can think about

03:41:57 that are willing to just like hop all over the place

03:41:59 and man, I treasure them.

03:42:01 The people that are just willing to, they’re fearless.

03:42:03 They will go over and they will go rebuild the kernel

03:42:06 and change this distribution and go in

03:42:08 and hack a firmware over here to get something done right.

03:42:11 And that is relatively rare.

03:42:14 There’s thousands of developers

03:42:15 and you’ve got a small handful that are willing

03:42:17 to operate at that level.

03:42:19 And it’s potentially risky for them.

03:42:22 The politics are real in a lot of that.

03:42:24 And I’m in the very much the privileged position

03:42:27 of I’m more or less untouchable there

03:42:31 where I’ve been dinged like twice

03:42:33 for it’s like you said something insensitive in that post

03:42:35 and you should probably not say that.

03:42:38 But for the most part, yes, I get away with,

03:42:42 every week I’m posting something pretty loud

03:42:45 and opinionated internally.

03:42:47 And I think that’s useful for the company,

03:42:50 but yeah, it’s rare to have a position like that.

03:42:54 And I can’t necessarily offer advice

03:42:56 for how someone can do that.

03:42:59 Well, you could offer advice to a company in general

03:43:01 to give a little bit of freedom for the young wild,

03:43:06 like the wildest ideas come from the young minds.

03:43:10 And so you need to give the young minds freedom

03:43:13 to think big and wild and crazy.

03:43:16 And for that, they have to be opinionated.

03:43:18 They have to think crazy ideas and thoughts

03:43:24 and pursue them with a full passion

03:43:26 without being slowed down by bureaucracy or managers

03:43:29 and all that kind of stuff.

03:43:31 Obviously startups really empower that,

03:43:33 but big companies could too.

03:43:34 And that’s a design challenge for big companies

03:43:37 to see how can you enable that?

03:43:40 How can you empower that?

03:43:41 Yeah, because the big company,

03:43:41 there are so many resources there.

03:43:43 And they do, amazing things do get accomplished,

03:43:46 but there’s so much more that could come out of that.

03:43:49 And I’m always hopeful.

03:43:51 I’m an optimist in almost everything.

03:43:53 I think things can get better.

03:43:54 I think that they can improve things

03:43:56 that you go through a path

03:43:58 and you’re learning kind of what does and doesn’t work.

03:44:01 And I’m not ready to be fatalistic

03:44:03 about the kind of the outcome of any of that.

03:44:06 Me neither, I know too many good people

03:44:09 inside of those large companies that are incredible.

03:44:12 You have a friendship with Elon Musk.

03:44:16 Often when I talk to him,

03:44:17 he’ll bring up how incredible of an engineer

03:44:19 and just a big picture thinker you are.

03:44:22 His huge amount of respect for you.

03:44:26 I just, I’ve never been a fly in the wall

03:44:28 between a discussion between the two of you.

03:44:30 I just wonder, is there something you guys debate,

03:44:34 argue about, discuss?

03:44:36 Is there some interesting problems

03:44:38 that the two of you think about?

03:44:41 You come from different worlds.

03:44:42 Maybe there’s some intersection in aerospace.

03:44:45 Maybe there’s some intersection

03:44:48 in your new efforts in artificial intelligence

03:44:52 in terms of thinking.

03:44:53 Is there something interesting you could say

03:44:55 about sort of the debates the two of you have?

03:44:57 So I think in some ways,

03:44:58 we do have a kind of similar background

03:45:01 where we’re almost exactly the same age.

03:45:03 And we had kind of similar programming backgrounds

03:45:06 on the personal computers

03:45:07 and even some of the books that we would read

03:45:10 and things that would kind of turn us into the people

03:45:13 that we are today.

03:45:14 And I think there is a degree of sensibility similarities

03:45:19 where we kind of call bullshit on the same things

03:45:22 and kind of see the same opportunities

03:45:25 in different technology.

03:45:27 And there’s that sense of,

03:45:29 I always talk about the speed of light solutions for things.

03:45:31 And he’s thinking about kind of minimum manufacturing

03:45:34 and engineering and operational standpoints for things.

03:45:39 And so, I mean, I first met Elon

03:45:42 right at the start of the aerospace era

03:45:44 where I wasn’t familiar with,

03:45:46 I was still in my game dev bubble.

03:45:47 I really wasn’t familiar with all the startups

03:45:49 that were going and being successful

03:45:52 and what went on with PayPal

03:45:53 and all of his different companies.

03:45:54 But I met him as I was starting to do armadillo aerospace.

03:45:58 And he came down with kind of his right hand propulsion guy.

03:46:03 And we talked about rockets.

03:46:05 What can we do with this?

03:46:07 And it was kind of specific things

03:46:09 about like how are our flight computers set up?

03:46:12 What are different propellant options?

03:46:14 You know, what can happen with different ways

03:46:17 of putting things together?

03:46:19 And then in some ways,

03:46:21 he was certainly the biggest player

03:46:22 in the sort of alt space community

03:46:24 that was going on in the early 2000s.

03:46:28 He was the most well funded,

03:46:30 although his funding in the larger scheme of things

03:46:32 compared to like a NASA or something like that

03:46:36 was really tiny.

03:46:38 It was a lot more than I had at the time.

03:46:40 But it was interesting.

03:46:42 I had a point years later when I realized,

03:46:45 okay, my financial resources at this point

03:46:48 are basically what Elon’s was

03:46:50 when he went all in on SpaceX and Tesla.

03:46:54 And there’s, I think in many corners,

03:46:58 he does not get the respect that he should

03:47:01 about being a wealthy person that could just retire.

03:47:04 And he went all in where he was really going to,

03:47:08 he could have gone bust.

03:47:11 And there’s plenty of people,

03:47:12 you’d look at the sad athletes or entertainers

03:47:16 that had all the money in the world and blew it.

03:47:18 And he could have been the business case example of that.

03:47:22 But the things that he was doing,

03:47:25 space exploration, electrification of transportation,

03:47:29 solar city type things,

03:47:31 these are big world level things.

03:47:34 And I have a great deal of admiration

03:47:36 that he was willing to throw himself so completely

03:47:40 into that because in contrast with myself,

03:47:43 I was doing armadillo aerospace with this tightly bounded,

03:47:47 it was John’s crazy money at the time

03:47:49 that had a finite limit on it.

03:47:51 It was never going to impact me or my family

03:47:54 if it completely failed.

03:47:56 And I was still hedging my bets,

03:47:58 working at id Software at the time

03:48:01 when he had been really all in there.

03:48:04 And I have a huge amount of respect for that.

03:48:08 And people do not,

03:48:09 the other thing I get irritated with is people that say,

03:48:11 it’s like, oh, Elon’s just a business guy.

03:48:13 He just got like, he was gifted the money

03:48:16 and he’s just kind of investing in all of this

03:48:19 when he was really deeply involved

03:48:22 in a lot of the decisions.

03:48:24 Not all of them were perfect,

03:48:25 but he cared very much about engine material selection,

03:48:30 propellant selection.

03:48:31 And for years he’d be kind of telling me,

03:48:34 it’s like, get off that hydrogen peroxide stuff.

03:48:37 It’s like, liquid oxygen is the only proper oxidizer

03:48:40 for this.

03:48:41 And the times that I’ve gone through the factories

03:48:46 with him, we’re talking very detailed things

03:48:49 about like how this weld is made,

03:48:51 how this sub assembly goes together,

03:48:54 what are like startup shut down behaviors

03:48:57 of the different things.

03:48:58 So he is really in there at a very detailed level.

03:49:03 And I think that he is the best modern example now

03:49:06 of someone that tries to,

03:49:08 that can effectively micromanage some decisions on things

03:49:11 on both Tesla and SpaceX to some degree

03:49:15 where he cares enough about it.

03:49:16 I worry a lot that he stretched too thin

03:49:19 that you get Boring Company and Neuralink and Twitter

03:49:23 and all the other possible things there

03:49:25 where I know I’ve got limits on how much I can pay attention

03:49:30 to that I have to kind of box off different amounts of time.

03:49:34 And I look back at like at my aerospace side of things,

03:49:36 it’s like, I did not go all in on that.

03:49:38 I did not commit myself at a level

03:49:40 that it would have taken to be successful there.

03:49:43 And I, yeah, and it’s kind of a weird thing

03:49:46 just like having a discussion with him.

03:49:49 He’s the richest man in the world right now,

03:49:50 but he operates on a level that is still very much

03:49:55 in my wheelhouse on a technical side of things.

03:50:00 So.

03:50:01 That doing that systems level type of thinking

03:50:02 where you can go to the low level details

03:50:04 and go up high to the big picture.

03:50:07 Do you think in aerospace arena

03:50:12 in the next five, 10 years,

03:50:14 do you think we’re gonna put a human on Mars?

03:50:16 Like, what do you think is the interesting?

03:50:20 No, I do, in fact, I made a bet with someone

03:50:23 with a group of people kind of this

03:50:24 about whether boots on Mars by 2030.

03:50:28 And this was kind of a fun story

03:50:31 because I was at an Intel sponsored event

03:50:34 and we had a bunch of just world class, brilliant people.

03:50:37 And we were talking about computing stuff,

03:50:39 but the after dinner conversation was like,

03:50:41 what are some other things?

03:50:42 How are they gonna go in the future?

03:50:43 And one of the ones tossed up on the whiteboard

03:50:46 was like boots on Mars by 2030.

03:50:49 And most of the people in the room thought, yes,

03:50:52 I thought that like, SpaceX is kicking ass.

03:50:54 We’ve got all this possible stuff.

03:50:57 Seems likely that it’s gonna go that way.

03:50:59 And I said, no, I think less than 50% chance

03:51:03 that it’s going to make it there.

03:51:05 And people were kind of like,

03:51:07 oh, why the pessimism or whatever?

03:51:09 And of course I’m an optimist at almost everything,

03:51:12 but for me to be the one kind of outlier saying,

03:51:14 no, I don’t think so.

03:51:17 Then I started saying some of the things I said,

03:51:19 well, let’s be concrete about it.

03:51:21 Let’s bet $10,000 that it’s not gonna happen.

03:51:24 And this was really a startling thing to see that I,

03:51:29 again, room full of brilliant people,

03:51:31 but as soon as like money came on the line

03:51:34 and they were like, do I wanna put 10,000?

03:51:36 I was not the richest person in the room.

03:51:38 There were people much better off than I was.

03:51:41 There’s a spectrum, but as soon as they started thinking,

03:51:45 it’s like, oh, I could lose money

03:51:46 by keeping my position right now.

03:51:50 And all these engineers, they engaged their brain.

03:51:53 They started thinking, it’s like, okay,

03:51:55 launch windows, launch delays,

03:51:57 like how many times would it take to get this right?

03:52:00 What historical precedents do we have?

03:52:02 And then it mostly came down to, it’s like,

03:52:05 well, what about in transit by 2030?

03:52:08 And then what about different things

03:52:11 or would you go for 2032?

03:52:13 But one of the people did go ahead

03:52:15 and was optimistic enough to make a bet with me.

03:52:18 So I have a $10,000 bet that by 2030,

03:52:21 I think it’s gonna happen shortly thereafter.

03:52:24 I think there will probably be infrastructure on Mars

03:52:26 by 2030, but I don’t think that we’ll have humans

03:52:29 on Mars on 2030.

03:52:31 I think it’s possible, but I think it’s less

03:52:33 than a 50% chance, so I felt safe making that bet.

03:52:36 Well, I think you had an interesting point.

03:52:39 Correct me if I’m wrong.

03:52:41 That’s a dark one.

03:52:42 That should perhaps help people appreciate Elon Musk,

03:52:48 which is, in this particular effort,

03:52:53 Elon is critical to the success.

03:52:56 SpaceX seems to be critical to, you know,

03:53:03 humans on Mars by 2030 or thereabouts.

03:53:07 So if something happens to Elon,

03:53:09 then all of this collapses.

03:53:12 And this is in contrast to the other $10,000 bet

03:53:16 I made kind of recently, and that was self driving cars

03:53:19 at like a level five running around cities.

03:53:22 And people have kind of nitpicked that

03:53:24 that we probably don’t mean exactly level five,

03:53:26 but the guy I’m having the bet with is,

03:53:29 we’re gonna be, we know what we mean about this.

03:53:31 Jeff Atwood.

03:53:32 Yeah, coding horror and stack overflow and all.

03:53:36 But yeah, I mean, he doesn’t think that people

03:53:40 are gonna be riding around in robo taxis in 2030

03:53:43 in major cities, just like you take an Uber now.

03:53:47 And I think it will.

03:53:48 You think it will.

03:53:49 And the difference is, everybody looks at this,

03:53:51 it’s like, oh, but Tesla’s been wrong for years.

03:53:53 They’ve been promising it for years and it’s not here yet.

03:53:56 And the reason this is different than the bet with Mars

03:54:00 is Mars really is more than is comfortable

03:54:04 a bet on Elon Musk.

03:54:06 That is his thing and he is really going to move

03:54:11 heaven and earth to try to make that happen.

03:54:13 And perhaps not even SpaceX, perhaps just Elon Musk.

03:54:17 Yeah, because if Elon went away and SpaceX went public

03:54:21 and got a board of directors,

03:54:23 there are more profitable things they could be doing

03:54:26 than focusing on human presence on Mars.

03:54:29 So this really is a sort of personal thing there.

03:54:32 And in contrast with that, self driving cars

03:54:36 have a dozen credible companies working really hard.

03:54:40 And while, yes, it’s going slower

03:54:43 than most people thought it would,

03:54:45 betting against that is a bet against almost the entire world

03:54:49 in terms of all of these companies

03:54:51 that have all of these incentives.

03:54:53 It’s not just one guy’s passion project.

03:54:56 And I do think that it is solvable.

03:54:59 Although I recognize it’s not 100% chance

03:55:02 because it’s possible the long tail of self driving problems

03:55:05 winds up being an AGI complete problem.

03:55:08 I think there’s plenty of value to mine out of it with narrow AI.

03:55:11 And I think that it’s going to happen probably more so

03:55:15 than people expect.

03:55:16 But it’s that whole sigmoid curve

03:55:18 where you overestimate the near term progress

03:55:21 and you underestimate the long term progress.

03:55:23 And I think self driving is going to be like that.

03:55:26 And I think 2030 is still a pretty good bet.

03:55:29 Yeah, unfortunately, self driving is a problem

03:55:35 that is safety critical, meaning that if you don’t do it well,

03:55:41 people get hurt.

03:55:43 But the other side of that is people are terrible drivers.

03:55:46 So it is not going to be,

03:55:48 that’s probably going to be the argument that gets it through

03:55:50 is like we can save 10,000 lives a year

03:55:54 by taking imperfect self driving cars

03:55:57 and letting them take over a lot of driving responsibilities.

03:56:00 It’s like 30,000 people a year die in auto accidents right now in America.

03:56:05 And a lot of those are preventable.

03:56:07 And the problem is you’ll have people that

03:56:09 every time a Tesla crashes into something,

03:56:11 you’ve got a bunch of people that literally have vested interests

03:56:14 shorting Tesla to come out and make it the worst thing in the world.

03:56:17 And people will be fighting against that.

03:56:19 But optimist in me again,

03:56:21 I think that we will have systems that are statistically safer than human drivers

03:56:26 and we will be saving thousands and thousands of lives every year

03:56:30 when we can hand over more of those responsibilities to it.

03:56:34 I do still think as a person who studied this problem very deeply

03:56:38 from a human side as well,

03:56:40 it’s still an open problem how good slash bad humans are driving.

03:56:46 It’s a kind of funny thing we say about each other.

03:56:49 Oh, humans suck at driving.

03:56:51 Everybody except you, of course.

03:56:54 Like we think we’re good at driving.

03:56:56 But I, after really studying it,

03:56:59 I think you start to notice, you know,

03:57:03 because I watched hundreds of hours of humans driving

03:57:06 with the projects of this kind of thing.

03:57:08 You’ve noticed that even with the distraction,

03:57:11 even with everything else,

03:57:13 humans are able to do some incredible things

03:57:17 with the attention,

03:57:19 even when you’re just looking at the smartphone,

03:57:21 just to get cues from the environment

03:57:23 to make last second decisions,

03:57:26 to use instinctual type of decisions that actually save your ass

03:57:30 time and time and time again.

03:57:32 And are able to do that with so much uncertainty around you

03:57:37 in such tricky dynamic environments.

03:57:40 I don’t know.

03:57:42 I don’t know exactly how hard is it to beat that kind of skill

03:57:49 of common sense reasoning.

03:57:51 This is one of those interesting things that there have been

03:57:53 a lot of studies about how experts in their field

03:57:56 usually underestimate the progress that’s going to happen

03:57:59 because an expert thinks about all the problems they deal with

03:58:02 and they’re like, damn, I’m going to have a hard time

03:58:05 solving all of this.

03:58:06 And they filter out the fact that they are one expert

03:58:08 in a field of thousands.

03:58:10 And you think about, yeah, I can’t do all of that.

03:58:13 And you sometimes forget about the scope of the ecosystem

03:58:16 that you’re embedded in.

03:58:18 And if you think back eight years, very specifically,

03:58:20 the state of AI and machine learning, where was that?

03:58:23 We had just gotten Resnets probably at that point.

03:58:26 And you look at all the amazing magical things

03:58:29 that have happened in eight years,

03:58:31 and they do kind of seem to be happening a little faster

03:58:34 in recent years also.

03:58:36 And you project that eight more years into the future,

03:58:39 where, again, I think there’s a 50% chance

03:58:41 we’re going to have signs of life of AGI,

03:58:43 which we can put through driver’s ed if we need to

03:58:46 to actually build self driving cars.

03:58:48 And I think that the narrow systems are going to have

03:58:51 real value demonstrated well before then.

03:58:54 So signs of life in AGI, you’ve mentioned that,

03:59:00 okay, first of all, you’re one of the most brilliant people

03:59:04 on this earth.

03:59:05 You could be solving a number of different problems,

03:59:08 as you’ve mentioned.

03:59:09 Your mind was attracted to nuclear energy.

03:59:12 Obviously, virtual reality with the metaverse

03:59:14 is something you could have a tremendous impact on.

03:59:16 So I do want to say a quick thing about nuclear energy,

03:59:19 where this is something that so precisely feels like

03:59:25 aerospace before SpaceX, where from everything that I know

03:59:29 about all of these, the physics of this stuff hasn’t changed.

03:59:33 And the reasons why things are expensive now

03:59:36 are not fundamental.

03:59:38 Somebody should be going into a really hard Elon Musk style

03:59:44 at fission, economical fission, not fusion,

03:59:48 where the fusion is the kind of the darling of people

03:59:52 that want to go and do nuclear because it doesn’t have

03:59:55 the taint that fission has in a lot of people’s minds.

03:59:58 But it’s an almost absurdly complex thing where nuclear fusion,

04:00:03 as you look at the tokamaks or any of the things that people

04:00:06 are building, and it’s doing all of this infrastructure

04:00:09 just at the end of the day to make something hot

04:00:12 that you can then turn into energy

04:00:14 through a conventional power plant.

04:00:16 And all of that work, which we think

04:00:18 we’ve got line of sight on, but even if it comes out,

04:00:21 then you have to do all of that immensely complex expensive

04:00:25 stuff just to make something hot, where nuclear fission

04:00:28 is basically you put these two rocks together

04:00:30 and they get hot all by themselves.

04:00:32 That is just that much simpler.

04:00:35 It’s just orders of magnitude simpler.

04:00:37 And the actual rocks, the refined uranium,

04:00:40 is not very expensive.

04:00:41 It’s a couple percent of the cost of electricity.

04:00:44 That’s why I made that point where you could have something

04:00:47 which was five times less efficient than current systems.

04:00:51 And if the rest of the plant was a whole bunch cheaper,

04:00:54 you could still be super, super valuable.

04:00:56 So how much of the pie do you think could be solved

04:01:02 by nuclear energy by fission?

04:01:04 So how much could it become the primary source

04:01:07 of energy on Earth?

04:01:08 It could be most of it.

04:01:10 Like the reserves of uranium, as it stands now,

04:01:12 could not power the whole Earth.

04:01:13 But you get into breeder reactors and thorium

04:01:16 and things like that that you do for conventional fission.

04:01:19 There is enough for everything.

04:01:22 Now, I mean, solar, photovoltaic has been amazing.

04:01:25 One of my current projects is working on an off grid system.

04:01:29 And it’s been fun just kind of, again, putting my hands

04:01:31 on all this, stripping the wires and wiring things together

04:01:34 and doing all of that.

04:01:35 And just having followed that a little bit

04:01:37 from the outside over the last couple decades,

04:01:40 there’s been semiconductor like magical progress

04:01:43 in what’s going on there.

04:01:45 So I’m all for all of that.

04:01:47 But it doesn’t solve everything.

04:01:49 And nuclear really still does seem like the smart money

04:01:52 bet for what you should be getting for baseband

04:01:55 on a lot of things.

04:01:56 And solar may be cheaper for peaking over air conditioning

04:02:00 loads during the summer and things

04:02:02 that you can push around in different ways.

04:02:05 But it’s one of those things that’s

04:02:07 it’s just strange how we’ve had the technology sitting there.

04:02:10 But these non technical reasons on the social optics of it

04:02:14 has been this major forcing function for something

04:02:18 that really should be at the cornerstone of all

04:02:21 of the world’s concerns with energy.

04:02:23 It’s interesting how the non technical factors have really

04:02:27 dominated something that is so fundamental to the existence

04:02:31 of the human race as we know it today.

04:02:34 And much of the troubles of the world,

04:02:36 including wars in different parts of the world like Ukraine

04:02:40 is energy based.

04:02:41 And yeah, it’s just sitting right there to be solved.

04:02:47 That said, I mean, to me personally,

04:02:50 I think it’s clear that if AGI were to be achieved,

04:02:53 that would change the course of human history.

04:02:55 So AGI wise, I was making this decision about what

04:03:00 do I want to focus on after VR.

04:03:03 And I’m still working on VR regularly.

04:03:06 I spend a day a week kind of consulting with Meta.

04:03:09 And Boz styles me the consulting CTO.

04:03:13 It’s kind of like the Sherlock Holmes that

04:03:15 comes in and consults on some of the specific tough issues.

04:03:18 And I’m still pretty passionate about all of that.

04:03:21 But I have been figuring out how to compartmentalize and force

04:03:25 that into a smaller box to work on some other things.

04:03:29 And I did come down to this decision

04:03:30 between working on economical nuclear fission

04:03:34 or artificial general intelligence.

04:03:36 And the fission side of things, I’ve

04:03:39 got a bunch of interesting things going that way.

04:03:42 But that would be a fairly big project thing to do.

04:03:46 I don’t think it needs to be as big as people expect.

04:03:49 I do think something original SpaceX sized, you build it,

04:03:53 power your building off of it, and then the government,

04:03:56 I think, will come around to what you need to.

04:03:59 Everybody loves an existence proof.

04:04:01 I think it’s possible somebody should be doing this.

04:04:03 But it’s going to involve some politics.

04:04:05 It’s going to involve decent sized teams

04:04:07 and a bunch of this cross functional stuff

04:04:09 that I don’t love.

04:04:11 While the artificial general intelligence side of things,

04:04:15 it seems to me like this is the highest leverage

04:04:21 moment for potentially a single individual,

04:04:24 potentially in the history of the world,

04:04:26 where the things that we know about the brain, about what we

04:04:30 can do with artificial intelligence,

04:04:33 nobody can say absolutely on any of these things.

04:04:36 But I am not a madman for saying that it is likely

04:04:40 that the code for artificial general intelligence

04:04:44 is going to be tens of thousands of lines of code,

04:04:48 not millions of lines of code.

04:04:50 This is code that conceivably one individual could write,

04:04:53 unlike writing a new web browser or operating system.

04:04:57 And based on the progress that AI, machine learning,

04:05:01 has made in the recent decade, it’s

04:05:04 likely that the important things that we don’t know

04:05:07 are relatively simple.

04:05:09 There’s probably a handful of things.

04:05:11 My bet is that I think there’s less than six key insights that

04:05:16 need to be made.

04:05:17 Each one of them can probably be written

04:05:19 on the back of an envelope.

04:05:20 We don’t know what they are.

04:05:22 But when they’re put together in concert with GPUs at scale

04:05:26 and the data that we all have access to,

04:05:28 that we can make something that behaves like a human being

04:05:32 or like a living creature and that can then

04:05:35 be educated in whatever ways that we need to get to the point

04:05:39 where we can have universal remote workers where anything

04:05:43 that somebody does mediated by a computer

04:05:45 and doesn’t require physical interaction that an AGI will

04:05:49 be able to do.

04:05:50 We can already simulate the equivalent of the Zoom meetings

04:05:54 with avatars and synthetic deep fakes and whatnot.

04:05:58 We can definitely do that.

04:06:00 We have superhuman capabilities on any narrow thing

04:06:03 that we can formalize and make a loss function for.

04:06:07 But there’s things we don’t know how to do now.

04:06:10 But I don’t think they are unapproachably hard.

04:06:13 Now, that’s incredibly hubristic to say that it’s like,

04:06:16 but I think that what I said a couple years ago

04:06:19 is a 50% chance that somewhere there will be signs of life

04:06:23 of AGI in 2030.

04:06:25 And I’ve probably increased that slightly.

04:06:27 I may be at 55%, 60% now because I

04:06:30 do think there’s a little sense of acceleration there.

04:06:34 So I wonder what the, and by the way,

04:06:36 you also written that I bet with hindsight

04:06:39 we will find that clear antecedents of all

04:06:42 the critical remaining steps for AGI

04:06:44 are already buried somewhere in the vast literature of today.

04:06:48 So the ideas are already there.

04:06:50 I think that’s likely the case.

04:06:52 One of the things that appeals to so many people,

04:06:54 including me, about the promise of AGI

04:06:56 is we know that we’re only drinking

04:06:59 from a straw from the fire hose of all the information out there.

04:07:03 I mean, you look at just in a very narrowly bounded field

04:07:07 like machine learning, like you can’t read all the papers that

04:07:10 come out all the time.

04:07:11 You can’t go back and read all the clever things

04:07:14 that people did in the 90s or earlier

04:07:16 that people have forgotten about because they didn’t pan out

04:07:18 at the time when they were trying to do them with 12 neurons.

04:07:22 So this idea that, yeah, I think there

04:07:25 are gems buried in some of the older literature that was not

04:07:29 the path taken by everything.

04:07:31 And you can see a herd mentality on the things that

04:07:34 happen right now.

04:07:35 It’s almost funny to see.

04:07:36 It’s like, oh, Google does something,

04:07:38 and OpenAI does something, Meta does something.

04:07:41 They’re the same people that all talk to each other,

04:07:43 and they’re all one upping each other,

04:07:45 and they’re all capable of implementing

04:07:47 each other’s work given a month or two

04:07:49 after somebody has an announcement of that.

04:07:52 But there’s a whole world of possible approaches

04:07:55 to machine learning.

04:07:57 And I think that we probably will, in hindsight,

04:08:00 go back and see it’s like, yeah, that was kind of clearly

04:08:03 predicted by this early paper here.

04:08:06 And this turns out that if you do this and this

04:08:08 and take this result from animal training

04:08:11 and this thing from neuroscience over here

04:08:13 and put it together and set up this curriculum for them

04:08:16 to learn in, that that’s kind of what it took.

04:08:19 You don’t have too many people now

04:08:21 that are still saying it’s not possible

04:08:23 or it’s going to take hundreds of years.

04:08:25 And 10 years ago, you would get a collection of experts,

04:08:29 and you would have a decent chunk on the margin that either

04:08:32 say not possible or a couple hundred years,

04:08:35 might be centuries.

04:08:36 And the median estimate would be like 50, 70 years.

04:08:40 And it’s been coming down.

04:08:41 And I know with me saying eight years for something,

04:08:44 that still puts me on the optimistic side,

04:08:46 but it’s not crazy out in the fringes.

04:08:49 And just being able to look at that at a meta level

04:08:52 about the trend of the predictions going down there,

04:08:57 the idea that something could be happening relatively soon.

04:09:01 Now, I do not believe in fast takeoffs.

04:09:04 That’s one of the safety issues that people say,

04:09:06 it’s like, oh, it’s going to go, boom,

04:09:08 and the AI is going to take over the world.

04:09:10 There’s a lot of reasons I don’t think

04:09:12 that’s a credible position.

04:09:14 And I think that we will go from a point

04:09:16 where we start seeing things that credibly look

04:09:20 like animals behaviors.

04:09:22 And I have a human voice box wired into them.

04:09:25 It’s like I tried to get Elon to say,

04:09:27 it’s like your pig in Neuralink, give it a human voice box

04:09:30 and let it start learning human words.

04:09:33 I think animal intelligence is closer to human intelligence

04:09:36 than a lot of people like to think.

04:09:38 And I think that culture and modalities of IO

04:09:42 make the Gulf seem a lot bigger than it actually is.

04:09:45 There’s just that smooth spectrum

04:09:47 of how the brain developed and cortexes and scaling

04:09:51 of different things going on there.

04:09:53 Culture modalities of IO, yes.

04:09:55 Language is sort of lost in translation,

04:10:00 conceals a lot of intelligence.

04:10:03 So when you think about signs of life for AGI,

04:10:06 you’re thinking about human interpretable signs.

04:10:10 So the example I give, if we get to the point

04:10:12 where you’ve got a learning disabled toddler,

04:10:15 some kind of real special needs child

04:10:18 that can still interact with their favorite TV show

04:10:20 and video game and can be trained and learn

04:10:24 in some appreciably human like way.

04:10:26 At that point, you can deploy an army of engineers,

04:10:30 cognitive scientists, developmental education people.

04:10:35 And you’ve got so many advantages there

04:10:37 unlike real education where you can do rollbacks

04:10:39 and AB testing and you can find a golden path

04:10:42 through a curriculum of different things.

04:10:44 If you get to that point, learning disabled toddler,

04:10:47 I think that it’s gonna be a done deal.

04:10:50 But do you think we’ll know when we see it?

04:10:53 So there’s been a lot of really interesting

04:10:56 general learning progress from DeepMind,

04:11:00 OpenAI a little bit too.

04:11:02 I tend to believe that Tesla Autopilot

04:11:06 deserves a lot more credit than it’s getting

04:11:08 for making progress on the general,

04:11:12 on doing the multitask learning thing

04:11:15 and increasing the number of tasks

04:11:17 and automating that process of sort of learning

04:11:23 from the edge, discovering the edge cases

04:11:25 and learning from the edge cases.

04:11:26 That is, it’s really approaching from a different angle,

04:11:30 the general learning problem of AGI.

04:11:33 But the more clear approach comes from DeepMind

04:11:36 where you have these kind of game situations

04:11:38 and you build systems there.

04:11:41 But I don’t know, people seem to be quite…

04:11:47 Yeah, there will always be people that just won’t believe it

04:11:50 and I fundamentally don’t care.

04:11:52 I mean, I don’t care if they don’t believe it.

04:11:54 You know, when it starts doing people’s jobs

04:11:57 and I don’t care about the philosophical zombie argument at all.

04:12:01 Absolutely.

04:12:02 But will you, do you think you will notice

04:12:04 that something special has happened here?

04:12:06 Because to me, I’ve been noticing a lot of special things.

04:12:12 I think a lot of credit should go to DeepMind for AlphaZero.

04:12:18 That was truly special.

04:12:20 The self play mechanisms achieve sort of solve problems

04:12:24 that used to be thought unsolvable like the game of Go.

04:12:28 Also, I mean, protein folding, starting to get into that space

04:12:32 where learning is doing…

04:12:34 At first there’s not, it wasn’t end to end learning

04:12:37 and now it’s end to end learning of a very difficult

04:12:41 previously thought unsolvable problem of protein folding.

04:12:45 And so, yeah, where do you think

04:12:50 would be a really magical moment for you?

04:12:54 There have been incredible things happening in recent years.

04:12:57 Like you say, all of the things from DeepMind and OpenAI

04:13:00 that have been huge showpiece things.

04:13:03 But when you really get down to it and you read the papers

04:13:05 and you look at the way the models are going,

04:13:08 it’s still like a feed forward.

04:13:10 You push something in, something comes out on the end.

04:13:13 I mean, maybe there’s diffusion models

04:13:15 or Monte Carlo tree rollouts and different things going on,

04:13:18 but it’s not a being.

04:13:20 It’s not close to a being.

04:13:22 That’s going through a lifelong learning process.

04:13:27 Do you want something that kind of gives signs of a being?

04:13:31 What’s the difference between a neural network,

04:13:36 a feed forward neural network and a being?

04:13:39 Where’s the loop?

04:13:40 Fundamentally, the brain is a recurrent neural network

04:13:43 generating an action policy.

04:13:45 I mean, it’s implemented on a biological substrate.

04:13:47 And it’s interesting thinking about things like that

04:13:49 where we know fundamentally the brain is not

04:13:52 a convolutional neural network or a transformer.

04:13:55 Those are specialized things that are very valuable

04:13:58 for what we’re doing, but it’s not the way the brain’s doing.

04:14:00 Now, I do think consciousness and AI in general

04:14:03 is a substrate independent mechanism

04:14:06 where it doesn’t have to be implemented the way the brain is,

04:14:09 but if you’ve only got one existence proof,

04:14:11 there’s certainly some value in caring about what it says and does.

04:14:17 And so the idea that anything that can be done with a narrow AI

04:14:21 that you can quantify up a loss function for or reward mechanism,

04:14:25 you’re almost certainly going to be able to produce something

04:14:28 that’s more resource effective to train and deploy

04:14:31 and use in an inference mode.

04:14:33 You know, train a whole lot using an inference.

04:14:35 But a living being is going to be something that’s a continuous,

04:14:39 lifelong learned task agnostic thing.

04:14:42 So the lifelong learning is really important too.

04:14:46 And the long term memory.

04:14:48 So memory is a big weird part of that puzzle.

04:14:51 And we’ve got, you know, again, I have all the respect in the world

04:14:55 for the amazing things that are being done now,

04:14:57 but sometimes they can be taken a little bit out of context

04:15:00 with things like there’s some smoke and mirrors going on,

04:15:04 like the Gato, the recent work, the multitask learning stuff.

04:15:07 You know, it’s amazing that it’s one model that plays all the Atari games

04:15:12 as well as doing all of these other things.

04:15:14 But of course, it didn’t learn to do all of those.

04:15:17 It was instructed in doing that by other reinforcement learners

04:15:21 going through and doing that.

04:15:23 And even in the case of all the games,

04:15:25 it’s still going with a specific hand coded reward function

04:15:29 in each of those Atari games where it’s not that, you know,

04:15:33 it just wants to spend its summer afternoon playing Atari

04:15:35 because that’s the most interesting thing for it.

04:15:38 So it’s, again, not a general, it’s not learning the way humans learn.

04:15:42 And there’s, I believe, a lot of things that are challenging

04:15:45 to make a loss function for that you can train

04:15:48 through these existing conventional things.

04:15:51 We’re going to chip away at all the things that people do

04:15:54 that we can turn into narrow AI problems

04:15:59 and billions of, like trillions of dollars of value

04:16:02 are going to be created by that.

04:16:04 But there’s still going to be a set of things

04:16:06 and we’ve got questionable cases like the self driving car

04:16:09 where it’s possible, it’s not my bet, but it’s plausible

04:16:13 that the long tail could be problematic enough

04:16:15 that that really does require a full on artificial general intelligence.

04:16:20 The counter argument is that data solves almost everything.

04:16:23 There’s an interpolation problem if you have enough data

04:16:26 and Tesla may be able to get enough data

04:16:29 from all of their deployed stuff to be able to work like that,

04:16:31 but maybe not.

04:16:33 And there are all the other problems about, like,

04:16:35 say you want to have a strategy meeting

04:16:37 and you want to go ahead and bring in all of your remote workers

04:16:40 and your consultants, and you want a world where

04:16:43 some of those could be AIs that are talking and interacting with you

04:16:48 in an area that is too murky to have a crisp loss function,

04:16:52 but they still have things that on some level,

04:16:54 they’re rewarded on some internal level

04:16:57 for building a valuable to humans kind of life

04:17:01 and ability to interact with things.

04:17:03 See, I still think that self driving cars,

04:17:07 solving that problem will take us very far towards AGI.

04:17:10 You might not need AGI, but I am really inspired

04:17:13 by what Autopilot is doing.

04:17:16 Waymo, so some of the other companies,

04:17:19 I think Waymo leads the way there is also really interesting,

04:17:23 but they don’t have quite as ambitious of an effort

04:17:26 in terms of learning based sort of data hungry approach to driving,

04:17:32 which I think is very close to the kind of thing

04:17:34 that would take us far towards AGI.

04:17:37 Yeah, and it’s a funny thing because as far as I can tell,

04:17:40 Elon is completely serious about all of his concerns about AGI

04:17:44 being an existential threat.

04:17:46 And I tried to draw him out to talk about AGI

04:17:49 and he just didn’t want to.

04:17:50 And I think that I get that little fatalistic sense from him.

04:17:54 It’s weird because his company could very well be the leading company

04:17:58 leading towards a lot of that where Tesla being a super pragmatic company

04:18:03 that’s doing things because they really want to solve this actual problem.

04:18:06 It’s a different vibe than the research oriented companies

04:18:10 where it’s a great time to be an AI researcher.

04:18:12 You’ve got your pick of trillion dollar companies

04:18:14 that will pay you to kind of work on the problems you’re interested in,

04:18:18 but that’s not necessarily driving hard towards the core problem

04:18:22 of AGI as something that’s going to produce a lot of value

04:18:25 by doing things that people currently do or would like to do.

04:18:30 I mean, I have a million questions to you about your ideas about AGI,

04:18:35 but do you think it needs to be embodied?

04:18:39 Do you think it needs to have a body to start to notice the signs of life

04:18:44 and to develop the kind of system that’s able to reason,

04:18:49 perceive the world in the way that an AGI should and act in the world?

04:18:53 So should we be thinking about robots

04:18:55 or can this be achieved in a purely digital system?

04:18:58 So I have a clear opinion on that and that’s that no,

04:19:01 it does not need to be embodied in the physical world

04:19:04 where you could say most of my career is about making simulated virtual worlds

04:19:09 in games or virtual reality.

04:19:11 And so on a fundamental level,

04:19:13 I believe that you can make a simulated environment

04:19:16 that provides much of the value of what the real environment does

04:19:19 and restricting yourself to operating at real time

04:19:23 in the physical world with physical objects,

04:19:25 I think is an enormous handicap.

04:19:27 I mean, that’s one of the real lessons driven home by all my aerospace work

04:19:31 is that, you know, reality is a bitch in so many ways there

04:19:36 where dealing with all the mechanical components,

04:19:38 like everything fails, Murphy’s law,

04:19:40 even if you’ve done it right before on your fifth one,

04:19:42 it might come out differently.

04:19:44 So yeah, I think that anybody that is all in on the embodied aspect of it,

04:19:50 they are tying a huge weight to their ankles

04:19:53 and I think that I would almost count them out,

04:19:57 anybody that’s making that a cornerstone of their belief about it,

04:20:00 I would almost write them off as being worried about them getting to AGI first.

04:20:04 I was very surprised that Elon’s big on the humanoid robots.

04:20:09 I mean, like the NASA Robonaut stuff was almost a gag line,

04:20:12 like what are you doing people?

04:20:14 Well, that’s very interesting because he has a very pragmatic view of that.

04:20:18 That’s just a way to solve a particular problem in a factory.

04:20:23 Now, I do think that once you have an AGI,

04:20:26 robotic bodies, humanoid bodies are going to be enormously valuable.

04:20:29 I just don’t think they’re helpful getting to AGI.

04:20:32 Well, he has a very sort of practical view, which I disagree with and argue with him,

04:20:37 but it’s a practical view that there’s, you know,

04:20:40 you could transfer the problem of driving to the problem of robotic manipulation

04:20:46 because so much of it is perception.

04:20:49 It’s perception and action and it’s just a different context

04:20:53 and so you can apply all the same kind of data engine learning processes

04:20:58 to a different environment.

04:20:59 And so why not apply it to the humanoid robot environment?

04:21:03 But I think, I do think that there’s a certain magic to the embodied robot.

04:21:12 That may be the thing that finally convinces people.

04:21:15 But again, I don’t really care that much about convincing people.

04:21:18 You know, the world that I’m looking towards is, you know,

04:21:21 you go to the website and say,

04:21:24 I want five Frank 1As to work on my team today and they all spin up

04:21:29 and they start showing up in your Zoom meetings.

04:21:31 To push back, but also to agree with you.

04:21:33 But first to push back, I do think you need to convince people

04:21:36 for them to welcome that thing into their life.

04:21:40 I think there’s enough businesses that operate on an objective kind of

04:21:44 profit loss sort of basis that, I mean, if you look at how many things,

04:21:48 again, talking about the world as an evolutionary space there,

04:21:52 when you do have free markets and you have entrepreneurs,

04:21:56 you are going to have people that are going to be willing to go out

04:21:58 and try whatever crazy things.

04:22:00 And when it proves to be beneficial, you know,

04:22:03 there’s fast followers in all sorts of places.

04:22:05 Yeah, and you’re saying that, I mean, you know, Quake and VR

04:22:10 is a kind of embodiment, but just in a digital world.

04:22:13 And if you’re able to demonstrate, if you’re able to do something

04:22:17 productive in that kind of digital reality,

04:22:22 then AGI doesn’t need to have a body.

04:22:25 Yeah, it’s like one of the really practical technical questions

04:22:28 that I kind of keep arguing with myself over.

04:22:31 If you’re doing a training and learning and you’ve got like,

04:22:34 you can watch Sesame Street, you can play Master System games or something,

04:22:38 is it enough to have just a video feed that is that video coming in?

04:22:42 Or should it literally be on a virtual TV set in a virtual room,

04:22:47 even if it’s, you know, a simple room, just to have that sense of

04:22:50 you’re looking at a 2D projection on a screen versus having the screen

04:22:54 beam directly into your retinas.

04:22:56 And, you know, I think it’s possible to maybe get past some of these

04:23:00 signs of life of things with the just kind of projected directly

04:23:04 into the receptor fields, but eventually for more kind of human

04:23:09 emotional connection for things, probably having some VR room

04:23:14 with a lot of screens in it for the AI to be learning in is likely helpful.

04:23:18 It may be a world of different AIs interacting with each other.

04:23:22 That self play I do think is one of the critical things where

04:23:24 socialization wise, one of the other limitations I set for myself

04:23:28 thinking about these is I need something that is at least potentially

04:23:33 real time because I want, it’s nice you can always slow down time,

04:23:37 you can run on a subscale system and test an algorithm at some lower level.

04:23:42 And if you’ve got extra horsepower, running it faster than real time

04:23:45 is a great thing.

04:23:46 But I want to be able to have the AIs either socially interact with

04:23:52 each other or critically with actual people, your sort of child

04:23:56 development psychiatrist that comes in and interacts and does the

04:24:00 good boy, bad boy sort of thing as they’re going through and

04:24:04 exploring different things.

04:24:05 And it’s nice to, I come back to the value of constraints in a lot of ways.

04:24:10 And if I say, well, one of my constraints is real time operation.

04:24:13 I mean, it might still be a huge data center full of computers,

04:24:17 but it should be able to interact on a Zoom meeting with people.

04:24:21 And that’s how you also do start convincing people, even if it’s not

04:24:24 a robot body moving around, which eventually gets to irrefutable levels.

04:24:28 But if you can go ahead and not just type back and forth to a GPT bot

04:24:33 on something, but you’re literally talking to them in an embodied

04:24:37 over Zoom form and working through problems with them or exploring

04:24:42 situations, having conversations that are fully stateful and learned.

04:24:46 I think that that’s a valuable thing.

04:24:49 So I do keep all of my eyes on things that can be implemented within

04:24:54 sort of that 30 frames per second kind of work.

04:24:58 And I think that’s feasible.

04:24:59 Do you think the most compelling experiences that first will be

04:25:03 for pleasure or for business as they ask in airports?

04:25:07 So meaning is if it’s interacting with AI agents, will it be sort of

04:25:17 like friends, entertainment, almost like a therapist or whatever,

04:25:25 that kind of interaction?

04:25:26 Or is it in the business setting, something like you said, brainstorming

04:25:30 different ideas, sort of this is all a different formulation of kind of

04:25:34 a Turing test or the spirit of the original Turing test.

04:25:37 Where do you think the biggest benefit will first come?

04:25:40 So it’s going to start off hugely expensive.

04:25:42 I mean, you’re going to if we’re still all guessing about what compute

04:25:47 is going to be necessary.

04:25:48 I fall on the side of I don’t think you run the numbers and you’re like

04:25:51 86 billion neurons, 100 trillion synapses.

04:25:53 I don’t think those all need to be weights.

04:25:55 I don’t think we need models that are quite that big evaluated quite

04:25:58 that often.

04:25:59 I based that on we’ve got reasonable estimates of what some parts of

04:26:03 the brain do.

04:26:04 We don’t have the neocortex formula, but we kind of get some of the

04:26:08 other sensory processing and it doesn’t feel like we need to.

04:26:11 We can simulate that in computers for less weights.

04:26:14 But still, it’s probably going to be thousands of GPUs to be running

04:26:20 a human level AGI, depending on how it’s implemented.

04:26:23 That might give you sort of a clan of 128 kind of run in batch people,

04:26:28 depending on whether there’s sparsity in the way that the weights are

04:26:31 and things are set up.

04:26:32 If it is a reasonably dense thing, then just the memory bandwidth

04:26:36 tradeoffs means you get 128 of them at the same time.

04:26:39 And either it’s all feeding together, learning in parallel or kind of

04:26:43 all running together, kind of talking to a bunch of people.

04:26:46 But still, if you’ve got thousands of GPUs necessary to run these

04:26:50 things, it’s going to be kind of expensive where it might start off

04:26:55 $1,000 an hour for even post development or something for that, which

04:27:00 would be something that you would only use for a business, something

04:27:04 where you think they’re going to help you make a strategic decision

04:27:07 or point out something super important.

04:27:09 But I also am completely confident that we will have another factor

04:27:14 of 1,000 in cost performance increase in AGI type calculations.

04:27:19 Not in general computing necessarily, but there’s so much more that

04:27:23 we can do with packaging, making those right tradeoffs, all those

04:27:26 same types of things that in the next couple of decades, 1,000 X easy.

04:27:30 And then you’re down to $1 an hour.

04:27:32 And then you’re kind of like, well, I should have an entourage of

04:27:36 AIs that are following me around, helping me out on anything that

04:27:40 I want them to do.

04:27:41 That’s one interesting trajectory.

04:27:43 But I’ll push back because I have, so in that case, if you want to

04:27:50 pay thousands of dollars, it should actually provide some value.

04:27:54 I think it’s easier for cheaper to provide value via a dumb AI that

04:28:04 will take us towards AGI to just have a friend.

04:28:08 I think there’s an ocean of loneliness in the world.

04:28:11 And I think an effective friend that doesn’t have to be perfect,

04:28:16 that doesn’t have to be intelligent, that has to be empathic,

04:28:20 having emotional intelligence, having ability to remember things,

04:28:24 having ability to listen.

04:28:26 Most of us don’t listen to each other.

04:28:28 One of the things that love and when you care about somebody,

04:28:31 when you love somebody is when you listen.

04:28:34 And that is something we treasure about each other.

04:28:37 And if an AI can do that kind of thing.

04:28:40 I think that provides a huge amount of value and very importantly,

04:28:45 provides value in its ability to listen and understand

04:28:51 versus provide really good advice.

04:28:53 I think providing really good advice is another next level step

04:28:59 that I think is just easier to do companionship.

04:29:05 Yeah, I wouldn’t disagree.

04:29:06 I mean, I think that there’s very few things that I would argue

04:29:10 can’t be reduced to some kind of a narrow AI.

04:29:14 I think we can do a trillion dollars of value easily

04:29:17 and all the things that can be done there.

04:29:19 And a lot of it can be done with smoke and mirrors

04:29:21 without having to go the whole thing.

04:29:23 I mean, there’s going to be the equivalent of the doom version

04:29:27 for the AGI that’s not really AGI, it’s all smoke and mirrors,

04:29:31 but it happens to do enough valuable things that it’s enormously

04:29:34 useful and valuable to people.

04:29:36 But at some point, you do want to get to the point

04:29:38 where you have the fully general thing

04:29:40 and you stop making bespoke specialized systems for each thing

04:29:44 and you wind up start using the higher level language

04:29:47 instead of writing everything in assembly language.

04:29:50 What about consciousness?

04:29:52 The C word, do you think that’s fundamental to solving AGI

04:29:58 or is it a quirk of human cognition?

04:30:02 So I think most of the arguments about consciousness

04:30:06 don’t have a whole lot of merit.

04:30:08 I think that consciousness is kind of the way the brain feels

04:30:12 when it’s operating.

04:30:14 And this idea that, you know, I do generally subscribe

04:30:19 to sort of the pandemonium theories of consciousness

04:30:21 where there’s all these things bubbling around

04:30:23 and I think of them as kind of slightly randomized sparse

04:30:27 distributed memory bit strings of things that are kind of happening,

04:30:30 recalling different associative memories,

04:30:32 and eventually you get some level of consensus

04:30:35 and it bubbles up to the point of being a conscious thought there.

04:30:38 And the little bits of stochasticity that are sitting on in this

04:30:42 as it cycles between different things and recalls different memory,

04:30:45 that’s largely our imagination and creativity.

04:30:49 So I don’t think there’s anything deeply magical about it,

04:30:52 certainly not symbolic.

04:30:54 I think it is generally the flow of these associations

04:30:58 drawn up with stochastic noise overlaid on top of them.

04:31:02 And I think so much of that is like it depends on

04:31:05 what you happen to have in your field of view

04:31:07 as some other thought was occurring to you

04:31:09 that overlay and blend into the next key that queries your memory for things.

04:31:13 And that kind of determines how your chain of consciousness goes.

04:31:17 So that’s kind of the qualia, the subjective experience of it

04:31:22 is not essential for intelligence.

04:31:25 So I don’t think there’s anything really important there.

04:31:28 What about some other human qualities,

04:31:30 like fear of mortality and stuff like that?

04:31:32 Like the fact that this ride ends, is that important?

04:31:37 Like you talked so much about this conversation

04:31:40 about the value of deadlines and constraints.

04:31:43 Do you think that’s important for intelligence?

04:31:46 That’s actually a super interesting angle

04:31:48 that I don’t usually take on that about

04:31:50 has death being a deadline that forces you to make better decisions.

04:31:53 Because I have heard people talk about how if you have immortality,

04:31:56 people are going to stop trying and working on things

04:31:59 because they’ve got all the time in the world.

04:32:02 But I would say that I don’t expect it to be a super critical thing

04:32:08 that a sense of mortality and impending death is necessary there

04:32:13 because those are things that they do wind up providing reward signals to us

04:32:17 and we will be in control of the reward signals.

04:32:19 And there will have to be something fundamental

04:32:22 that causes, that engenders curiosity and goal setting and all of that.

04:32:27 Something is going to play in there at the reward level,

04:32:32 whether it’s positive or negative or both.

04:32:35 I don’t have any strong opinions on exactly what it’s going to be,

04:32:40 but that’s that type of thing where I doubt

04:32:43 that might be one of those half dozen key things

04:32:45 that has to be sorted out on exactly what the master reward,

04:32:49 the meta reward over all of the local task specific rewards have to be.

04:32:54 That could be that big negative reward of death.

04:32:57 Maybe not death, but ability to walk away from an interaction.

04:33:01 So it bothers me when people treat AI systems like servants.

04:33:06 So it doesn’t bother me, but I mean it really is drawing the line

04:33:12 between what an AI system could be.

04:33:15 It’s limiting the possibility of what an AI system could be.

04:33:17 It’s treating them as justice tools.

04:33:19 Now that’s, of course, from a narrow AI perspective,

04:33:23 there’s so many problems that narrow AI could solve,

04:33:27 just like you said, in its form of a tool.

04:33:33 But it could also be a being, which is much more than a tool.

04:33:38 And to become a being, you have to respect that thing for being a being.

04:33:43 And for that, it has to be able to make its own decisions,

04:33:49 to walk away, to say, I had enough of you.

04:33:51 I would like to break up with you now.

04:33:53 You’ve not treated me well, and I would like to move on.

04:33:57 So I think that actually that choice to end things.

04:34:04 So a couple of things on that.

04:34:07 So on the one hand, it is kind of disturbing

04:34:10 when you see people being like people that are mean to robots

04:34:13 and mean to Alexa or whatever.

04:34:15 And that seems to speak badly about humanity.

04:34:18 But there’s also the exact opposite side of that

04:34:21 where you have so many people that imbue humanity in inanimate objects

04:34:25 or things that are toys or that are relatively limited.

04:34:28 So I think there may even be more danger

04:34:31 about people putting more emotional investment

04:34:34 into a lot of these proto AIs in different ways.

04:34:37 And then the AI would manipulate that.

04:34:41 But as far as like the AI ethnic sides of things,

04:34:44 I really stay away from any of those discussions

04:34:48 or even really thinking about it.

04:34:50 It’s similar with the safety things where I think it’s just premature.

04:34:54 And there’s a certain class of people

04:34:56 that enjoy thinking about impractical things,

04:34:59 things that are not in the world and of pragmatic effect around you.

04:35:03 And I think that, again, because I don’t think there’s going to be a fast takeoff,

04:35:08 I think we actually will have time to have these debates

04:35:11 when we know the shape of what we’re debating.

04:35:13 And some people do take a principled approach

04:35:15 that they think it’s going to go too fast,

04:35:17 that you really do need to get ahead of it,

04:35:19 that you need to be thinking about this

04:35:21 because we have slow processes of coming to any kind of consensus

04:35:24 or even coming up with ideas about this.

04:35:26 And maybe that’s true.

04:35:30 I wouldn’t put any of my money or funding into something like that

04:35:34 because I don’t think it’s a problem yet.

04:35:36 And I think that we will have these signs of life

04:35:39 when we’ve got our learning disabled toddler,

04:35:42 we should really start talking about some of the safety and ethics issues,

04:35:45 but probably not before then.

04:35:47 Can you elaborate briefly about why you don’t think there’ll be a fast takeoff?

04:35:52 Is there some deep intuition you have about it?

04:35:55 Is it because it’s grounded in the physical world or why?

04:35:58 Yeah, so it is my belief that we’re going to start off

04:36:01 with something that requires thousands of GPUs.

04:36:04 And I don’t know if you’ve tried to go get a thousand GPU instance

04:36:08 on a cloud anytime recently,

04:36:10 but these are not things that you can just go spin up hundreds of.

04:36:14 There are real challenges to, I mean,

04:36:17 these things are going to take data centers

04:36:19 and data centers take years to build.

04:36:22 The last few years, we’ve seen a few of them kind of coming up,

04:36:25 going in different places.

04:36:26 They’re big engineering efforts.

04:36:27 You can hear people bemoan about the fact that I know

04:36:31 that the network was wired all wrong

04:36:33 and it took them a month to go unwire it and rewire it the right way.

04:36:37 These aren’t things that you can just magic into existence.

04:36:40 And the ideas of like the old tropes about it’s going to escape

04:36:44 onto the internet and take over other systems,

04:36:47 the fast takeoff ones are clearly nonsense

04:36:49 because you just can’t open TCP connections above a certain rate,

04:36:52 no matter how smart you are, even if you have perfect hacking ability,

04:36:55 that take over the world in an instant sort of thing

04:36:58 just isn’t plausible at all.

04:37:00 And even if you had access to all of the resources,

04:37:03 these are going to be specialized systems

04:37:06 where you’re going to wind up with something

04:37:08 that is architected around exactly this chip with this interconnect,

04:37:12 and it’s not just going to be able to be plopped somewhere else.

04:37:15 Now, interestingly, it is going to be something

04:37:18 that the entire code for all of it will easily fit on a thumb drive.

04:37:23 That’s total spy movie, thriller sorts of things

04:37:26 where you could have, hey, we cracked the secret to AGI

04:37:29 and it fits on this thumb drive and anyone could steal it.

04:37:32 Now, they’re still going to have to build the right data center to deploy it

04:37:35 and have the right kind of life experience curriculum

04:37:38 to take it up to the point where it’s valuable.

04:37:40 But the real core of it, the magic that’s going to happen there

04:37:43 is going to be very small.

04:37:45 It’s, again, tens of thousands of lines of code,

04:37:47 not millions of lines of code.

04:37:49 It is possible to imagine a world, as you mentioned in the spy thriller view,

04:37:54 if it’s just a few lines of code,

04:37:58 we can imagine a world where the surface of computation is growing,

04:38:02 maybe growing exponentially,

04:38:04 meaning the refrigerators start getting a GPU.

04:38:12 First of all, the smartphones, the billions of smartphones.

04:38:15 But maybe if they become highways

04:38:20 through which code can spread across the entirety of the computation surface,

04:38:25 then you don’t any longer have to book AWS GPUs.

04:38:32 There were real fundamental issues there.

04:38:34 When you start getting down to taking an actual problem

04:38:36 and putting it on an abstract machine like that,

04:38:39 that has not worked out well in practice.

04:38:42 And the idea that there was always,

04:38:45 like it’s always been easy to come up with ways to compute faster,

04:38:49 say more flops or more giga ops or whatever there.

04:38:52 That’s usually the easy part.

04:38:54 But you then have interconnect and then memory for what goes into it.

04:38:59 And when you talk about saying, well, cell phones,

04:39:01 well, you’re limited to like a 5G connection or something on that.

04:39:04 And if you take your calculation

04:39:08 and you factor it across a million cell phones

04:39:11 instead of a thousand GPUs in a warehouse,

04:39:14 you might be able to have some kind of a substrate like that,

04:39:17 but it could be operating then at one one thousandth the speed.

04:39:21 And so, yes, you could have an AGI working there,

04:39:24 but it wouldn’t be a real time AGI.

04:39:26 It would be something that is operating at really a snail’s pace,

04:39:30 much, much slower than kind of human level thought for things.

04:39:34 I’m not worried about that problem.

04:39:36 You’re transferring the problem into the interconnect,

04:39:39 the communication, the shared memory,

04:39:41 the collective intelligence aspect of it,

04:39:44 which is extremely difficult as well.

04:39:46 I mean, it’s back to the very earliest days of supercomputers.

04:39:49 You still have the balance between bandwidth, storage and computation.

04:39:53 And sometimes they’re easier to get one or the other,

04:39:56 but it’s been remarkably constant across all those years

04:40:00 that you still need all three.

04:40:03 What do your efforts now, you mentioned to me

04:40:07 that you’re really committing to AI at this stage.

04:40:11 What do you see your life in the next few months, years look like?

04:40:15 What do you hope to achieve here?

04:40:18 So I literally just this week signed a term sheet

04:40:22 to take some investment money for my company

04:40:25 where the last two years I had backed off from Meta

04:40:29 and I was still doing my consulting CTO role there,

04:40:32 but I had styled it as I was going to take

04:40:35 the Victorian gentleman scientist route

04:40:37 where I was going to be the wealthy person

04:40:40 that was going to go pursue science

04:40:42 and learn about this and do experiments.

04:40:44 And honestly, I’m surprised there aren’t more people like that

04:40:48 that are like me, technical people that made a bunch of money

04:40:52 and are interested in some of these,

04:40:54 possibly the biggest leverage point in human history.

04:40:57 I mean, I know of, I’ve heard of a couple organizations

04:41:00 that are basically led by one rich techie guy

04:41:03 that gets a few people around him to try to work on this,

04:41:06 but I’m surprised that there’s not more,

04:41:08 that there aren’t like a dozen of them.

04:41:10 I mean, maybe people still think that it’s an unapproachable problem,

04:41:14 that it’s kind of beyond their ability to get a wrench on

04:41:17 and have some effect on like whatever startups they’ve run before.

04:41:21 But that was my kind of, like with all the stuff I’ve learned,

04:41:25 whether it’s gaming, aerospace, whatever,

04:41:28 I go through a larval phase where I’m like,

04:41:30 okay, I’m sucking up all of this information trying to see,

04:41:33 is this something that I can actually do?

04:41:36 Is this something that’s practical to devote a large chunk of my life to?

04:41:41 And I’ve gone through that with the AI machine learning space of things.

04:41:46 And I think I’ve got my arms around it.

04:41:49 I’ve got the measure of it where some of the most brilliant people

04:41:52 in the world are working on this problem,

04:41:54 but nobody knows exactly the path that it’s going on.

04:41:58 We’re throwing a lot of things at the wall and seeing what sticks.

04:42:02 But I have another interesting thing just learning about all of this,

04:42:06 the contingency of your path to knowledge

04:42:08 and talking about the associations and the context that you have with them

04:42:12 where people that learn in the same path will have similar thought processes.

04:42:17 And I think it’s useful that I come at this from a different background,

04:42:21 a different history than the people that have had

04:42:23 the largely academic backgrounds for this

04:42:25 where I have huge blind spots that they could easily point out,

04:42:29 but I have a different set of experiences in history

04:42:33 and approaches to problems in systems engineering

04:42:35 that might turn out to be useful.

04:42:39 And I can afford to take that bet where I’m not going to be destitute.

04:42:44 I have enough money to fund myself working on this for the rest of my life.

04:42:49 But what I was finding is that I was still not committing

04:42:55 where I had a foot firmly in the VR and meta side of things

04:42:58 where in theory, I’ve got a very nice position there.

04:43:02 I only have to work one day a week for my consulting role,

04:43:06 but I was engaging every day.

04:43:08 I’d still be like my computer’s there.

04:43:10 I’d be going and checking the workplace and notes

04:43:12 and testing different things and communicating with people.

04:43:15 But I did make the decision recently that I’m going to get serious.

04:43:21 I’m still going to keep my ties with meta,

04:43:24 but I am seriously going for the AGI side of things.

04:43:28 And it’s actually a really interesting point

04:43:30 because a lot of the machine learning, the AI community is quite large,

04:43:34 but really, basically almost everybody has taken the same trajectory

04:43:39 through life in that community.

04:43:42 And it’s so interesting to have somebody like you

04:43:44 with a fundamentally different trajectory,

04:43:47 and that’s where the big solutions can come

04:43:49 because there is a kind of silo,

04:43:51 and it is a bunch of people kind of following the same kind of set of ideas.

04:43:56 And I was really worried that I didn’t want to come off

04:43:59 as an arrogant outsider for things

04:44:02 where I have all the respect in the world for the work.

04:44:05 It’s been a miracle decade.

04:44:07 We’re in the midst of a scientific revolution happening now,

04:44:10 and everybody doing this is, you know, these are the Einsteins and Boers

04:44:14 and whatevers of our modern era.

04:44:17 And I was really happy to see that the people that I’ve sat down and talked with,

04:44:21 everybody does seem to really be quite great about,

04:44:24 just happy to talk about things, willing to acknowledge that

04:44:27 we don’t know what we’re doing, we’re figuring it out as we go along.

04:44:30 And I mean, I’ve got a huge debt on this where this all really started for me

04:44:36 because Sam Altman basically tried to recruit me to open AI.

04:44:39 And it was at a point when I didn’t know anything about

04:44:43 what was really going on in machine learning.

04:44:46 And in fact, it’s funny how the first time you reached out to me,

04:44:49 it’s like four years ago for your AI podcast.

04:44:52 Yeah, for people who are listening to this should know that,

04:44:59 first of all, obviously I’ve been a huge fan of yours for the longest time,

04:45:03 but we’ve agreed to talk like, yeah, like four years ago,

04:45:06 back when this was called the artificial intelligence podcast,

04:45:09 we wanted to do a thing and you said yes.

04:45:13 And I said, it’s like, I don’t know anything about modern AI.

04:45:15 That’s right.

04:45:16 I said, I could kind of take an angle on machine perception

04:45:18 because I’m doing a lot of that with the sensors and the virtual reality,

04:45:22 but we could probably find something to talk about.

04:45:24 And that’s where, when did Sam talk to you about open AI, around the same time?

04:45:30 It was a little bit, it was a bit after that.

04:45:32 So I had done the most basic work, I had kind of done the neural networks

04:45:37 from scratch where I had gone and written it all in C just to make sure

04:45:40 I understood backpropagation at the lowest level and my nuts and bolts approach.

04:45:45 But after Sam approached me, it was flattering to think that he thought

04:45:51 that I could be useful at open AI largely for kind of like systems optimization

04:45:56 sorts of things without being an expert.

04:46:00 But I asked Ilya Sutskever to give me a reading list and he gave me a binder

04:46:06 full of all the papers that like, okay, these are the important things.

04:46:10 If you really read and understand all of these, you’ll know like 80% of what most

04:46:14 of the machine language researchers work on.

04:46:17 And I went through and I read all those papers multiple times

04:46:20 and highlighted them and went through and kind of figured the things out there

04:46:24 and then started branching out into my own sets of research on things

04:46:28 and eventually started writing my own experiments and doing kind of figuring out,

04:46:33 you know, finding out what I don’t know, what the limits of my knowledge are

04:46:36 and starting to get some of my angles of attack on things,

04:46:39 the things that I think are a little bit different from what people are doing.

04:46:44 And I’ve had a couple of years now, like two years since I kind of left

04:46:49 the full time position at Meta and now I’ve kind of pulled the trigger and said,

04:46:54 I’m going to get serious about it but some of my lessons all the way back

04:46:58 to Armadillo Aerospace about how I know I need to be more committed to this

04:47:02 where there is that, you know, it’s both a freedom and a cost in some ways

04:47:07 when you know that you’re wealthy enough to say it’s like this doesn’t really mean anything.

04:47:11 I can spend, you know, I can spend a million dollars a year for the rest of my life

04:47:15 and it doesn’t mean anything, it’s fine.

04:47:19 But that is an opportunity to just kind of meander

04:47:22 and I could see that in myself when I’m doing some things.

04:47:25 It’s like, oh, this is a kind of interesting, curious thing.

04:47:28 Let’s look at this for a little while, let’s look at that.

04:47:31 It’s not really bearing down on the problem.

04:47:33 So there’s a few things that I’ve done that are kind of tactics for myself

04:47:39 to make me more effective.

04:47:40 Like one thing I noticed I was not doing well is I had a Google Cloud account

04:47:45 to get GPUs there and I was finding I was very rarely doing that

04:47:49 for no good psychological reasons where I’m like, oh, I can always think of something to do

04:47:54 other than to spin up instances and run an experiment.

04:47:56 I can keep working on my local Titans or something.

04:48:00 But it was really stupid.

04:48:01 I mean, it was not a lot of money.

04:48:03 I should have been running more experiments there.

04:48:05 So I thought to myself, well, I’m going to go buy a quarter million dollar DGX station.

04:48:10 I’m going to just like sit it right there and it’s going to mock me if I’m not using it.

04:48:14 If the fans aren’t running on that thing, I’m not properly utilizing it.

04:48:18 And that’s been helpful.

04:48:19 You know, I’ve done a lot more experiments since then.

04:48:22 It’s been it’s been interesting where I thought I’d be doing all this low level

04:48:25 envy link optimized stuff.

04:48:27 But 90 percent of what I do is just spin up four instances of an experiment

04:48:30 with different hyper parameters on it.

04:48:33 You’re doing like really sort of building up intuition by doing

04:48:37 ML experiments of different kinds.

04:48:40 But so the next big thing, though, is I am you know, I decided that I was going

04:48:45 to take some take some investor money because I have an overactive sense

04:48:50 of responsibility about other people’s money.

04:48:54 And it’s like I I don’t want I mean, a lot of my my push and my passionate

04:48:59 entreaties for things that matter.

04:49:01 It’s like I don’t want to have wasted his money investing in Oculus.

04:49:04 I want it to work out.

04:49:06 I want it to change the world.

04:49:07 I want it to be worth all of this time, money and effort going into it.

04:49:11 And I expect that it’s going to be that like that with my with my company

04:49:16 where it’s a huge forcing function.

04:49:18 This investment investors that are going to expect something of me now.

04:49:23 We’ve all had the conversation that this is a low probability long term bet.

04:49:27 It’s not something that there’s a million things I could do that I would have line

04:49:31 of sight on the value proposition for.

04:49:33 This isn’t that I think there are there are unknown unknowns in the way.

04:49:37 But it’s one of these things that it’s, you know, it’s hyperbole.

04:49:42 But it’s potentially one of the most important things humans ever do.

04:49:45 And it’s something that I think is within our lifetimes, if not within a decade

04:49:49 to happen.

04:49:51 So, yeah, this is just now happening.

04:49:54 Like term sheet, like the ink is barely virtually barely dry.

04:49:58 I mean, as I mentioned to you offline, like somebody I admire and somebody

04:50:03 you know, Andre Karpathy, I think the two of you different trajectories in life,

04:50:07 but approach problems similarly in that he calls stuff from scratch up all the time.

04:50:12 And I he’s created a bunch of little things outside of even outside the course

04:50:19 at Stanford that have been tremendously useful to build up intuition about stuff,

04:50:25 but also to help people.

04:50:27 And they’re all in the realm of A.I.

04:50:29 Do you see yourself potentially doing things like this?

04:50:34 You know, not necessarily solving a gigantic problem, but on the journey,

04:50:38 on the path to that building up intuitions and sharing code or ideas or systems

04:50:48 that give inklings of AGI, but also kind of are useful to people in some way.

04:50:55 So, yeah, first of all, Andre is awesome.

04:50:57 I learned a lot when I was going through my larval phase from his blog posts

04:51:01 and his Stanford course and, you know, super valuable.

04:51:04 I got to meet him first a couple of years ago when I was first kind of starting off

04:51:08 on my gentleman scientist bit.

04:51:11 And just just a couple of months ago when he went out on his sabbatical,

04:51:15 he stopped by in Dallas and we talked for a while and I had a great time with him.

04:51:19 And then when I heard he actually left Tesla, I did, of course,

04:51:22 along with a hundred other people say, hey, if you ever want to work with me,

04:51:26 it would be an honor.

04:51:28 So, he thinks that he’s going to be doing this educational work,

04:51:31 but I think someone’s going to make him an offer he can’t refuse

04:51:34 before he gets too far along on it.

04:51:36 Oh, his current interest is educational.

04:51:39 So, yeah, he’s a special mind.

04:51:42 Is there something you could speak to what makes him so special?

04:51:46 So, you know, like he did, he was very much a programmer’s programmer

04:51:50 that was doing machine learning work rather than,

04:51:53 it’s a different feel than an academic where you can see it in paper sometimes

04:51:57 where somebody that’s really a mathematician or a statistician at heart

04:52:01 and they’re doing something with machine learning.

04:52:04 But, you know, Andre is about getting something done.

04:52:07 And you could see it in like all of his earliest approaches to it’s like,

04:52:10 okay, here’s how reinforcement learning works.

04:52:12 Here’s how recurrent neural networks work.

04:52:14 Here’s how transformers work.

04:52:16 Here’s how crypto works.

04:52:19 And, yeah, it’s just, he’s a hacker’s, you know,

04:52:23 one of his old posts was like a hacker’s guide to machine learning.

04:52:26 And, you know, he deprecated that and said,

04:52:28 don’t really pay attention to what’s in here,

04:52:30 but it’s that thought that carries through in a lot of it

04:52:33 where it is that back again to that hacker mentality

04:52:36 and the hacker ethic with what he’s doing and sharing all of it.

04:52:40 Yeah, and a lot of his approach to a new thing, like you said,

04:52:44 larva stage is let me code up the simplest possible thing to build up intuition about it.

04:52:50 Yeah, like I say, I sketch with structs and things.

04:52:52 When I’m just thinking about a problem, I’m thinking in some degree of code.

04:52:57 You are also, among many things, a martial artist, both Judo and Jiu Jitsu.

04:53:03 How has this helped make you the person you are?

04:53:07 So, I mean, I was a competent club player in Judo and grappling.

04:53:10 I mean, I was, you know, by no means any kind of a superstar, but it was,

04:53:15 I went through a few phases with it where I did some when I was quite young,

04:53:20 a little bit more when I was 17.

04:53:22 And then I got into it kind of seriously in my mid 30s.

04:53:26 And, you know, I went pretty far with it.

04:53:28 And I was pretty good at some of the things that I was doing.

04:53:32 And I did appreciate it quite a bit where, I mean, on the one hand,

04:53:36 it’s always if you’re going to do exercise or something,

04:53:39 it’s a more motivating form of exercise.

04:53:41 If someone is crushing you, you are motivated to do something about that,

04:53:46 to up your attributes and be better about getting out of that.

04:53:49 Up your attributes, yes.

04:53:51 But there’s also that sense that I was not a sports guy.

04:53:57 I did do wrestling in junior high.

04:53:59 And I often wish that, I think I would have been good for me

04:54:03 if I’d carried that on into high school and had a little bit more of that.

04:54:07 I mean, it’s like I, you know, filch a little bit of wrestling vibe

04:54:10 with always going on about embracing the grind and like that push

04:54:14 that I associate with the wrestling team that in hindsight,

04:54:18 I wish I had gone through that and pushed myself that way.

04:54:21 But even getting back into Judo and Jiu Jitsu in my mid 30s,

04:54:25 as usually the old man on the mat with that, there was still the, you know,

04:54:30 the sense that, you know, working out with the group

04:54:34 and having the guys that you’re beating each other up with it,

04:54:38 but you just feel good coming out of it.

04:54:41 And I can remember those driving home aching in various ways

04:54:46 and just thinking, it’s like, oh, that was really great.

04:54:49 And, you know, it’s mixing with a bunch of people that had nothing to do

04:54:53 with any of the things that I worked with.

04:54:55 You know, every once in a while, someone would be like,

04:54:57 oh, you’re the Doom guy.

04:54:59 But for the most part, it was just different slice of life.

04:55:02 You know, a good thing.

04:55:04 And I made the call when I was 40.

04:55:07 That’s like, maybe I’m getting a little old for this.

04:55:09 I had separated a rib and tweaked a few things.

04:55:12 And I got out of it without any really bad injuries.

04:55:15 And it was like, have I dodged enough bullets?

04:55:18 Should I, you know, should I hang it up?

04:55:20 I went back.

04:55:21 I’ve gone a couple of times in the last decade

04:55:24 trying to get my kids into it a little bit.

04:55:26 I didn’t really stick with any of them,

04:55:28 but it was fun to get back on the mats.

04:55:30 It really hurts for a while when you haven’t gone for a while.

04:55:34 But I still debate this pretty constantly.

04:55:37 My brother’s only a year younger than me,

04:55:39 and he’s going kind of hard in jiu jitsu right now.

04:55:42 You know, he won a few medals at the last tournament he was at.

04:55:46 So he’s competing, too.

04:55:47 Yeah, and I was thinking, yeah, I guess we’re in the executive division

04:55:50 if you’re over 50 or over 45 or something.

04:55:53 And it’s not out of the question that I go back at some point to do some of this.

04:55:58 But again, I’m just reorganizing my life around more focus.

04:56:02 Probably not going to happen.

04:56:04 I’m pushing my exercise around to give me a longer,

04:56:07 uninterrupted intellectual focus time,

04:56:09 pushing it to the beginning or the end of the game.

04:56:11 Like running and stuff like that, walking.

04:56:13 Yeah, I got running and calisthenics and some things like that.

04:56:17 It allows you to still think about a problem.

04:56:19 But if you’re going to a judo club or something, you’ve got it fixed.

04:56:23 It’s going to be 7 o clock or whatever, 10 o clock on Saturday.

04:56:26 Although, I talked about this a little bit when I was on Rogan.

04:56:30 And shortly after that, Carlos Machado did reach out.

04:56:33 And I had trained with him for years back in the day.

04:56:36 And he was like, hey, we’ve got kind of a small private club

04:56:39 with a bunch of executive type people.

04:56:42 And it does tempt me.

04:56:45 Yeah, I don’t know if you know him, but John Donahart moved here to Austin

04:56:50 with Gordon Ryan and a few other folks.

04:56:53 He has a very interesting way, very deep systematic way of thinking about jiu jitsu

04:56:58 that reveals the chest of it, the science of it.

04:57:06 And I do think about that more as kind of an older person

04:57:09 considering the martial arts where I can remember the very earliest days

04:57:13 getting back into judo and I’m like, teach me submissions right now.

04:57:17 It’s like, learn the arm bar, learn the choke.

04:57:19 But as you get older, you start thinking more about,

04:57:22 it’s like, okay, I really do want to like learn the entire canon of judo.

04:57:26 It’s like all the different things there and like all the different approaches for it.

04:57:30 Not just the, you know, if you want to compete,

04:57:32 there’s just a handful of things you learn really, really well.

04:57:34 But sometimes there’s interest in learning a little bit more of the scope there

04:57:38 and figuring some things out from, you know, at one point I had wasn’t exactly a spreadsheet,

04:57:43 but I did have a big long text file with like, here’s the things that I learned

04:57:47 and here are like ways you chain this together.

04:57:50 And while, when I went back a few years ago,

04:57:53 it was good to see that I whipped myself back into reasonable shape

04:57:57 about doing the basic grappling.

04:57:58 But I know there was a ton of the subtleties that were just, that were gone,

04:58:02 but could probably be brought back reasonably quickly.

04:58:05 And there’s also the benefit.

04:58:06 I mean, you’re exceptionally successful now.

04:58:11 You’re brilliant.

04:58:13 And the problem, the old problem of the ego.

04:58:16 Yeah.

04:58:17 I still pushed kind of harder than I should.

04:58:20 I mean, that was, I was one of those people that I, you know,

04:58:23 I’m on the smaller side for a lot of the people competing and I would, you know,

04:58:28 I’d go with all the big guys and I’d go hard and I’d push myself a lot.

04:58:32 And that would be one of those where I would, you know,

04:58:36 I’d be dangerous to anyone for the first five minutes,

04:58:38 but then sometimes after that I’m already dead.

04:58:40 And I knew it was terrible for me because it made the, you know,

04:58:44 it meant I got less training time with all of that when you go and you just gas

04:58:48 out relatively quickly there.

04:58:50 And I like to think that I would be better about that where after I gave up judo,

04:58:55 I started doing the half marathons and tough butters and things like that.

04:58:58 And so when I did go back to the local judokai club, I thought it’s like, oh,

04:59:03 I should have better cardio for this because I’m a runner now and I do all of

04:59:06 this and didn’t work out that way.

04:59:08 It was the same old thing where just push really hard, strain really hard.

04:59:12 And of course, when I worked with good guys like Carlos, it’s like just the

04:59:17 whole flow like water thing is real and he’s just like.

04:59:20 That’s true with judo too.

04:59:21 Some of the best people like I’ve trained with Olympic gold medalists and for

04:59:26 some reason with them, everything’s easier.

04:59:29 Everything is you actually start to feel the science of it, the music of it,

04:59:35 the dance of it.

04:59:36 Everything is effortless.

04:59:39 You understand that there’s an art to it.

04:59:42 It’s not just an exercise.

04:59:43 It was interesting where I did go to the Kodokan in Japan.

04:59:46 I kind of the birthplace of judo and everything.

04:59:49 And I remember I rolled with one old guy.

04:59:51 I didn’t didn’t start standing, just started on groundwork and it was and it

04:59:56 was striking how different it was from Carlos.

04:59:58 He was still he was better than me and he got my arm and I had to tap there.

05:00:02 But it was a completely different style where I just felt like I could do

05:00:06 nothing.

05:00:06 He was just enveloping me and just like slowly grounded down with my arm and

05:00:10 bent it while with Carlos, you know, he’s just loose and free.

05:00:14 And you always thought like, oh, you’re just going to go grab something.

05:00:16 But you never had any chance to do it.

05:00:18 But it was very different feeling.

05:00:19 That’s a good summary of the difference between jiu jitsu and judo and jiu

05:00:23 jitsu.

05:00:23 There’s it is a dance and you feel like there’s a freedom and actually anybody

05:00:29 like the Gordon Ryan, one of the best the best grappler in the world.

05:00:33 Nogi grappler in the world. There’s a feeling like you can do anything.

05:00:37 But when you actually try to do something, you can’t just magically doesn’t

05:00:42 work.

05:00:42 But with the best judo players in the world, it does feel like there’s a

05:00:47 blanket that weighs a thousand pounds on top of you.

05:00:49 And there’s not a feeling like you can do anything.

05:00:52 You just you’re trapped.

05:00:54 And that’s a that’s a style that’s a difference in the style of martial

05:00:58 arts. But it’s also once you start to study, you understand it all has to

05:01:03 do with human movement and the physics of it and the leverage and all that

05:01:06 kind of stuff.

05:01:07 And that’s like that’s super fascinating.

05:01:09 At the end of the day, for me, the biggest benefits and the humbling

05:01:13 aspect when another human being kind of tells you that, you know, there’s

05:01:19 a hierarchy or there’s a you’re not that special.

05:01:25 And in the most extreme case, when you tap to a choke, you are basically

05:01:29 living because somebody let you live.

05:01:31 And that’s that is one of those.

05:01:33 If you think about it, that is a closer brush with mortality than than most

05:01:37 people consider.

05:01:40 And that kind of humbling act is good to take to your work then where it’s

05:01:46 harder to get humbled.

05:01:48 Yeah.

05:01:49 Nobody’s nobody that does any martial art is coming out thinking I’m the

05:01:52 best in the world at anything because everybody loses.

05:01:57 Let me ask you for advice.

05:01:59 What advice would you give to young people today about life, about career,

05:02:05 how they can have a job, how they can have an impact, how they can have a

05:02:10 life they could be proud of.

05:02:12 So it was kind of fun.

05:02:14 I got invited to give the commencement speech back at the I went to college

05:02:18 for two semesters and dropped out and went on to do my tech stuff.

05:02:23 But they still wanted me to come back and give a commencement speech.

05:02:26 And I’ve got that pinned on my Twitter account.

05:02:29 I still feel good about everything that I said there.

05:02:32 And my biggest point was that the path for me might not be the path for

05:02:37 everyone.

05:02:38 And in fact, the advice, the path that I took and even the advice that I

05:02:42 would give based on my experience and learnings probably isn’t the best

05:02:47 advice for everyone.

05:02:48 Because what I did was all about this knowledge in depth.

05:02:52 It was about not just having this surface level ability to make things do

05:02:56 what I want, but to really understand them through and through.

05:02:59 To let me do the systems engineering work and to sometimes find these

05:03:04 inefficiencies that can be bypassed.

05:03:06 And the whole world doesn’t need that.

05:03:09 Most programmers or engineers of any kind don’t necessarily need to do that.

05:03:14 They need to do a little job that’s been parceled out to them.

05:03:17 Be reliable.

05:03:18 Let people depend on you.

05:03:20 Do quality work with all of that.

05:03:22 But people that do have an inclination for wanting to know things deeper and

05:03:28 learn things deeper, there are just layers and layers of things out there.

05:03:34 And it’s amazing.

05:03:36 If you’re the right person that is excited about that, the world’s never

05:03:41 been like this before.

05:03:42 It’s better than ever.

05:03:43 I mean, everything that was wonderful for me is still there, and there’s

05:03:47 whole new worlds to explore on the different things that you can do.

05:03:51 And that, you know, it’s hard work.

05:03:54 Embrace the grind with it.

05:03:56 And understand as much as you can.

05:03:59 And then be prepared for opportunities to present themselves.

05:04:03 Where you can’t just say this is my goal in life and just push at that.

05:04:07 I mean, you might be able to do that, but you’re going to make more total

05:04:10 progress if you say I’m preparing myself with this broad set of tools.

05:04:15 And then I’m being aware of all the way things are changing as I move through

05:04:19 the world and as the whole world changes around me.

05:04:22 And then looking for opportunities to deploy the tools that you’ve built.

05:04:26 And there’s going to be more and more of those types of things there where an

05:04:31 awareness of what’s happening, where the inefficiencies are, what things can

05:04:35 be done, what’s possible versus what’s current practice.

05:04:38 And then finding those areas where you can go and make an adjustment and make

05:04:43 something that may affect millions or billions of people in the world.

05:04:47 Make it better.

05:04:49 When, maybe from your own example, how were you able to recognize this about

05:04:53 yourself that you saw the layers in a particular thing and you were drawn to

05:04:58 discovering deeper and deeper truths about it?

05:05:01 Is that something that was obvious to you that you couldn’t help or is there some

05:05:05 actions you had to take to actually allow yourself to dig deep?

05:05:08 So in the earliest days of personal computers, I remember the reference

05:05:12 manuals and the very early ones even had schematics of computers in the

05:05:16 background, in the back of the books, as well as firmware listings and things.

05:05:21 And I could look at that.

05:05:23 And at that time, when I was a younger teenager, I didn’t understand a lot of

05:05:27 that stuff, how the different things worked.

05:05:30 I was pulling out the information that I could get, but I always wanted to know

05:05:34 all of that.

05:05:35 There was kind of magical information sitting down there.

05:05:38 It’s like the elder lore that some gray beard wizard is the keeper of.

05:05:43 And so I always felt that pull for wanting to know more, wanting to explore

05:05:48 the mysterious areas there.

05:05:51 And that followed right in through all the things that got the value,

05:05:55 exploring the video cards leading to the scrolling advantages,

05:06:00 exploring some of the academic papers and things, learning about BSP trees

05:06:04 and the different things that I could do with those systems and just the huge

05:06:10 larval phases going through aerospace, just reading bookshelves full of books.

05:06:15 Again, that point where I have enough money, I can buy all the books I want.

05:06:18 It was so valuable there where I was terrible with my money when I was a kid.

05:06:23 My mom thought I would always be broke because I’d buy my comic books

05:06:27 and just be out of money.

05:06:28 But it was like all the pizza I want, all the Diet Coke I want,

05:06:32 video games and then books.

05:06:34 And it didn’t take that much.

05:06:36 As soon as I was making 27K a year, I felt rich and I was just getting

05:06:40 all the things that I wanted.

05:06:42 But that sense of books have always been magical to me.

05:06:46 And that was one of the things that really made me smile is Andre had said

05:06:50 when he came over to my house, he said he found my library inspiring.

05:06:54 And it was great to see.

05:06:55 I used to look at him.

05:06:56 He’s kind of a younger guy.

05:06:57 I sometimes wonder if younger people these days have the same relationship

05:07:01 with books that I do where they were such a cornerstone for me in so many ways.

05:07:06 But that sense that, yeah, I always wanted to know it all.

05:07:08 I know I can’t.

05:07:09 And that was like one of the last things I said.

05:07:11 You can’t know everything, but you should convince yourself

05:07:14 that you can know anything.

05:07:16 Any one particular thing, it was created and discovered by humans.

05:07:20 You can learn it.

05:07:21 You can find out what you need on there.

05:07:23 And you can learn it deeply.

05:07:24 Yeah.

05:07:25 And you can drive a nail down through whatever layer cake problem space

05:07:29 you’ve got and learn a cross section there.

05:07:32 And not only can you have an impact doing that,

05:07:34 you can attain happiness doing that.

05:07:37 There’s something so fulfilling about becoming a craftsman of a thing.

05:07:41 Yeah.

05:07:42 And I don’t want to tell people that, look, this is a good career move.

05:07:45 Just grit your teeth and bear it.

05:07:48 You want people.

05:07:50 And I do think it is possible sometimes to find the joy in something.

05:07:54 Like it might not immediately appeal to you.

05:07:56 But I had told people early on, like in software times,

05:08:00 that a lot of game developers are in it just because they

05:08:04 are so passionate about games.

05:08:06 But I was always really more flexible in what appealed to me,

05:08:10 where I said, I think I could be quite engaged doing

05:08:14 operating system work or even database work.

05:08:17 I would find the interest in that.

05:08:19 Because I think most things that are significant in the world

05:08:22 have a lot of layers and complexity to them

05:08:25 and a lot of opportunities hidden within them.

05:08:28 So that would probably be the most important thing to encourage to people

05:08:31 is that you can weaponize curiosity.

05:08:35 You can deploy your curiosity to find,

05:08:38 to kind of like make things useful and valuable to you,

05:08:41 even if they don’t immediately appear that way.

05:08:44 Deploy your curiosity.

05:08:45 Yeah, that’s very true.

05:08:47 We’ve mentioned this debate point,

05:08:49 whether mortality or fear of mortality is fundamental to creating an AGI.

05:08:55 But let’s talk about whether it’s fundamental to human beings.

05:08:58 Do you think about your own mortality?

05:09:01 I really don’t.

05:09:03 And you probably always have to like take with a grain of salt

05:09:07 anything somebody says about fundamental things like that.

05:09:10 But I don’t think about really aging, impending death,

05:09:16 having a legacy with my children, things like that.

05:09:20 And clearly it seems most of the world does a lot more than I do.

05:09:25 So I mean I think I’m an outlier in that where it doesn’t wind up

05:09:32 being a real part of my thinking and motivation about things.

05:09:36 So daily existence is about sort of the people you love

05:09:41 and the problems before you.

05:09:44 And I’m focused on what I’m working on right now.

05:09:47 I do take that back.

05:09:49 There’s one aspect where the kind of finiteness of the life does impact me,

05:09:54 and that is about thinking about the scope of the problems that I’m working on.

05:09:58 When I decided to work on it, when I was like nuclear fission or AGI,

05:10:03 these are big ticket things that impact large fractions of the world.

05:10:09 And I was thinking to myself at some level that, okay,

05:10:12 I may have a couple more swings at bat with me at full capability,

05:10:17 but yes, my mental abilities will decay with age, mostly inevitably.

05:10:23 I don’t think it’s a 0% chance that we will address some of that

05:10:26 before it becomes a problem for me.

05:10:28 I think exciting medical stuff in the next couple decades.

05:10:31 But I do have this kind of vague plan that when I’m not at the top of my game

05:10:36 and I don’t feel that I’m in a position to put a dent in the world some way,

05:10:40 that I’ll probably wind up doing some kind of recreational retro programming

05:10:44 or I’ll work on something that I would not devote my life to now,

05:10:50 but I can while away my time as the old man gardening in the code worlds.

05:10:56 And then to step back even bigger, let me ask you about why we’re here,

05:11:01 we human beings.

05:11:03 What’s the meaning of it all?

05:11:05 What’s the meaning of life, John Carmack?

05:11:07 So very similar with that last question.

05:11:09 I know a lot of people fret about this question a lot,

05:11:12 and I just really don’t.

05:11:14 I really don’t give a damn.

05:11:16 We are biological creatures that happenstance of evolution.

05:11:21 We have innate drives that evolution crafted for survival

05:11:25 and passing on of genetic codes.

05:11:28 I don’t find a lot of value in trying to go much deeper than that.

05:11:34 I have my motivations, some of which are probably genetically coded

05:11:38 and many of which are contingent on my upbringing

05:11:41 and the path that I’ve had through my life.

05:11:44 I don’t run into like spades of depression or envy

05:11:48 or anything that winds up being a challenge

05:11:52 and forcing a degree of soul searching with things like that.

05:11:55 I seem to be okay kind of without that.

05:12:00 As a brilliant ant in the ant colony without looking up to the sky

05:12:04 wondering why the hell am I here again.

05:12:07 So the why of it, the incredible mystery of the fact that we started,

05:12:15 first of all, the origin of life on Earth,

05:12:18 and from that, from single cell organisms,

05:12:21 the entirety of the evolutionary process took us somehow

05:12:24 to this incredibly intelligent thing that is able to build Wolfenstein 3D

05:12:29 and Doom and Quake and take a crack at the problem of AGI

05:12:34 and things that eventually supersede human beings.

05:12:37 That doesn’t, the why of it is…

05:12:42 It’s been my experience that people that focus on,

05:12:46 that don’t focus on the here and now right in front of them

05:12:49 tend to be less effective.

05:12:51 I mean, it’s not 100%, you know, vision matters to some people,

05:12:55 but it doesn’t seem to be a necessary motivator for me

05:12:59 and I think that the process of getting there is usually done.

05:13:03 It’s like the magic of gradient descent.

05:13:05 People just don’t believe that just looking locally

05:13:08 gets you to all of these spectacular things.

05:13:11 That’s been, you know, the decades of looking at

05:13:15 really some of the smartest people in the world

05:13:17 that would just push back forever against this idea

05:13:20 that it’s not this grand, sophisticated vision of everything,

05:13:24 but little tiny steps, local information winds up

05:13:27 leading to all the best answers.

05:13:29 So the meaning of life is following locally

05:13:34 wherever the gradient descent takes you.

05:13:37 This was an incredible conversation,

05:13:39 officially the longest conversation I’ve ever done on the podcast,

05:13:43 which means a lot to me because I get to do it with one of my heroes.

05:13:46 John, I can’t tell you how much it means to me

05:13:48 that you would sit down with me.

05:13:50 You’re an incredible human being.

05:13:52 I can’t wait what you do next, but you’ve already changed the world.

05:13:55 You’re an inspiration to so many people.

05:13:57 And again, we haven’t covered like most of what I was planning to talk about,

05:14:02 so I hope we get a chance to talk someday in the future.

05:14:06 I can’t wait to see what you do next.

05:14:08 Thank you so much again for talking to me.

05:14:10 Thank you very much.

05:14:11 Thanks for listening to this conversation with John Carmack.

05:14:14 To support this podcast, please check out our sponsors in the description.

05:14:18 And now, let me leave you with some words from John Carmack himself.

05:14:22 Focused hard work is the real key to success.

05:14:26 Keep your eyes on the goal,

05:14:28 and just keep taking the next step towards completing it.

05:14:31 If you aren’t sure which way to do something,

05:14:34 do it both ways and see which works better.

05:14:37 Thank you for listening and hope to see you next time.