John D. Carmack

American computer programmer and video game developer
(Redirected from John Carmack)

John D. Carmack II (born August 20, 1970) is an American computer programmer and video game developer. He co-founded the video game company id Software and was the lead programmer of its 1990s games Commander Keen, Wolfenstein 3D, Doom, Quake, and their sequels. Carmack made innovations in 3D computer graphics, such as his Carmack's Reverse algorithm for shadow volumes. In 2013, he resigned from id to work full-time at Oculus VR, where he served as CTO and later Consulting CTO in 2019.

John D. Carmack in 2006

Quotes

edit
  • I think a lot of people may take some heart from this: a lot of the math, the heavy math in projective geometry, [...] took me a long time. There were many many years, a decade, when I was considered this graphics guru genius, when I really couldn't do from scratch [...] the mathematics that underpins a lot of that. But slowly, eventually, with a couple decades of experience, most of it did eventually sink in on me.
    • Speaking about mathematics in engineering, Quoted in [1]
  • Everything is an interpolation problem if you have enough data
    • Speaking about artificial general intelligence, quoted in [2]
  • In the information age, the barriers [to entry into programming] just aren't there. The barriers are self imposed. If you want to set off and go develop some grand new thing, you don't need millions of dollars of capitalization. You need enough pizza and Diet Coke to stick in your refrigerator, a cheap PC to work on, and the dedication to go through with it. We slept on floors. We waded across rivers.
  • These are things I find enchanting and miraculous. I don’t have to be at the Grand Canyon to appreciate the way the world works, I can see that in reflections of light in my bathroom."
    • Referring to how he, after many years immersed in the science of graphics, had gained a stronger appreciation of the real world instead of getting detached from it, as he would see a few bars of light on the wall and think, Hey, that’s a diffuse specular reflection from the overhead lights reflected off the faucet, Quoted in David Kushner, Masters of Doom: How Two Guys Created an Empire and Transformed Pop Culture Epilogue, p. 234.
  • Nvidia's OpenGL drivers are my 'gold standard', and it has been quite a while since I have had to report a problem to them, and even their brand new extensions work as documented the first time I try them. When I have a problem on an Nvidia, I assume that it is my fault. With anyone else's drivers, I assume it is their fault.
  • It's a good thing Doom 3 is selling very well...
  • [A]t its best, entertainment is going to be a subjective thing that can't win for everyone, while at worst, a particular game just becomes a random symbol for petty tribal behavior.
  • Personally, I’ve always been of the sleek and minimalist design school: make sure the core play is consistent and strong, then let that idea play out against different environments and challenges, this tends toward focusing on bio-mechanical twitch responses, audio-visual awe, and leaning more toward general strategy and tactics development over specific puzzle solving.
  • Sharing the code just seems like The Right Thing to Do, it costs us rather little, but it benefits a lot of people in sometimes very significant ways. There are many university research projects, proof of concept publisher demos, and new platform test beds that have leveraged the code. Free software that people value adds wealth to the world.
  • Advances in technology won’t be as significant as they have been in the past, most games won’t be materially improved by simulating every drop of water in the pond you are wading through. More resources can be profitably spent to make the creation process easier. How things will play out with respect to connectivity and where the data resides and processing takes place is still a very interesting question. The overlap and convergence between desktop computers, consoles, laptops, handheld gaming devices, and cell phones is also interesting. It is all still quite exciting.
  • Helping people directly can be a noble thing. Forcing other people to do it with great inefficiency? Not so much. There isn’t a single thing that I would petition the federal government to add to its task list, and I would ask that it stop doing the majority of the things that it is currently doing. My vote is going to the candidates that at least vector in that direction.
  • The Escalation programmers come from a completely different background, and the codebase is all STL this, boost that, fill-up-the-property list, dispatch the event, and delegate that. I had been harboring some suspicions that our big codebases might benefit from the application of some more of the various “modern” C++ design patterns, despite seeing other large game codebases suffer under them. I have since recanted that suspicion.
  • A large fraction of the flaws in software development are due to programmers not fully understanding all the possible states their code may execute in.
  • I was sort of an amoral little jerk when I was young. I was arrogant about being smarter than other people, but unhappy that I wasn't able to spend all my time doing what I wanted. I spent a year in a juvenile home for a first offense after an evaluation by a psychologist went very badly.
  • Programming in the abstract sense is what I really enjoy. I enjoy lots of different areas of it... 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.
  • The idea that I can be presented with a problem, set out to logically solve it with the tools at hand, and wind up with a program that could not be legally used because someone else followed the same logical steps some years ago and filed for a patent on it is horrifying.
  • Focused, hard work is the real key to success. Keep your eyes on the goal, and just keep taking the next step towards completing it. If you aren't sure which way to do something, do it both ways and see which works better.
  • Because of the nature of Moore's law, anything that an extremely clever graphics programmer can do at one point can be replicated by a merely competent programmer some number of years later.
  • This is a bit more expensive than my previous turbo-Ferrari habit, but not too bad.
  • The biggest problem is that Java is really slow. On a pure cpu / memory / display / communications level, most modern cell phones should be considerably better gaming platforms than a Game Boy Advanced. With Java, on most phones you are left with about the CPU power of an original 4.77 mhz IBM PC, and lousy control over everything.
  • Honestly, I spend very little time thinking about past events, and I certainly don't have them ranked in any way. I look back and think that I have done a lot of good work over the years, but I am much more excited about what the future holds.
  • I’m going to turn on every damn light in protest of Earth Hour. Lighting the darkness is fundamental to humanity's climb.
  • I do hear sometimes from programmers who are kind of sad that they don't have the opportunity to write game engines from scratch like I did and have it matter or make an impact...here's where some perspective really helps - I can remember when I was a teenager, I thought I had missed the Golden Age of 8-bit Apple 2 gaming, that I was never going to be Richard Garriott...time went by, and I got to make my own marks in things after that. And, in that time, I also see so many opportunities that have come by. The 90s PC wave was great - I was happy to be there, and I'm glad I took a swing and knocked one out of the park with that. But since then, we've seen mobile games, and web games, and free-to-play games, the Steam revolution...and now virtual reality. And all of these are amazing! So, yeah, the opportunities that I had aren't there for people today - but there are new and better ones. And personally, I'm more excited about these than anything that's come before. So, thank you very much for this honor, but I'm just getting started.
  • It is hard for less experienced developers to appreciate how rarely architecting for future requirements / applications turns out net-positive.

See also

edit
edit
 
Wikipedia
Wikipedia has an article about: