I've been trying to listen to the whole thing (it's 5 hours!), and there are some really interesting moments. Albeit, a bit too much talk on old video games that aren't from my generation, but I'm sure this will be interesting to some people to.
What I found interesting:
* he has insane hours and has never burnt out. He says that if you want to achieve big things in your life, you need to work a lot. He also says that as long as he's working, and making progress (and he always makes progress when he keeps trying, reminds me of Linus), then he can withstand his hours and pressure.
* he learns a lot through reading computer science books
* he is really big on simplicity, seems to appreciate Golang and its design, and he's not into metaprogramming on C++. I really like that he's focused on building things that work, and can be maintained, and not that interested in theory and advanced concepts that don't seem to bring him much. He also says he spent some time on the functional side, and that probably made him a better programmer, but he's back doing C++.
* he talks about the sort of hacking community he felt part of, where you just wrote code and shared it and reused other people's code. It really feels like open source is something else, made me feel bad about all these patents, and weird licenses (even Apache 2 or MIT) and academic people whining about credits. Wish we could just share and use whatever and be happy with it :(
* Agree with him, VSCode is THE IDE. It's much better than emacs IMO (I've tried using vim many times but couldn't).
* 8-9 diet cokes a day. Holy fuck. That's a lot of caffein (and I'm guessing not good for the teeth)
I listened to the first two hours on a train yesterday. I'll likely finish it later.
The discussion about tools and languages was particularly interesting. You might expect John Carmack to be pretty old school and dogmatic on using e.g. C and instead it seems he has a very broad taste and experience with different languages and tools. Just a very pragmatic person that switches between doing C, python, Go and other languages. For someone that is into hyper efficient graphics code, admitting that for the vast majority of code, using a garbage collector is perfectly fine is IMHO a very pragmatic and mature attitude. He doesn't have to prove anything to anyone anymore on that front of course.
VS Code is indeed a very popular IDE. The Jetbrains ecosystem is also pretty interesting. I found his comments on debuggers to be pretty striking. GDB is so hard to use that programmers avoid using it. Having a proper debugging UI changes that. He was talking about how he just runs most things in the debugger by default to see if things work as he expects.
In the same way having static code analyzers tell you that, no, actually your code wasn't perfect and is full of little time-bombs that could go off at any moment is a great argument against just pretending you are Buddhist monk that only requires a pen and paper to produce perfect code. Exaggerating here of course but I know some people and that on purpose avoid using, or even learning about tools that would allow them to be more productive and better engineers.
There really is a learning curve to using these tools, and the investment might not be worth it. I use GDB so unfrequently that I have to re-learn it every time I want to do something. Coupled with the fact that it's not integrated with the language (I can't run `cargo debug` or `cargo gdb` or something) and not the default on Mac (why should I relearn lldb), I end up just printing stuff instead of using it.
I don't know; I'm only a few years younger than John Carmack. IDEs with decent debuggers were a thing from the mid nineteen eighties already. They were widely used and you can learn to work with them in a few afternoons. And decent IDEs are available for many languages. Including Rust, C, and C++, etc. Also on macs.
Not using tools that are there is a choice that a lot of people seem to insist they need to make. I've heard all the excuses on this front and it usually boils down to people believing in their super skills, discipline, and intelligence to the extent that they believe they don't need those tools. Some people actually feel threatened by a tool telling them they are doing stuff wrong. They get annoyed and frustrated by that. It's irrational.
> You might expect John Carmack to be pretty old school and dogmatic on using e.g. C and instead it seems he has a very broad taste and experience with different languages and tools.
He has been using various programming languages for a long time. Basic, assembly, (turbo) pascal, etc. In my experience most old school dogmatic C programmers started with C and never even tried to use any other programming language halfway seriously.
He especially gives a lot of praise to Borland for making turbo pascal and how far ahead it was of its competition back in the day when it comes to developer tooling (IDE, debugger, etc)
About GDB:
I really like using KDevelop on linux, and they have a pretty good GDB front-end built in. It's pretty similar to VS debugger, with a panel showing local variables and their values, etc. It's definitely not as full featured as VS, and IIRC there was some instability, but if you're on linux and using C or C++ I highly recommend trying it.
He's previously done one of the fairest analyses of the state of functional programming (specifically Haskell) and its pros/cons particularly with respect to building games I've seen as well. It's very refreshing.
Not the worst comparison. VS has enough years of cruft and legacy options that it is one of the more complex software you will ever use as a dev and with the right extension, Code could fly ;)
Yeah, he meant VS. He even mentioned using an older version (6) as it is much faster on modern computers. Maybe he was referring to a friend of his, I don’t remember.
Most Windows programmers I know (not a lot) use VS for the ease of integration with all things .NET and Microsoft.
He doesn't use VS6 himself, he was most likely referring to Sean Barrett (aka "nothings") who worked on the original Thief as well as at RAD Game Tools and made the stb_ single header libraries. He has mentioned several times that he sticks with VC6 since he prefers the UX it has.
Yeah when he said this it I couldn't help but think of Sean Barrett/nothings.org coding videos. I was always shocked by people using VS6 post 2003 but it provides 50-75% of what people want from an ide these days. (A big proponent is inline debugging as mentioned) but I don't recall intellisense on this version, only keyword colouring and non trivial header exploration... Makes everything look bearable these days (even if run from a browser UI)
It's probably due to optimizations in high level code rather than the 32/64-bit aspect, but I'm just guessing. (To get that level of slowness you really have to fuck up at a higher level.)
VS seems to be a WPF app nowadays, so I assume the UI is written in C#.
On the subject of books, there's an advisory email Carmack wrote to a kid years ago, telling him that his methods may be outdated compared to the modern advances in learning, but when he studied books he would read multiple resources describing the same thing because sometimes one resource may not transmitting information in a way that clicks to him.
I remember how insane it sounded to me that someone as talented as Carmack would look up for a second or a third resource describing a concept just because he couldn't clearly understand it on first try because, contrast to how we react when a student fails to grasp pointers. Our kneejerk reaction to someone not understanding a concept on first try would be "You want to re-read that again? Guess you're not talented. And you keep making mistakes after an hour? Sigh you're a lost case".
And here you have literally Carmack himself not caring how many books he has to reference, because all that it matters is that it will eventually click, he will own it, he will make progress and that's all that matters.
I think that a lot of technical books are written from the perspective of already knowing the material or expecting a particular learning path. A lot of important details or framing get left out. The technique of reading multiple sources is very clever because it can fill in these defects - I think I might have subconsciously done this in the past and not fully realized why it worked.
Is it still true today? I don't really do C++ so I have no use for VS, but I have a hard time imagining not having access to everything to do C++ dev with VSCode
I think the point he made was rather the opposite. He works 10-12 hours a day, 60 hours a week, 6 days a week. He needs seven to eight hours of sleep, like a normal person. He specifically mentioned that he never was much into doing all-nighters and that he experimented with working different times of the day. So he'd start in the afternoon and then continue until deep in the night when he was younger whereas having kids and a family caused him to shift to having an early start instead and run a more normal schedule.
That sounds like an intense schedule for sure but not really that insane. He's not super human and just staying in shape, and well rested is what has allowed him to do this for decades on end. Work life balance and taking care of his family is just part of that deal as well.
I notice that the quality of my own work is simply much better when I'm well rested and that beyond a certain point, the most productive thing is for me to simply take some rest or do something non work related. The rare case that I need to work on something late, I pay the price the next few days. It all averages out in the end in terms of productivity.
Grinding away at a problem for hours is simply draining. Often those problems melt away the next morning after I sleep a bit. Your brain doesn't stop working when you do. The hard work is immersing yourself in the problem and absorbing all its facets and then calmly reflecting on all the assumptions you are making. Generally, if you are stuck you need to find out which of your assumptions it is that is wrong. I've woken up with fully formed solutions in my head for seemingly unsolvable issues or bugs that I fought with the previous day so often that I actually rely on this happening a lot these days. So, I generally stop working around 6-7 pm and I'll park harder issues until I'm well rested in the morning or after a weekend.
I don't work on the weekend. The weekend is for resetting my brain. Just as important as sleep is. The most productive use of that time is allowing that brain reset to happen. Getting frustrated and stressed is counter productive. It leads to poor sleeping patterns and stuff just piles up. Take a break, relax.
> That sounds like an intense schedule for sure but not really that insane
I'm not sure what disqualifies that as insane, but it pretty much precludes any social life. I'm on-and-off doing these kind of hours (sometimes work takes over life, sometimes life takes over work), but when I do these kind of hours even when I'm not working my brain is still thinking about work. I can't imagine doing this for decades at a time, this is truly a life dedicated to work. But I agree that you can't achieve great things without sacrificing your life.
> He works 10-12 hours a day, 60 hours a week, 6 days a week
> Work life balance and taking care of his family is just part of that deal as well.
I don't judge anyone for how they like to spend their time (and certainly admire Carmack), but what work/life balance? There isn't much except work there.
If you can eliminate the average 90 minutes a day commuting Americans do, along with the average 20 hours a week spent cooking and cleaning et cetera by hiring people to do that for you, a rich person can have more life working 60 hours a week than a poor person has working 40.
Carmack is a high level martial artist. That would have required a significant time commitment.
> Carmack is a high level martial artist. That would have required a significant time commitment.
Interestingly, it might not be the that significant of a commitment in terms of raw hours although it certainly is in terms of consistency and persistence. Quick googling reveals that it might take around 2500 training hours to get to BJJ black belt (I guess if you're pretty talented). Over 10-year period, that's just under 5 hours/week. And BJJ black belt is a pretty big deal.
I think I got my jiu jitsu black belt with about 2,500 hours on the mat, say 5 hours a week on average for 52 weeks for 10 years.
With a more effective teaching model, I believe one could achieve the proficiency needed for a black belt in 2/3 of the time. However, this does not mean becoming a name on the world stage, for which much more talent and possibly more hours of practice are needed: talent saves many hours of practice that are instead needed by less talented practitioners, assuming that the latter can reach the level of talented people even in the limit of infinite time and youth.
That binary classification doesn't make much sense. What amount of work? I'm pretty sure many people would willingly work 10-15 hours/week (or 24/32/whatever) even if they didn't have to, but not necessarily 40.
How is it possible that Alexander Grothendieck was able to work for 12 hours everyday for many years, same with Nikola Tesla studying for almost 20 hours while in the University and also Newton Comes to mind ..how did these men do it if I may ask?
I read Carmack post in Hackernews before. He mentioned that he didn't perform deep work for 12 hours. Within that 12 hours, he will perform maintenance work as well
Many if not most productive academics have such insane schedules. They’re not necessarily asocial. I think the important distinction is in what I’d call “bullshit socializing.” A lot of what regular people do in the name of socializing is probably not helping them in any way. Academics get trained to not need this to relax necessarily.
I did my PhD in a lab that demanded it: we were expected to put 6 days, 12 hours a day. It’s possible for maybe 30% of population maybe? Especially if you’re privileged and don’t have to worry about other things in life (like kids, parents, money, physical health, chronic issues, mental health, etc). So in some ways the ability to train and be able to adopt this more “productive” life is a bit exclusionary and even discriminatory. In the end I chose not to continue in academia primarily because of this demand, I just didn’t feel like it was worth it.
Now I’m in tech and I do get bored, but happy that I have the choice to set my hours.
You say it but I argue otherwise. I am not saying don’t socialize, but think hard about what you get from many of those events. You’re drunk off your mind, you meet and hang out with people you really don’t care that much about, and often you are left with a hangover or worse, a sense of not having had a good time. Just those types of events.
Carmack mentions not being the kind of person who can go on long work binges. I love sloppy socializing and I also love to zone in on work and get immersed for 20 hours at a time then crash. Everyone has different habits.
And a very good health. Doing this sedentary job for long hours and not getting issues is very difficult, unless you use most of your free time doing some sports or other intense physical activity or you have very good genetics.
> It's not that much caffeine and it won't do anything to your teeth.
I'm sorry, but diet coke (and most sugar free drinks) causes dental erosion. It's not the sugar that causes it, but usually the citrus acid. Even some flavored sparkly waters have citrus acid in them.
Ah! That’s interesting. I guess my only knowledge in this area (other than the big thing - sugar and corn syrup are really the enemy, I would have thought) is that the magic ingredient that differentiates Diet Coke and Coke Zero is citric acid. I never thought about the tooth decay angle of that.
The quantity of artificial sweeteners (aspartame, sucralose, etc.) in that many cokes, many of which were shown to be carcinogenic in experiments with rats, can’t be good for him…
Did he define 'work' during the podcast? Since he also mentions reading CS books, perhaps he isn't defining work as literally typing at the computer, but instead always improving. Think of what people could do if they took part of the 3 hours of TV watched per day and instead read a book.
He's also a high level grappler (nerd worlds collide if I ever had a chance to roll with Carmack :) ), which is not an easy feat.
He does talk about always being able to work on something interesting. Working on a different aspects of a project to keep motivated. And that definitely includes research.
> It really feels like open source is something else
Open source was like that and was created to be like that. Parts of it still are, but much of it has degenerated into fiefdoms and lots of developers of larger open source projects have been soured by the prospect of just being free labor for surveillance capitalist mega-corps.
The good corners of the OSS world tend to be small communities doing interesting things. It's just like how the small topical subreddits are still okay while the big areas on Reddit are complete trash.
it is tough on the teeth, pepsi and coke are as far as I can tell the worse with phosphoric acid and around 2.5 pH and on the order of stomach acid. Obviously -volume- counts too. however at least he's avoiding sugar which also contributes to building up a lot of plaque which is a constant supply of acid rather than a diet coke which the saliva would neutralize pH up pretty quickly back to 7
What I found interesting:
* he has insane hours and has never burnt out. He says that if you want to achieve big things in your life, you need to work a lot. He also says that as long as he's working, and making progress (and he always makes progress when he keeps trying, reminds me of Linus), then he can withstand his hours and pressure.
* he learns a lot through reading computer science books
* he is really big on simplicity, seems to appreciate Golang and its design, and he's not into metaprogramming on C++. I really like that he's focused on building things that work, and can be maintained, and not that interested in theory and advanced concepts that don't seem to bring him much. He also says he spent some time on the functional side, and that probably made him a better programmer, but he's back doing C++.
* he talks about the sort of hacking community he felt part of, where you just wrote code and shared it and reused other people's code. It really feels like open source is something else, made me feel bad about all these patents, and weird licenses (even Apache 2 or MIT) and academic people whining about credits. Wish we could just share and use whatever and be happy with it :(
* Agree with him, VSCode is THE IDE. It's much better than emacs IMO (I've tried using vim many times but couldn't).
* 8-9 diet cokes a day. Holy fuck. That's a lot of caffein (and I'm guessing not good for the teeth)