Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
John Carmack Archive – Interviews [pdf] (fabiensanglard.net)
240 points by Arjuna on June 29, 2017 | hide | past | favorite | 61 comments


I found these insights interesting:

"I know that most people won't believe it, but a 100x increase in income really didn't have that big of an impact on me as a person. It is certainly nice to be in a position where people can't exert any leverage on you, but it's definitely not the primary focus of my life. I get to drive a Ferrari in to work, but my day to day life is almost exactly the same as it was eight years ago. I get up, go in to work, hopefully do some good stuff, then go home. I'm still happy." [1]

[...]

"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." [2]

[1] Page 77

[2] Page 89


David Kushner's excellent book "Masters of Doom" certainly paints a picture of Carmack being mainly interested in solving problems above everything else. Made me think of this passage from the beginning of chapter 4 (before becoming rich, when they were just starting up id Software):

> Carmack was of the moment. His ruling force was focus. Time existed for him not in some promising future or sentimental past but in the present condition, the intricate web ol problems and solutions, imagination and code. He kept nothing from the past–no pictures, no records, no games, no computer disks. He didn’t even save copies of his first games, Wraith and Shadowforge. There was no yearbook to remind of his time at school, no magazine copies of his early publications. He kept nothing but what he needed at the time. His bedroom consisted of a lamp, a pillow, a blanket, and a stack of books. There was no mattress. All he brought with him from home was a cat named Mitzi (a gift from his stepfamily) with a mean streak and a reckless bladder.

Eleven years later, in Time in 2001, commenting on the infamous split with John Romero:

> John Carmack doesn't disagree with Romero's description of their clashing priorities. "I'm doing what I want to do now, and it happens to be making us millions of dollars," he told TIME last week, in one of his first public comments on the split with his former partner. Carmack doesn't want to grow id into a big company. "There's only so many Ferraris I want to own," he says. But he takes issue with Romero's version of their breakup. "John's a good designer, and he's got artistic talent. But the fact is that after he got rich and famous, the push to work just wasn't there anymore." Romero didn't quit last fall, says Carmack. "He was handed his resignation." [0]

[0] http://content.time.com/time/magazine/article/0,9171,137916,...


Masters of Doom is a great book. It's an easy and enjoyable read.


I liked this gamedev-specific insight:

"It is also a mistake to think that Id’s games ride on technology alone. DOOM and Quake aren’t just the minimum work required to make a 3d and networking engine a game – they are the right game elements as well."

This can't be overstated. Minecraft was successful because it was a fun game, not just because it was new technology. (And say what you will about the implementation, but voxels were extremely rare until Minecraft.)

The key is to find a good game designer, or to become one yourself. Then defer to them on every aspect of the game. Even if you disagree with it, trust them. They're in charge of making it fun.


Voxels may be uncommon, but they still weren't new. There's nothing technologically new in Minecraft. And that's fine.


There's relatively little that's truly new in Minecraft. Both the voxel aesthetic and many aspects of the world and gameplay come from its beginnings as an Infiniminer clone. Notch 'just' made the right adjustments to the formula and then nailed the execution.


Same for Quake. BSP tech came from the field of medicine, for example, and rasterization wasn't new. Quake just did it so much better than anyone else, along with a fun game. As with Minecraft.


BSPs weren't new to the Quake engine (Doom had them). Gouraud shading, lighting, and TCP/IP multiplayer are what made Quake revolutionary for the PC. These things existed on SGIs costing $100k for years before too. The optimizations to make this on a PC is why Carmack is genius.


Not to be pedantic but TCP or UDP? I always thought games preferred UDP as it's much more efficient if you don't care about a fraction of the packages being dropped?


A quick glance at the source @ https://github.com/id-Software/Quake shows some support for both - although I'm seeing more stuff hardcoded to UDP than not. Despite this, amusingly, "TCP" has more search hits than "UDP", due to the frequency of the same 'mistake' as the parent comment, so they're in good company ;) (Other terms to search: "DGRAM", "STREAM".)

UDP's main advantage is the ability to process out-of-order - by sending duplicate state (actually more wasteful in terms of raw bandwidth!) or allowing for a lossy stream of data, your latency won't spike (as much) waiting for previous packets to be retransmitted. This isn't so much about efficiency per se, so much as it is about minimizing response time (even if it is potentially more bandwidth, potentially more CPU, more code, etc.) which matters a lot for some twitchy competitive games.

It's also not going to have any real impact if you're not dropping packets, nor if you're building your own reliable in-order channels atop that (which even the twitchiest game will likely have for some things if they're not using TCP as well - things like in game chat, leaderboards, matchmaking info, telemetry, etc. - a large number of which might use a full HTTP stack these days, if only under the hood of some official SDK, because why not use the same leaderboard server for your game clients and your website?)

And there's the occasional router (edit: or firewall, or other network appliance) that's so terrible, it manages to ship without a properly tested UDP stack, so a full blown TCP fallback isn't the worst idea ever.

TL;DR: Heckin' trade-offs.


IIRC Quake was UDP and sent delta-compressed states of everything up to the last acknowledged receipt. This allowed for dropped packets to not matter as the next packet would have the info missed in the previous, and the game could "catch up".

So you would have something like:

Server: state1

Server: state1,state2

Client: ackstate1

Server: state2,state3

And so on.


I think you're describing the Quake 3 network architecture: http://trac.bookofhook.com/bookofhook/trac.cgi/wiki/Quake3Ne...

It's good design, and helped catapult Quake 3 into $billions of revenue. No one had done it quite that way before Carmack. That was long after Quake, however.


> And say what you will about the implementation, but voxels were extremely rare until Minecraft.

NovaLogic games used them from 1992 on. Minecraft's gameplay may have been novel, use of voxels in a game was not.


Working in the "trenches" where you direct your own work and have $1B in the bank isn't exactly the same as working in the "trenches" under the direction of those disconnected managers that have all this leverage on you. Good engineers, who should not be going into management, are doing so because it's their only way out of the trenches. Founders get a choice between becoming managers or letting someone else run their company. Can you manage a tech company without understanding technology?

How come we're not innovating more on the structure of those companies?


>Can you manage a tech company without understanding technology?

Yes. You just need to understand people, markets, and processes.

Any deep technology insight will be irrelevant -- the right advisors from your stuff (which you'll know who they are, since, as we said above, you can understand people -- including when they are full of shit or not), can explain it to you "like you are five".

Taleb makes a similar point described here that extends beyond the domains in the story:

One of the most successful traders to ever buy and sell green lumber – which is freshly cut wood – actually had no idea what he was trading. He spent his entire career trading green lumber career believing the product was just wood painted green, and not newly cut trees. His ignorance of the product had no impact on his ability to make money trading it. The term “Green Lumber Fallacy” was coined by Nassim Nicholas Taleb in his excellent book ‘Antifragile’, where he outlined a second similar situation: a star Swiss Franc trader who’s inability to locate Switzerland on the map didn’t hinder his ability to make money trading its currency.

https://www.pinnacle.com/en/betting-articles/betting-psychol...


There's a flipside to this though - this is how you get shit and useless products. What you (or Taleb) are describing here is a money-making specialist. A person who can play the market and management game well. That's almost entirely orthogonal to creating the best product, or doing something valuable for society.

The argument I'm trying to make here is very similar to the one about MBAs ruining companies. You get people who can play the market game so well their incentives get completely misaligned with what the rest of the company would like (and what the customers would like).

And in general - as a society we like free markets and competitions because they're supposed to give us a spectrum of products, from cheap but good enough to expensive and high quality, in an efficient way. But people who are too good at optimizing for the way markets work can make money without giving us the result we expect, thus ruining the very reason we want capitalist economy.


Well, you present a bit of a false choice here. Carmack's choice was "Never grow the company to the point where you need managers"

Turns out, it was a perfectly valid choice for him, but it means you have to be incredibly talented, and so does everyone you hire.


>Can you manage a tech company without understanding technology?

Definately. Most managers pride themselves in that they can manage anything. The usual bad results, when that happens in an non-production company, are not mentioned.

>How come we're not innovating more on the structure of those companies?

Inovating on human nature, usually results in delusions and hatred on other humans, resulting in murderous cults and political movements. But dont you worry, funny experiments happen all three generations, and then never again.

Leviathancybernetics is complicated, and the resulting, highly innovation producing constructs would be described by most people here as a pit of missery.

And lets not forget, funny games with human nature are also highly dependent on a constant economic surplus. We do not behave rational when times get tough. (Although we constant claim to be).

Humanity is no plane- humanity is a supertanker, with a very huge turn circle and lots of fragile components. Whoever wants to manipulate this- good luck.


> How come we're not innovating more on the structure of those companies?

There have been tons of research and it is still ongoing. Just check the "management" department in your library. Companies around the world are permanently trying new ways to organize themselves but you don't get as many "we tried $foo, it fails" blog posts you get from the IT scene, where post mortems for even the most trivial failures are currently en vogue. But if you ask any manager s/he will volunteer stories, usually quite happy to be asked an abstract question in their area of expertise.


> Can you manage a tech company without understanding technology?

I sometimes wonder if show runners would be a better fit for managing IT projects than traditional managers. It would seem someone who has dealt with FX and other creative elements on a budget and timeline might be better qualified since they probably don't have an in depth knowledge of every aspect but are able to ship.


> How come we're not innovating more on the structure of those companies?

We are, but probably not in the way you'd like.

It all boils down to the fact that the strongest influence on a company comes from the market. So whatever innovation happens, it's shaped by the market forces. As it is, it turns out the market will allow almost any shit to fly within the company, as long as the sales & marketing team is doing their job. Hence crappy products can get made and workers can be unhappy, while the company can still succeed.


> really didn't have that big of an impact on me as a person

This is because he was anyway doing what he was most interested and was paid for it.

Others might have some boring CRUD jobs and want to "get rich" in order to be able to do what they are interested, e.g. research in type theory, without sacrificing income.


A very relevant rebuttal from page 91/92:

>Because you get really nice feedback. When you write a graphics algorithm, it draws a picture for you. While data can be re- warding in its own way, in general the human species is wired to re- spond 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.


He also got rich very young.

You don't really need to earn all that much money to have "enough" as a humble, single 20-something guy:

I remember crunching my expenses in a spreadsheet around 2010 (before I got married and started a family) and coming up with average expenditures of €1200 per month.

He may have simply already been past that threshold before getting the 100x income bump.


>At the same time most of the people they are managing are nowhere near as good as they were at doing the actual work.

A manager who is skilled enough to do everything himself better than his subordinates is worth his weight in gold. His influence on the outcome of the entire project is much greater than if he was a single engineer working hard.


That's my theory too and I'm banking on it as my career moves from 10 years of development and design work to management.


At the same time most of the people they are managing are nowhere near as good as they were at doing the actual work

While I'm good at what I do, I wouldn't class myself as an "incredible engineer." But as a manager, I encounter this frustration all the time. Sometimes, I want to scream "that shouldn't take all day: I could do it in 20 minutes."

But I have to stop, take a deep breath, and use it as a teaching moment. "Can you give me a breakdown for all of those tasks individually so we can see if there's a possibility to reduce scope and bring the time in?" becomes the more polite way to phrase what I'm thinking.

It's a variation of having to remind my developers that we're here to make the customer's life better; not to make their jobs easier.


You probably couldn't do it in 20 minutes.


I liked this:

CARMACK: - The intersection of people that run Quake on Linux, SPARC and Light is probably a dozen people. But if it's just a matter of compiling, we'll do it anyway.

HOOK: -And we do this, not because it makes any particularly good business sense, but because it's cool. All this is an ego thing. The more platforms you port to, the more people are playing your game. And its a cool thing that someone can say: "Yeah, I was playing Quake 2 on a SPARC Linux Box."

CARMACK: - It doesn't make good business case, but it helps us to be better programmers.


The DRM-free "Masters of Doom" audiobook is currently (expires July 10-ish) included in the "Hackers, Gamers & Geeks" Humble Books Bundle for $15, along with a bunch of other video game history audiobooks, including "Prepare to Meet Thy Doom: And More True Gaming Stories" also by by David Kushner at the $8 level.

https://www.humblebundle.com/books/hackers-gamers-geeks-audi...


Offtopic: this is the first time I've seen geoblocking on Humble Bundle which is really sad.

"We're sorry, but these titles are not available in your region: To Pixar and Beyond: My Unlikely Journey with Steve Jobs to Make Entertainment History and Ultimate History of Video Games: From Pong to Pokemon."


Damn. Really wish these had eBooks as well. Podcasts/audiobooks are really tough for me to get into. I cannot process spoken word nearly as well as the written one, and I get far too easily distracted when trying to listen to audiobooks.

Still might buy it since Kushner's new MoD book seems to be audio only from what I can see.


Erm, there's a printed version: http://amzn.to/2tkRUI4


Thank you - I know it's possible to strip the DRM from Kindle/Audible titles but I like to support uncorrupted files where possible.


Thanks for the reminder!


Great book!


Actual link: http://fd.fabiensanglard.net/doom3/pdfs/johnc-interviews.pdf...

And it's press interviewing Carmack, not job interviews conducted by him.


> As far as unreal goes, we can’t compete with an unreleased product, because a non existent product does everything you dream of and has no faults

Oh, Star Citizen...


This is what Quake looks like today:

https://twitter.com/SimsOCallaghan/status/875934261320220672

(Yes, it is Quake1 in a modified OGL engine)


> John Carmack: You wind up getting this sense of partisanship or just taking sides. It’s human nature, I suppose, but when it gets away from a strict technical discussion, then you start getting your ”army of followers.” I suppose that’s part of having influence, but it’s not a part that I’m particularly comfortable with.

This is so pervasive (politics, technology) and damaging (less so in technical world but there's still the price of stunted intelligence to pay) that I wish along with me more people in the world would read this and pledge to making every discussion interesting and productive.


Why do you believe its less in the technical world?


One (not necessarily me) could argue that there is (or, at least, ought to be if people took their egos out of it) usually a clear and objective way to resolve technical disputes, while the same is not at all true of (parent comment's other example) political disputes.


I think that in-spite of being programmers, we've deluded ourselves into believing that we can be hyper objective. The practical human factors IMHO, always overpower theoretical technical decisions, and bring you back into the realm of politics/social issues. But that is a very large topic for discussion and comments won't do it justice.


I meant from a what do we have to lose standpoint - good tech loses, bad wins it's liveable. Politics on the other hand, if bad ideas win real people and sometimes entire nations end up getting hurt or are put at a long lasting disadvantage.


Ah okay. Hmm.. but OTOH, lot of programmers have (knowingly and unknowingly) aided surveillance/weapons programs, that have caused damage, though ofcource, I will concede that its not the same as putting a dictator in power.


If you have helped develop surveillance technology used by dictors you are at the very least complicit in the dictatorship in return for profit.


How professional game developers, like Carmack with his OpenGL love, actually see the whole relevance of graphic APIs.

"John Carmack: Its still OpenGL, although we obviously use a D3D-ish API [on the Xbox 360], and CG on the PS3. Its interesting how little of the technology cares what API you're using and what generation of the technology you're on. You've got a small handful of files that care about what API they're on, and millions of lines of code that are agnostic to the platform that they're on."


While not directly linked, this video (https://www.youtube.com/watch?v=OipJYWhMi3k) about Quake got my attention last night and I found it riveting regarding its technical aspects, development history, and cultural impact.


John Carmack was my programming god, back in the day. I would devour everything he wrote, which if I remember correctly, was on Usenet, but I'm so old my memory fails me now. Recently I found out that one of my friends was working with him at Oculus via Facebook, I was jealous beyond belief.


Carmack on Java: "I like the language"

Your move, language hipsters.


As a dev that moved into a sysadmin role who has to deploy stuff from our Java and C++ devs. As dev I used to like the language itself, but not the frameworks.

These days I seriously dislike the runtime with all it's tuning it requires, memory bloat, ... The absolute worst however is most Java developer's complete disconnect with and ignorance of the actual deployment environment/target. I actually kept a score-count for a while for "the server is not configured correctly, it works on my laptop" actually being true and not a developer error. Was asked to remove the sign though since 'it didn't improve the working atmosphere'.

A few pointers for Java devs: please don't use hard-coded paths, certainly when you develop on windows and I need to deploy it on a *nix system, Java will not automagically fix that because it's supposed to be 'multi-platform'. No, XML files are not 'easy' or 'practical' to configure stuff, and I certainly don't want to use java cli tools to manipulate them. Oh and don't rewrite your base config files when some misc hardly documented API was used to deploy some application in your web framework. I don't like it that it removes every single comment from that file, and my config management has to do a lot of hacky ugly stuff so it doesn't treat that as a config change from it's pov. Also, I don't 'just' want to use java library org.X.Y to talk to that hardly documented deployment API. No the database isn't slow because it's misconfigured or doesn't have enough resources, it's because some framework you use to access the database generates a monstrous 30-page SQL query with a few hundred JOINS. Oh and please stop using SOAP when you expect me to talk to it.

I can keep on going - this goes on for a while, and that's only partially the language's fault - but sadly, the stdlib and community encourages some of that undesired behavior. You can however write pretty clean and nice stuff when avoiding large enterpricy frameworks with all the FactoryFactoryFactoryFactoryFactoryFactories where XML is king, but in reality, most Java projects end up using them.


The language has its pros and cons, but for me the issue is the culture, I'm not sure I'll get over my 00's experience nightmare of being handed specs or UML diagrams by Information Systems "Architects" who never wrote a line.


It sounds like he is a development machine, in a good sense. I wonder if he has ever blocks, like mental or creativity ...


Has it really been ~9 years since Carmack did a technical/game dev type of interview?

Time is just flying past...


Drinking game time. A shot for every "when it's done."


and one for every time you suspect johnc said "Ayum" while thinking


Team5150 the old Tribes clan?


Gold+. Thx for posting.


Url changed from https://twitter.com/ID_AA_Carmack/status/880204928811126784, which points to this.


[PDF] decorator would be appreciated.


Ah yes, added. Thanks.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: