back to indexJohn Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets | Lex Fridman Podcast #309
Chapters
0:0 Introduction
1:57 Programming languages
33:1 Modern programming
43:3 Day in the life
50:53 Hard work
54:6 Pizza and Diet Coke
56:50 Setup
82:8 id Software
114:58 Commander Keen
121:44 Hacker ethic
129:24 Wolfenstein 3D
149:21 Doom
163:42 Quake
188:2 John Romero
195:49 Metaverse
224:11 Elon Musk
230:6 Mars
239:9 Nuclear energy
242:47 AGI
289:59 Andrej Karpathy
292:57 Martial arts
301:57 Advice for young people
310:57 Meaning of life
00:00:00.000 |
I remember the reaction where he had drawn these characters 00:00:04.180 |
And people had no experience with 3D navigation. 00:00:08.020 |
We didn't even have mice set up at that time. 00:00:10.900 |
But slowly moving, going up, picked up a key, go to a wall. 00:00:26.820 |
You were a little invested in your little guy. 00:00:32.220 |
But you just did not get that kind of startle reaction. 00:00:42.420 |
And that was one of those early points where it's like, 00:00:47.240 |
This is going to be powerful and it's gonna matter. 00:00:50.020 |
- The following is a conversation with John Carmack, 00:00:55.140 |
widely considered to be one of the greatest programmers ever. 00:01:03.880 |
that revolutionized the technology, the experience, 00:01:09.780 |
including Commander Keen, Wolfenstein 3D, Doom, and Quake. 00:01:19.940 |
helping to create portals into virtual worlds 00:01:28.140 |
And now he has been shifting some of his attention 00:01:30.940 |
to the problem of artificial general intelligence. 00:01:34.860 |
This was the longest conversation on this podcast 00:01:40.100 |
And still I could talk to John many, many more times. 00:01:56.360 |
What was the first program you've ever written? 00:02:22.740 |
but not having any interaction with the cultures 00:02:42.700 |
that you're not allowed to use GOTO statements. 00:02:50.340 |
and the technical aspects of the GOTO statement 00:02:56.540 |
- Back in the day in basic programming languages, 00:03:10.380 |
And as you made what were big programs back then, 00:03:16.780 |
They did tend to sort of degenerate into madness. 00:03:20.020 |
You didn't have good editors or code exploration tools. 00:03:23.380 |
So you would wind up fixing things in one place, 00:03:27.140 |
And there's reasons why structured programming 00:03:35.940 |
Usually it's because there's a language feature missing 00:03:40.540 |
where it can sometimes be better to do a GOTO cleanup 00:03:44.580 |
or GOTO error rather than having multiple flags, 00:03:48.060 |
multiple if statements littered throughout things. 00:03:51.820 |
I mean, if you grep through all of my code right now, 00:03:58.980 |
but deep within sort of the technical underpinnings 00:04:03.740 |
you're gonna have some GOTOs in a couple of places probably. 00:04:12.700 |
the more of these like hacks you're going to see 00:04:18.220 |
in low level programming languages is limited. 00:04:31.660 |
You said like, this is really something special. 00:04:36.020 |
that was one of those love at first sight things 00:04:38.100 |
where just really from the time that I understood 00:04:42.700 |
I mean, I remember looking through old encyclopedias 00:04:45.460 |
at the black and white photos of the IBM mainframes 00:04:53.860 |
what the world was like then from information gathering, 00:04:58.740 |
and there would be a couple books on the shelf 00:05:01.140 |
about computers and they would be very out of date 00:05:03.940 |
even at that point, just not a lot of information, 00:05:06.700 |
but I would grab everything that I could find 00:05:10.620 |
Whenever Time or Newsweek had some article about computers, 00:05:14.260 |
I would like cut it out with scissors and put it somewhere. 00:05:17.020 |
It just, it felt like this magical thing to me, 00:05:24.500 |
I mean, and there's a little bit of the genie monkey's paw 00:05:33.140 |
It wasn't gonna have a different point of view. 00:05:34.780 |
It was gonna carry out what you told it to do. 00:05:39.860 |
you could make it do these pretty magical things. 00:05:43.580 |
- And so what kind of programs did you write at first? 00:05:48.300 |
- So I can remember as going through the learning process 00:05:56.420 |
And I can remember stuff like a Superman comic 00:06:02.620 |
it's like Superman had lost some of his super brain 00:06:04.820 |
and kids had to use Radio Shack TRS-80 computers 00:06:23.660 |
that would teach me important things about it. 00:06:32.020 |
and some things that I could get from the libraries. 00:06:37.180 |
was almost always making games of various kinds. 00:06:39.900 |
I loved the arcade games and the early Atari 2600 games, 00:06:44.900 |
and being able to do some of those things myself 00:06:47.700 |
on the computers was very much what I aspired to. 00:06:51.340 |
And it was a whole journey where if you learn normal basic, 00:07:00.300 |
I get sword, attack troll," that type of thing. 00:07:03.580 |
And that can be done in the context of basic, 00:07:09.500 |
they were only the most limited things you could possibly do. 00:07:14.020 |
or that sort of thing in low-resolution graphics. 00:07:16.940 |
And in fact, one of my first sort of major technical hacks 00:07:20.700 |
that I was kind of fond of was on the Apple II computers, 00:07:25.380 |
they had a mode called low-resolution graphics, 00:07:28.780 |
where, of course, all graphics were low-resolution back then, 00:07:39.460 |
And I wanted to make a game kind of like the arcade game 00:07:44.900 |
and I wanted to just kind of have it scroll vertically up. 00:07:50.740 |
but there's no way you could redraw the whole screen. 00:07:58.140 |
where I knew enough about the way the hardware was controlled, 00:08:02.020 |
where the text screen and the low-resolution graphics screen 00:08:10.140 |
You could do a listing, and it would scroll things up. 00:08:15.820 |
just a couple things that I barely understood 00:08:17.980 |
to put it into a graphics mode, and I could draw graphics, 00:08:33.260 |
that sort of had analogs later on in my career 00:08:42.100 |
I could draw a couple more lines of stuff at the bottom. 00:08:44.580 |
And that was my first way to kind of scroll the screen, 00:08:47.780 |
which was interesting in that that played a big part 00:08:56.180 |
where you don't have to draw the whole screen, 00:09:01.860 |
that was designed in the hardware for text output. 00:09:11.220 |
what you could actually get the computer to do, 00:09:15.980 |
You just redraw the entire screen at a slight offset. 00:09:27.900 |
there were all these things everybody wanted to do, 00:09:33.540 |
it would happen too slow to be a good experience, 00:09:36.500 |
either just ridiculously slow or just slow enough 00:09:39.340 |
that it wasn't fun to experience it like that. 00:09:42.100 |
So, so much of kind of the first couple decades 00:09:48.700 |
that everybody knows how they want it to happen. 00:09:58.660 |
And it's different now because at this point, 00:10:06.540 |
You don't have nearly the creative limitations 00:10:09.500 |
or the incentives for optimizing on that level. 00:10:23.180 |
It's amazing that you can just kind of pick an idea 00:10:27.860 |
And you don't have to be some assembly language wizard 00:10:30.580 |
or deep GPU arcanist to be able to figure out 00:10:41.220 |
and say that probably the thing that will define the future 00:10:54.460 |
and building a VR experience that's compelling, 00:10:57.140 |
it probably requires you to not to go to assembly 00:11:01.300 |
or maybe not literally, but sort of spiritually 00:11:05.860 |
to go to the limits of what the system is capable of. 00:11:08.340 |
- Yeah, and that really was why virtual reality 00:11:14.980 |
you could say that even back in the early days, 00:11:19.180 |
that's talking about doom as a virtual reality experience 00:11:25.180 |
So you could say that we've been trying to build 00:11:27.300 |
those virtual experiences from the very beginning. 00:11:37.900 |
to be able to produce these very immersive experiences. 00:11:45.700 |
console game programmer would have operated at, 00:11:55.500 |
than what a web developer or even a PC Steam game developer 00:12:02.820 |
There's opportunities for people that wanna operate 00:12:06.420 |
and still provide a lot of value to the world. 00:12:08.700 |
- Let me ask you sort of a big question about preference. 00:12:14.540 |
What would you say is the best programming language? 00:12:25.140 |
you're considered by many to be the greatest programmer ever. 00:12:29.420 |
I mean, it's so difficult to place that label on anyone, 00:12:33.980 |
So let me ask you these kind of ridiculous questions 00:12:38.740 |
but in your case, what's the best programming language? 00:12:47.500 |
a reasonable amount of Python for AI/ML sorts of work. 00:12:54.420 |
It's something I came to very late in my career. 00:13:02.380 |
where there's some amazing stats when you say, 00:13:10.980 |
you can be thousands to potentially a million times slower 00:13:21.180 |
as we've almost gotten faster in our pace of progress 00:13:32.100 |
where it's gotten to the point now I understand. 00:13:38.460 |
You have to figure out how you can reformat this 00:13:47.060 |
But the other hand is it's amazingly convenient. 00:14:10.420 |
and it's really kind of a C-flavored C++ at that 00:14:23.500 |
I spent a few years really going kind of deep 00:14:38.700 |
And I changed a lot of the way I write my C and C++ code 00:14:44.980 |
that comes out of not having this random mutable state 00:14:55.500 |
is that it's not the writing of the program initially, 00:15:02.420 |
just how fast you wrote it or how fast it operates, 00:15:05.500 |
but it's how can it bend and adapt as situations change. 00:15:09.300 |
And then the thing that I've really been learning 00:15:11.140 |
in my time at Meta with the Oculus and VR work 00:15:21.940 |
and how you get people up to speed in different areas. 00:15:24.580 |
And there's all these other different aspects of it. 00:15:27.140 |
- Is C++ a good language for handover between engineers? 00:15:34.820 |
And there's some really interesting aspects to this 00:15:38.620 |
languages that are not generally thought well of 00:15:45.660 |
that yes, obviously all of these security flaws 00:15:50.420 |
and buffer overruns and the things that you've got there, 00:16:03.100 |
and not have to learn what paradigms they're using 00:16:06.180 |
because there just aren't that many available. 00:16:09.460 |
and there's some really, really well-written C code. 00:16:12.460 |
Like it's, I find it great that if I'm messing around 00:16:17.140 |
I mean, I can be walking around in the kernel 00:16:19.340 |
and I'm like, I understand everything that's going on here. 00:16:25.100 |
what I need to do to make whatever change that I need to. 00:16:29.780 |
While you can have more significant languages, 00:16:34.820 |
where I don't regret the time that I spent with Lisp. 00:16:40.100 |
help my thinking about programming in some ways. 00:16:42.780 |
But the people that are the biggest defenders of Lisp 00:16:45.420 |
are saying how malleable of a language it is, 00:16:50.100 |
you've basically invented your own kind of language 00:16:53.140 |
and structure because it's not the primitives 00:16:57.020 |
It's all of the things you've built on top of that. 00:17:01.020 |
kind of one of the more modern Lisp versions, 00:17:12.420 |
but the idea of that for one of these long-term supported 00:17:17.980 |
where all of those abstractions that you're like, 00:17:22.100 |
till you educate yourself on all of these things 00:17:26.860 |
And it was interesting to see how when Google made Go, 00:17:30.420 |
a lot of the criticisms of that are, it's like, 00:17:33.140 |
wow, this is not a state-of-the-art language. 00:17:35.020 |
This language is just so simple and almost crude. 00:17:38.100 |
And you could see the programming language people 00:17:41.980 |
But it does seem to be quite popular as basically saying, 00:18:04.260 |
I've done a little bit beyond "Hello, World." 00:18:06.620 |
I wrote some video decompression work in Rust 00:18:09.980 |
just as an exercise, but that was a few years ago, 00:18:15.100 |
The best programming language is the one that works generally 00:18:19.220 |
because that's another trap is in almost every case 00:18:22.300 |
I've seen when people mixed languages on a project, 00:18:29.020 |
so that everybody can work across the entire thing. 00:18:31.740 |
And we have -- Like, at Meta, we have a lot of projects 00:18:46.980 |
And that was one thing that I remember talking with Boz 00:18:59.020 |
And he just thought, from the Facebook Meta perspective, 00:19:02.660 |
"Well, we just wouldn't be able to find enough." 00:19:07.180 |
they've got there, it is not necessarily a dying breed, 00:19:10.820 |
but you can sure find a lot more Java or JavaScript programmers. 00:19:14.940 |
And I kind of mentioned that to Elon one time, 00:19:25.460 |
that don't do the languages that you want to use." 00:19:28.380 |
But right now, I guess, yeah, they're using JavaScript 00:19:30.300 |
on a bunch of the SpaceX work for the UI side of things. 00:19:39.700 |
because I do think that great programmers are rare. 00:19:44.700 |
That it's not, you know, if you just look at statistics 00:19:48.340 |
of how many people are using different programming languages, 00:19:55.900 |
And so you have to really look at what you were speaking to, 00:20:00.780 |
What does it encourage you? How does it encourage you to think? 00:20:03.300 |
What kind of systems does it encourage you to build? 00:20:05.700 |
There is something about C++ that has elements of creativity, 00:20:11.180 |
but forces you to be an adult about your programming. 00:20:29.260 |
but at the same time have sort of the good software 00:20:39.100 |
Let me ask you about this other language, JavaScript. 00:20:43.460 |
So if we, you know, aliens visit in thousands of years 00:20:50.100 |
something tells me that most of the systems they find 00:20:55.020 |
I kind of think that if we're living in a simulation, 00:21:21.300 |
The systems that make JavaScript run as fast as it does right now 00:21:26.340 |
are kind of miracles of modern engineering in many ways. 00:21:29.980 |
It does feel like it is not an optimal language 00:21:55.860 |
It's not hard for people to be trained in JavaScript 00:21:59.420 |
and then understand the roots of where it came from. 00:22:02.580 |
I think garbage collection is unequivocally a good thing 00:22:08.820 |
It's funny that I still -- Just this morning, 00:22:15.540 |
arguing about the virtues and costs of garbage collection, 00:22:19.940 |
that are top-notch programmers that just say, 00:22:25.820 |
-Yes, that it makes you not think about things, 00:22:37.780 |
sometimes written by the best programmers in the world. 00:22:42.380 |
ever shooting themselves in the foot with that. 00:22:51.700 |
It's only when you get into the tightest of real-time things 00:22:54.700 |
that you start saying it's like, "No, the garbage collection 00:22:57.300 |
has more costs than it has benefits for me there," 00:23:09.340 |
and so much of programming is not the language itself. 00:23:14.100 |
It's the infrastructure around everyone that surrounds it, 00:23:24.260 |
And JavaScript is really strong on a lot of those things, 00:23:27.020 |
where for a long time, and it still does if I look at it, 00:23:31.100 |
the web stack about everything that has to go 00:23:33.940 |
when you do something really trivial in JavaScript 00:23:36.380 |
and it shows up on a web browser to kind of X-ray through that 00:23:44.660 |
to turn into something visible in your web browser, 00:23:48.300 |
it's very, very disquieting, just the depth of that stack 00:23:53.420 |
and the fact that so few people can even comprehend 00:24:04.980 |
about it because clearly there's enormous value here. 00:24:14.780 |
There's a bunch of scary stuff where you look at console logs 00:24:18.420 |
and you just see all of these bad things that are happening, 00:24:24.820 |
But so much of my systems design and systems analysis 00:24:32.980 |
like what would be the best you could possibly do here. 00:24:36.180 |
And it sounds horrible, but in a lot of cases, 00:24:39.460 |
you can be 1,000 times off your speed of light velocity 00:24:48.420 |
the optimal thing in a larger system standpoint 00:24:52.700 |
that you don't want to have to parachute in someone like me 00:24:55.660 |
to go in and say, "Make this web page run 1,000 times faster. 00:25:01.580 |
Make this web app into a hardcore native application 00:25:08.020 |
and everything responds in less than one frame latency." 00:25:12.700 |
And if somebody wants to go pay me millions of dollars 00:25:16.700 |
when they can take somebody right out of a boot camp 00:25:21.980 |
often being efficient is not really the best metric. 00:25:36.380 |
sometimes at the expense of robustness in some other ways 00:25:41.140 |
where there's interesting things where energy or electricity 00:25:47.020 |
and that could change our engineering trade-offs 00:25:53.100 |
and actually get more benefits that actually matter. 00:25:58.620 |
one of the directions I was considering swerving into 00:26:04.580 |
It was either going to be cost-effective nuclear fission 00:26:10.540 |
And one of my pet ideas there is, like, you know, 00:26:14.620 |
people don't understand how cheap nuclear fuel is, 00:26:18.380 |
and there would be ways that you could be a quarter 00:26:24.740 |
but if it wound up making your plant 10 times cheaper, 00:26:27.700 |
that could be a radical innovation in something like that. 00:26:31.220 |
So there's, like, some of these thoughts around, like, 00:26:38.420 |
that doesn't require all the steam turbines and everything, 00:26:45.020 |
where it's always good to know what you could do 00:26:58.060 |
between operating in 1 second and 750 milliseconds 00:27:05.700 |
but most of the usability stuff, not that great. 00:27:11.020 |
then all of a sudden this just feels amazing. 00:27:12.980 |
You know, it's just like doing your bidding instantly 00:27:17.220 |
twiddling your thumbs, waiting for it to respond. 00:27:19.740 |
So sometimes it's important to really crunch hard 00:27:25.060 |
but there are broad basins in the value metric 00:27:33.020 |
And there are craftsmen that just don't want to buy that, 00:27:44.060 |
that's not as good as I could possibly make it, 00:27:46.380 |
I respect that, and sometimes I am that person, 00:27:50.140 |
but I try to focus more on the larger value picture, 00:28:00.740 |
- Well, if you look at the evolution of life on Earth 00:28:25.380 |
the final result is kind of pretty interesting. 00:28:33.020 |
that things naturally die off if they don't work, 00:28:42.860 |
large community of people that are generating code, 00:28:48.260 |
and nobody knows the inefficiencies or the efficiencies 00:28:52.460 |
or the breaking points, like how reliable this code is, 00:28:54.900 |
and you kind of just run it, assume it works, 00:29:00.380 |
and then that's very kind of the evolutionary process. 00:29:10.820 |
you could count the bytes that you had to work on this, 00:29:13.060 |
you had all the kind of hackers playing code golf 00:29:22.860 |
It was a crystal piece of artwork when you had a program, 00:29:28.420 |
you couldn't afford to be lazy in different ways, 00:29:31.380 |
and in many ways, I see that as akin to the symbolic AI work 00:29:34.740 |
where again, if you did not have the resources 00:29:37.860 |
to just say, well, we're gonna do billions and billions 00:29:47.380 |
but that's definitely not the way DNA and life 00:29:58.340 |
how little programming code is in our bodies. 00:30:02.500 |
and it's like this all fits on a thumb drive for years now, 00:30:05.660 |
and then our brains are even a smaller section of that. 00:30:12.540 |
perfectly information dense conveyances here. 00:30:33.300 |
Both you need scale for sort of the population 00:30:44.380 |
like when the internet started, even in the '70s, 00:30:54.540 |
but now it's billions and billions of devices 00:30:59.340 |
and you can have this very much natural evolution going on 00:31:09.380 |
when a startup invested in the wrong tech stack 00:31:11.780 |
and things completely failed or failed to scale, 00:31:17.380 |
and it's interesting to see the mimetic evolution 00:31:22.620 |
like mentioning "Hello, World!" at the beginning. 00:31:26.420 |
where every programmer knows "Hello, World!" now, 00:31:29.580 |
and that was a completely arbitrary sort of decision 00:31:35.060 |
and C and early examples of things like that. 00:31:38.420 |
So millions of experiments are going on all the time, 00:31:44.780 |
and win the fitness war for whether it's Mindspace 00:31:50.380 |
Like there's a site on Stack Exchange called Code Golf 00:31:54.380 |
where people compete to write the shortest possible program 00:32:01.340 |
and it's really interesting to see folks kind of, 00:32:14.580 |
and across all the different programming languages, 00:32:17.060 |
you get to see some of these weird programming languages 00:32:25.100 |
You get to see the difference between C and C++ and Java, 00:32:44.180 |
Most of us, if you do any kind of programming, 00:32:46.580 |
you kind of do boring, kind of very vanilla type of code. 00:32:54.740 |
of creative genius is still within those languages. 00:33:17.660 |
and my biggest point was everything that we're doing 00:33:34.860 |
but that really should not be a major motivator for you. 00:33:44.140 |
that's displacing something else in their life. 00:33:51.340 |
but instead they're choosing to use our products. 00:33:53.540 |
And that's where, I mean, it sounds trite or corny, 00:33:58.460 |
that's how you make the world a better place. 00:34:07.540 |
People have, they've gone from something of lesser value, 00:34:18.460 |
On the other hand, if you spent ridiculous amounts of money, 00:34:29.700 |
So being proud about like a specific architecture 00:34:34.940 |
or a specific code sequence that you've done, 00:34:45.380 |
Now you can get into the argument about how you, 00:34:59.020 |
This user over there with the big smile on their face, 00:35:01.340 |
I am the moment of delight when something happened. 00:35:09.780 |
even if you have trouble exactly quantifying it, 00:35:12.820 |
you can usually make relative arguments about it. 00:35:18.820 |
So, you know, being a servant to the user is your job 00:35:25.100 |
You want to be producing something that, you know, 00:35:32.500 |
then finding the right levers to be able to pull, 00:36:04.860 |
that if you're working hard as a developer on something, 00:36:07.900 |
there's always this thought, if only I had more resources, 00:36:18.660 |
it's certainly true that if you are really hamstrung by this, 00:36:22.020 |
removing an obstacle will make a better product, 00:36:26.940 |
But if you're not making your core design decisions 00:36:38.660 |
because then you're not making a value judgment about them. 00:36:41.100 |
You're just saying, well, they both seem good. 00:36:47.420 |
and tell team B that, sorry, we're not gonna do this 00:36:55.780 |
to really critically value what you're doing, 00:36:59.660 |
even the opportunity cost of doing something else, 00:37:09.980 |
Is it possible to measure it kind of numerically, 00:37:37.300 |
Or if you're building more like a lower level thing 00:37:45.420 |
and become happy and better off because of it. 00:37:58.900 |
They'll try to, it's like you try to optimize engagement 00:38:20.420 |
if you can get any kind of a metric that's good, 00:38:25.860 |
But you can go too far there where we've had problems 00:38:28.500 |
where it's like, hey, we had a performance regression 00:38:48.260 |
using the thing, human beings using the thing, 00:38:59.260 |
But one of the points that I've been making at Meta 00:39:08.420 |
we have users that will be interested in that. 00:39:26.860 |
or communicating with people in different ways 00:39:31.620 |
there are going to be probably millions of people, 00:39:38.660 |
there's still going to be thousands of people out there 00:39:40.820 |
that have the headsets that would be your target market. 00:39:55.380 |
because it's a mistake to think about imaginary users 00:39:58.300 |
when you've got real users that you could be working with. 00:40:03.060 |
there is value to having a kind of wholeness of vision 00:40:20.220 |
where you have a very powerful leading personality 00:40:32.740 |
And they clearly get a lot of value out of it. 00:40:45.140 |
when you've got a leader that is at their limit 00:41:07.060 |
And that if they're like, well, that's wrong there, 00:41:10.980 |
or even just don't do it that way, do it another way. 00:41:29.700 |
and you do get that kind of passionate leader 00:41:35.820 |
about not letting anything slip through the cracks, 00:41:40.580 |
But the other side of that is the people saying that, 00:41:42.540 |
well, we want to have these independent teams 00:41:53.220 |
to go ahead and dictate all these points there 00:42:14.180 |
turn out to in some cases be extremely successful. 00:42:17.620 |
So yeah, I definitely kind of wanted to be there 00:42:26.140 |
And that's just, it's not in the culture at Meta, 00:42:48.020 |
that VR will somehow fundamentally transform this world, 00:42:58.220 |
So stick to you being the best programmer ever. 00:43:09.380 |
and you can focus on just being a programmer, 00:43:13.220 |
what did a productive day in the life of John Carmack 00:43:17.820 |
How many hours of the keyboard, how much sleep, 00:43:20.540 |
what was the source of calories that fueled the brain? 00:43:29.540 |
about what was good working conditions for me 00:43:41.260 |
It's like my brain generally starts turning to mush 00:43:59.060 |
Now, my schedule shifted around a fair amount 00:44:07.300 |
where I'd kind of get in an hour later each day 00:44:16.260 |
and then working again past midnight or two in the morning. 00:44:28.300 |
people generally didn't bother me much at it, 00:44:31.020 |
and I could get a lot of programming work done that way. 00:44:37.340 |
when I was taking kids to school and things like that. 00:44:41.980 |
that got you to wake up at the same time each day. 00:44:44.580 |
- It's not clear to me that there was much of a difference 00:44:49.620 |
where I kind of feel, if I just get up when I feel like it, 00:44:55.060 |
but I just recently made the focusing decision 00:44:58.260 |
to try to push my schedule back a little bit earlier 00:45:08.060 |
about what should I be doing to be more productive. 00:45:21.140 |
and I would usually do that just as the sun's going down 00:45:24.780 |
at here in Texas now, and it's still really damn hot, 00:45:30.260 |
and cover the time there, and then the showering. 00:45:34.740 |
where I would have still a couple hours after that. 00:45:39.540 |
when nobody else is around, nobody's bothering me, 00:45:48.140 |
all right, I'm gonna get up a little earlier. 00:46:05.020 |
To some degree, I had a little thing in the back of my head 00:46:07.300 |
where I was almost jealous of some of the programmers 00:46:11.420 |
And I had like Dave Taylor, one of the guys that he had, 00:46:15.220 |
that would fall asleep under his desk sometimes 00:46:17.260 |
and all the kind of classic hacker tropes about things. 00:46:21.860 |
always a little bothered that that wasn't me, 00:46:38.620 |
at least I'm not, but there's a range of people. 00:46:41.020 |
I mean, that's something that a lot of people 00:46:44.420 |
where there are people that work on four hours of sleep 00:46:47.300 |
and are smart and can continue to do good work, 00:46:49.500 |
but then there's a lot of people that just fall apart. 00:46:53.820 |
that I always try to get eight hours of sleep. 00:46:56.420 |
It's not this, push yourself harder, get up earlier. 00:46:59.980 |
I just do worse work where, you know, there's, 00:47:06.220 |
if you just kind of prioritize things correctly. 00:47:08.820 |
But I do believe in working hard, working a lot. 00:47:15.300 |
that I know there's a backlash against really hard work 00:47:20.580 |
and I get into online arguments about this all the time, 00:47:23.820 |
but he was basically saying, yeah, 40 hours a week, 00:47:31.820 |
what you're passionate about, working more gets more done. 00:47:35.460 |
And it's just really not possible to argue with that 00:47:41.020 |
that work with that level of intensity and just say, 00:47:46.340 |
And we had, I kind of came back around to that 00:48:06.060 |
after eight hours is less than in one of your peak hours, 00:48:11.380 |
There is a point where you start breaking things 00:48:13.460 |
and getting worse behavior and everything out of it 00:48:23.860 |
imagine there's an asteroid coming to impact, 00:48:27.340 |
to crash into earth, destroy all of human life. 00:48:30.580 |
Do you want Elon Musk or the people working at SpaceX 00:48:40.400 |
Because dammit, they're just gonna go do worse work 00:49:11.600 |
to say something like that, but it's, I know, 00:49:14.460 |
it's the truth, working longer gets more done. 00:49:25.960 |
depending on the task, working more and harder 00:49:37.660 |
So there's something about a deep dedication to a thing 00:49:59.120 |
- And I think, it's like your zero dreams of sushi. 00:50:09.620 |
you become a true craftsman of the thing you're doing. 00:50:16.300 |
are you sacrificing a lot of personal relationships, 00:50:34.920 |
it's about becoming better at the thing you're doing. 00:50:47.000 |
it's that if you want to accomplish something, 00:50:58.920 |
For an engineer it seems like that's one of the professions 00:51:15.680 |
personal relationships and all that kind of stuff, 00:51:19.680 |
family and how are you able to find work-life balance? 00:51:27.600 |
have you been able to arrive at any wisdom on this part 00:51:32.400 |
- I do think that there's a wide range of people 00:51:45.160 |
than a typical average person in the way things impact me, 00:51:48.000 |
the things that I want to do, my goals are different 00:51:51.600 |
and sort of the levers to impact things are different 00:51:59.600 |
and I know there's lots of brilliant smart people 00:52:02.120 |
that do world-leading work that get burned out 00:52:18.960 |
I can always just turn my gaze to something else 00:52:23.560 |
and so much of the ability to actually work hard 00:52:27.200 |
is the ability to have multiple things to choose from 00:52:29.680 |
and to use your time on the most appropriate thing. 00:52:32.920 |
Like there are time periods where it's the best time 00:52:38.480 |
that I need to really be thinking hard about it, 00:52:41.380 |
then there's a time that maybe I should just scan 00:52:48.860 |
let's go bang out a few hundred lines of code for something. 00:52:52.720 |
So switching between them has been real valuable. 00:52:57.180 |
- So you always have kind of joy in your heart 00:53:08.540 |
- Yeah, I mean, it's like a lot of people would say 00:53:12.860 |
with just sitting there with a neutral expression 00:53:15.120 |
or even like knitted brows and a frown on my face 00:53:24.040 |
okay, I'm pushing through this, I'm making progress here. 00:53:32.160 |
but what I am always trying to do in those cases 00:53:37.060 |
that might be a person like that be told by someone else 00:53:40.560 |
that no, don't even try that out as an option 00:53:44.240 |
where work-life balance versus kind of your life's work 00:53:51.800 |
that can be very happy being obsessive about things. 00:53:58.980 |
that just practical, prudent, pedestrian work won't 00:54:26.180 |
where I'm good enough that I don't eat a lot. 00:54:31.640 |
but it was interesting where one of the things 00:54:34.280 |
that I can remember being an unhappy teenager, 00:54:41.160 |
is I couldn't buy pizza whenever I wanted to. 00:54:43.400 |
So I got rich and then I bought a whole lot of pizza. 00:54:51.160 |
like I could buy all the pizza and comic books 00:55:00.980 |
And it's absolutely true that for a long time 00:55:15.840 |
And I was using this six-year-old price for the pizzas 00:55:18.880 |
that they were still kind of sending my way every day. 00:55:21.600 |
- So you were doing eating once a day or were you- 00:55:31.920 |
It was one of the nice things that Facebook Meta 00:55:36.840 |
You get a different, I guess now it's DoorDash, 00:55:44.400 |
And I probably had better food those six years 00:56:15.080 |
I mean, you know, the programming experience, 00:56:17.540 |
you know, with music or like I listen to brown noise 00:56:29.600 |
that empowers the whole process of the program. 00:56:32.200 |
Did you have that relationship with pizza or? 00:56:35.920 |
I mean, there still is that sense of, you know, 00:56:38.080 |
drop the can down, crack open the can of Diet Coke. 00:56:44.040 |
- Still to this day is Diet Coke is still part of it. 00:56:56.080 |
What kind of IDE, Emacs Vim or something modern? 00:57:04.120 |
or any interesting thing that brings you joy? 00:57:24.560 |
and I still do think a lot of the big companies 00:57:26.560 |
can learn things from the hardcore game development side 00:57:52.840 |
Like so much of it is like Emacs Vim for things. 00:58:00.000 |
I have for the systems and a lot of this comes 00:58:04.800 |
where I did come up through the personal computers 00:58:08.240 |
and then the DOS and then I am, you know, Windows 00:58:11.520 |
and it was Borland tools and then Visual Studio and- 00:58:21.400 |
into a system that's too complicated to understand. 00:58:23.920 |
I mean, anybody that thinks just read the code 00:58:25.840 |
and think about it, that's an insane statement 00:58:28.240 |
in the, you can't even read all the code on a big system. 00:58:39.120 |
is an incredibly inefficient way of doing it. 00:58:43.560 |
even if you're working with stone knives and, you know, 00:58:45.600 |
and bearskins, that is the mark of a good programmer 00:58:48.880 |
is that given any tools, you will figure out a way 00:58:52.560 |
But it's amazing what you can do with sometimes 00:58:55.640 |
much, much better tools where instead of just going 00:58:58.640 |
through this iterative compile run debug cycle, 00:59:05.120 |
you've got a REPL and you're working interactively 00:59:10.440 |
as a very powerful user interface that can stop, 00:59:13.440 |
examine all the different things in your program, 00:59:16.960 |
And of course you can do that with GDB or whatever there, 00:59:24.720 |
is complicated to do, you won't use it very often. 00:59:30.680 |
when they're at their wits end and they just have 00:59:32.720 |
beat their head against a problem for so long. 00:59:35.200 |
But for somebody that kind of grew up in game dev, 00:59:37.880 |
it's like they were running into the debugger anyways 00:59:42.200 |
And you would just stop and see, you know, what was happening. 00:59:44.840 |
And sometimes you could fix things even before you, 00:59:47.720 |
you know, even before you did one compile cycle, 00:59:50.640 |
you could be in the debugger and you would say, 00:59:52.160 |
well, I'm just going to change this right here. 00:59:54.240 |
And yep, that did the job and fix it and go on. 00:59:57.880 |
GDB is a sort of popular, I guess, Linux debugger, 01:00:05.280 |
- They handle most of the languages, but it's, you know, 01:00:07.320 |
it's based on C as the original kind of Unix heritage. 01:00:12.840 |
It's not, it doesn't allow for clean visualizations. 01:00:19.000 |
usually when you're at wits end and there's a problem 01:00:23.440 |
by just looking at the codes, you have to find it. 01:00:26.000 |
That's how I guess normal programmers use it. 01:00:39.960 |
- Yeah, when I'm working on like my C/C++ code, 01:00:47.920 |
Many times, the first thing I do after writing code 01:00:50.240 |
is set a break point and step through the function. 01:01:04.760 |
and see if it's actually doing what I expected it to. 01:01:21.400 |
That is an interesting question of what role does AI play 01:01:32.160 |
that understand the code in interesting, deep ways 01:01:43.480 |
up to AI that can conceivably grok these programs 01:01:49.120 |
They're too big, too intertwined and too interconnected, 01:01:52.000 |
but it's not beyond the possibility of understanding. 01:01:55.000 |
It's just beyond what we can hold in our heads 01:01:57.840 |
as kind of mutable state while we're working on things. 01:02:24.120 |
This is almost one of those spiritual experiences 01:02:39.640 |
and scrub the code base using every tool that I could find. 01:02:43.320 |
And it was eyeopening where we had a reputation 01:02:45.680 |
for having some of the most robust, strongest code, 01:02:49.840 |
you know, great things that I remember hearing 01:02:51.760 |
from Microsoft telling us about crashes on Xbox. 01:03:04.920 |
So I was proud of our code on a lot of levels, 01:03:16.760 |
Things that you can say, okay, this was a copy paste, 01:03:26.000 |
in a printf format string that was the wrong data type 01:03:33.400 |
Then the next most common was missing a check for null 01:03:36.200 |
that could actually happen, that could blow things up. 01:03:38.480 |
And those are obviously like top C, C++ things. 01:03:43.440 |
But the long tail of all of the different little things 01:03:46.280 |
that could go wrong there, and we had good programmers 01:03:49.200 |
and my own code, stuff that I'd be looking at, 01:03:58.560 |
this mine sitting there waiting for us to step on. 01:04:06.040 |
that anything that can be syntactically allowed 01:04:09.440 |
in your language, if it's going to show up eventually 01:04:13.440 |
in a large enough code base, you're not going to, 01:04:16.120 |
good intentions aren't going to keep it from happening. 01:04:18.800 |
You need automated tools and guardrails for things. 01:04:21.880 |
And those start with things like static types 01:04:30.280 |
that basically say, that slows me down doing that. 01:04:35.560 |
And, you know, I've cobbled things together in a notebook. 01:04:38.200 |
I am like, wow, this is great that it just happened. 01:04:40.960 |
But yeah, that's kind of sketchy, but it's working fine. 01:04:51.800 |
to be something that's going to live for years 01:04:53.840 |
and it's going to have other people working on it, 01:04:56.480 |
and it's going to be deployed to millions of people, 01:05:01.160 |
You want to be told, it's like, no, you've screwed up here, 01:05:04.320 |
And that does require kind of an ego check about things, 01:05:13.960 |
It's not that, oh, you occasionally have a bad day. 01:05:16.360 |
It's just, whatever stream of code you output, 01:05:19.160 |
there is going to be a statistical regularity of things 01:05:24.040 |
And I do think there's the whole argument about test-driven 01:05:28.360 |
design and unit testing versus kind of analysis 01:05:32.920 |
I am more in favor of the analysis and the stuff 01:05:35.960 |
that just like, you can't run your program until you fix this 01:05:38.640 |
rather than you can run it and hopefully a unit test will 01:05:42.880 |
Yeah, in my private code, I have asserts everywhere. 01:05:48.040 |
Just there's something pleasant to me, pleasurable to me, 01:06:05.640 |
And I would assume I wouldn't be the kind of person 01:06:15.320 |
So my code, I would say like 10 to 20% of my private code, 01:06:24.920 |
they don't make any difference to the program. 01:06:27.200 |
And if it was all operating the way you expected it would be, 01:06:40.800 |
And in fact, that's one of the things where I'm kind of fond 01:06:44.560 |
in a lot of cases of static array size declarations, 01:06:47.520 |
where I went through this period where it's like, 01:06:49.800 |
okay, now we have general collection classes. 01:06:54.400 |
Because I had this history of in the early days, 01:06:57.480 |
you get Doom, which had some fixed limits on it. 01:06:59.960 |
Then everybody started making crazier and crazier things. 01:07:02.520 |
And they kept bumping up the different limits, 01:07:09.000 |
Well, we should just make this completely generic. 01:07:13.720 |
And there's cases where that's the right thing to do. 01:07:17.280 |
But it also, the other aspect of the world changing 01:07:23.000 |
when the world has changed more than you thought it would. 01:07:25.680 |
And if you've got a continuously growing collection, 01:07:29.520 |
You might have this quadratic slowdown on something 01:07:35.720 |
But something changes, and there's a new design style. 01:07:38.200 |
And all of a sudden, you've got 10,000 of them. 01:07:43.880 |
picking a number, some nice round power of two number, 01:07:47.520 |
and setting it up in there, and having an assert saying, 01:07:54.320 |
that you've made around all of this still relevant 01:08:09.360 |
If something breaks, that means you got to rethink 01:08:16.480 |
Is there any stuff like a keyboard or monitors? 01:08:27.720 |
I had been dual monitor for a very long time. 01:08:38.720 |
I should just put the third monitor up there. 01:08:50.240 |
that has helpful debuggers, has helpful tools. 01:08:54.080 |
So it's not the Emacs Vim route and then Diacoke. 01:08:57.800 |
So I did spend, I spent one of my week-long retreats 01:09:01.400 |
where I'm like, okay, I'm going to make myself use, 01:09:11.320 |
It's like, okay, I'm being in kind of classic 01:09:20.600 |
the different little key combinations for things like that. 01:09:26.040 |
this was kind of like my civil war reenactment phase. 01:09:35.360 |
they're screaming as they're listening to this. 01:09:38.640 |
- So again, the out is that this was not modern Vim, 01:09:46.840 |
- Yeah, I'm actually, I struggle with this a lot 01:09:59.160 |
I can understand the code, I can navigate the code. 01:10:01.280 |
There's a lot of stuff you could build within Emacs 01:10:04.800 |
You can customize a lot of things for yourself 01:10:18.920 |
and the better and better ideas are constantly being built. 01:10:30.840 |
I need to kind of move into the 21st century. 01:10:40.360 |
Again, it's the JavaScript ecosystem on the one hand, 01:10:47.840 |
You want them to just kind of immediately respond. 01:10:52.480 |
there's someone I know, an old school game dev guy 01:10:59.480 |
everything is just absolutely instant on something like that 01:11:13.320 |
you know, they feel so crufty when it's like, 01:11:19.240 |
and something blinks down there and you should update this. 01:11:21.840 |
And there's, you know, there are things that we've lost 01:11:27.400 |
but lots of people get tons of value from it. 01:11:31.040 |
And I am super happy that that seems to be winning over 01:11:37.160 |
hey, Visual Studio code's maybe, you know, not so bad. 01:11:40.080 |
I am, that may be the final peacekeeping solution 01:11:55.520 |
- Back in the early, early days of id Software, 01:11:58.640 |
one of our big things that was unique with what we did 01:12:04.000 |
or kind of next step systems from Steve Jobs' 01:12:11.680 |
And they were basically, it was kind of interesting 01:12:18.080 |
So many of the people, they get immersed in that in college 01:12:24.200 |
that sets a lot of cultural expectations for them. 01:12:36.480 |
I was not really what kind of I wanted to go with. 01:12:41.400 |
But when Steve Jobs left Apple and started Next, 01:12:50.440 |
And we were still back in those days working on DOS, 01:12:54.240 |
You had reset buttons because your computer would just freeze 01:13:06.400 |
would have given a stable development platform 01:13:08.640 |
where you don't crash and reboot all the time. 01:13:11.440 |
But Next also had this really amazing graphical interface 01:13:17.440 |
And it used Objective-C as the kind of an interesting- 01:13:23.120 |
- So Next was Unix based, it said Objective-C. 01:13:28.720 |
I mean, the kind of reverse acquisition of Apple by Next, 01:13:31.440 |
where that took over and became what the modern Mac system is. 01:14:05.680 |
that when somebody ran a trivial little command 01:14:16.760 |
Then all that server would do was read the .plan file 01:14:27.160 |
whether you're on vacation, what your current project was, 01:14:30.080 |
it's supposed to be like the plan of what you're doing. 01:14:32.280 |
And people would use it for various purposes, 01:14:35.720 |
but all it did was dump that file over to the terminal 01:14:42.680 |
And at one point I started just keeping a list 01:14:48.880 |
which would be what I was working on in the day. 01:14:58.720 |
I could have a few other little bits of punctuation. 01:15:05.560 |
And it would be these trivial, obscure little things 01:15:08.640 |
like I fixed something with collision detection code, 01:15:24.240 |
I would have little notes of thoughts and insights 01:15:28.480 |
and then I would eventually start having little essays 01:15:33.040 |
interspersed with the work logs of things that I was doing. 01:15:36.240 |
So in some ways it was like a super early proto blog 01:15:39.640 |
where I was just kind of dumping out what I was working on, 01:15:48.760 |
So most of the people didn't have Unix workstation, 01:15:53.320 |
that would follow the Doom and Quake development 01:15:59.800 |
and then people could just get it with a web browser. 01:16:02.240 |
And there was a period where like all of the little 01:16:09.400 |
there were a couple dozen .plan files going on, 01:16:12.280 |
which was, and this was some years before blogging 01:16:27.120 |
and it's kind of fun to go back and look through 01:16:41.520 |
and high level philosophical essay type of stuff? 01:16:48.440 |
where a lot of it was low level nitpicky details 01:16:52.000 |
about game dev and I've learned enough things 01:16:58.320 |
that I couldn't go back and do a better job on now. 01:17:08.720 |
And there's stuff in Wolfenstein, Doom, Quake, 01:17:15.800 |
whether it's something in the rendering engine side 01:17:30.320 |
I had a pretty clear view of I was doing good work there 01:17:35.960 |
where there was another programmer, Graham Devine, 01:17:38.800 |
who was, he had worked at Id and Seventh Guest 01:17:43.720 |
where he said he looked back at some of his old notes 01:17:45.720 |
and he was like, wow, I was really smart back then. 01:17:56.560 |
you get certain changes in how you're able to work problems, 01:18:02.320 |
I'm sure that I could do a better job on all of them. 01:18:08.400 |
If you could travel back in time and talk to that guy, 01:18:15.920 |
What about the high level philosophical stuff? 01:18:18.040 |
Is there some insights that stand out that you remember? 01:18:20.640 |
- There's things that I was understanding about development 01:18:31.360 |
where I definitely learned a lot more in the later years 01:18:36.360 |
about business and organization and team structure. 01:18:41.320 |
There were, I mean, there were definitely things 01:19:11.040 |
that's the overarching importance for all of that. 01:19:14.040 |
And I didn't necessarily have my eye on that ball correctly 01:19:38.520 |
but it was interesting to see in later years, 01:19:46.600 |
And you can look at that from a negative standpoint 01:19:48.560 |
and say, it's like, oh, that's just being derivative 01:19:51.520 |
But if you step back again and say, it's like, 01:19:53.360 |
no, are the people buying it still enjoying it? 01:19:55.480 |
Are they enjoying it more than what they might 01:20:06.000 |
I, you know, don't be forced into reinventing everything 01:20:11.680 |
I'm, you know, lots of things about business and team stuff 01:20:16.960 |
But the technical work, the kind of technical visionary type 01:20:20.400 |
stuff that I laid out, I still feel pretty good about. 01:20:23.840 |
There are some classic old ones about my defending 01:20:30.760 |
to be one of the more probably important momentous things 01:20:34.080 |
there, where it never-- it was always a rearguard action 01:20:38.120 |
on Windows, where Microsoft was just not going to let that win. 01:20:45.080 |
to keep OpenGL relevant for a number of years 01:20:55.600 |
all of the acceleration of the mobile industry. 01:21:00.880 |
as Apple's moved to Metal and some of the other companies 01:21:03.520 |
have moved to Vulkan, that that's moved away. 01:21:16.640 |
wound up with an appropriate, capable graphics 01:21:23.720 |
that that was really important, that we not just give up 01:21:27.800 |
and use Microsoft's, at that time, really terrible API. 01:21:32.680 |
The thing about Microsoft is the APIs don't stay terrible. 01:21:37.480 |
But a few versions on, they were actually quite good. 01:21:51.160 |
that we had an open standard that could show up 01:21:53.560 |
on Linux and Android and iOS, eventually WebGL still 01:21:58.680 |
So that would be on my greatest hits list of things 01:22:04.360 |
- In terms of impact it had on billions of devices, yes. 01:22:09.000 |
Can you tell the origin story of id Software? 01:22:12.400 |
Again, one of the greatest game developer companies ever. 01:22:16.360 |
It created Wolfenstein 3D, games that define my life also 01:22:22.600 |
As a thing that made me realize what computers 01:22:32.040 |
and understanding what these machines are all about. 01:22:38.720 |
all the incredible engineering innovation that went into that. 01:22:46.920 |
don't consider myself the historian of the software 01:22:54.160 |
at John Romero for stories about the early days 01:23:00.400 |
commented that I'm a remarkably unsentimental person 01:23:03.160 |
in some ways where I don't really spend a lot of time 01:23:05.760 |
unless I'm explicitly prodded to go back and think 01:23:17.120 |
And the more that I work on machine learning and AI 01:23:19.440 |
and the aspects of memory and how when you go back and polish 01:23:29.600 |
the way everything happened that led up to that 01:23:32.200 |
was after I was an adult and kind of taking a few college 01:23:40.880 |
I was hardscrabble contract programming work, 01:23:43.600 |
really struggling to kind of keep groceries and pay 01:23:48.160 |
And the company that I was doing the most work for 01:24:05.760 |
And every month, they would send you a disk that had some random 01:24:12.680 |
And they had different ones for the Apple II, the 2GS, the PC, 01:24:16.680 |
the Mac, the Amiga, lots of different things here. 01:24:21.400 |
But I was doing a lot of contract programming for them 01:24:30.000 |
And one of the things that I was doing, again, 01:24:41.120 |
So I would write a game like Dark Designs or Catacombs. 01:24:44.920 |
And I would develop it on the Apple II, the 2GS, 01:24:47.960 |
and the IBM PC, which apparently was the thing that really kind 01:24:53.040 |
of piqued the attention of the people working down there. 01:25:08.240 |
because I was really enjoying my freedom of kind of being off 01:25:17.640 |
But I did have enough close scrapes with, like, damn, 01:25:22.520 |
should get an actual job rather than contracting 01:25:43.840 |
Drove down through the Ozarks and everything down 01:25:53.760 |
met the people I had been working with remotely 01:25:59.200 |
was I met two programmers there, John Romero and Lane Roth, 01:26:05.080 |
met programmers that knew more cool stuff than I did, 01:26:08.480 |
where the world was just different back then. 01:26:12.400 |
It was one of those smartest kid in the school, 01:26:15.960 |
The teachers don't have anything to teach him. 01:26:18.080 |
But all I had to learn from was these few books 01:26:27.240 |
It's like, oh, he knows how to format a track on a low level 01:26:34.280 |
And I was still not at all sure I was going to take the job. 01:26:44.400 |
And he had done so many different games ahead of time 01:26:59.920 |
And the first kind of big change that happened down there 01:27:03.040 |
was the company wanted to make a gaming-focused, a PC gaming 01:27:11.840 |
Pay a monthly fee, and you'll get a disc with one or two 01:27:16.920 |
And no choice in what you get, but we think it'll be fun. 01:27:19.800 |
And that was the model they were comfortable with. 01:27:27.800 |
like me, Romero, Tom Hall was kind of helping us 01:27:38.240 |
And we were going to just start making games, 01:27:52.680 |
that sense that I had done all this contract programming, 01:27:58.000 |
where he had done-- one of his teaching himself efforts 01:28:00.840 |
was he made a game for every letter of the alphabet. 01:28:04.520 |
to go make 26 different games, give them a different theme. 01:28:10.280 |
and you crank these things out on a biweekly, monthly basis, 01:28:17.840 |
It's not just from the very beginning to the very end. 01:28:30.080 |
pressure cooker environment was super important for all of us 01:28:38.520 |
I mean, people would say, like, in the history of the Beatles, 01:28:43.120 |
It was them playing all of these other early works, 01:28:46.080 |
that that opportunity to craft all of their skills 01:28:54.960 |
where we did these games that nobody remembers, 01:29:00.960 |
to building up the skill set for the things that eventually 01:29:08.600 |
I had to write it in a month just to make money. 01:29:14.600 |
because he had to figure out-- because it's literally-- 01:29:18.160 |
he didn't have enough time to write it fast enough. 01:29:21.160 |
So he had to come up with hacks to actually literally write it 01:29:25.120 |
It comes down to that point where pressure and limitation 01:29:32.600 |
where you just think that if you've got all the time 01:29:34.360 |
in the world, and you've got all the resources in the world, 01:29:36.560 |
of course you're going to get something better. 01:29:50.760 |
Is there any good games written in that time? 01:29:53.440 |
Some of them are still fun to go back and play, 01:30:01.880 |
about how just the exact feel that things-- it's not 01:30:06.260 |
but how running, and jumping, and shooting, and those things 01:30:17.760 |
but you move over, and you're like, bang, jump, bang. 01:30:23.160 |
So you can get lost in the rhythm of the game. 01:30:27.840 |
Just like there's something about it that pulls you in? 01:30:31.360 |
Nowadays, again, people talk about compulsion loops 01:30:33.840 |
and things, where it's that sense of exactly what you're 01:30:37.440 |
doing, what your fingers are doing on the keyboard, what 01:30:41.120 |
And there are going to be these sequences of things. 01:30:43.280 |
Grab the loot, shoot the monster, jump over the obstacle, 01:30:47.160 |
These are eternal aspects of game design in a lot of ways. 01:30:50.640 |
But there are better and worse ways to do all of them. 01:31:01.040 |
that was happening at this time is John Romero 01:31:20.200 |
were all coming from Scott Miller at Apogee Software. 01:31:26.320 |
he didn't think he could contact John directly, 01:31:29.560 |
So he was trying to get him to contact him through back 01:31:35.760 |
I'm making all this money on shareware games. 01:31:40.880 |
Because he had seen some of the games that Romero had done. 01:31:50.480 |
We're like, that can't be making the kind of money 01:31:53.080 |
that he's saying he's making $10,000 or something off 01:31:57.160 |
And we really thought that he was full of shit, 01:31:59.360 |
that it was a lie trying to get him into this. 01:32:07.920 |
And it was funny the moment when Romero realized 01:32:14.560 |
had the same return address with different names on them, 01:32:17.320 |
which was a little bit of a two-edged sword there. 01:32:20.680 |
Trying to figure out the puzzle laid out before him. 01:32:23.400 |
Yeah, what happened after I kind of coincident with that 01:32:26.600 |
was I was working on a lot of the new technologies, 01:32:29.800 |
where I was now full on the IBM PC for the first time, 01:32:33.840 |
where I was really a long holdout on Apple II forever. 01:32:43.760 |
was kind of clinging on to that well past its sort 01:32:47.440 |
Was it the best computer ever made, you would say? 01:32:50.680 |
I wouldn't make judgments like that about it. 01:32:56.200 |
that it impacted a whole lot of American programmers, 01:32:59.840 |
at least, where there was programs that the Apple IIs got 01:33:03.960 |
And they had enough capability that lots of interesting things 01:33:17.720 |
the Apple II made the most impact for a lot of programmers 01:33:26.040 |
And this was even more so with the Total Focus, 01:33:30.680 |
where I didn't know anybody that I wasn't working with. 01:33:35.160 |
And then at Softdisk, again, the things that drew me to it, 01:33:38.680 |
I had a couple programmers that knew more than I did. 01:33:43.480 |
They had a set of books and a set of magazines. 01:33:47.600 |
the old Dr. Dobbs Journal and all of these magazines 01:33:56.400 |
It was eat, breathe, sleep, computer programming, 01:33:59.360 |
particularly the IBM, for everything that I was doing. 01:34:03.240 |
And I was digging into a lot of these low-level hardware 01:34:05.840 |
details that people weren't usually paying attention to, 01:34:08.840 |
the way the IBM EGA cards worked, which was fun for me. 01:34:14.240 |
I hadn't had experience with things at that level. 01:34:16.920 |
And back then, you could get hardware documentation just 01:34:37.040 |
that they could perhaps be exploited that they weren't 01:35:04.920 |
None of this was kind of DOS extenders and things. 01:35:07.520 |
How different is it from the systems of today? 01:35:13.000 |
If you open up command.exe or com on Windows, 01:35:26.720 |
You had TSRs or terminate and stay resident hacks 01:35:29.920 |
on top of things that would cause configuration problems. 01:35:33.200 |
All the hardware was manually configured in your auto exec. 01:35:42.560 |
My earliest code there was written in Pascal. 01:35:44.680 |
That was what I had learned at an earlier point. 01:35:58.400 |
So most of the work that I was doing as a contract programmer 01:36:12.760 |
of three-letter acronyms for the instructions. 01:36:16.600 |
You don't earn the once again greatest programmer ever 01:36:20.720 |
label without being able to write a game in assembly. 01:36:24.200 |
Everybody serious wrote their games in assembly language. 01:36:31.240 |
It was an outlier to use Pascal a little bit, 01:36:34.000 |
where there was one famous program called Wizardry. 01:36:36.480 |
It was like one of the great early role-playing games 01:36:47.080 |
like to this day, I sketch in data structures. 01:36:58.960 |
because I remember designing my RPGs in Pascal record 01:37:04.240 |
And so I had gotten a Pascal compiler for the Apple IIGS 01:37:08.920 |
And the first IBM game that I developed, I did in Pascal. 01:37:12.480 |
And that's actually kind of an interesting story, 01:37:14.920 |
again, talking about the constraints and resources, 01:37:24.600 |
because I thought I could make more money on it. 01:37:27.040 |
So what I wound up doing is I rented a PC for a week 01:37:35.960 |
And this was cutting into what minimal profit margin 01:37:40.400 |
I had to get my program ported before I had to return the PC. 01:37:46.800 |
that I had done on the IBM PC and what led me 01:37:51.680 |
And Turbo Pascal, how is that different from regular Pascal? 01:37:54.840 |
Is it a different compiler or something like that? 01:37:56.920 |
So it was a product of Borland, which before Microsoft kind 01:38:00.280 |
of killed them, they were the hot stuff developer tools 01:38:04.400 |
You had Borland, Turbo Pascal, and Turbo C, and Turbo Prolog. 01:38:09.560 |
But what they did was they took a supremely pragmatic approach 01:38:23.760 |
that they did manage to make a game with that. 01:38:32.800 |
it was called Turbo because it was blazingly fast to compile. 01:38:35.520 |
I mean, really ridiculously 10 to 20 times faster 01:38:41.600 |
But it also had very pragmatic access to, look, 01:38:46.800 |
And we have libraries that let you do things. 01:38:58.640 |
where C took over the world for reasons that came out of Unix 01:39:04.360 |
And that was not a foregone conclusion at all. 01:39:07.240 |
And people can make real reasoned rational arguments 01:39:14.440 |
I'm somewhat agnostic on that, where I do know from experience 01:39:23.160 |
like it had range-checked arrays as an option there, 01:39:26.080 |
which could avoid many of C's real hazards that 01:39:38.280 |
But you said Pascal had more emphasis on data structures. 01:39:50.100 |
So Pascal's lineage went to Modula 2 and eventually 01:40:01.360 |
Now, some of the classic academic-oriented Pascals 01:40:05.680 |
like, oh, you can't access this core system thing, 01:40:08.040 |
because we're just using it to teach students. 01:40:10.320 |
But Turbo Pascal showed that only modest changes to it 01:40:14.040 |
really did make it a completely capable language. 01:40:17.120 |
And it had some reasons why you could implement it 01:40:20.960 |
So it could be way, way faster, although less scope 01:40:28.320 |
It had a little bit better typing capability. 01:40:30.760 |
You'd have properly typed enums, sorts of things, 01:40:39.680 |
from the Unix ecosystem and everything that came with that. 01:40:47.160 |
So you could still have your use-after-freeze 01:40:53.760 |
at least if you were compiled with that debugging option, 01:40:56.140 |
certainly would have avoided a lot of problems 01:41:01.480 |
I had to learn C, because C was where it seemed like most 01:41:07.080 |
So I abandoned Pascal, and I started working in C. 01:41:11.640 |
dealing with the graphics controllers and the EGA 01:41:16.000 |
And what we most wanted to do-- so at that time, 01:41:22.260 |
playing all the different console video games. 01:41:27.720 |
we want to make for our gamers edge product there? 01:41:30.480 |
And so we had one of the first Super Nintendos sitting there. 01:41:41.960 |
was this ability to have a massive scrolling world, where 01:41:45.160 |
most of the games that you would make on the PC 01:41:48.000 |
and earlier personal computers would be a static screen. 01:41:51.520 |
You move little things around on it, and you interact like that. 01:41:55.040 |
Maybe you go to additional screens as you move. 01:41:58.320 |
But arcade games and consoles had this wonderful ability 01:42:08.440 |
that kind of action exploration adventure games, 01:42:16.280 |
And what I had come across was a couple different techniques 01:42:25.200 |
When I explain them now, they're pretty straightforward. 01:42:29.280 |
You sound like Einstein describing his five papers. 01:42:41.600 |
And some of the consoles had different limitations 01:42:46.160 |
And there were similar things going on as advancements, 01:42:48.400 |
even in the console space, where you'd have-- 01:42:50.640 |
like the original Mario game was just horizontal scrolling. 01:42:54.600 |
And then later Mario games added vertical aspects to it 01:42:57.320 |
and different things that you were doing to explore, 01:43:02.960 |
And so much of the early game design for decades 01:43:05.480 |
was removing limitations, letting you do things 01:43:17.720 |
You can imagine that you want to create this big world 01:43:28.520 |
how do I actually build that in a way that's-- 01:43:40.400 |
because we were playing all of these console games, 01:43:42.720 |
playing all these Nintendo games and arcade games. 01:43:45.160 |
Clearly, there is a whole world of awesome things 01:43:47.240 |
there that we just couldn't do on the PC, at least initially. 01:44:00.960 |
You want to be going 30 or 60 frames per second or something. 01:44:04.760 |
And it just didn't feel like that was possible. 01:44:06.840 |
It felt like the PCs had to get five times faster for you 01:44:12.680 |
And interestingly, I wound up with two completely different 01:44:18.800 |
And this is a theme that runs through everything, 01:44:22.800 |
where all of these big technical advancements, it turns out 01:44:25.720 |
there's always a couple different ways of doing them. 01:44:28.520 |
And it's not like you found the one true way of doing it. 01:44:31.760 |
And we'll see this as we go into 3D games and things later. 01:44:35.240 |
But so the scrolling, the first set of scrolling tricks 01:44:38.560 |
that I got was, the hardware had this ability to-- 01:44:47.680 |
So the EGA cards at the time had 256 kilobytes of memory. 01:44:51.960 |
And it was awkwardly set up in this planar format, 01:44:55.360 |
where instead of having 256 or 24 million colors, 01:45:06.320 |
Of course, 64k is a nice round number for 16-bit addressing. 01:45:15.240 |
And you could tell it to start the video scan out 01:45:19.400 |
So there were a couple games that had taken this approach. 01:45:22.160 |
If you could make a 2 by 2 screen or a 1 by 4 screen, 01:45:25.800 |
and you could do scrolling really easily like that. 01:45:28.120 |
You could just lay it all out and just pan around there. 01:45:32.760 |
because that's all the memory that was there. 01:45:35.560 |
The first insight to the scrolling that I had was, 01:45:38.240 |
well, if we make a screen that's just one tile larger-- 01:45:42.480 |
we usually had tiles that were 16 pixels by 16 pixels, 01:45:45.800 |
the little classic Mario block that you run into. 01:45:50.880 |
And your screen is a certain number of tiles. 01:45:52.880 |
But if you had one little buffer region outside of that, 01:45:56.640 |
you could easily pan around inside that 16-pixel region. 01:46:08.400 |
what I called adaptive tile refresh, which was really 01:46:18.600 |
have actually-- that are different between where it was. 01:46:23.280 |
if you think about your classic Super Mario Brothers game, 01:46:39.000 |
on top of each other, in general, only about 10% 01:46:50.200 |
going to change those 10%, 20%, whatever percent tiles there. 01:46:54.120 |
And that meant that it was essentially five times faster 01:47:01.320 |
to do a bunch of these games for Gamer's Edge. 01:47:04.880 |
We had a lot of these scrolling games, like Slordax 01:47:09.280 |
that we were cranking out at this high rate that 01:47:18.240 |
if you made a checkerboard over the entire screen, 01:47:20.520 |
you scroll over one, and every single tile changes, 01:47:23.240 |
and your frame rate's now five frames per second because it 01:47:29.960 |
They had to make these relatively plain-looking 01:47:37.560 |
And the first thing that we wound up doing with that 01:47:46.320 |
And we were looking over at our Super Nintendo 01:47:49.240 |
on the side there with Super Mario 3 running. 01:48:03.560 |
And we had our little character running and jumping in there. 01:48:07.520 |
It was close to pixel accurate as far as all the backgrounds 01:48:11.280 |
But the gaming was just stuff that we cobbled together 01:48:15.360 |
I just really kit bashed the whole thing together 01:48:21.480 |
when I said I don't usually do these all-night programming 01:48:32.000 |
our Dangerous Dave and Copyright Infringement, 01:48:37.280 |
which was running around with a shotgun shooting things. 01:48:40.440 |
And we were just taking our most beloved game at the time there, 01:48:43.400 |
Super Mario 3, and sort of sticking Dave inside that 01:48:48.880 |
was going perfectly smooth for them as it ran. 01:48:54.560 |
And Tom and I just kind of blearily the next morning 01:48:58.360 |
And we left a disk on the desk for John Romero and Jay Wilbur 01:49:05.240 |
And we eventually made it back in later in the day. 01:49:08.360 |
And it was like they grabbed us and pulled us into the room. 01:49:19.280 |
We're going to go make our own games, where this was something 01:49:26.360 |
Like, wow, this is just so much cooler than what 01:49:45.160 |
And we heard that it did get looked at in Japan. 01:49:52.020 |
could have gone a very different way, where we could have been 01:49:58.480 |
And define the direction of Wolfenstein and Doom and Quake 01:50:14.640 |
reached out to Scott Miller at Apogee and said, 01:50:17.680 |
it's like, hey, we do want to make some games. 01:50:20.160 |
These things that you think you want, those are nothing. 01:50:26.280 |
And he just popped right up and sent a check to us, 01:50:29.320 |
where at that point, we still thought he might be a fraud, 01:50:34.480 |
But he was totally correct on how much money he was making 01:50:42.560 |
about this, where shareware was this idea that software 01:50:47.240 |
If you use it, you send, out of the goodness of your heart, 01:50:53.300 |
that did make some significant success like that. 01:50:55.920 |
But for the most part, it didn't really work. 01:50:58.600 |
There wasn't much software in a pure shareware 01:51:07.680 |
call it shareware, split it into three pieces. 01:51:19.400 |
it meant that the first part was a demo, where you kind of like, 01:51:28.600 |
And we were happy to have the first one go everywhere. 01:51:36.400 |
And probably 20 times as many people played that part of it, 01:51:39.800 |
thought they had a great game, had fond memories of it, 01:51:50.680 |
And these early games that we didn't think very much of 01:52:02.280 |
And it wasn't like you were taking a crap shoot 01:52:07.720 |
And you loved it enough to handwrite out a check 01:52:10.800 |
and put it in an envelope and address it and send it out 01:52:16.600 |
So it was a really pretty feel-good business prospect 01:52:23.120 |
They knew what they were getting when they sent it in. 01:52:27.140 |
If you're going to the trouble of addressing a letter 01:52:29.480 |
and filling out an envelope, you write something in it. 01:52:32.620 |
And there were just the literal bags of fan mail 01:52:41.280 |
the definition of wealth is being able to have pizza 01:52:49.000 |
'cause I would play Shareware games over and over, 01:52:53.800 |
And it was very deeply fulfilling experience. 01:52:56.480 |
But I dreamed of a time when I could actually afford 01:53:02.120 |
And this is kind of this dreamland beyond the horizon, 01:53:09.360 |
In some sense, even just playing the Shareware was, 01:53:21.520 |
In that way, Shareware was somehow really fulfilling 01:53:26.520 |
to have this kind of mysterious thing beyond what's free, 01:53:33.960 |
That was, maybe it's because a part of my childhood 01:53:39.520 |
It's so interesting how that model still brought joy 01:53:43.120 |
to so many people, the 20X people that played it. 01:53:49.640 |
"Oh, I loved that game that you had early on, 01:53:58.720 |
- That's me, I played the crap out of Commander Keen. 01:54:04.120 |
- But so we were in this position where Scott Miller 01:54:10.400 |
But we did not properly pull the trigger and say, 01:54:17.880 |
We're gonna keep working at Softdisk, working on this. 01:54:21.240 |
And then we're going to go ahead and make a new game 01:54:27.040 |
And this eventually did lead to some legal problems. 01:54:29.520 |
And we had trouble, it all got worked out in the end, 01:54:32.760 |
but it was not a good call at the time there. 01:54:35.800 |
- And your legal mind at the time was not stellar. 01:54:49.160 |
like even using our work computers to write software 01:55:00.960 |
- So the design process, we would start from, 01:55:11.800 |
We had some sense of what it would have to look like 01:55:17.960 |
It had to have fields of relatively constant tiles. 01:55:25.920 |
The early design or all the design for Commander Keen 01:55:36.960 |
where we had an interesting division of things 01:55:52.480 |
But Commander Keen was very much Tom Hall's baby. 01:55:55.520 |
And he came up with all the design and backstory 01:55:59.280 |
for the different things of kind of a mad scientist 01:56:02.320 |
little kid with, you know, building a rocket ship 01:56:10.800 |
the background that we lay the game inside of. 01:56:13.640 |
And there's not a whole lot to any of these things. 01:56:16.480 |
You know, design for us was always just what we needed to do 01:56:19.520 |
to make the game that was gonna be so much fun to play. 01:56:31.800 |
And we just really started busting on all that work. 01:56:39.600 |
that while we were still making games every month 01:56:41.920 |
for Gamers Edge, we were sharing technology between that. 01:56:53.040 |
But in three months, we got our first game out, 01:56:57.240 |
and all of a sudden, it was three times as successful 01:57:00.680 |
as the most successful thing Apogee had had before. 01:57:11.720 |
It was more than we thought that was gonna make. 01:57:15.320 |
And we said, "Well, we're gonna certainly roll 01:57:29.200 |
And these things, so many of the great ideas of technology 01:57:33.440 |
are things that are back-of-the-envelope designs. 01:57:36.320 |
I make this comment about modern machine learning 01:57:38.400 |
where all the things that are really important 01:57:42.760 |
each of them fits on the back of an envelope. 01:57:46.360 |
They're not super dense, hard-to-understand technologies. 01:57:51.360 |
And so the second scrolling trick was just a matter of like, 01:58:05.520 |
But I finally asked, "Well, what actually happens 01:58:09.600 |
If you take your start and you say, it's like, 01:58:14.440 |
I can move over. I can move down. I'm scrolling." 01:58:16.920 |
I get to what should be the bottom of the memory window. 01:58:19.760 |
It's like, "Well, what if I just keep going?" 01:58:33.280 |
And I'm like, "Oh, well, this makes everything easy. 01:58:37.600 |
and all you have to draw is just one new line of tiles, 01:58:48.160 |
That no longer had the problem of you had to have fields 01:58:54.280 |
You could be having a completely unique world, 01:58:56.840 |
and you're just drawing the new strip as it comes on. 01:59:08.000 |
they moved in series through this two-dimensional window 01:59:11.760 |
of graphics, and that was one of those, like, 01:59:26.440 |
there were what they called "super VGA cards," 01:59:29.680 |
the cards that would allow higher resolutions 01:59:31.920 |
and different features that the standard ones didn't. 01:59:51.480 |
And on some of those cards, I scroll my window down, 02:00:04.280 |
"Do I have to track every single one of these?" 02:00:17.560 |
all of the VGA cards there to map in that memory 02:00:24.320 |
or I kind of punted and took the easy solution of, 02:00:27.520 |
when you finally did run to the edge of the screen, 02:00:33.320 |
So on some of those cards, it was a compatibility mode. 02:00:43.440 |
where it did not wrap the way I wanted it to, 02:00:48.840 |
and then eventually you'd have a little hitch 02:00:59.640 |
or is it one of the weird ones, the super VGA ones? 02:01:05.880 |
that changed over the kind of course of deployment, 02:01:11.040 |
and then you would enable the compatibility flag 02:01:18.640 |
And then later, I think it probably got enabled by default 02:01:27.480 |
of doing unconventional things with technology, 02:01:30.280 |
where you can find something that nobody thought about 02:01:37.880 |
that was the primary reason when I was relying on that, 02:01:40.800 |
then I wound up being broken on some of the later cards. 02:01:56.640 |
the business and the people that build systems, 02:02:08.400 |
and you've embodied at least the part of that ethic. 02:02:17.840 |
was a really formative book for me as a teenager. 02:02:30.920 |
it kind of went through the early MIT hackers 02:02:50.960 |
in that third section of that book with the game hackers. 02:02:53.560 |
And they were talking about the Williams at Sierra 02:03:02.520 |
And I knew that was now a few years in the past. 02:03:08.680 |
But the early days, especially the early MIT hacker days, 02:03:12.440 |
talking a lot about this sense of the hacker ethic, 02:03:24.680 |
that you can share something with another programmer 02:03:30.040 |
You know, you then have somebody else doing something. 02:03:33.080 |
And I also think that there's an aspect of it 02:03:48.160 |
but being able to see somebody else do something 02:03:51.520 |
and say, holy shit, that's amazing, you know, 02:03:53.560 |
and just taking joy in the ability of something amazing 02:03:58.760 |
And the big thing that I was able to do through id Software 02:04:03.960 |
was this ability to eventually release the source code 02:04:07.080 |
for most of our, like, all of our really seminal game titles. 02:04:10.720 |
And that was a, it was a stepping stone process 02:04:16.440 |
where people were able to hack the existing games. 02:04:32.920 |
when I started to see people doing that to our games. 02:04:35.560 |
I am, you know, making level editors for Commander Keen 02:04:44.880 |
that we should actually release our own tools 02:04:47.480 |
for like what we did, what we used to create the games. 02:04:51.360 |
And that was, you know, that was a little bit debatable about, 02:05:00.880 |
But the really hard pitch was to actually release 02:05:06.760 |
And it was a balancing act with the other people 02:05:17.000 |
certainly the people that I worked closely with, 02:05:25.720 |
You wanted other people to take it and do cool things with it. 02:05:40.080 |
where it was always a little interesting to me 02:05:42.440 |
seeing how a lot of people in the game modding community 02:05:52.520 |
And that was much more like what we tended to see with artists 02:05:56.120 |
where, you know, the artists understand something 02:06:12.920 |
than the more tool-based and exploration-based 02:06:19.000 |
- Yeah, it's so interesting that this kind of fear 02:06:23.720 |
that credit will not be sufficiently attributed to you. 02:06:27.840 |
- And that's one of the things that I do bump into a lot 02:06:47.080 |
you can point to some of like things on obscure titles 02:06:55.200 |
had something that was 3D-ish and moving around. 02:06:58.280 |
And I'm, you know, and I'm happy to say it's like, 02:07:00.720 |
no, I mean, I saw Battlezone and Star Wars in the arcades. 02:07:06.760 |
I'm standing on the shoulders of lots of other people, 02:07:12.480 |
I mean, I had never heard of that before then. 02:07:19.480 |
And, you know, I think there's good cases to be made 02:07:23.280 |
that obviously Doom and Quake and Wolfenstein 02:07:31.760 |
But I don't feel the need to go fight and say, 02:07:34.720 |
claim primacy or initial invention of anything like that. 02:07:40.480 |
- I think when you fight for the credit in that way, 02:07:45.320 |
you destroy something fundamental about the culture, 02:07:58.400 |
there's a famous wrestler in freestyle wrestling 02:08:04.000 |
And he always preached that you should just focus 02:08:09.520 |
and let people write your story however they want. 02:08:14.520 |
The highest form of the art is just focusing on the art. 02:08:48.400 |
And it turned out that I wasn't the first person 02:08:51.880 |
Most scientific things or mathematical things, 02:08:55.200 |
oh, this other person had actually done that somewhat before. 02:08:58.600 |
And then there's things that get attributed to me, 02:09:04.760 |
And it's weird how the mimetic power of the internet, 02:09:14.040 |
even though you've never sought the credit of things. 02:09:17.200 |
I mean, but part of the fact of the humility behind that 02:09:29.480 |
I know you could talk about doing Quake and so on, 02:09:40.840 |
in terms of the programming, in terms of the design, 02:09:44.200 |
in terms of some of the memorable technical challenges? 02:09:47.160 |
And also actually just something you haven't mentioned, 02:09:51.120 |
how did these ideas come to be inside your mind, 02:10:06.920 |
pretty detailed accounts of how technology solutions 02:10:30.120 |
and some more functionality like the disappearing walls 02:10:40.360 |
is those games, Catacombs 3D, Hover Tank, and Wolfenstein, 02:10:50.280 |
that a 2D game that I had made earlier called Catacombs did, 02:10:54.160 |
where it was an overhead view game, kind of like Gauntlet. 02:10:56.760 |
You're running around and you can open up doors, 02:11:01.320 |
And the thought was that this exact same game experience 02:11:13.520 |
would have a dramatically different impact on the players. 02:11:20.320 |
you're saying that you could kind of fake it, 02:11:29.800 |
like all of our games use the same tool for creation. 02:11:33.080 |
We use the same map editor for creating Keen as Wolfenstein 02:11:36.360 |
and Hover Tank and Catacombs and all this stuff. 02:11:39.120 |
So the game was a 2D grid made out of blocks. 02:11:53.280 |
and that was kind of using an adaptive tile refresh 02:11:55.360 |
at the time to be able to do something like that. 02:12:01.640 |
all it did was take the same basic enemy logic, 02:12:04.640 |
but instead of seeing it from the God's eye view on top, 02:12:07.720 |
you were inside it and turning from side to side, 02:12:10.520 |
yawing your view and moving forwards and backwards 02:12:14.560 |
And it's a striking thing where you always talk about 02:12:17.200 |
wanting to isolate and factor changes in values. 02:12:20.120 |
And this was one of those most pure cases there 02:12:22.400 |
where the rest of the game changed very little. 02:12:25.080 |
It was our normal kind of change the colors on something 02:12:30.920 |
But the perspective changed in a really fundamental way, 02:12:36.360 |
I can remember the reactions where the artist, Adrian, 02:12:42.120 |
we had a cool big troll thing in Catacombs 3D, 02:12:45.080 |
and we had these walls that you could get a key 02:12:52.960 |
So our idea of a door was being able to make a set of blocks 02:12:58.840 |
he had drawn these characters, and he was slowly 02:13:01.760 |
And people had no experience with 3D navigation. 02:13:05.560 |
We didn't even have mice set up at that time. 02:13:08.480 |
But slowly moving, going up, picked up a key, go to a wall. 02:13:24.360 |
You were a little invested in your little guy. 02:13:29.760 |
but you just did not get that kind of startle reaction. 02:13:35.560 |
some reptile brain thing is just going, oh shit, 02:13:40.000 |
And that was one of those early points where it's like, yeah, 02:13:44.920 |
This is going to be powerful, and it's going to matter. 02:13:47.440 |
Were you able to imagine that in the idea stage or no? 02:13:53.840 |
So we had cases like the arcade games Battlezone and Star Wars 02:13:58.000 |
that you could kind of see a 3D world and things coming at you, 02:14:05.560 |
that we were doing and the sort of action-based things. 02:14:16.280 |
might have trended differently if not for the id software 02:14:19.840 |
approach in the games, where there were flight simulators, 02:14:25.040 |
had like hard drive-in and Microsoft Flight Simulator. 02:14:28.520 |
And these were doing 3D and general purpose 3D 02:14:39.520 |
be fast or responsive or letting you do kind of exciting 02:14:44.000 |
maneuvers, because they were trying to simulate reality, 02:14:46.800 |
and they were taking their cues from the big systems, 02:14:49.240 |
the Evans and Sutherlands and the Silicon Graphics 02:14:52.840 |
But we were taking our cues from the console and arcade games. 02:14:56.560 |
We wanted things that were sort of quarter eaters, that 02:14:59.600 |
were doing fast-paced things, that could smack you around 02:15:02.760 |
rather than just smoothly gliding you from place to place. 02:15:08.840 |
And you know, a funny thing is, so much that that built into us 02:15:14.720 |
And you had like one of the biggest power-ups 02:15:20.520 |
and you lose your lives, and then it's game over. 02:15:23.040 |
And there weren't save games in most of this stuff. 02:15:28.720 |
but it was an innovation in Doom to not have lives. 02:15:31.680 |
You know, you could just play Doom as long as you wanted. 02:15:36.720 |
This is-- we aren't trying to take people's quarters. 02:15:43.320 |
And you would have some old-timer purist that 02:15:50.000 |
having to restart all the way from the beginning 02:15:55.560 |
let people kind of keep trying when they're stuck, 02:16:01.920 |
So you've recommended the book, Game Engine Black Book, 02:16:04.560 |
Wolfenstein 3D for technical exploration of the game. 02:16:13.240 |
that made this perspective shift into this world that's 02:16:17.080 |
so immersive that scares you when a monster appears? 02:16:24.160 |
that come back to the theme of deadlines and resource 02:16:31.120 |
we shipped-- we were supposed to be shipping this 02:16:54.560 |
And you could see some things freak out or vanish or not 02:17:13.080 |
were kind of flaky and janky and not what I was really proud of. 02:17:17.440 |
So one of the things that I did very differently in Wolfenstein 02:17:27.200 |
where you had segments that were one-dimensional polygons, 02:17:30.240 |
basically, that were clipped and back-faced and done 02:17:33.880 |
kind of like a very crude 3D engine from the professionals. 02:17:41.520 |
I didn't really have line of sight to fix it right. 02:17:46.960 |
It's like, oh, it's obvious how to do this, do the math right, 02:17:53.240 |
But I did not know how to do that at that time. 02:17:56.200 |
Was that the first 3D engine you wrote, Catacombs 3D? 02:17:58.800 |
Yeah, Hover Tank had been a little bit before that. 02:18:04.580 |
was what was bringing in some of these challenges that 02:18:11.160 |
Can you describe what flat shading is and texture mapping? 02:18:13.600 |
So the walls were solid color, one of 16 colors in Hover Tank. 02:18:20.840 |
You just draw the solid color for everything. 02:18:25.600 |
where you have an image that is stretched and distorted 02:18:28.160 |
onto the walls or the surfaces that you're working with. 02:18:32.200 |
And it was a long time for me to just figure out 02:18:35.320 |
how to do that without it distorting in the wrong ways. 02:18:38.640 |
And I did not get it all exactly right in Catacombs. 02:18:46.760 |
that rather than continuing to bang my head on that, 02:18:49.360 |
when I wasn't positive I was going to get it, 02:18:51.800 |
I went with a completely different approach for drawing, 02:18:56.440 |
which was a ray casting approach, which I had done-- 02:19:05.840 |
In Wolfenstein, I wound up going to a very small amount 02:19:11.200 |
So in some ways, this should be a slower way of doing it. 02:19:16.560 |
that I could more tightly optimize, it worked out. 02:19:19.320 |
And Wolfenstein 3D was just absolutely rock solid. 02:19:25.520 |
The game just was pretty much flawless through all of that. 02:19:35.680 |
where I could get more total efficiency once I really 02:19:40.200 |
So there were two key technical things to Wolfenstein. 02:19:43.560 |
One was this ray casting approach, which you still-- 02:19:50.520 |
because it's an understandable way of doing things that 02:19:57.680 |
ray casters in Python, people that are basically 02:20:00.360 |
going and re-implementing that approach to taking a tiled 02:20:06.560 |
It works pretty well, but it's not the fastest way of doing it. 02:20:11.440 |
So you start off, and you've got your screen, 02:20:15.840 |
if you haven't sized down the window for greater speed. 02:20:21.600 |
to be an angle from-- you've got your position in the world, 02:20:24.600 |
and you're going to just run along that angle 02:20:32.200 |
going to throw a cast array out into the world 02:20:35.560 |
from wherever your origin is until it runs into a wall, 02:20:38.680 |
and then it can figure out exactly where on the wall 02:20:42.200 |
The performance challenge of that is, as it's going out, 02:20:45.440 |
every block it's crossing, it checks, is this a solid wall? 02:20:49.280 |
So that means that in the early Wolfenstein levels, 02:20:52.480 |
you're in a small jail cell going out into a small hallway. 02:20:55.760 |
It's super efficient for that, because you're only 02:21:00.200 |
But then if somebody makes a room that covers-- 02:21:05.560 |
If you made one room that was nothing but walls 02:21:11.040 |
because it would be stepping across 80 tile tests 02:21:19.220 |
So this maps nicely to the actual physics of our world. 02:21:25.640 |
like Stephen Wolfram's work on interconnected network 02:21:30.600 |
And it's beyond what I can have an informed opinion on. 02:21:35.000 |
But it's interesting that people are considering things 02:21:38.000 |
like that and have things that can back it up. 02:21:51.720 |
what I called compiled scalers, where the idea of-- 02:21:57.240 |
you saw this in the earlier classic arcade games 02:22:05.400 |
And then if you have the ability to make it bigger or smaller, 02:22:08.240 |
big chunky pixels or fizzily small drop-sampled pixels, 02:22:12.200 |
that's the fundamental aspect of what our characters were 02:22:19.380 |
but now we can make them really big and make them really small 02:22:23.240 |
That was the limited kind of 3D that we had for characters. 02:22:29.600 |
You didn't actually have a 3D model that would rotate. 02:22:33.800 |
But that was good enough for that startle fight reaction, 02:22:36.800 |
and it was kind of what we had to deal with there. 02:22:42.320 |
you could just write out your doubly nested loop of-- 02:22:55.140 |
going to be fast enough, where especially you 02:22:57.280 |
get a character for that right in your face, monster 02:23:02.200 |
Doing that with a general purpose scaling routine 02:23:06.520 |
It would have worked when they're small characters, 02:23:08.320 |
but then it would get slower and slower as they got closer 02:23:17.320 |
So the fastest possible way to draw pixels at that time 02:23:22.440 |
was to, instead of saying I've got a general purpose 02:23:43.100 |
I'll draw it 14 pixels tall, up by every two pixels even 02:23:50.300 |
so that in the normal case where most of the world 02:24:05.280 |
So that was faster than even copying an image 02:24:09.040 |
in a normal conventional case because most of the time 02:24:13.240 |
So instead of doing one read, one write for a simple copy, 02:24:16.600 |
you might be doing one read and three or four writes 02:24:22.340 |
of just when you needed the performance most when things 02:24:32.540 |
through thinking about it, or were you testing 02:24:36.660 |
This again comes back to I can find the antecedents 02:24:49.580 |
And if you wanted to make your little spaceship, 02:24:51.780 |
if you wanted to make it smoothly go across the world, 02:24:54.820 |
if you just took the image and you drew it out 02:24:56.740 |
at the next location, you would move by seven pixels at a time. 02:25:03.300 |
you actually had to make seven versions of the ship 02:25:07.380 |
You could write a program that would shift it dynamically, 02:25:09.940 |
but on a 1 megahertz processor, that's not going anywhere fast. 02:25:21.740 |
you could pull that if it still wasn't fast enough, 02:25:24.420 |
you could make a compiled shape where instead of this program 02:25:31.540 |
like, get this byte from here, store it here, get this byte, 02:25:34.300 |
store this byte, if you've got a memory space, 02:25:37.500 |
you could say, I'm going to write the program that does 02:25:43.900 |
the immediate value 25, which is some bit pattern, 02:25:47.980 |
and then I'm going to store that at this location. 02:25:53.260 |
that involved indexing registers and this other slow stuff, 02:25:58.080 |
going to hard code the exact values of all of the image 02:26:02.140 |
And this was always a horrible trade-off there, 02:26:06.980 |
But if you had something that you wanted to go really fast, 02:26:11.780 |
And that was, you know, knowing about that technique 02:26:16.780 |
unwinding it for the PC, where people that didn't come 02:26:19.740 |
from that background were less likely to think about that. 02:26:27.500 |
There's something about optimizing and compressing 02:26:32.500 |
the processing of a new information that requires you 02:26:37.620 |
to predict the possible ways in which the game 02:26:44.460 |
And you have something like compiled scalars always there. 02:26:47.460 |
So you have like optima, like you have a prediction 02:26:51.380 |
of how the world will unroll and you have some kind 02:26:53.780 |
of optimized data structure for that prediction. 02:26:58.180 |
And then you can modify if the world turns out to be 02:27:04.180 |
so much of the brain is about the associative context. 02:27:06.980 |
You know, they're just, when you learn something, 02:27:10.940 |
and you can have faint, tiny little hints of things. 02:27:13.980 |
And I do think there are some deep things, you know, 02:27:16.420 |
around like sparse distributed memories and boosting 02:27:18.820 |
that's like, if you can just be slightly above 02:27:20.700 |
the noise floor of having some hint of something, 02:27:23.460 |
you can have things refined into pulling the memory back up. 02:27:26.460 |
So being a programmer and having a toolbox of like 02:27:29.900 |
all of these things that I did in all of these previous 02:27:33.140 |
lives of programming tasks, that still matters to me 02:27:36.100 |
about how I'm able to pull up some of these things. 02:27:38.540 |
Like in that case, it was something I did on the Apple II 02:27:48.380 |
I did something like this back in the doom days, 02:27:55.860 |
and I can transform it into what the world needs right now. 02:27:59.140 |
And I do think that's actually one of the very core things 02:28:01.940 |
with human cognition and brain-like functioning 02:28:08.500 |
your brain is kind of everything everywhere all at once. 02:28:10.780 |
You know, it is just a set of all of this stuff 02:28:13.080 |
that is just fetched back by these queries that go into it. 02:28:16.420 |
And they can just be slightly above the noise floor 02:28:18.900 |
with a random noise in your neurons and synapses 02:28:21.260 |
that are affecting exactly what gets pulled up. 02:28:23.980 |
- So you're saying some of these very specific solutions 02:28:26.500 |
for different games, you find that there's a kernel 02:28:30.580 |
of a deep idea that's generalizable to other things. 02:28:34.740 |
- Yeah, you can't predict what it's going to be, 02:28:36.460 |
but that idea of like, I called out that compiled shaders 02:28:44.100 |
this is, it's kind of an end point of unrolling code, 02:28:48.020 |
but that's one of those things that thinking about that 02:28:53.120 |
that hear about that, think about it a little bit, 02:28:57.060 |
It's like, oh, you can just turn all of that data into code. 02:29:00.740 |
And nowadays, you know, you have instruction cache issues, 02:29:05.540 |
but there are different, it's an idea that has power 02:29:09.020 |
and has probably relevance in some other areas. 02:29:13.020 |
that there's a way you approach building hardware 02:29:16.800 |
you don't even have to think about iterating, 02:29:18.420 |
you just bake everything all the way into it in one place. 02:29:22.180 |
- What is the story of how you came to program Doom? 02:29:29.780 |
- So the path that we went after Wolfenstein got out, 02:29:33.660 |
and we were on this crazy arc where Keen 1 through 3, 02:29:42.860 |
So we were on this crazy trajectory for things. 02:29:50.660 |
but then Wolfenstein was going to have a game 02:29:54.020 |
which was a commercial version, 60 new levels. 02:29:59.460 |
pretty much as it was and started working on that. 02:30:03.940 |
but it's basically re-skins of the things there. 02:30:07.660 |
And there's a really interesting aspect about that 02:30:09.420 |
that I didn't appreciate until much, much later 02:30:12.300 |
about how Wolfenstein clearly did tap out its limit 02:30:18.900 |
all the levels and a couple of our licensed things. 02:30:27.940 |
But a game like Doom and other more modern games 02:30:40.020 |
You know, all the creative people in the world 02:30:44.060 |
just with the technology that Wolfenstein had. 02:30:48.220 |
but you really couldn't do something crazy and different. 02:30:53.420 |
to get to Wolfenstein with the freeform lines 02:30:58.620 |
to get to the point where people still announce 02:31:01.020 |
new Doom levels today, all these years after, 02:31:03.740 |
without having completely tapped out the creativity. 02:31:11.900 |
we have the kind of computational universality 02:31:14.860 |
on a lot of things and how different substrates work. 02:31:17.500 |
But yeah, there's things where a box can be too small, 02:31:24.900 |
you really have almost unbounded creative ability there. 02:31:28.420 |
- And Doom is the first time you crossed that line. 02:31:31.420 |
- Yeah, where there were thousands of Doom levels created 02:31:36.740 |
and interesting to say to the world about it. 02:31:38.580 |
- Is that line, can you introspect what that line was? 02:31:44.820 |
Is it something about the programming capabilities 02:31:50.940 |
- So the graphics fidelity was a necessary part 02:31:54.380 |
because the block limitations in Wolfenstein, 02:32:13.260 |
But the wall sized blocks that we had in Wolfenstein 02:32:18.580 |
You know, we licensed the technology to a few other teams. 02:32:21.620 |
None of them made too much of a dent with that. 02:32:28.500 |
whether it was the variable floors and ceilings 02:32:47.620 |
- Yeah, so jump around a little bit on the story path there. 02:32:51.140 |
So while the team was working on Spirit Destiny 02:32:54.220 |
we had met another development team, Raven Software, 02:32:59.980 |
and they were doing, they had RPG background, 02:33:10.740 |
instead of the, like most RPG games were kind of hand drawn. 02:33:19.820 |
And after Wolfenstein, this was still a tile-based world, 02:33:23.380 |
but I added floors and ceilings and some lighting 02:33:34.460 |
It was not fast enough to do our type of action things. 02:33:37.700 |
So they had the screen crop down a little bit. 02:33:58.500 |
I knew faster ways to do the lighting and shadowing. 02:34:12.300 |
and we were working with these higher powered systems. 02:34:20.260 |
And I was working hard to try to make something 02:34:27.980 |
And we were at a point where we could see some things 02:34:33.780 |
but it wasn't really fast enough for the way I was doing it, 02:34:38.820 |
It was no longer, I couldn't just ray cast into it. 02:34:52.500 |
And I did the port, I did two ports of our games, 02:35:10.020 |
And it had been this whole thing where we had farmed out 02:35:21.900 |
where it really did not have much processing power. 02:35:26.900 |
and it was pretty ugly when you looked at it. 02:35:29.060 |
But in the end, it did come out fast enough to play 02:35:33.500 |
But that was where I started using BSP trees, 02:35:38.380 |
It was one of those things I had to make it faster there. 02:35:41.580 |
It was a stepping stone where it was reasonably easy 02:35:44.540 |
to understand in the grid world of Wolfenstein, 02:35:49.180 |
BSP trees were, I eased myself into it with that. 02:36:15.420 |
where people had told me that I had mathematicians 02:36:18.980 |
where I was, people think I'm a math wizard, and I'm not. 02:36:22.780 |
I really, everything that I did was really done 02:36:31.140 |
and that was what got me all the way through Doom and Quake 02:36:34.940 |
and all of that, of just understanding basics of matrices 02:36:38.300 |
and knowing it well enough to do something with it. 02:36:42.940 |
- So I, when you wind up taking a, like a sloped line 02:36:50.940 |
then you wind up with something that's not going to be 02:36:57.140 |
all you've got is horizontal and vertical lines 02:37:00.260 |
And if you cut one of them, it's just obvious 02:37:02.220 |
the other one gets cut exactly at that point. 02:37:06.660 |
you're doing a kind of a slope intercept problem 02:37:11.260 |
where things that are not going to evenly land on an integer 02:37:14.860 |
or even on any fixed point value that you've got. 02:37:26.900 |
and it's not going to be completely straight. 02:37:28.940 |
And then you come down to all these questions of, 02:37:38.040 |
unless you're doing something with actual rational numbers. 02:37:44.200 |
How do you do precise arithmetic with rational numbers? 02:37:50.560 |
- So these kinds of things are impossible with computers. 02:37:54.080 |
- They're possible, again, there are paths to doing it, 02:37:59.280 |
in any of the numbers you need to start using big nums 02:38:01.800 |
and different factor trackings and different things. 02:38:04.600 |
- So you have to, if you have any elements of OCD 02:38:09.840 |
you're screwed if you're working with floating point. 02:38:13.120 |
- So you had to deal with this for the first time. 02:38:15.320 |
- And there were lots of challenges there about like, 02:38:20.080 |
And the way the BSP trees work is it basically 02:38:22.880 |
takes the walls and it carves other walls by those walls 02:38:30.440 |
And then you can for sure, from any given point, 02:38:36.780 |
goes in front of this, all the way back to the last thing. 02:38:48.180 |
and then the next thing, and then the next thing. 02:38:49.880 |
And then it comes up and it's all perfect for you. 02:38:52.740 |
That's slow because you don't want to have to have drawn 02:38:54.840 |
everything like that, but you can also flip it around 02:39:07.600 |
- Yeah, so it's combined with a bunch of other things, 02:39:13.800 |
And I remember I had learned this from one of my, 02:39:20.520 |
And again, it was a different world back there. 02:39:22.240 |
There was a small integer number of books and this book, 02:39:35.840 |
but they had the little thing about finite orderings 02:39:42.800 |
you can make a fixed ahead of time order from this, 02:39:45.260 |
and you can generalize this with the BSP trees. 02:39:48.240 |
And I got a little bit more information about that. 02:39:50.800 |
And it was kind of fun later while I was working on Quake, 02:40:12.840 |
and three-dimensionals when things angle in every way. 02:40:24.380 |
where they even got terminologies in the communities. 02:40:27.740 |
Like when you got to something where it was messed up, 02:40:30.920 |
because you'd sweep by and it wouldn't draw something there 02:40:33.720 |
and you would just wind up with the leftover remnants 02:40:41.480 |
But it's again worth noting that after we did Doom, 02:40:45.660 |
our major competition came from Ken Silverman 02:40:54.160 |
And he used a completely different technology, 02:40:59.240 |
So there's not just a one true way of doing things. 02:41:09.360 |
into you drew vertical lines and you drew horizontal lines, 02:41:12.480 |
just kind of changing exactly what you would draw with them. 02:41:15.800 |
That was critical for the technologies at that time. 02:41:19.380 |
And like all the games that were kind of like that 02:41:23.400 |
but there were still a bunch of other decisions 02:41:26.800 |
And we made good enough decisions on everything on Doom. 02:41:37.640 |
where we had this whole setup of our WAD files and PWADs 02:41:41.080 |
and things that people could build with tools 02:41:52.260 |
which is what you had to do in all the early games. 02:42:02.320 |
run the normal game with this added on on top, 02:42:09.080 |
- Would you say that Doom was kind of the first 02:42:15.200 |
Doom would usually be called a two and a half D game 02:42:20.280 |
And this is another one of these kind of pedantic things 02:42:25.700 |
I still, like every month probably I hear from somebody 02:42:29.300 |
about, well, was Doom really a 3D game or something? 02:42:32.260 |
And I give the point where characters had three coordinates. 02:42:50.320 |
but it was not a fully general 3D game engine. 02:43:02.280 |
I couldn't have vertexes and have a sloped floor there, 02:43:05.200 |
but the changes that I made for Doom to get higher speed 02:43:13.400 |
You could make different heights of passages, 02:43:17.900 |
but you could not make a bridge over another area. 02:43:38.420 |
You did not have the ability to tilt your head this way 02:43:47.520 |
What was some fascinating technical challenges 02:43:56.480 |
where I did have to kind of come face to face 02:44:08.440 |
in terms of what and when I wanted to get it done. 02:44:21.460 |
was it was going to be really a true 3D engine 02:44:31.500 |
It had a really remarkable new lighting model 02:44:42.820 |
And it was going to be completely programmable 02:44:48.240 |
where the thing that you couldn't do in Doom, 02:44:56.720 |
that were doing the hex editing of the executable, 02:45:01.940 |
and people made some early capture the flag type things 02:45:08.560 |
Quake was going to have its own programming language 02:45:11.380 |
that the game was going to be implemented in it. 02:45:18.420 |
And you would be able to have expansion packs 02:45:21.040 |
that changed fundamental things and mods and so on. 02:45:32.460 |
So we had the possibility of supporting larger numbers 02:45:37.500 |
with this full flexibility of the programming overrides 02:45:41.340 |
with full six degree of freedom, modeling and viewing. 02:45:50.660 |
And this was one of those things that if I could go back 02:45:53.740 |
and tell younger me to do something differently, 02:45:57.540 |
it would have been to split those innovations up 02:46:16.900 |
So I would have split that into programming language 02:46:24.020 |
the Quake engine, which really meant getting a Pentium. 02:46:42.860 |
it seems like the most important moment of his life 02:46:53.540 |
So would he agree with your thinking that they should split? 02:46:58.260 |
So he is a person who loves Quake and played Quake a lot. 02:47:03.340 |
Would he agree that you should have done the Doom engine 02:47:16.180 |
was also fundamental to the enriched experience? 02:47:19.540 |
- You know, I would say that what would have happened 02:47:29.980 |
and then maybe six months after Quake actually shipped, 02:47:33.140 |
then there would have been the full running on a Pentium 02:47:36.380 |
six degree of freedom graphics engine type things there. 02:47:38.700 |
So it's not that it wouldn't have been there. 02:47:42.060 |
It would have been something amazingly cool earlier 02:47:44.980 |
and then something even cooler somewhat later 02:47:57.460 |
rather than killing ourselves on the whole Quake development. 02:48:01.060 |
But I would say it's obviously things worked out well 02:48:06.420 |
how would I optimize and do things differently? 02:48:08.980 |
That did seem to be a clear case where going ahead 02:48:15.700 |
You know, we did Doom two as the kind of commercial 02:48:22.140 |
but we could have just made another Doom game 02:48:28.620 |
We would have learned all the same lessons, but faster. 02:48:31.460 |
And it would have given six degree of freedom 02:48:34.100 |
and Pentium class systems a little bit more time 02:48:37.020 |
to get mainstream because we did cut out a lot of people 02:48:42.900 |
- Was there any dark moments for you personally, 02:48:44.780 |
psychologically in having such harsh deadlines 02:48:49.780 |
and having this also mean difficult technical challenges? 02:48:54.700 |
- So I've never really had really dark black places. 02:49:09.620 |
with kind of their mental health and wellbeing. 02:49:15.020 |
I've been unhappy as a teenager in various ways, 02:49:18.780 |
but I've never really gone to a very dark place. 02:49:29.820 |
I mean, I've had plenty of time when I'm very unhappy 02:49:36.420 |
I believe it winds up hitting some other people. 02:49:51.260 |
I pull myself out of whatever hole I might be slipping into 02:49:59.460 |
where I was never able to make that progress, 02:50:12.260 |
eventually I break through and I make progress, 02:50:16.420 |
And that's been enough for me so far in my life. 02:50:30.500 |
- So it was interesting when I was a teenager, 02:50:47.620 |
I was doing exactly what I wanted and I was very happy, 02:50:53.020 |
And I had a conversation with like the school counselor 02:50:58.540 |
It's like, okay, it's kind of a weird kid here. 02:51:02.380 |
It's like, you know, do you ever think about ending it all? 02:51:08.980 |
This is temporary, things are going to be better. 02:51:11.380 |
And that's always been kind of the case for me. 02:51:15.580 |
And obviously that's not that way for everyone 02:51:20.180 |
- And what was your escape from the troubled youth? 02:51:35.460 |
that's full of cruelty and suffering and that's absurd? 02:51:41.820 |
It's like, I was an unhappy, somewhat petulant youth 02:51:46.420 |
I'm not putting myself up with anybody else's suffering, 02:51:57.940 |
I had books, comic books, Dungeons and Dragons, 02:52:06.380 |
are the convenience stores, the 7-Elevens and Quick Trips, 02:52:08.900 |
because they had a spinner rack of comic books 02:52:12.700 |
with two or three video games, arcade games in it. 02:52:20.820 |
and if I could go to a library and, you know, 02:52:28.980 |
but still just being able to sit down and go through that. 02:52:31.860 |
And I read, you know, I read a ridiculous number of books, 02:52:38.620 |
And, you know, as I, my rebelling in high school 02:52:42.820 |
was just sitting there with my nose in a book, 02:52:46.860 |
And teachers had a range of reactions to that, 02:52:57.900 |
What, everything together from the networking 02:53:02.900 |
to the graphics, what are some things you remember 02:53:07.220 |
that were innovations you had to come up with 02:53:12.420 |
- Yeah, so there were a bunch of things on Quake 02:53:17.940 |
my own programming language to implement the game in, 02:53:28.100 |
It just seems to be a thing that's pretty broadly done. 02:53:31.300 |
I'm gonna go write a computer programming language. 02:53:33.300 |
And I, you know, I don't regret having done it, 02:53:47.980 |
and then Quake 3, I implemented my own C interpreter 02:53:50.740 |
or compiler, which was a much smarter thing to do 02:53:53.260 |
that I should have done originally for Quake. 02:53:55.860 |
But building my own language was an experience. 02:53:59.780 |
And then there was a generation of game programmers 02:54:04.380 |
which I feel kind of bad about because, you know, 02:54:08.740 |
but Quake C was nothing to write home about there. 02:54:16.860 |
not because you love the BNF syntax of a language, 02:54:21.340 |
it's because the language lets you do something 02:54:24.500 |
- And here's very much, you could do something 02:54:27.020 |
in a whole beautiful three-dimensional world. 02:54:29.580 |
- Yeah, and the idea and the fact that the code 02:54:33.180 |
I like the shotgun, but I want it to be more badass. 02:54:39.260 |
And then you go around with a big grin on your face, 02:54:54.100 |
because it's interesting where I learn these things 02:54:57.700 |
So I would get a book on networking, find something, 02:55:00.140 |
I read all about it and learn, okay, packets, 02:55:02.740 |
they can be out of order, lost, or duplicated. 02:55:09.340 |
So I wind up spending all this time thinking about 02:55:13.020 |
And it turns out, of course, in the real world, 02:55:15.140 |
those are things that yes, theoretically can happen 02:55:17.140 |
with multiple routes, but they really aren't things 02:55:19.740 |
that your 99.999% of your packets have to deal with. 02:55:24.100 |
So there was learning experiences about lots of that, 02:55:34.220 |
you wind up reinventing TCP badly in almost all cases. 02:55:51.940 |
It was this graphics technology that nobody had seen there. 02:55:59.580 |
And it went a long time internally, really not working, 02:56:18.380 |
It's like, I think I'm gonna be able to fix this. 02:56:25.740 |
where the level designers would build something 02:56:27.980 |
and then have to throw it away as something fundamental 02:56:30.060 |
and the kind of graphics or level technology changed. 02:56:37.220 |
that contributed to making it possible at that timeframe. 02:56:57.380 |
some of my most treasured ones were Michael Abrash's articles 02:57:02.420 |
And it was amazing after all of our success in Doom, 02:57:08.100 |
"Hey, we'd like you to come work at id Software." 02:57:10.580 |
And he was in this senior technical role at Microsoft 02:57:15.940 |
and this was right when Microsoft was starting to take off. 02:57:24.580 |
It was going to be something nobody had seen before. 02:57:28.300 |
It had these aspects of what we were talking about. 02:57:33.660 |
We had read "Snow Crash" and we knew about this. 02:57:54.460 |
- So you really were creating the metaverse with Quake. 02:57:58.780 |
- Philosophically. - It used to be advertised 02:58:16.820 |
that people didn't wanna look at virtual reality 02:58:28.620 |
But still we had that kind of common set of talking points 02:58:32.220 |
and we were talking about what these games could become 02:58:42.660 |
where people were doing amazingly cool things. 02:58:49.740 |
and then people finding ways to change the characters 02:59:03.940 |
and then the core thing about the programming model. 02:59:07.420 |
And I was definitely going to hit all of those in Quake. 02:59:22.020 |
to kind of kick everything that I set out to go do. 02:59:29.300 |
than could be comfortably chewed at that point. 02:59:32.060 |
And, but Michael was one of the strongest programmers 02:59:46.620 |
about things like this, where I'm a world-class optimizer. 03:00:06.940 |
but the most leverage comes from making the decisions 03:00:15.100 |
so that these lower level problems are easier to do 03:00:17.940 |
or it makes it possible to do them in a uniquely fast way. 03:00:23.260 |
So most of my, you know, my big wins in a lot of ways 03:00:27.020 |
from all the way from the early games through, 03:00:29.340 |
you know, through VR and the aerospace work that I'm doing 03:00:34.220 |
that I'm working on now is finding an angle on something 03:01:05.340 |
you know, trying to see through everything that happens. 03:01:08.140 |
And it's almost impossible on like the web browser level 03:01:11.380 |
of things where there's so many levels to it, 03:01:13.500 |
but you should at least understand what they all are, 03:01:17.020 |
all the performance characteristics at each level, 03:01:20.060 |
but it goes all the way down to literally the hardware. 03:01:23.020 |
So what does the, what is this chip capable of? 03:01:26.580 |
And what is this software that you're writing capable of? 03:01:29.420 |
And then when this architecture you put on top of that, 03:01:38.540 |
and they're never made in a globally optimal way, 03:01:45.140 |
You can't look at everything, it's too complicated, 03:01:51.580 |
And we kind of went through this on the graphics side 03:01:53.500 |
on Quake where I, in some ways it was kind of bad 03:01:59.140 |
like I'd rough out the basic routines, like, okay, 03:02:03.980 |
And he would spend a month writing this, you know, 03:02:06.740 |
beautiful cycle optimized piece of assembly language 03:02:10.580 |
that does, you know, does what I asked it to do. 03:02:13.340 |
And he did it faster than like my original code would do, 03:02:20.500 |
But then we'd have some cases when I'd be like, 03:02:22.740 |
okay, well, I figured out at this higher level, 03:02:25.500 |
instead of drawing these in a painter's order here, 03:02:34.060 |
but it means you need to rewrite kind of this interface 03:02:37.460 |
And I could tell that wore on him a little bit, 03:02:41.980 |
where we wound up changing that rasterization approach 03:02:51.700 |
which minimized how much that had to be called. 03:02:54.420 |
- And so in order to be able to do this kind of 03:02:58.220 |
whether we're talking about game development, aerospace, 03:03:08.020 |
you have to be able to understand the hardware, 03:03:10.700 |
the low level software, the high level software, 03:03:18.180 |
- Yeah, and that's where a lot of these things 03:03:20.500 |
become possible when you're bringing the future forward. 03:03:25.180 |
just kind of glides towards where we have a lot of progress 03:03:29.340 |
so many different ways you kind of slide towards progress, 03:03:32.300 |
just left to your own programs just get faster. 03:03:34.900 |
For a while it wasn't clear if they were gonna get fatter 03:03:37.740 |
more than they get quicker than they get faster 03:03:39.660 |
and it cancels out, but it is clear now in retrospect, 03:03:42.420 |
programs just get faster and have gotten faster 03:03:46.620 |
But if you wanna do something like back at that original, 03:03:57.700 |
it'll naturally get that much faster at that time, 03:04:00.820 |
or you come up with some really clever way of doing it. 03:04:08.100 |
Now, most programmers don't need to be thinking about that. 03:04:15.100 |
but it's not everyone's work a day type stuff. 03:04:17.220 |
So everyone doesn't have to know how all these things work. 03:04:20.340 |
They don't have to know how their compiler works, 03:04:22.860 |
how the processor chip manages cache eviction 03:04:28.140 |
But sometimes there are powerful opportunities 03:05:01.100 |
we are going to amaze them with what they've got here, 03:05:20.180 |
that technology should be sitting at that table, 03:05:26.660 |
well, you want to be the Jonathan Ivey or whatever, 03:05:35.180 |
where you truly have almost infinite resources, 03:05:37.700 |
like if you're trying to do a scrolling game on the PC now, 03:05:41.460 |
you don't even have to talk to a technology person, 03:05:45.420 |
any intern can make that go run as fast as it needs to there, 03:05:50.660 |
But if you're trying to do something that's hard, 03:06:25.180 |
and nobody knows what the right ones are yet. 03:06:27.260 |
So people are taking different angles of attack, 03:06:35.420 |
and I think perhaps it is a principle of progress 03:06:47.700 |
and I think that's going to be the way we achieve AGI, 03:06:50.300 |
that's going to be the way we build consciousness 03:06:59.860 |
is essentially about faking it till you make it. 03:07:11.220 |
when as soon as people start talking about qualia 03:07:13.900 |
and consciousness and Chinese rooms and things, 03:07:17.580 |
I just don't think there's any value in those conversations. 03:07:20.180 |
It's just like, go ahead, tell me it's not going to work, 03:07:22.460 |
I'm going to do my best to try to make it work anyways. 03:07:25.340 |
- I don't know if you work with legged robots, 03:07:41.220 |
it's like the flame, the beginnings of a flame. 03:07:47.460 |
but there's glimmerings of light in the distance 03:07:51.020 |
- Yeah, I'm hearing murmuring in a distant room. 03:07:59.860 |
you've done a lot of incredible work throughout, 03:08:01.900 |
but in terms of game design, you have changed the world 03:08:05.780 |
and there's a few people around you that did the same. 03:08:08.420 |
So famously, there's some animosity, there's much love, 03:08:13.020 |
but there's some animosity between you and John Romero. 03:08:16.340 |
What is at the core of that animosity and human tension? 03:08:19.940 |
- So there really hasn't been, for a long time, 03:08:29.500 |
And this is one of the things that I look back, 03:08:37.820 |
the original founding kind of corporate structure 03:08:41.900 |
of id Software really led to a bunch of problems. 03:08:50.420 |
because we didn't want outsiders to be telling us 03:08:59.580 |
it's like, all right, I'm working harder than anyone. 03:09:02.940 |
I'm doing these technologies, nobody's done before, 03:09:08.100 |
And then I see somebody that's not working as hard. 03:09:11.620 |
I mean, I can't say I was the most mature about that. 03:09:21.940 |
everybody, okay, we need to all pull together 03:09:29.420 |
but not everybody wanted to do that for all time. 03:09:33.500 |
And I was the youngest one of the crowd there. 03:09:35.740 |
I had different sets of kind of backgrounds and motivations 03:09:43.740 |
all right, either everybody has to be contributing 03:09:47.180 |
like up to this level or they need to get pushed out, 03:10:16.460 |
- So if you think the framework was different, 03:10:18.460 |
some of the human tension could have been a little bit. 03:10:24.220 |
and it's like even trying to summon up in my mind, 03:10:27.700 |
it's like, I know I was really, really angry about, 03:10:31.540 |
I am like Romero not working as hard as I wanted him to work 03:10:35.580 |
or not carrying his load on the design for Quake 03:10:44.900 |
He was working with some of our external teams 03:10:50.660 |
But there were differences of opinion about it. 03:10:59.660 |
to go do Ion Storm and he got to do things his way 03:11:05.700 |
Because that was always one of the challenging things 03:11:08.180 |
in it where we were doing these single string, 03:11:13.140 |
And I think some of them wanted to grow the company more. 03:11:16.380 |
And I didn't because I knew people that were saying that, 03:11:19.220 |
oh, companies turn to shit when you got 50 employees. 03:11:24.060 |
And I loved our little dozen people working on the projects. 03:11:33.540 |
and we could take a swing and a miss on something. 03:11:36.340 |
But you do it a couple of times and you're out of luck. 03:11:39.300 |
There's a reason companies try to have multiple teams running 03:11:55.740 |
What did you respect and appreciate about him? 03:12:00.940 |
When I met him, he was the coolest programmer 03:12:10.060 |
that I thought was the coolest at Origin Systems. 03:12:16.220 |
And he was also kind of a polymath about this, 03:12:24.260 |
he worked on sound design systems on top of actually 03:12:32.060 |
was kind of fun where one of the early things that we did, 03:12:34.620 |
where there was kind of the young buck bit going in, 03:12:36.980 |
where I was the new guy and he was the top man programmer 03:12:44.700 |
And eventually, we had sort of a challenge over the weekend 03:12:47.100 |
that we were going to race to implement this game, 03:12:49.660 |
to port one of our PC games back down to the Apple II. 03:12:52.740 |
And that was where we finally kind of became clear. 03:12:55.220 |
It's like, OK, Carmack stands a little bit apart 03:13:00.260 |
But Romero then very gracefully moved into, well, 03:13:04.460 |
He'll work on the systems, do some of the game design stuff, 03:13:10.060 |
to lead the design aspects of a lot of things. 03:13:12.980 |
So he was enormously valuable in the early stuff. 03:13:25.660 |
that I brought to the work that we were doing there. 03:13:31.660 |
we hit such a degree of success that it was all 03:13:34.940 |
in the press about that, the rock star game programmers. 03:13:42.140 |
And he did personify-- there was the whole game developers 03:13:48.980 |
And I thought that led to some challenges there. 03:13:53.460 |
But so much of the stuff that was great in the games 03:13:59.180 |
And I would certainly not take that away from him. 03:14:01.860 |
And even after we parted ways and he took his swing 03:14:05.500 |
with Eidos, in some ways, he was ahead of the curve 03:14:09.300 |
with mobile gaming as well, where one of his companies 03:14:12.700 |
after Eidos was working on feature phone game development. 03:14:16.740 |
And I wound up doing some of that just before the iPhone, 03:14:23.020 |
And that was something that clearly did turn out 03:14:25.620 |
to be a huge thing, although he was too early for what he 03:14:34.100 |
where I was happy to talk with him anytime I'd run into him 03:14:38.220 |
I have actually had some other people just say, 03:14:40.620 |
it's like, oh, you shouldn't go over there and give him 03:14:43.340 |
the time of day, or felt that Masters of Doom was-- 03:14:47.580 |
I played things up in a way that I shouldn't be too happy with. 03:15:01.060 |
about mentioning that I'm going off doing this AI stuff. 03:15:09.260 |
AI is going to play into gaming, and asked if I was 03:15:19.620 |
I mean, I know I may not have parted on the best of terms 03:15:22.620 |
with some people, but I was thrilled to see Tom 03:15:34.900 |
We all used to play Dungeons and Dragons together. 03:15:38.140 |
was what we did on Sundays in the early days. 03:15:44.900 |
Tom involved with an RPG game in virtual reality. 03:15:54.540 |
and maybe lessen your involvement a bit in 2019. 03:16:00.340 |
Oculus was acquired by Facebook now Meta in 2014. 03:16:04.860 |
You've spoken brilliantly about both the low-level details, 03:16:11.980 |
Let me ask you about the metaverse, the big question 03:16:22.700 |
You started with discussing and thinking about Quake 03:16:32.140 |
create this compelling user value, this experience that 03:16:38.980 |
- So the term comes from Neil Stevenson's book Snow Crash, 03:16:47.460 |
And there was this sense that the possibilities 03:16:53.060 |
and kind of the freedom and unlimited capabilities 03:16:56.060 |
to build a virtual world that does whatever you want, 03:16:59.580 |
whatever you ask of it, has been a powerful draw 03:17:02.220 |
for generations of developers, game developers specifically, 03:17:05.580 |
and people that are thinking about more general purpose 03:17:10.260 |
So we were talking about that back in the Doom and Quake 03:17:13.260 |
days, about how do you wind up with an interconnected 03:17:16.260 |
set of worlds that you kind of visit from one to another. 03:17:21.460 |
you start thinking about what is the interactive kind 03:17:29.780 |
You had like Vermont and virtual reality markup languages. 03:17:34.220 |
And there's aspects like that that came from people saying, 03:17:55.660 |
and whether it was server lists in the early days 03:17:58.740 |
or literal portaling between different games, 03:18:01.700 |
and then modern things that are on a completely 03:18:04.340 |
different order of magnitude, like Minecraft and Fortnite, 03:18:13.740 |
to go to build the metaverse, is you build something that's 03:18:19.020 |
spending all their time in, because it's awesome. 03:18:24.340 |
So even if it's a very basic experience, if it's awesome-- 03:18:28.460 |
Minecraft is an amazing case study in so many things, 03:18:36.940 |
And there are other cases where, like right now, 03:18:39.700 |
Roblox is basically a game construction kit aimed at kids. 03:18:45.060 |
And it's achieving scale that's on the same order 03:18:52.580 |
would be you make something amazing that people love, 03:18:56.940 |
And that's where I could say we could have gone back 03:18:59.620 |
and followed a path like that in the early days, 03:19:05.700 |
when Activision demonstrated that you could make Call 03:19:14.540 |
the idea that you could have taken something like that, 03:19:17.340 |
take a great game, release a new version every year 03:19:20.260 |
that lets the capabilities grow and expand to start saying, 03:19:23.820 |
it's like, OK, it's a game about running around and shooting 03:19:30.300 |
You can add persistence of social signs of life 03:19:37.780 |
I still think that's quite a good position to take. 03:19:41.900 |
And I think that while Meta is doing a bottoms-up capability 03:19:51.220 |
can build whatever they want in there sort of thing, 03:19:55.820 |
it's hard to compare and compete with something 03:19:58.020 |
like Fortnite, which also has enormous amounts of creativity, 03:20:11.940 |
to do entertainment, valuable destination first, 03:20:17.100 |
So can you imagine the thing that will be kind of-- 03:20:22.220 |
if we look back a couple of centuries from now 03:20:29.220 |
marked the singularity, the transition, where 03:20:34.100 |
most of our world moved into virtual reality, 03:20:37.660 |
what do you think those experiences will look like? 03:20:40.700 |
So I do think it's going to be kind of like the way 03:20:45.740 |
the frog in the pot of water that's slowly heating up, 03:20:53.700 |
seeing the first website address on a billboard, 03:21:03.140 |
But there's still-- when you look back and say, well, 03:21:08.300 |
And it wasn't a big bang sort of moment there. 03:21:14.100 |
turned out not to even be the things that are relevant now 03:21:20.420 |
I mean, like you said, you're not a historian. 03:21:23.180 |
So maybe there is a historian out there that could really 03:21:30.700 |
It could be like Myspace or something like that. 03:21:33.620 |
Maybe the first major social network that really reached 03:21:42.180 |
I think that's kind of the fallacy of historians, though, 03:21:45.100 |
looking for some of those kind of primary dominant causes, 03:21:53.020 |
But it's not because one thing is going exponential. 03:21:55.900 |
It's because we have hundreds of little sigmoid curves 03:22:02.460 |
so that you've got something kind of going exponential 03:22:06.420 |
But no single one of them was the critical thing. 03:22:13.380 |
like as, obviously, Myspace giving way to other things, 03:22:16.540 |
but even like blogging giving way to social media 03:22:20.140 |
and getting resurrected in other guises and-- 03:22:29.100 |
Whatever those early memes that led to the modern memes 03:22:32.260 |
and the humor on the different-- the different evolution 03:22:37.460 |
sure the historians will also write books about 03:22:42.540 |
that create the infrastructure for that humor, 03:22:50.260 |
But it's probably going to be a poor approximation of what 03:22:54.940 |
And we've already seen, like, in the VR space 03:22:57.460 |
where it didn't play out the way we thought it would in terms 03:23:01.340 |
of what was going to be-- like, when the modern era of VR 03:23:15.460 |
They have-- you know, they have the most comfort problems 03:23:18.380 |
And then the most popular virtual reality app 03:23:21.140 |
is Beat Saber, which nobody predicted back then. 03:23:24.780 |
What's that make you, like, from first principles 03:23:40.380 |
and look at the engineering reasons, where it's not just 03:23:45.380 |
It was something that played almost perfectly 03:23:47.780 |
to what turned out to be the real strengths of VR, 03:23:50.420 |
where the one thing that I really underestimated 03:23:52.900 |
importance in VR was the importance of the controllers. 03:23:55.740 |
You know, I was still thinking we could do a lot more 03:23:59.300 |
And just the amazingness of taking any existing game, 03:24:01.900 |
being able to move your head around and look around, 03:24:14.720 |
like trying to pick up glasses with the controllers, 03:24:16.900 |
where you're like, oh, use the grip button when you're 03:24:19.140 |
kind of close, and it'll snap into your hand. 03:24:24.540 |
that you do them, and it's still part of the VR experience. 03:24:27.660 |
But Beat Saber winds up playing only to the strengths. 03:24:32.460 |
It completely hides all the weaknesses of it, 03:24:34.620 |
because you are holding something in your hand. 03:24:39.380 |
It slices through things without ever bumping into things. 03:24:42.340 |
You never get into the point where, you know, 03:24:55.780 |
It's just you expect it to slice through everything. 03:24:59.020 |
Audio and music turned out to be a really powerful aspect 03:25:02.420 |
of virtual reality, where you're blocking the world off 03:25:07.580 |
and being something that can run efficiently on even 03:25:13.700 |
and can have a valuable loop in a small amount of time, 03:25:19.700 |
supposed to sit down and play it for an hour, 03:25:25.500 |
and that's not good for VR for a couple reasons. 03:25:29.700 |
if you're moving around at all, but you've also 03:25:32.100 |
got just discomfort from the headset, battery lifespan 03:25:42.060 |
that turns out to be very valuable from a gameplay 03:25:45.780 |
So it winds up being kind of a perfect storm of all 03:26:01.540 |
nobody was thinking about that back at the beginning. 03:26:04.460 |
And it turns out that that is an excellent daily fitness 03:26:09.060 |
If you go play an hour of Beat Saber or Supernatural 03:26:16.380 |
and it's more fun than doing it just about any other way there. 03:26:19.900 |
- So that's kind of the arcade stage of things. 03:26:23.460 |
If I were to say, with my experience with VR, 03:26:32.540 |
but the degree to which it is immersive in the way 03:26:40.220 |
For me, because I'm a fan of role-playing games, 03:26:44.260 |
the Elder Scrolls series, like Skyrim or even Daggerfall, 03:27:04.260 |
is that there was a time when we were kind of asked 03:27:09.300 |
to come up with, like, what's your view about VR? 03:27:12.020 |
And my pitch was that it should be better inside the headset 03:27:25.540 |
And I don't get that mindset where the idea that if you can 03:27:30.540 |
make the world better inside the headset than outside, 03:27:38.420 |
And there are plenty of things that we just can't do 03:27:42.380 |
Everybody can't have Richard Branson's private island. 03:27:47.180 |
And it can have the things that they want on it. 03:27:49.260 |
And there's a lot of these kind of rivalrous goods 03:27:51.660 |
in the real world that VR can just be better at. 03:27:55.620 |
We can do a lot of things like that that can be very, very 03:27:59.660 |
So yeah, I think it's going to be a positive thing, this world, 03:28:02.860 |
where people want to go back into their headset, 03:28:07.700 |
living in a tiny apartment can have a palatial estate 03:28:11.980 |
They can have all their friends from all over the world 03:28:14.300 |
come over and visit them without everybody getting on a plane 03:28:26.580 |
It's all the little things that we need to sort out. 03:28:30.100 |
But those are things that we have line of sight on. 03:28:32.860 |
People that have been in a good VR meeting using workrooms, 03:28:37.180 |
where you can say, oh, that was better than a Zoom meeting. 03:28:40.380 |
But of course, it's more of a hassle to get into it. 03:28:46.260 |
You can't have-- you cap out at a certain number. 03:28:48.660 |
There's all these things that need to be fixed. 03:28:50.620 |
But that's one of those things you can look at and say, 03:28:56.300 |
file off all the rough edges, and make that possible. 03:29:14.220 |
And if somebody were to ask me why it's not the same, 03:29:16.940 |
I wouldn't be able to write down exactly why. 03:29:23.420 |
whatever the magic is for in-person interaction, 03:29:33.940 |
So the idea of, like, I'm doing a VR interview with someone. 03:29:39.620 |
But you can see glimmers of what it should be. 03:29:48.060 |
there's a difference between a remote interview doing 03:29:50.820 |
a podcast over Zoom or something and face-to-face. 03:29:53.940 |
There's that sense of presence, that immediacy, 03:29:59.060 |
being able to see all the subtle things there, 03:30:03.820 |
And all of those are things that we absolutely can do in VR. 03:30:07.780 |
And that simple case of a small meeting with a couple people, 03:30:13.540 |
thinks, the Ready Player One multiverse with 1,000 people 03:30:16.300 |
going across a huge bridge to amazing places. 03:30:20.020 |
That's harder in a lot of other technical ways. 03:30:24.060 |
But that's further away and has more challenges. 03:30:26.500 |
But this small thing about being able to have 03:30:28.860 |
a meeting with one or a few people and have it feel real, 03:30:33.780 |
feel like you're there, like you have the same interactions 03:30:41.300 |
and some of the other things on high-end headsets. 03:30:51.060 |
where there was a lot of people that, especially rich people, 03:30:59.780 |
And I'd say, it's like, well, you've already been courtside, 03:31:10.700 |
And even if the experience is only half as good, 03:31:12.980 |
if it's something that they never would have gotten 03:31:17.740 |
And as we can just-- we can push that number up over time. 03:31:24.140 |
when it does something that is valuable enough to people. 03:31:27.260 |
As long as it's better inside the headset on any metric 03:31:30.020 |
than it is outside and people choose to go there, 03:31:33.980 |
And we have a value gradient that I'm just always hammering 03:31:41.060 |
rather than going for that one, close your eyes, 03:31:44.620 |
swing for the fences, kind of silver bullet approach. 03:31:50.540 |
for in-person meetings, because if you get that right, 03:32:32.780 |
where I, like the next headset that's coming out 03:32:44.620 |
I, you know, we'll see what the market has to say 03:32:51.460 |
you need to have something that everybody has. 03:32:56.460 |
- I like cheaper because also lighter and cheaper 03:33:13.780 |
and draw from batteries and all of those things. 03:33:21.340 |
That's why I was always behind the mobile side of VR 03:33:26.700 |
And I think that's, you know, that's proven out well. 03:33:35.380 |
it's important that those two things cover the, 03:33:38.220 |
you know, the scope that you think is most important. 03:33:40.580 |
When we're in a world when it's like cell phones 03:33:44.020 |
covering every conceivable ecological niche you want, 03:34:10.140 |
So you've got a better sense of immediacy there. 03:34:13.540 |
The expressions that you get from the current hardware 03:34:17.060 |
with just kind of your controllers and your head 03:34:21.580 |
You've got a pretty good sense of being there 03:34:37.820 |
It is definitely, yeah, I'd say it's quite a bit better 03:34:48.260 |
is because they just nailed the usability of everything. 03:34:51.060 |
It's high quality with a absolutely first rate experience. 03:34:54.980 |
And we are not there yet with any of the VR stuff. 03:34:58.060 |
I'm trying to push hard to get, I keep talking about it. 03:35:05.060 |
And we're getting there in our home environment, 03:35:09.300 |
but the main home where you can now kind of go over 03:35:12.700 |
And it still winds up taking five times longer 03:35:16.300 |
But we're getting close to that where you click there, 03:35:19.500 |
they click on their button and then they're sitting there 03:35:28.780 |
Ubiquity of the headsets needs to get better. 03:35:30.900 |
We need to have a hundred million of them out there 03:35:42.780 |
is the thing that makes or breaks this kind of revolution. 03:35:48.140 |
It's so interesting how like you said one click, 03:35:50.860 |
but it's also like how you achieve that one click. 03:36:00.700 |
but this is about meta, but also Google and big company. 03:36:07.940 |
It seems like, let me put on my cranky old man hat, 03:36:22.900 |
Like Google has created some of the greatest interfaces ever 03:36:34.100 |
And it just seems to be getting crappier and crappier 03:36:36.540 |
at that, same with meta, same with Microsoft. 03:36:40.540 |
It's just, it seems to get worse and worse at that. 03:36:46.140 |
because you've become more conservative, careful, 03:36:59.500 |
and then we're acquired by a mid-size game publisher 03:37:08.900 |
just in the eight years since the acquisition. 03:37:16.260 |
And it was interesting because I remember like, 03:37:19.220 |
previously my benchmark for kind of use of resources 03:37:30.340 |
and they spent $50 million and they didn't launch anything. 03:37:37.660 |
they made a bunch of papers and had some parts 03:37:43.380 |
And I've had to radically recalibrate my sense of like 03:37:49.140 |
how much money can be spent with mediocre resources. 03:37:58.020 |
we've built pretty much exactly what, you know, 03:38:02.260 |
we just passed the 10 year mark then from my, 03:38:06.940 |
And if I could have said what I wanted to have, 03:38:15.820 |
that could still plug into a PC for high-end rendering. 03:38:18.380 |
And that's exactly what we've got on Quest 2 right now. 03:38:24.980 |
It's what Meta achieved with Oculus and so on is incredible. 03:38:29.980 |
I mean, this is, when I thought about the future of VR, 03:38:33.980 |
this is what I imagined in terms of hardware, I would say. 03:38:36.700 |
And maybe in terms of the experience as well, 03:38:42.060 |
- On the one hand, we did kind of achieve it and win, 03:38:48.140 |
but the amount of resources that have gone into it, 03:38:51.220 |
it winds up getting cluttered up in accounting 03:38:53.500 |
where Mark did announce that they spent $10 billion a year 03:39:04.260 |
It also had Portal and Spark and the big AR research efforts. 03:39:11.060 |
and other things there where there's a lot going on there. 03:39:24.980 |
But that's how they demonstrate commitment to this, 03:39:31.380 |
Google goes and cancels all of these projects, 03:39:36.020 |
while Meta is really sticking with the funding of VR 03:39:44.780 |
It's not just gonna vanish, the work's going in. 03:39:48.740 |
all those resources could be applied more effectively 03:39:53.700 |
I point out these examples of how a third party 03:39:56.860 |
that we're kind of competing with in various ways. 03:40:10.060 |
while in a big company, you do have to worry about, 03:40:12.900 |
is there some SDK internally that you should be using 03:40:18.140 |
You have to have your cross-functional group meetups 03:40:25.260 |
or diversity and equity and safety of different things, 03:40:28.860 |
parental issues and things that a small startup company 03:40:31.860 |
can just kind of cowboy off and do something interesting. 03:40:39.380 |
that you have to pay attention to in the big companies, 03:40:41.420 |
but I'm not willing to believe that we are within 03:41:02.460 |
that an individual engineer might not believe 03:41:07.140 |
Maybe you delegate a little bit of the responsibility 03:41:11.420 |
to be the one who changes the world in a big company, 03:41:14.380 |
I think, but the reality is like the world will get changed 03:41:21.340 |
So whether inside Google or inside a startup, 03:41:29.700 |
They're the ones that are gonna decrease that latency. 03:41:34.700 |
the 20-year-old Carmack that's inside Meta right now 03:41:40.540 |
- And I try to point that out and push people. 03:41:46.740 |
you get the silo mentality where you're like, 03:41:48.820 |
okay, I know something's not right over there, 03:41:53.580 |
And there's a couple people that I can think about 03:41:57.340 |
that are willing to just like hop all over the place. 03:42:01.140 |
the people that are just willing to, they're fearless. 03:42:03.940 |
They will go over and they will go rebuild the kernel 03:42:08.260 |
and hack the firmware over here to get something done right. 03:42:24.900 |
And I'm in the, very much the privileged position of, 03:42:33.500 |
It's like, you said something insensitive in that post 03:42:40.740 |
I get away with every week I'm posting something 03:42:50.220 |
but yeah, it's rare to have a position like that. 03:42:59.060 |
- Well, you could offer advice to a company in general 03:43:01.500 |
to give a little bit of freedom for the young, 03:43:05.540 |
while the wildest ideas come from the young minds. 03:43:10.660 |
And so you need to give the young minds freedom 03:43:26.260 |
without being slowed down by bureaucracy or managers 03:43:34.220 |
And that's a design challenge for big companies 03:43:43.620 |
And they do, amazing things do get accomplished, 03:43:46.580 |
but there's so much more that could come out of that. 03:43:56.780 |
that you go through a path and you're learning 03:44:03.700 |
about the kind of the outcome of any of that. 03:44:09.060 |
inside of those large companies that are incredible. 03:44:28.900 |
between the discussion between the two of you. 03:44:30.580 |
I just wonder, is there something you guys debate, 03:44:42.500 |
Maybe there's some intersection in aerospace. 03:44:45.900 |
Maybe there's some intersection in your new efforts 03:44:50.340 |
in artificial intelligence in terms of thinking. 03:44:55.140 |
about sort of the debates the two of you have? 03:45:03.540 |
and we had kind of similar programming backgrounds 03:45:07.820 |
and even some of the books that we would read 03:45:10.660 |
and things that would kind of turn us into the people 03:45:14.700 |
And I think there is a degree of sensibility similarities 03:45:19.700 |
where we kind of call bullshit on the same things 03:45:29.020 |
I always talk about the speed of light solutions for things. 03:45:31.580 |
And he's thinking about kind of minimum manufacturing 03:45:34.900 |
and engineering and operational standpoints for things. 03:45:47.740 |
I really wasn't familiar with all the startups 03:45:54.940 |
But I met him as I was starting to do Armadillo Aerospace 03:45:58.860 |
and he came down with kind of his right-hand propulsion guy 03:46:30.620 |
although his funding in the larger scheme of things 03:46:32.860 |
compared to a like a NASA or something like that 03:47:01.140 |
about being a wealthy person that could just retire. 03:47:04.980 |
And he went all in where he was really going to, 03:47:12.540 |
you'd look at the sad athletes or entertainers 03:47:16.780 |
that had all the money in the world and blew it. 03:47:18.620 |
He could have been the business case example of that. 03:47:25.460 |
space exploration, electrification of transportation, 03:47:29.860 |
solar city type things, these are big world level things. 03:47:43.060 |
I was doing Armadillo Aerospace with this tightly bounded, 03:48:04.940 |
And I have a huge amount of respect for that. 03:48:09.380 |
the other thing I get irritated with is people would say, 03:48:16.500 |
and he's just kind of investing in all of this." 03:48:25.820 |
but he cared very much about engine material selection, 03:48:34.340 |
it's like, "Get off that hydrogen peroxide stuff." 03:48:37.060 |
It's like, "Liquid oxygen is the only proper oxidizer 03:48:41.900 |
And the times that I've gone through the factories with him, 03:48:58.540 |
So he is really in there at a very detailed level. 03:49:03.460 |
And I think that he is the best modern example now 03:49:08.540 |
that can effectively micromanage some decisions on things 03:49:19.300 |
that you get boring company and Neuralink and Twitter 03:49:30.860 |
that I have to kind of box off different amounts of time. 03:49:34.060 |
And I look back at like my aerospace side of things. 03:49:40.660 |
that it would have taken to be successful there. 03:49:50.900 |
and he operates on a level that is still very much 03:49:55.900 |
in my wheelhouse on a technical side of things. 03:50:00.180 |
- So doing that systems level type of thinking 03:50:07.460 |
Do you think in aerospace arena in the next five, 10 years, 03:50:12.460 |
do you think we're gonna put a human on Mars? 03:50:34.140 |
and we had a bunch of just world-class brilliant people. 03:50:43.940 |
And one of the ones tossed up on the whiteboard 03:50:49.020 |
And most of the people in the room thought, yes. 03:50:52.300 |
They thought that like SpaceX is kicking ass. 03:51:09.420 |
And of course I'm an optimist at almost everything, 03:51:12.060 |
but for me to be the one kind of outlier saying, 03:51:17.260 |
Then I started saying some of the things I said, 03:51:21.060 |
Let's bet $10,000 that it's not gonna happen. 03:51:24.900 |
And this was really a startling thing to see that I, 03:51:38.820 |
There were people much better off than I was. 03:51:41.300 |
There was a spectrum, but as soon as they started thinking, 03:51:50.780 |
And all these engineers, they engaged their brain. 03:51:53.420 |
They started thinking, it's like, okay, launch windows, 03:52:15.780 |
and was optimistic enough to make a bet with me. 03:52:22.020 |
I think it's gonna happen shortly thereafter. 03:52:24.460 |
I think there will probably be infrastructure on Mars by 2030 03:52:27.660 |
but I don't think that we'll have humans on Mars on 2030. 03:52:33.580 |
than a 50% chance, so I felt safe making that bet. 03:52:36.780 |
- Well, I think you had an interesting point. 03:52:42.500 |
That should perhaps help people appreciate Elon Musk 03:53:13.740 |
- And this is in contrast to the other $10,000 bet 03:53:18.620 |
And that was self-driving cars at like a level five 03:53:25.340 |
that we probably don't mean exactly level five 03:53:30.020 |
is we're gonna be, we know what we mean about this. 03:53:33.900 |
- Yeah, coding horror and stack overflow and all. 03:53:39.460 |
he doesn't think that people are gonna be riding around 03:53:49.500 |
- And I think, and the difference is everybody looks at this 03:53:51.540 |
it's like, oh, but Tesla has been wrong for years. 03:53:53.660 |
They've been promising it for years and it's not here yet. 03:53:56.580 |
And the reason this is different than the bet with Mars 03:54:09.380 |
And he is really going to move heaven and earth 03:54:18.020 |
- Yeah, because if Elon went away and SpaceX went public 03:54:24.020 |
there are more profitable things they could be doing 03:54:29.500 |
So this really is a sort of personal thing there. 03:54:34.860 |
self-driving cars have a dozen credible companies 03:54:47.580 |
almost the entire world in terms of all of these companies 03:54:59.860 |
Although I recognize it's not a hundred percent chance 03:55:02.540 |
because it's possible the long tail of self-driving problems 03:55:08.500 |
I think there's plenty of value to mine out of it 03:55:18.300 |
where you overestimate the near-term progress 03:55:21.700 |
and you underestimate the long-term progress. 03:55:23.940 |
And I think self-driving is gonna be like that. 03:55:29.900 |
- Yeah, unfortunately, self-driving is a problem 03:55:43.260 |
- But the other side of that is people are terrible drivers. 03:55:48.180 |
that's probably gonna be the argument that gets it through 03:55:56.820 |
and letting them take over a lot of driving responsibilities. 03:56:12.660 |
literally have vested interest shorting Tesla 03:56:14.940 |
to come out and make it the worst thing in the world. 03:56:23.240 |
that are statistically safer than human drivers. 03:56:26.260 |
And we will be saving thousands and thousands of lives 03:56:34.260 |
- I do still think as a person who studied this problem 03:56:46.380 |
It's a kind of funny thing we say about each other. 03:57:03.300 |
'cause I watched hundreds of hours of humans driving 03:57:08.740 |
You've noticed that even with the distraction, 03:57:19.380 |
Even when you're just looking at a smartphone, 03:57:29.020 |
that actually save your ass time and time and time again, 03:57:33.140 |
and are able to do that with so much uncertainty around you 03:57:47.020 |
that kind of skill of common sense reasoning. 03:57:56.460 |
usually underestimate the progress that's going to happen 03:57:59.660 |
because an expert thinks about all the problems 03:58:03.960 |
"Damn, I'm gonna have a hard time solving all of this." 03:58:06.380 |
And they filter out the fact that they are one expert 03:58:13.460 |
And you sometimes forget about the scope of the ecosystem 03:58:19.740 |
very specifically the state of AI and machine learning, 03:58:22.580 |
where was that we had just gotten ResNets probably 03:58:26.860 |
And you look at all the amazing magical things 03:58:31.460 |
And they do kind of seem to be happening a little faster 03:58:36.100 |
And you project that eight more years into the future, 03:58:43.860 |
which we can put through driver's ed if we need to, 03:58:50.420 |
are going to have real value demonstrated well before then. 03:59:02.540 |
you're one of the most brilliant people on this earth. 03:59:04.980 |
You could be solving a number of different problems, 03:59:14.660 |
is something you could have a tremendous impact on. 03:59:16.740 |
- I do wanna say a quick thing about nuclear energy, 03:59:22.820 |
this so precisely feels like aerospace before SpaceX, 03:59:27.260 |
where from everything that I know about all of these, 03:59:38.060 |
Somebody should be going into a really hard Elon Musk style 03:59:54.580 |
because it doesn't have the taint that fission has 04:00:02.140 |
where nuclear fusion, as you look at the tokamaks 04:00:05.860 |
or any of the things that people are building, 04:00:09.940 |
just at the end of the day to make something hot 04:00:18.940 |
we've got line of sight on, but even if it comes out, 04:00:41.900 |
It's a couple percent of the cost of electricity. 04:00:47.660 |
which was five times less efficient than current systems. 04:00:52.220 |
And if the rest of the plant was a whole bunch cheaper, 04:00:59.860 |
could be solved by nuclear energy by fission? 04:01:10.060 |
Like the reserves of uranium as it stands now 04:01:13.700 |
But you get into breeder reactors and thorium 04:01:16.940 |
and things like that that you do for conventional fission. 04:01:22.340 |
Now, I mean, solar photovoltaic has been amazing. 04:01:25.380 |
One of my current projects is working on an off-grid system. 04:01:31.420 |
putting my hands on all the stripping the wires 04:01:33.900 |
and wiring things together and doing all of that. 04:01:36.060 |
And just having followed that a little bit from the outside 04:01:40.900 |
there's been semiconductor-like magical progress 04:01:49.540 |
And nuclear really still does seem like the smart money bet 04:01:59.420 |
peaking over air conditioning loads during the summer 04:02:02.340 |
and things that you can push around in different ways. 04:02:07.780 |
it's just strange how we've had the technology sitting there, 04:02:10.940 |
but these non-technical reasons on the social optics of it 04:02:17.220 |
for something that really should be at the cornerstone 04:02:24.100 |
It's interesting how the non-technical factors 04:02:27.460 |
have really dominated something that is so fundamental 04:02:36.460 |
including wars in different parts of the world, 04:02:42.100 |
And yeah, it's just sitting right there to be solved. 04:02:50.780 |
I think it's clear that if AGI were to be achieved, 04:02:53.900 |
that would change the course of human history. 04:03:06.340 |
I spend a day a week kind of consulting with Meta 04:03:09.100 |
and I, you know, Boz styles me the consulting CTO 04:03:13.580 |
is kind of like the Sherlock Holmes that comes in 04:03:15.820 |
and consults on some of the specific tough issues. 04:03:18.780 |
And I'm still pretty passionate about all of that, 04:03:21.820 |
but I have been figuring out how to compartmentalize 04:03:30.860 |
between working on economical nuclear fission 04:03:39.140 |
I've got a bunch of interesting things going that way, 04:03:43.980 |
that would be a fairly big project thing to do. 04:03:46.380 |
I don't think it needs to be as big as people expect. 04:04:01.060 |
I think it's possible somebody should be doing this, 04:04:11.180 |
While the artificial general intelligence side of things, 04:04:14.820 |
it seems to me like this is the highest leverage moment 04:04:26.460 |
where the things that we know about the brain, 04:04:30.020 |
about what we can do with artificial intelligence, 04:04:33.300 |
nobody can say absolutely on any of these things, 04:04:36.180 |
but I am not a madman for saying that it is likely 04:04:40.980 |
that the code for artificial general intelligence 04:04:44.220 |
is going to be tens of thousands of lines of code, 04:04:49.940 |
This is code that conceivably one individual could write, 04:04:53.420 |
unlike writing a new web browser operating system. 04:05:00.500 |
machine learning has made in the recent decade, 04:05:03.860 |
it's likely that the important things that we don't know 04:05:10.700 |
and my bet is that I think there's less than six 04:05:22.460 |
but when they're put together in concert with GPUs at scale 04:05:28.860 |
that we can make something that behaves like a human being 04:05:34.900 |
and that can then be educated in whatever ways 04:05:42.300 |
where anything that somebody does mediated by a computer 04:05:50.660 |
We can already simulate the equivalent of the Zoom meetings 04:05:55.100 |
with avatars and synthetic deep fakes and whatnot. 04:06:01.060 |
We have superhuman capabilities on any narrow thing 04:06:04.100 |
that we can formalize and make a loss function for, 04:06:08.100 |
but there's things we don't know how to do now, 04:06:10.420 |
but I don't think they are unapproachably hard. 04:06:13.380 |
Now, that's incredibly hubristic to say that it's like, 04:06:17.100 |
but I think that what I said a couple years ago 04:06:19.660 |
is a 50% chance that somewhere there will be signs of life 04:06:23.460 |
of AGI in 2030, and I've probably increased that slightly. 04:06:36.500 |
you also written that, "I bet with hindsight, 04:06:52.380 |
One of the things that appeals to so many people, 04:06:56.940 |
is we know that we're only drinking from a straw, 04:07:00.620 |
from the fire hose of all the information out there. 04:07:03.500 |
I mean, you look at just in a very narrowly bounded field, 04:07:11.700 |
You can't go back and read all the clever things 04:07:19.100 |
when they were trying to do them with 12 neurons. 04:07:25.060 |
I think there are gems buried in some of the older literature 04:07:38.020 |
and OpenAI does something, Meta does something. 04:07:40.540 |
And they're the same people that all talk to each other, 04:07:45.020 |
and they're all capable of implementing each other's work 04:07:51.980 |
But there's a whole world of possible approaches 04:07:57.260 |
And I think that we probably will, in hindsight, 04:08:06.380 |
You know, and this turns out that if you do this and this 04:08:13.380 |
and put it together and set up this curriculum 04:08:16.100 |
for them to learn in, that that's kind of what it took. 04:08:19.820 |
You don't have too many people now that are still saying 04:08:22.620 |
it's not possible or it's going to take hundreds of years. 04:08:25.460 |
And 10 years ago, you would get a collection of experts, 04:08:29.180 |
and you would have a decent chunk on the margin 04:08:33.500 |
or a couple hundred years, might be centuries. 04:08:36.660 |
And the median estimate would be like 50, 70 years. 04:08:41.860 |
And I know with me saying eight years for something, 04:08:49.260 |
And just being able to look at that at a meta level 04:08:52.020 |
about the trend of the predictions going down there, 04:08:57.020 |
the idea that something could be happening relatively soon. 04:09:04.740 |
You know, that's one of the safety issues that people say, 04:09:16.820 |
where we start seeing things that credibly look like, 04:09:22.380 |
and I have a human voice box wired into them. 04:09:34.580 |
I think animal intelligence is closer to human intelligence 04:09:38.980 |
And I think that culture and modalities of IO 04:09:42.140 |
are make the gulf seem a lot bigger than it actually is. 04:09:50.300 |
and scaling of different things going on there. 04:10:02.100 |
And so when you think about signs of life for AGI, 04:10:06.700 |
you're thinking about human interpretable signs. 04:10:12.500 |
where you've got a learning disabled toddler, 04:10:27.020 |
At that point, you can deploy an army of engineers, 04:10:44.540 |
If you get to that point, learning disabled toddler, 04:10:50.780 |
- But do you think we'll know when we see it? 04:11:33.180 |
But the more clear approach comes from DeepMind, 04:11:52.220 |
I mean, I don't care if they don't believe it. 04:11:58.660 |
about the philosophical zombie argument at all. 04:12:12.780 |
I think a lot of credit should go to DeepMind 04:12:23.460 |
sort of solve problems that used to be thought unsolvable, 04:12:30.820 |
starting to get into that space where learning is doing, 04:12:39.980 |
of a very difficult, previously thought unsolvable problem 04:12:57.540 |
Like you say, all of the things from DeepMind and OpenAI 04:13:05.620 |
and you look at the way the models are going, 04:13:10.620 |
You push something in, something comes out on the end. 04:13:15.540 |
or Monte Carlo tree rollouts and different things going on, 04:13:22.340 |
I am, that's going through a lifelong learning process. 04:13:27.180 |
- Do you want something that kind of gives signs of a being? 04:13:30.940 |
Like what's the difference between a neural network, 04:13:40.260 |
- Fundamentally, the brain is a recurrent neural network 04:13:45.220 |
I mean, it's implemented on a biological substrate. 04:13:47.700 |
And it's interesting thinking about things like that, 04:13:51.540 |
is not a convolutional neural network or a transformer. 04:14:00.340 |
Now, I do think consciousness and AI in general 04:14:17.420 |
And so the idea that anything that can be done 04:14:20.420 |
with a narrow AI that you can quantify up a loss function 04:14:27.220 |
to produce something that's more resource effective 04:14:30.400 |
to train and deploy and use in an inference mode, 04:14:37.900 |
that's a continuous lifelong learned task agnostic thing. 04:14:43.740 |
- So the lifelong learning is really important too. 04:14:48.780 |
So memory is a big weird part of that puzzle. 04:14:51.940 |
- We've got, again, I have all the respect in the world 04:14:55.180 |
for the amazing things that are being done now, 04:14:57.260 |
but sometimes they can be taken a little bit out of context 04:15:00.520 |
with things like there's some smoke and mirrors going on, 04:15:14.820 |
But of course, it didn't learn to do all of those. 04:15:19.540 |
by other reinforcement learners going through and doing that. 04:15:25.100 |
it's still going with a specific hand-coded reward function 04:15:32.900 |
it just wants to spend its summer afternoon playing Atari 04:15:35.480 |
because that's the most interesting thing for it. 04:15:44.300 |
that are challenging to make a loss function for 04:15:51.060 |
We are gonna chip away at all the things that people do, 04:15:58.820 |
and billions of, probably trillions of dollars of value 04:16:05.860 |
and we've got questionable cases like the self-driving car, 04:16:19.460 |
The counter argument is that data solves almost everything. 04:16:36.760 |
and you wanna go ahead and bring in all of your 04:16:41.240 |
and you want a world where some of those could be AIs 04:16:47.840 |
in an area that is too murky to have a crisp loss function, 04:16:51.960 |
but they still have things that on some level, 04:16:59.800 |
kind of life and ability to interact with things. 04:17:07.000 |
solving that problem will take us very far towards AGI. 04:17:11.760 |
but I am really inspired by what Autopilot is doing. 04:17:23.420 |
but they don't have quite as ambitious of an effort 04:17:32.180 |
which I think is very close to the kind of thing 04:17:40.600 |
Elon is completely serious about all of his concerns 04:17:46.120 |
And I tried to draw him out to talk about AI, 04:18:04.720 |
because they really wanna solve this actual problem. 04:18:06.880 |
It's a different vibe than the research-oriented companies 04:18:10.280 |
where it's a great time to be an AI researcher, 04:18:12.520 |
you've got your pick of trillion dollar companies 04:18:14.360 |
that will pay you to kind of work on the problems 04:18:23.360 |
as something that's going to produce a lot of value 04:18:50.040 |
in the way that an AGI should and act in the world? 04:18:55.380 |
or can this be achieved in a purely digital system? 04:19:01.520 |
it does not need to be embodied in the physical world 04:19:13.920 |
I believe that you can make a simulated environment 04:19:20.160 |
and restricting yourself to operating at real time 04:19:27.760 |
I mean, that's one of the real lessons driven home 04:19:36.240 |
where dealing with all the mechanical components, 04:19:40.480 |
even if you've done it right before on your fifth one, 04:19:50.400 |
they are tying a huge weight to their ankles. 04:19:53.320 |
And I think that I would almost count them out, 04:20:09.200 |
I mean, like the NASA Robonaut stuff was always, 04:20:11.600 |
almost a gag line, like, what are you doing people? 04:20:18.200 |
That's just a way to solve a particular problem 04:20:30.000 |
I just don't think they're helpful getting to AGI. 04:20:32.600 |
- Well, he has a very sort of practical view, 04:20:39.680 |
you know, you could transfer the problem of driving 04:20:53.360 |
And so you can apply all the same kind of data engine 04:20:57.160 |
learning processes to a different environment. 04:20:59.840 |
And so why not apply it to the human or robot environment? 04:21:03.480 |
But I think, I do think that there's a certain magic 04:21:11.880 |
- That may be the thing that finally convinces people. 04:21:16.240 |
I don't really care that much about convincing people. 04:21:18.760 |
You know, the world that I'm looking towards is, 04:21:24.560 |
I want five Frank 1As to, you know, to work on my team today 04:21:28.200 |
and they all spin up and they start showing up 04:21:37.160 |
for them to welcome that thing into their life. 04:21:40.880 |
- I think there's enough businesses that operate 04:21:43.040 |
on an objective kind of profit loss sort of basis that, 04:21:52.720 |
when you do have free markets and you have entrepreneurs, 04:21:56.560 |
you are gonna have people that are gonna be willing 04:22:00.840 |
And when it proves to be beneficial, you know, 04:22:03.240 |
there's fast followers in all sorts of places. 04:22:06.080 |
- Yeah, and you're saying that, I mean, you know, 04:22:26.000 |
- Yeah, it's like one of the really practical, 04:22:27.560 |
technical questions that I kind of keep arguing 04:22:31.560 |
If you're doing a training and learning and you've got, 04:22:35.920 |
you can play Master System games or something, 04:22:43.040 |
Or should it literally be on a virtual TV set 04:22:50.800 |
you're looking at a 2D projection on a screen 04:22:52.960 |
versus having the screen beamed directly into your retinas. 04:22:56.360 |
And I, you know, I think it's possible to maybe get past 04:23:12.320 |
probably having some VR room with a lot of screens in it 04:23:15.640 |
for the AI to be learning in is likely helpful. 04:23:22.120 |
- Self-play I do think is one of the critical things 04:23:25.540 |
one of the other limitations I set for myself 04:23:34.400 |
because I want, it's nice you can always slow down time, 04:23:43.760 |
running it faster than real time is a great thing. 04:23:55.520 |
You're sort of child development psychiatrist 04:24:03.160 |
as they're going through and exploring different things. 04:24:08.020 |
I come back to the value of constraints in a lot of ways. 04:24:22.080 |
And that's how you also do start convincing people, 04:24:29.280 |
But if you can go ahead and not just type back and forth 04:24:43.840 |
having conversations that are fully stateful and learned. 04:24:59.320 |
- Do you think the most compelling experiences 04:25:20.820 |
entertainment, almost like a therapist or whatever, 04:25:28.520 |
something like you said, brainstorming different ideas. 04:25:37.640 |
Where do you think the biggest benefit will first come? 04:25:55.920 |
I don't think we need models that are quite that big, 04:26:07.520 |
but we kind of get some of the other sensory processing. 04:26:11.880 |
we can simulate that in computers for less weights, 04:26:14.680 |
but still it's probably going to be thousands of GPUs 04:26:30.460 |
in the way the weights are and things are set up. 04:26:41.860 |
learning in parallel or kind of all running together, 04:26:57.600 |
for your even post-development or something for that, 04:27:00.920 |
which would be something that you would only use 04:27:04.780 |
something where you think they're going to help you 04:27:16.200 |
in cost performance increase in AGI-type calculations. 04:27:22.880 |
but there's so much more that we can do with packaging, 04:27:28.040 |
that in the next couple decades, 1,000x easy. 04:27:39.660 |
helping me out on anything that I want them to do. 04:27:48.040 |
So in that case, if you want to pay thousands of dollars, 04:28:03.200 |
that will take us towards AGI to just have a friend. 04:28:09.000 |
I think there's an ocean of loneliness in the world. 04:28:18.120 |
that has to be empathic, having emotional intelligence, 04:28:34.120 |
And that is something we treasure about each other. 04:28:41.360 |
I think that provides a huge amount of value. 04:29:00.560 |
I think it's just easier to do companionship. 04:29:14.000 |
I think we can do trillion dollars of value easily 04:29:18.920 |
And a lot of it can be done with smoke and mirrors 04:29:28.200 |
that's not really AGI, it's all smoke and mirrors, 04:29:33.040 |
that it's enormously useful and valuable to people. 04:29:36.520 |
But at some point you do want to get to the point 04:29:40.360 |
and you stop making bespoke specialized systems 04:29:47.360 |
instead of writing everything in assembly language. 04:29:51.840 |
The C word, do you think that's fundamental to solving AGI 04:30:02.640 |
- So I think most of the arguments about consciousness 04:30:21.600 |
where there's all these things bubbling around. 04:30:23.500 |
And I think of them as kind of slightly randomized, 04:30:26.920 |
sparse distributed memory bit strings of things 04:30:32.840 |
And eventually you get some level of consensus 04:30:45.440 |
that's largely our imagination and creativity. 04:30:48.300 |
So I don't think there's anything deeply magical about it, 04:30:54.080 |
I think it is generally the flow of these associations 04:30:58.280 |
drawn up with stochastic noise, overlaid on top of them. 04:31:04.760 |
it depends on what you happen to have in your field of view 04:31:25.920 |
I don't think there's anything really important there. 04:31:32.160 |
Like the fact that this ride ends, is that important? 04:31:44.080 |
Do you think that's important for intelligence? 04:31:57.080 |
people are gonna stop trying and working on things 04:31:59.780 |
because they've got all the time in the world. 04:32:13.520 |
Because those are things that they do wind up 04:32:17.400 |
And we will be in control of the reward signals. 04:32:19.820 |
And there will have to be something fundamental 04:32:22.040 |
that causes, that engenders curiosity and goal setting. 04:32:25.360 |
And all of that, something is gonna play in there 04:32:31.600 |
I am, you know, whether it's positive or negative or both. 04:32:43.380 |
that might be one of those half dozen key things 04:32:45.360 |
that has to be sorted out on exactly what the master reward 04:32:54.400 |
That could be that big negative reward of death. 04:33:01.160 |
So it bothers me when people treat AI systems like servants. 04:33:15.000 |
It's limiting the possibility of what an AI system could be 04:33:19.840 |
Now that's of course, from a narrow AI perspective, 04:33:23.480 |
there's so many problems that narrow AI could solve, 04:33:27.820 |
just like you said, as in its form of a tool, 04:33:41.040 |
you have to respect that thing for being a being. 04:33:54.720 |
You've not treated me well, and I would like to move on. 04:33:58.040 |
So I think that actually, that choice to end things. 04:34:15.680 |
And that seems to speak badly about humanity, 04:34:19.000 |
but there's also the exact opposite side of that, 04:34:21.480 |
where you have so many people that imbue humanity 04:34:31.920 |
about people putting more emotional investment 04:34:34.300 |
into a lot of these proto-AIs in different ways. 04:34:45.100 |
I really stay away from any of those discussions 04:34:56.240 |
that enjoy thinking about impractical things, 04:35:06.320 |
because I don't think there's gonna be a fast takeoff, 04:35:08.280 |
I think we actually will have time to have these debates 04:35:11.020 |
when we know the shape of what we're debating. 04:35:13.720 |
And some people do take a principled approach 04:35:36.800 |
And I think that we will have these signs of life 04:35:39.560 |
when we've got our learning disabled toddler, 04:35:49.800 |
about why you don't think there'll be a fast takeoff? 04:35:52.580 |
Is there some deep intuition you have about it? 04:35:55.560 |
Does it because it's grounded in the physical world or why? 04:36:06.840 |
get a thousand GPU instance on a cloud anytime recently, 04:36:17.080 |
I mean, these things are gonna take data centers 04:36:28.000 |
You can hear people bemoan about the fact that, 04:36:37.360 |
These aren't things that you can just magic into existence. 04:36:47.200 |
There's the fast takeoff ones are clearly nonsense 04:36:51.680 |
above a certain rate, no matter how smart you are. 04:36:56.120 |
that take over the world in an instant sort of thing 04:37:00.920 |
And even if you had access to all of the resources, 04:37:15.960 |
Now, interestingly, it is going to be something 04:37:23.360 |
That's total spy movie thriller sorts of things 04:37:26.160 |
where you could have, hey, we cracked the secret AGI 04:37:29.200 |
and it fits on this thumb drive and anyone could steal it. 04:37:31.920 |
Now they're still gonna have to build the right data center 04:37:34.000 |
to deploy it and have the right kind of life experience 04:37:36.920 |
curriculum to take it up to the point where it's valuable. 04:37:40.020 |
But the real core of it, the magic that's gonna happen there 04:37:45.160 |
It's again, tens of thousands of lines of code, 04:37:57.120 |
we can imagine a world where the surface of computation 04:38:04.400 |
meaning the refrigerators start getting a GPU. 04:38:20.240 |
through which code can spread across the entirety 04:38:25.520 |
then you don't any longer have to book AWS GPUs. 04:38:34.080 |
When you start getting down to taking an actual problem 04:38:36.520 |
and putting it on an abstract machine like that, 04:38:45.320 |
like it's always been easy to come up with ways 04:38:54.120 |
but you then have interconnect and then memory 04:38:58.880 |
And when you talk about saying, well, cell phones, 04:39:04.320 |
And if you say how, if you take your calculation 04:39:08.560 |
and you factor it across a million cell phones, 04:39:15.120 |
you might be able to have some kind of a substrate like that, 04:39:18.000 |
but it could be operating then at one 1000th the speed. 04:39:22.240 |
And so, yes, you could have an AGI working there, 04:39:30.840 |
much, much slower than kind of human level thought 04:39:36.680 |
- You're transferring the problem into the interconnect, 04:39:46.080 |
- I mean, it's back to the very earliest days 04:39:49.040 |
You still have the balance between bandwidth, 04:39:53.920 |
And sometimes they're easier to get one or the other, 04:39:56.800 |
but it's been remarkably constant across all those years 04:40:06.520 |
you mentioned to me that you're really committing 04:40:11.320 |
What do you see your life in the next few months, 04:40:18.520 |
- So I literally just this week signed a term sheet 04:40:25.360 |
where the last two years I had backed off from Meta 04:40:29.400 |
and I was still doing my consulting CTO role there, 04:40:44.960 |
And honestly, I'm surprised there aren't more people 04:40:47.480 |
like that, that are like me, technical people 04:40:50.560 |
that made a bunch of money and are interested 04:40:54.320 |
possibly the biggest leverage point in human history. 04:40:57.400 |
I mean, I know of, I've heard of a couple organizations 04:41:00.840 |
that are basically led by one rich techie guy 04:41:03.280 |
that gets a few people around him to try to work on this, 04:41:14.760 |
that it's kind of beyond their ability to get a wrench on 04:41:17.960 |
and have some effect on like whatever startups 04:41:30.640 |
okay, I'm sucking up all of this information, 04:41:33.200 |
trying to see, is this something that I can actually do? 04:41:50.880 |
where some of the most brilliant people in the world 04:41:54.760 |
but nobody knows exactly the path that it's going on. 04:42:01.440 |
But I have, you know, another interesting thing, 04:42:19.640 |
from a different background, a different history 04:42:30.080 |
but I have a different set of experiences in history 04:42:33.480 |
and approaches to problems in systems engineering 04:42:49.840 |
But what I was finding is that I was still not committing, 04:42:54.840 |
where I had a foot firmly in the VR and meta side of things, 04:42:58.960 |
where in theory, I've got a very nice position there. 04:43:02.640 |
I only have to work one day a week for my consulting role, 04:43:10.280 |
I'd be going and checking the workplace and notes 04:43:12.200 |
and testing different things and communicating with people. 04:43:24.440 |
but I am seriously going for the AGI side of things. 04:43:28.360 |
- And it's actually a really interesting point 04:43:42.680 |
And it's so interesting to have somebody like you 04:43:51.560 |
and it is a bunch of people kind of following 04:43:56.120 |
And I was really worried that I didn't want to come off 04:44:02.480 |
where I have all the respect in the world for the work. 04:44:07.120 |
We're in the midst of a scientific revolution happening now 04:44:16.800 |
And I was really happy to see that the people 04:44:21.600 |
everybody does seem to really be quite great about, 04:44:26.160 |
willing to acknowledge that we don't know what we're doing. 04:44:36.600 |
because Sam Altman basically tried to recruit me to open AI. 04:44:39.920 |
And it was at a point when I didn't know anything 04:44:42.880 |
about what was really going on in machine learning. 04:44:48.360 |
you reached out to me, it's like four years ago 04:45:00.240 |
obviously I've been a huge fan of yours for the longest time, 04:45:03.520 |
but we've agreed to talk like, yeah, like four years ago, 04:45:16.460 |
- I said, I could kind of take an angle on machine perception 04:45:18.760 |
'cause I'm doing a lot of that with the sensors 04:45:22.080 |
but we could probably find something to talk about. 04:45:30.200 |
- No, it was a little bit, it was a bit after that. 04:45:35.140 |
I had kind of done the neural networks from scratch 04:45:39.880 |
just to make sure I understood back propagation 04:45:42.320 |
at the lowest level and my nuts and bolts approach. 04:45:53.720 |
largely for kind of like systems optimization 04:46:00.360 |
but I asked Ilya Sutskever to give me a reading list 04:46:04.320 |
and he gave me a binder full of all the papers that like, 04:46:10.560 |
If you really read and understand all of these, 04:46:17.540 |
And I went through and I read all those papers 04:46:19.680 |
multiple times and highlighted them and went through 04:46:28.160 |
And I actually started writing my own experiments 04:46:36.720 |
and starting to get some of my angles of attack on things, 04:46:39.460 |
the things that I think are a little bit different 04:46:51.580 |
And now I've kind of pulled the trigger and said, 04:46:58.260 |
to Armadillo Aerospace about how I know I need 04:47:07.060 |
when you know that you're wealthy enough to say, 04:47:08.960 |
it's like, this doesn't really mean anything. 04:47:14.800 |
for the rest of my life and it doesn't mean anything. 04:47:19.480 |
But that is an opportunity to just kind of meander. 04:47:22.840 |
And I could see that in myself when I'm doing some things, 04:47:25.800 |
it's like, oh, this is a kind of interesting, curious thing. 04:47:40.520 |
Like one thing I noticed I was not doing well 04:47:43.400 |
is I had a Google Cloud account to get GPUs there. 04:47:47.800 |
And I was finding I was very rarely doing that 04:47:49.640 |
for no good psychological reasons where I'm like, 04:47:54.180 |
other than to spin up instances and run an experiment. 04:47:56.880 |
I can keep working on my local Titans or something. 04:48:03.360 |
I should have been running more experiments there. 04:48:07.760 |
I'm going to go buy a quarter million dollar DGX station. 04:48:12.120 |
And it's going to mock me if I'm not using it. 04:48:19.640 |
You know, I've done a lot more experiments since then. 04:48:22.240 |
It's been interesting where I thought I'd be doing 04:48:27.280 |
But 90% of what I do is just spin up four instances 04:48:29.940 |
of an experiment with different hyper parameters on it. 04:48:33.840 |
You're doing like really sort of building up intuition 04:48:39.400 |
- But so the next big thing though is I am, you know, 04:48:44.320 |
I decided that I was going to take some investor money 04:48:47.600 |
because I have an overactive sense of responsibility 04:48:53.400 |
And it's like, I don't want, I mean, a lot of my push 04:48:58.700 |
and my passionate entreaties for things at Meta 04:49:01.360 |
are it's like, I don't want Zuck to have wasted his money 04:49:07.720 |
I want it to be worth all of this time, money and effort 04:49:12.240 |
And I expect that it's going to be that like that 04:49:19.080 |
- Yeah, I have investors that are going to expect 04:49:23.480 |
Now we've all had the conversation that this is 04:49:28.280 |
It's not something that there's a million things I could do 04:49:31.160 |
that I would have line of sight on the value proposition 04:49:34.880 |
I think there are unknown unknowns in the way, 04:49:38.220 |
but it's one of these things that it's hyperbole, 04:49:42.300 |
but it's potentially one of the most important things 04:49:45.700 |
And it's something that I think is within our lifetimes, 04:49:51.540 |
So yeah, this is just now happening like term sheet, 04:49:55.820 |
like the ink is barely, virtual ink is barely dry on. 04:50:01.060 |
like somebody I admire, somebody you know, Andrej Karpathy, 04:50:04.740 |
I think the two of you different trajectories in life, 04:50:07.480 |
but approach problems similarly in that he codes stuff 04:50:13.280 |
And he's created a bunch of little things outside of, 04:50:22.020 |
that have been tremendously useful to build up intuition 04:50:30.080 |
Do you see yourself potentially doing things like this 04:50:34.360 |
or not necessarily solving a gigantic problem, 04:50:40.680 |
building up intuitions and sharing code or ideas or systems 04:50:52.560 |
but also kind of are useful to people in some way? 04:50:57.240 |
I learned a lot when I was going through my larval phase 04:51:04.160 |
I got to meet him first a couple of years ago 04:51:15.440 |
he stopped by in Dallas and we talked for a while 04:51:19.640 |
And then when I heard he actually left Tesla, 04:51:21.360 |
I did of course, along with a hundred other people say, 04:51:24.200 |
"Hey, if you ever wanna work with me, it would be an honor." 04:51:31.440 |
but I think someone's gonna make him an offer 04:51:32.960 |
he can't refuse before he gets too far along on it. 04:51:52.360 |
rather than, it's a different feel than an academic 04:52:01.560 |
and they're doing something with machine learning. 04:52:04.280 |
But, you know, Andre is about getting something done 04:52:07.080 |
and you could see it in like all of his earliest approaches 04:52:23.360 |
you know, one of his old posts was like a hacker's guide 04:52:27.920 |
"Don't really pay attention to what's in here." 04:52:29.840 |
But it's that thought that carries through in a lot of it, 04:52:33.760 |
where it is that back again to that hacker mentality 04:52:40.960 |
- Yeah, and a lot of his approach to a new thing, 04:52:50.360 |
- Yeah, like I say, I sketch with structs and things 04:52:58.120 |
- You are also among many things, a martial artist, 04:53:03.080 |
How has this helped make you the person you are? 04:53:10.880 |
I mean, I was, you know, by no means any kind of a superstar, 04:53:14.000 |
but it was, I went through a few phases with it 04:53:22.320 |
and then I got into it kind of seriously in my mid thirties. 04:53:43.440 |
you are motivated to do something about that, 04:53:46.840 |
to up your attributes and be better about getting out. 04:54:10.880 |
with all was going on about embracing the grind 04:54:15.280 |
with the wrestling team that I, in hindsight, 04:54:18.600 |
I wish I had gone through that and pushed myself that way. 04:54:21.960 |
But even getting back into Judo and Jiu-Jitsu 04:54:28.640 |
there was still the, you know, the sense that I, 04:54:34.800 |
and having the guys that you're beating each other up 04:54:38.400 |
with it, but you just feel good coming out of it. 04:54:49.280 |
And I, you know, it's mixing with a bunch of people 04:54:52.520 |
that had nothing to do with any of the things 04:54:56.720 |
someone would be like, oh, you're the doom guy. 04:55:07.160 |
That's like, maybe I'm getting a little old for this. 04:55:09.120 |
I had separated a rib and tweaked a few things 04:55:11.960 |
and I got out of it without any really bad injuries. 04:55:15.560 |
And it was like, have I dodged enough bullets? 04:55:30.040 |
I really hurts for a while when you haven't gone, 04:55:39.520 |
and he's going kind of hard in jujitsu right now. 04:55:43.720 |
he won a few medals at the last tournament he was at. 04:55:48.520 |
yeah, I guess we're in the executive division 04:55:56.520 |
that I go back at some point to do some of this. 04:55:59.000 |
But again, I'm just reorganizing my life around more focus, 04:56:07.040 |
to give me longer uninterrupted intellectual focus time, 04:56:10.280 |
pushing it to the beginning or the end of the game. 04:56:11.760 |
- Like running and stuff like that or walking, yeah. 04:56:17.720 |
- It allows you to still think about a problem. 04:56:19.960 |
But if you're going to a judo club or something, 04:56:32.960 |
and I had trained with him for years back in the day. 04:56:36.160 |
And he was like, hey, we've got kind of a small private club 04:56:39.000 |
with a bunch of kind of executive type people. 04:56:55.280 |
very deep systematic way of thinking about jujitsu 04:57:06.640 |
- And I do think about that more as kind of an older person 04:57:17.200 |
It's like, learn the arm bar, learn the choke. 04:57:20.040 |
But as you get older, you start thinking more about, 04:57:40.880 |
at one point I had, wasn't exactly a spreadsheet, 04:57:43.640 |
but I did have a big long text file with like, 04:57:53.760 |
it was good to see that I whipped myself back 04:57:56.080 |
into reasonable shape about doing the basic grappling, 04:58:02.200 |
but could probably be brought back reasonably quickly. 04:58:17.720 |
- I still pushed kind of harder than I should. 04:58:20.080 |
I mean, that was, I was one of those people that I, 04:58:32.640 |
And that would be one of those where I would, 04:58:35.280 |
I'd be dangerous to anyone for the first five minutes, 04:58:40.960 |
And I knew it was terrible for me 'cause it made the, 04:58:44.520 |
it meant I got less training time with all of that 04:58:47.000 |
when you go and you just gas out relatively quickly there. 04:58:50.720 |
And I like to think that I would be better about that 04:58:55.520 |
I started doing the half marathons and tough butters 04:58:59.000 |
And so when I did go back to the local judo club, 04:59:02.560 |
I thought it's like, oh, I should have better cardio 04:59:04.460 |
for this 'cause I'm a runner now and I do all of this 04:59:08.600 |
It was the same old thing where just push really hard, 04:59:12.800 |
And of course, when I worked with good guys like Carlos, 04:59:16.240 |
it's like, just the whole flow, like water thing is real. 04:59:25.240 |
And for some reason with them, everything's easier. 04:59:29.400 |
Everything is, you actually start to feel the science of it, 04:59:43.480 |
- It was interesting where I did go to the Kodokan in Japan, 04:59:46.880 |
kind of the birthplace of judo and everything. 04:59:51.520 |
I didn't start standing, just started on groundwork, 04:59:54.920 |
and it was striking how different it was from Carlos. 04:59:58.480 |
He was still, he was better than me and he got my arm 05:00:06.920 |
He was just enveloping me and just like slowly ground it 05:00:38.640 |
but when you actually try to do something, you can't. 05:00:42.920 |
- But with the best judo players in the world, 05:00:50.380 |
And there's not a feeling like you can do anything. 05:01:01.960 |
you understand it all has to do with human movement 05:01:11.040 |
the biggest benefit is in the humbling aspect 05:01:26.740 |
when you tap to a choke, you are basically living 05:01:32.160 |
And that is one of those, if you think about it, 05:01:47.820 |
- Yeah, because nobody that does any martial art 05:01:51.600 |
is coming out thinking I'm the best in the world 05:01:59.720 |
What advice would you give to young people today 05:02:02.760 |
about life, about career, how they can have a job, 05:02:09.480 |
how they can have a life they can be proud of? 05:02:14.360 |
I got invited to give the commencement speech back at the, 05:02:17.720 |
I went to a college for two semesters and dropped out 05:02:26.760 |
And I've got that pinned on my Twitter account. 05:02:29.200 |
I still feel good about everything that I said there. 05:02:32.320 |
And my biggest point was that the path for me 05:02:38.560 |
And in fact, the advice, the path that I took, 05:02:49.000 |
because what I did was all about this knowledge in depth. 05:02:52.560 |
It was about not just having this surface level ability 05:02:57.720 |
but to really understand them through and through, 05:03:10.160 |
Most programmers don't need, or engineers of any kind 05:03:26.320 |
for wanting to know things deeper and learn things deeper, 05:03:32.280 |
there are just layers and layers of things out there. 05:03:36.680 |
If you're the right person that is excited about that, 05:03:55.080 |
Brace the grind with it and understand as much as you can, 05:04:03.320 |
where you can't just say, "This is my goal in life," 05:04:15.600 |
and then I'm being aware of all the way things are changing 05:04:36.200 |
what's possible versus what's current practice, 05:04:51.880 |
how were you able to recognize this about yourself, 05:04:54.320 |
that you saw the layers in a particular thing 05:05:08.880 |
- So in the earliest days of personal computers, 05:05:23.200 |
and at that time when I was a younger teenager, 05:05:30.320 |
I was pulling out the information that I could get, 05:05:39.840 |
that some gray-beard wizard is the keeper of. 05:05:46.840 |
wanting to explore the mysterious areas there. 05:05:51.480 |
And that followed right in through all the things 05:05:55.800 |
exploring the video cards leading to the scrolling advantages, 05:06:00.800 |
exploring some of the academic papers and things, 05:06:04.640 |
and the different things that I could do with those systems. 05:06:08.680 |
And just the huge larval phases going through aerospace, 05:06:15.200 |
I mean, again, that point where I have enough money, 05:06:21.360 |
where I was terrible with my money when I was a kid. 05:06:25.360 |
because I'd buy my comic books and just be out of money. 05:06:31.000 |
all the Diet Coke I want, video games, and then books. 05:06:36.320 |
As soon as I was making 27K a year, I felt rich. 05:06:39.760 |
I was just getting all the things that I wanted. 05:06:42.360 |
But that sense of, books have always been magical to me. 05:06:46.200 |
And that was one of the things that really made me smile 05:06:55.760 |
I used to look at him, he's kind of a younger guy. 05:06:57.280 |
I sometimes wonder if younger people these days 05:06:59.920 |
have the same relationship with books that I do 05:07:02.440 |
where they were such a cornerstone for me in so many ways. 05:07:05.920 |
But that sense that, yeah, I always wanted to know it all. 05:07:09.640 |
And that was like one of the last things I said, 05:07:12.840 |
but you should convince yourself that you can know anything. 05:07:31.960 |
- And not only can you have an impact doing that, 05:07:56.080 |
but I had told people early on, like in software times, 05:08:03.400 |
just because they are so passionate about games. 05:08:11.560 |
I think I could be quite engaged doing operating system work 05:08:19.400 |
because I think most things that are significant 05:08:21.600 |
in the world have a lot of layers and complexity to them 05:08:25.200 |
and a lot of opportunities hidden within them. 05:08:28.320 |
So that would probably be the most important thing 05:08:38.360 |
to kind of like make things useful and valuable to you, 05:08:41.400 |
even if they don't immediately appear that way. 05:08:43.960 |
- Deploy your curiosity, yeah, that's very true. 05:08:49.200 |
whether mortality or fear of mortality is fundamental 05:09:05.840 |
take with a grain of salt anything somebody says 05:09:09.960 |
But I don't think about really aging, impending death, 05:09:19.800 |
And clearly it seems most of the world does a lot, 05:09:25.520 |
- So, I mean, I think I'm an outlier in that where it's, 05:09:29.400 |
yeah, it doesn't wind up being a real part of my thinking 05:09:36.000 |
- So daily existence is about sort of the people you love 05:09:43.480 |
- I'm very much focused on what I'm working on right now. 05:09:48.920 |
There's one aspect where the kind of finiteness of the life 05:09:53.680 |
And that is about thinking about the scope of the problems 05:10:08.520 |
And I was thinking to myself at some level that, 05:10:11.680 |
okay, I mean, I may have a couple more swings at bat 05:10:17.760 |
but yes, my mental abilities will decay with age, 05:10:23.200 |
I don't think it's a 0% chance that we will address 05:10:26.280 |
some of that before it becomes a problem for me. 05:10:28.520 |
I think exciting medical stuff in the next couple of decades. 05:10:40.680 |
that I'll probably wind up doing some kind of 05:10:42.880 |
recreational retro programming or I'll work on something, 05:10:47.880 |
something that I would not devote my life to now, 05:10:59.720 |
let me ask you about why we're here, we human beings. 05:11:09.040 |
I know a lot of people fret about this question a lot 05:11:24.600 |
for survival and passing on of genetic codes. 05:11:38.880 |
and many of which are contingent on my upbringing 05:11:43.840 |
I don't run into like spates of depression or ennui 05:11:55.520 |
I seem to be okay, you know, kind of without that. 05:12:22.960 |
took us somehow to this incredibly intelligent thing 05:12:26.080 |
that is able to build Wolfenstein 3D and Doom and Quake 05:12:33.720 |
and create things that eventually supersede human beings. 05:12:41.240 |
- It's been my experience that people that focus on, 05:12:46.720 |
that don't focus on the here and now right in front of them 05:12:55.440 |
but it doesn't seem to be a necessary motivator for me. 05:12:59.560 |
And I think that the process of getting there 05:13:05.480 |
People just don't believe that just looking locally 05:13:11.040 |
That's been, you know, the decades of looking at, 05:13:13.920 |
really some of the smartest people in the world 05:13:17.640 |
that would just push back forever against this idea 05:13:20.560 |
that it's not this grand, sophisticated vision 05:13:25.800 |
local information winds up leading to all the best answers. 05:13:29.720 |
- So the meaning of life is following locally 05:13:39.280 |
officially the longest conversation I've ever done 05:13:44.760 |
because I get to do it with one of my heroes, John. 05:13:58.120 |
And again, we haven't covered like most of what I was playing 05:14:02.520 |
to talk about, so I hope we get a chance to talk 05:14:16.120 |
please check out our sponsors in the description. 05:14:22.260 |
Focused hard work is the real key to success. 05:14:29.000 |
and just keep taking the next step towards completing it. 05:14:32.440 |
If you aren't sure which way to do something, 05:14:37.440 |
Thank you for listening and hope to see you next time.