FiringSquad.com: John Carmack Interview - Part 1

Replies:

  • None.

Parents:

  • None.
What a great article!

John Carmack Interview - Part 1
February 07, 2000 - Justin Hall, Bob Colayco, and Joel Downs
http://www.firingsquad.com/features/carmack/

> Introduction
>
> The Man Behind the Phenomenon
>
> John Carmack is a man who almost needs no introduction - a
> founder of id software, the company that invented the first
> person shooter and single handedly revolutionized what PC action
> gaming means. From Commander Keen to Doom to Quake, Carmack/id's
> games have captivated millions of bleary eyed gamers into
> spending hours on end at the computer, blasting away at their on
> screen opponents.
>
> Late last December, Firingsquad and Gamers.com had the unique
> opportunity to conduct a lengthy face to face interview with John
> Carmack. We took the opportunity to find out more about John the
> man as opposed to John the programmer. We also asked John about
> his and id's plans for the future as well as his take on the
> gaming industry and where it might be headed. Questions are in
> bold; John's responses are in plain text.
>
> Firingsquad: So how old are you?
>
> John: 29
>
> FS: Do you think that being married will detract from your
> programming?
>
> John: No, I wouldn't be getting married if I thought that.
>
> FS: So what's a typical date between you and Anna [Kang]?
>
> John: Lately we've been building some model rockets. I did an
> interview one time and someone asked me about my teenage years,
> and I mentioned rockets and bombs and stuff like that. And I was
> thinking, you know, that was kind of fun, I liked that. Of course
> nowadays you can just go on the internet and say "I want one of
> these and one of these and one of these." They now have powerful
> rockets that we never had back when I was doing it - these high
> powered rockets with something like 2000 Newton/seconds of
> thrust!
>
> FS: Do you and Anna ever 1on1 deathmatch?
>
> John: Just yesterday we were out at Apple, and Anna was playing
> one of the Apple guys - she was kicking his ass. I was in a
> meeting with some other people, so they were playing for a while,
> and she was just waling on him. But then when I finished that
> meeting, they snuck me into that guy's room and they sat me down
> and I came back to a narrow victory. I expected to hear her
> cursing from the other side of the building. She still thought it
> was the other guy magically acquiring skills at the end of the
> game!
>
> FS: I've read some earlier interviews where you said you were
> into bombs and stuff. You were a miscreant kid, right?
>
> John: Yeah in a lot of ways?I looked back and I was an arrogant
> little jerk when I was a teenager. I matured over the years and
> when I look back now, I don't think THAT highly of myself as a
> teenager. I mean, I was really smart, I was already programming
> computers in a lot of ways. But I was amoral at many times.
>
> FS: What would you say if you were giving advice to people who
> have kids like you in their school?
>
> John: Well I already knew exactly what I wanted to be doing. I
> wanted to be programming, and I knew this even when I was around
> 12. I knew that that's what I wanted to be doing and I had these
> clear ideas of what I wanted to get. You can't just say the world
> owes me whatever I want to get. But there are times when some
> things are necessary to help a kid along. My parents never really
> understood that about me, so I never got the computers I wanted
> and needed. I held that against my mother for like a decade, but
> we're all past that now
>
> It was frustrating because I clearly knew what I wanted to be
> doing but it wasn't available to me at the time. It was always:
> if you want to do computers you need to go to MIT then you go
> work at a corporation as an engineer and follow "the path." But I
> dropped out of college, and started my own company.  My brother
> followed a more conventional path. He got a degree and became a
> stock broker and that's what my mother expected that you're
> supposed to do. And he's doing OK for himself, but there's
> nothing like a few Ferarris to rub your parents face in."
>
> I can say that everything's fine with my mother at this point in
> my life. We can talk about these things, look back and she
> recognizes that she was kinda wrong, but what good does that do?
> She's not raising another child or anything.
>
>
> Carmack on Money
>
> FS: You have a good deal of money now - how does that affect you?
>
> John: I have sufficient money that I don't need to work anymore;
> I really don't have to. That's a nice freedom, the freedom from
> anyone having the ability to have any leverage over you, as long
> as you've got the money to take care of yourself and you aren't
> wrapped up in having more and more money. There are a lot of
> people even though they have a lot of money, they can still be
> manipulated by the carrot of having more money.
>
> In my position I have basically everything I want.  I've got
> enough money to take care of myself and family so nobody, not any
> company, can have a significant leverage on me.
>
> FS: So is there some area where you thought you could use your
> money to have leverage in other situations?
>
> John: I try not to think about it that much. I try not to be too
> proactive in terms of trying to make other things happen. I like
> to work directly on the technical aspects of things and while
> there probably are some things I can do like leverage the money
> in other ways, I'm much more interested in trying to accomplish
> things directly.
>
> That's one reason why I'm not a very good manager. I'm an
> engineer, so I want to fix things directly. I want to set the
> circumstances up such that they become fixed even though in many
> cases I recognize the larger projects that need to get done. But
> it's not something I'm uniquely suited for.
>
> There's a specific area that I'm very good at and I happen to
> enjoy it a whole lot, so I don't feel a whole lot of desire to go
> out and exploit other aspects. I do have a pile of money sitting
> around to do things with, but I'm happy with how things are.
>
> I feel bad for some companies out there. The founders, who are
> these incredible engineers, are now directors of their
> departments doing management rather than engineering. At the same
> time most of the people they are managing are nowhere near as
> good as they were at doing the actual work."
>
> That's what I hope never happens to me. I want to stay in the
> trenches working on the things all the time.  There is some
> benefit to sitting back, reading and researching and getting some
> broader scope on it. But if you're divorced from the low level
> nuts and bolts of things, like how this actually applies to the
> real world, then you're just an academic. You get these huge
> disconnects between what an academic can do and what somebody in
> production can do.
>
> In the last two projects, my time has been split. I'd have about
> 3 months of pure research. I'm in that phase right now, playing
> around with different stuff.  And then after that it's about 16
> months of work on the project. It would be nice to shift that
> more towards research, but I would never want to devote a
> majority of my time to research. The whole point of research in
> my mind is you figure out a new way to do something, but then you
> want to go actually do something with it, not just have the
> knowledge that it's possible to do something.
>
>
> Focus and Inspiration
>
> FS: Your focus is astonishing. It seems that you're uniquely
> suited to this time and place.
>
> John: Focus is extremely useful. As far as this specific time and
> place, I do think software is an almost uniquely wonderful
> medium. But if it wasn't here, I'd be some other type of engineer
> or some kind of scientist. I could have a fine time working in
> any kind of hard science
>
> Software is so wonderful in a unique way. The people who set up
> for a physics experiment spend a year of preparation time,
> tooling around doing things. And then you spend another year
> analyzing it. With software you can have an epiphany and just sit
> down and hash it out. You can make it happen right there.  It's
> the most malleable media to be working in for any kind of
> intellectual pursuit. I do feel fortunate that I'm around in a
> time when all this is going on.
>
> I can remember again when I was a lot younger, and I didn't have
> the computer I wanted. I had this frustration. I felt like I was
> "missing it." I felt like I should be writing these games, like
> the early Apple II games. I was genuinely frustrated because I
> felt like I was missing the golden opportunity. Of course at the
> time I didn't know that I was going to come in on the "later"
> golden opportunity.
>
> You read the book "Hackers" by Steven Levy?
>
> FS: Yeah it was a great book!
>
> John: I read that a teenager. At that third section I was like
> "Goddamnit, I should be here!" Then about 10 years later, I
> thought back about it: "you know, if there was a fourth section
> in that book, maybe I would be in there!" That's a nice thought.
>
> It was just interesting to see that. I honestly thought I was
> missing my shot when I was a lot younger, like it was a golden
> age in the early development on PCs, and I was really frustrated
> that I wasn't there.
>
> FS: Do you think that it's the very act of programming and the
> very act of making your ideas into code that's inspiring for you?
> Or were there actual games that you can name that you were
> playing on the Apple II and PC early on that inspired you?
>
> John: I can name off the games that I really liked at the time,
> but programming in the abstract sense is what I really enjoy. I
> enjoy lots of different areas of it
>
> In the gaming industry, there are a lot of people that are
> specifically in it because they love games and they want to
> create things.
>
> My love for programming is a more abstract thing. I'm taking a
> great deal of enjoyment writing device drivers for Linux. I could
> also be having a good time writing a database manager or
> something because there are always interesting problems. There
> are some things that are inherently more rewarding than others.
> Graphics and games are probably the most generally rewarding area
> of programming.
>
> FS: How so?
>
> John: Because you get really nice feedback. When you write a
> graphics algorithm, it draws a picture for you. While data can be
> rewarding in its own way, in general the human species is wired
> to respond much more strongly to visual things and things that
> have to be interpreted from symbols. So there's something
> fundamental there why it's a neat thing. But we do get to work on
> a whole lot of areas. I enjoy all aspects of it, but games have
> always been one place where there are challenging things and it
> has its own reward at the end, aside from the problem itself.
>
> Early on I was really into the RPGs, like the Ultimas, the
> Wizardrys and all those things. Some of the very early games I
> wrote for the Apple II were basically Ultima ripoffs. I also
> loved all the straight arcade games, all the classic games.
>
>
> Epiphanies
>
> FS: In some ways, don't you think Dungeons and Dragons is just a
> program that you put yourself into, with words and tables, etc? A
> structure to tell stories in, like the Quake engine?
>
> John: It's a similar thing about being able to create things
> completely from scratch, a media where you don't have built-in
> limitations.
>
> In fact, the original story of Quake was supposed to be an RPG,
> well not an RPG exactly, but a fantasy game. It completely
> diverged from that because of Quake's sordid development process.
> Since then we've been much more honest about our goals from the
> beginning on what we're doing. They've been very different games
> but I've been happy with the results.  It's unlikely that we'd
> ever go and do a fantasy/role playing game type thing.
>
> FS: I've heard that you've cut back on your personal dungeon
> mastering
>
> John: Up through Wolfenstein, the entire company played every
> weekend. It tailed off basically in Doom.  We ran a couple of
> games last year just for fun. It takes so much time though. To do
> a good job you spend a day playing and a day preparing, but
> there's no way now that I can sacrifice 20% of my hours for
> anything now.
>
> FS: You have a special focus, an inspiration - how you can
> improve an algorithm or something. How often do these epiphanies
> come to you?
>
> John: Well, I think a lot of people put too much emphasis on the
> epiphanies. Epiphanies are there, you do get them where you see
> clearly into something and all that. But it really is true that
> most great works aren't a result of epiphanies, they're the
> result of lots of hard labor. That is a trap that a lot of people
> fall into where you think that the epiphany is the important
> thing. Sometimes it is, but in 95% of cases it's just a matter of
> smooth, calm integration of everything you know.
>
> It's not the one brilliant decision, it's the 500 smart decisions
> that really make things good. It's more a matter of being able to
> keep making smart decisions. Making one brilliant decision and a
> whole bunch of mediocre ones isn't as good as making a whole
> bunch of generally smart decisions throughout the whole process.
> And there's so many of them that have to be made.
>
> Even at the end of Quake 3, I had a to-do list of a thousand
> things that could potentially be improved on.  So it's a matter
> of going through and knowing all these things that could be done,
> and prioritizing what the "sweet spots" are. Like "This amount of
> effort would get this batch of things done and it would have this
> side effect." Or "it would take all day to do this thing but it
> would probably destablize something else, so I'm not going to do
> it."
>
> I definitely enjoy the epiphanies when they come - when I can be
> working on something and just realize that there's a much better
> way of doing it. That's very rewarding but I can't say that those
> happen every day. To a lesser degree, there's some insight where
> I can actually come home and tell Anna, "I figured something new
> out today!" That happens fairly often, and that's good.
>
>
> On Open Source
>
> FS: Most people would say you're one of the world's foremost
> gaming engineers. Do you think that in this world that there's
> enough of a range of tasks and depth to keep you intrigued for
> years to come?
>
> John: Sure, there are a lot of different things.  Right now, I'm
> spending more of my time in this lull or break, working on some
> things in Linux.  One of the things I've done is written two 3D
> drivers for Linux or done a good chunk of the coding on them.
> That's useful for me as a developer, because I certainly do the
> high level stuff, the API level programming, but it's also good
> to go ahead and take it underneath that.  Doing some
> implementation level stuff on the device driver down to
> programming the hardware gives me more scope, looking at things
> through the entire process. There are a lot of programmers who
> only know things from the top and don't realize why things are
> sometimes the way they are because of the structure that's
> "invisible" to them.
>
> One of the other things that I'm considering doing is (because I
> like knowing things very clearly from the highest to the lowest
> level) spending some time implementing my own network stack for
> the research and the learning experience. I've also got some
> experiments I want to try, finding out how much overhead the
> operating system actually imposes on the routing time and queuing
> things down to a serial driver level and a packet driver level.
> There's some information that I'd like to get from below the
> layers that you're normally communicating with.
>
> FS: Just in Linux or Windows and Mac also?
>
> John: Well the thing is that it's just easier to do under Linux
> because you've got the ability to take anything you want out.
> While Linux is clearly not ready for replacing Windows on
> people's desktops, there is something fundamentally cool there.
>
> The whole way I got into this is that someone had written a Linux
> driver for the Matrox cards. I had been reading about it for a
> while. Apparently they had it working barely with Quake 3. So I
> finally got around to downloading it and checking it out.  I was
> pretty impressed by how well it worked. It was slow but it was
> pretty nearly feature complete, good quality implementation. But
> there was this really obvious bug with the way textures were
> swapping. They were swapping most recently used instead of least
> recently so you'd see it thrash on the screen.
>
> I knew exactly what it was doing so I said "OK, this has the
> source code available." So I figured out how to download it, get
> access to the CVS repository and all that, worked my way through
> the code, found the bug and fixed it! That's just fundamentally
> neat.
>
> The corollary of that is that Apple had exactly that same bug in
> their driver for a while. So here we had a case of the same bug
> appearing in two drivers, but the Linux one I was able to just go
> in and fix it. While there are certainly a lot of barriers to
> entry on a lot of levels with that, it's nice to have that
> ability. Fundamentally if you know that if you're working on this
> system that's all open source, if anything annoys you enough, you
> can spend the time to go fix it yourself. You don't have to wait
> for anyone. You don't have to ask nicely for it, or wait for a
> patch.
>
> It's not usually cost effective time wise to go do it. But if
> something's really pissing you off, you just go find the code and
> fix it and that's really cool.
>
>
> More on Linux
>
> FS: So that's exactly your kind of attitude, hands on.  You don't
> wait for anyone to issue an update, you'd rather do it yourself.
>
> John: Right, so that's why if I was to be doing some networking
> research or whatever, it would be something where you could do it
> in Linux, where if you want to you can go and gut parts of the
> operating system and say "OK I'm just going to grossly cut all of
> this out right now because I want to be doing something
> experimental." There's a lot of freedom there.
>
> And I do think over the course of the next couple of years, the
> usability stuff will be straightened out.  There are a lot of
> economic trends that make it relevant. You start looking at PCs
> costing under $500 and there's a $90 Windows license in there. If
> people are just using it for the basic stuff, I think there will
> probably be a fairly significant demand for a free operating
> system.
>
> There are a lot of zealots in the Linux space that just don't
> have rationality in their viewpoints, but there is some truth
> behind the hype on how good it [Linux] actually is.
>
> FS: So you're very focused and you drive yourself. But have you
> thought about taking on a boss to help you learn new skills?
>
> John: I can see there is some benefit to having management on
> some things. We brought Graeme on at the end of Q3 to help manage
> some aspects. It didn't wind up having any real impact on the way
> I was doing things, because Graeme's not fiercely organized
> enough to stay on top of every little thing. It turns out that my
> personal organization is greater than what most managers would
> wind up imposing on me.
>
> I am aware of the limits of my personal organization skills. I
> have that list of a thousand things, and every once in a while I
> start bubble sorting things up to the top. I do think that it
> would be great if somebody were here whose primary job was to
> make sure they knew and understood all of those because everyone
> has their own weaknesses in organizational skill. You don't
> recognize yourself doing it but there are some things that you
> don't want to deal with that end up bubbling down. I recognize
> the benefit of having somebody who's kind of a conscience for you
> on the workload.
>
> Recently I put out a call for someone to be doing some
> conformance testing on the OpenGL aspects of things, specifically
> the Linux driver stuff. I'm doing a reasonable amount of coding
> on that, and I'm trying to be reasonably conscientious about it,
> but I know that I'm directing things in certain ways to meet my
> goals.  I have the ideal desire to do the perfect implementation,
> but I recognize that in my limited time I wind up directing
> myself not necessarily in the best coverage.
>
> So sometimes it is good to have someone who can sit back and be a
> conscience for your effort. But it's all still a theoretical
> issue to me. I believe that there can be benefit but I've yet to
> see it demonstrated.
>
>
> Carmack the Student
>
> FS: Less about organization then, what about a boss as a teacher?
> Is there anyone from whom you feel you could learn from?
>
> John: I actually learn things from almost anyone. This is one of
> the major differences between me as a teenager and me now. My
> views as a teenager were that "I am smarter than all these people
> around me, and therefore I will completely ignore anything that
> anyone has to say." I went through a couple semesters of college
> classes like that. I look back on it now and realize that I was
> not treating things in the right way. Yeah, maybe I was smarter
> than the professor but it didn't mean that there weren't things I
> could learn from him.
>
> The way I go about things now is that everyone I work with in the
> programming level I learn something from.  I can look at the time
> I spent with Brian Hook. I learned some better C coding standards
> and stricter use of struct and const that I wouldn't normally do.
> That's been a positive thing that I've improved on because of
> him. And then there's Graeme - I'm seeing him put some things
> together very quickly from the Java libraries - things that I
> would have rolled from scratch and taken longer to do.
>
> So it doesn't take someone that's necessarily a "better"
> developer or programmer for them to have things that you can
> learn from; that's a really important lesson that I've learned
> over the last decade. There's knowledge waiting to be gained all
> around you in just about everything. There's benefit to putting
> yourself in an information rich environment like a university IF
> you've got the right attitude. If you're looking for anything to
> be learned from anywhere you can get it, rather than looking for
> the one "motherlode" of useful information where you've got
> everything together. You have to glean things. You have to be
> able to grab things from anywhere you can get it.
>
> During the development of Quake when we hired Michael Abrash, I
> was really psyched about that because I learned a lot of my early
> PC programming skills - assembly language and graphics - from his
> articles in Dr. Dobbs. So that was really great to bring him on.
> I did pick up some further things from him but it was
> interesting?it was almost uncomfortable for a while because he
> got fairly deferential on the programming side to me about
> things. Michael knew an immense amount of stuff, but I've still
> been on this very quick learning curve.
>
> So almost all the programmers I've worked with, I've learned
> something from.
>
> FS: OK you mentioned gleaning things from the world around you.
> How about non-technical sources - recent books and movies.
>
> John: My favorite book in recent years has been A Deepness in the
> Sky by Vernor Vinge. As far as movies go, I'm not sure what I'd
> say is really inspiring. I see most of the reasonably good movies
> that come out.  Toy Story 2 was wonderful - I really enjoyed
> that.
>
> FS: The Matrix?
>
> John: Matrix was wonderful. All the great sci-fi, action movies
> and everything. I'm not too big into deep meaning movies, I go to
> movies for entertainment and a lot of that basically plays out in
> our games also. We are kinda the Arnold Schwarzenegger movie of
> computer games.
>
>
> Quake and Simplicity
>
> FS: Why do you think people like Quake 3?
>
> John: Specifically what we set out to do with Quake 3 was just a
> completely eyes-wide-open-focus on the game just being fun while
> you're playing it. There's no sense of hubris about the grand
> design or anything about it, or trying to impose a story or a
> tale on top of all this. It's looking at a game in it's
> fundamental sense of what you're doing has to be fun.  It's not a
> matter of beating the game into submission or accomplishing
> something, the actions have to be fun.
>
> There has to be something that you wanna just go out and do.
> People don't play softball because they want to beat the game of
> softball; it has to be an action that's fun by itself. I think
> that we succeeded in a lot of ways there. We expected and did
> receive a lot of feedback from the incestuous core of our
> fanbase.
>
> There certainly are people who want more and more complexity and
> sophistication in things. That is a viable direction to go for
> games, but it does lead towards a stagnant core. You get like
> what you have in the flight simulators, where you have games that
> require you to read this giant manual before you can get in and
> have fun. There have been flight simulators where you just jump
> in, fly around and shoot things, and those are fun and
> interesting. Then there are these serious simulators where you
> have to convince yourself that you're being entertained.
>
> It's possible to do a first person shooter like that, where it
> requires so much knowledge about what's going on, how things are
> supposed to work, strategies of all of these things, that it's
> just not fun to sit down and play. And there would be probably a
> couple of hundred thousand people that would like that, but I
> wouldn't actually be one of them. I don't have the time to sit
> down and learn it. I never got into any of the complex mods that
> would require like a whole bunch of complex stuff to learn. I
> still like playing a simple, fast game, where you jump in and
> have a good time, and I think there are five times as many people
> in the game buying world that also feel that way. But those
> 200,000 people that want the extremely sophisticated, complex
> games, they've got my email address and they make themselves
> known. We set out expecting that.
>
> FS: So what was the last non-id game that you spent more than 2
> hours playing?
>
> John: Probably F-Zero X on the Nintendo 64 - racing cars.
>
> FS: have you ever thought of making a driving game?
>
> John: We talked about it right after Wolfenstein. I was working
> with some voxel-landfield technology and we did a really brief
> demo of a little car driving thing. But we've never taken
> anything close enough to proof of concept. But if we did do a
> driving game, it would almost certainly be in the fun genre, like
> the F-Zero games, rather than the really serious driving
> simulations. And again, there are many valid paths to games, but
> I have my personal biases, and they happen to be broadly held
> enough that we can do successful games and still be doing games
> that I consider entertaining for me.
>
> This concludes the first half of our John Carmack interview -
> please come back to Firingsquad on Wednesday when we post the
> last half. There, John talks about his research, and gives some
> details on id software's future direction.

--
Gerald Oskoboiny <[email protected]>
http://impressive.net/people/gerald/

HURL: fogo mailing list archives, maintained by Gerald Oskoboiny