HN Theater @HNTheaterMonth

The best talks and videos of Hacker News.

Hacker News Comments on
John Carmack: Best programming setup and IDE | Lex Fridman Podcast Clips

Lex Clips · Youtube · 287 HN points · 1 HN comments
HN Theater has aggregated all Hacker News stories and comments that mention Lex Clips's video "John Carmack: Best programming setup and IDE | Lex Fridman Podcast Clips".
Youtube Summary
Lex Fridman Podcast full episode: https://www.youtube.com/watch?v=I845O57ZSy4
Please support this podcast by checking out our sponsors:
- InsideTracker: https://insidetracker.com/lex to get 20% off
- Indeed: https://indeed.com/lex to get $75 credit
- Blinkist: https://blinkist.com/lex and use code LEX to get 25% off premium
- Eight Sleep: https://www.eightsleep.com/lex and use code LEX to get special savings
- Athletic Greens: https://athleticgreens.com/lex and use code LEX to get 1 month of fish oil

GUEST BIO:
John Carmack is a legendary programmer, co-founder of id Software, and lead programmer of many revolutionary video games including Wolfenstein 3D, Doom, Quake, and the Commander Keen series. He is also the founder of Armadillo Aerospace, and for many years the CTO of Oculus VR.

PODCAST INFO:
Podcast website: https://lexfridman.com/podcast
Apple Podcasts: https://apple.co/2lwqZIr
Spotify: https://spoti.fi/2nEwCF8
RSS: https://lexfridman.com/feed/podcast/
Full episodes playlist: https://www.youtube.com/playlist?list=PLrAXtmErZgOdP_8GztsuKi9nrraNbKKp4
Clips playlist: https://www.youtube.com/playlist?list=PLrAXtmErZgOeciFP3CBCIEElOJeitOr41

SOCIAL:
- Twitter: https://twitter.com/lexfridman
- LinkedIn: https://www.linkedin.com/in/lexfridman
- Facebook: https://www.facebook.com/lexfridman
- Instagram: https://www.instagram.com/lexfridman
- Medium: https://medium.com/@lexfridman
- Reddit: https://reddit.com/r/lexfridman
- Support on Patreon: https://www.patreon.com/lexfridman
HN Theater Rankings

Hacker News Stories and Comments

All the comments and stories posted to Hacker News that reference this video.
Thanks for your take.

What do you think of John Carmack's[1] suggestion that using a debugger is the best way to program? I am by no means comparing myself to Carmack :-)

I find debugger a good way to "see" what the program is doing. But that leads to a lot of time wasted.

[1] https://youtu.be/tzr7hRXcwkw?t=138

wruza
I think that Carmack is biased towards game development, which is different from request-response or click-action. Extensive game logs would scroll faster than framerate, rendering themselves useless (pun not intended), so stop the world and explore it is. If I had to develop a system with hundreds of parameters changing with time, depending on random() or seconds of continuous input events, then of course I’d use conditional breakpoints and live watches instead of grepping gigabytes of unstable state reports. But also, games have huds, special rendering modes (wireframe, coords, paths prediction, visibility areas to name a few), consoles, so in a sense they have some debug output that either runs at the frame rate or is just text.

That said, many developers find debuggers superior to logs in any situation, and if you do so, then use it. My advice is not universal. The key point is to explore development “modes” and choose what’s suits best the “write code faster” goal in your own domain.

Aug 13, 2022 · 287 points, 292 comments · submitted by branko_d
zmmmmm
Such a joy to listen to Carmack talk about just about anything.

Not sure if it's an age thing but there is a particular feeling common to contemporaries of that era, growing up in our formative years as computers grew from their humble beginnings to the incredible machines we have now. At that time, each new improvement brought astounding differences in capability. In the space of 10 years we went from 8k to 64k of memory, 4 colors to 256 colours to 16k colors to 16M colours. Resolution from 320x200 to 640x480 to 1024x768, which was close to photo-realistic (for the time, an amazing capability). I remember how revolutionary it was when I first got a computer that could render 80 columns of characters - rather than 40. Storage went from tapes to floppy drives storing a hundred kb of data to MB to hard drives storing GB of data. Every time one of these changes happened, a vista of opportunity opened up to explore and innovate and figure out what you could do with the new capabilities. Writing code in those times was all about deeply understanding the internal capabilities of the machine you had and how to get the most out of them.

Something about that process forged a deep appreciation for the fundamentals of hardware and software that I don't know how anybody could get these days.

kajecounterhack
One generation removed from that, folks got their start programming on the web. Some similarly developed great understanding about the internals of web browsers and how to get the most out of them. I don't think that's less beautiful :)

Each generation will forge deep appreciation for stuff higher on the stack. And there will always be folks working at the embedded boundary, forging deep appreciation for the folks who blazed the trail you described before them.

Also, to be fair, it's easier to learn stuff today than it was 20 years ago. You don't need to invest as much time and the resources are a lot better (yay for YouTube!)

loup-vaillant
Current stacks are much bigger and much more opaque than the 90’s hardware was. On top of that computers are fast enough that the need to go lower lever is significantly lessened. Because of this, it is likely a much smaller proportion of current programmers will get to learn about low level stuff, despite the much greater availability of learning material.

Cutting corners is not the only reason why software slows down as hardware speeds up. Many people just have no idea how fast their computer is supposed to run, and their "fast enough" is often much slower than it could be. And in some cases that’s the difference between "fast enough to make a smooth animation", and "slow enough that I need a spinning wheel".

411111111111111
But without all the inefficiencies the same amount of time invested into the product would've left you with significantly less features/capabilities.

Isn't that argument basically a straw man because even the most efficient tooling has significantly improved as shown by the rust compiler vs cobol or whatever people used back then? Personally, i think the ease to learn and the tooling has significantly improved over the last 30 years, and the fact that a lot of people prioritize features over efficiency is an entirely separate issue

62951413
On the flip side, if only had the teenage me had a computer at home my last year in school. Or more than a single book on Turbo Pascal (with OO support in v5.5!) I was reading again and again. Forget about the Internet, had the college-age me had access to just Wikipedia :(

It's _really_ painful to remember how scarce information was in the early 90s and how prohibitively expensive the hardware. I guess it was a better filter when only the people who really loved computers were getting into the industry though.

zmmmmm
> It's _really_ painful to remember how scarce information was in the early 90s

I think that scarcity of information has helped me quite a lot. I often see others giving up on problems where they lack sufficient information, but I have an ingrained ability to sniff out the information - whether it's reverse engineering, gleaning subtle hints from what is available in the documentation I do have or just "thinking like the computer" to intuit things, I can very often make headway where others have failed.

SergeAx
1024×768×16m was my default settings for a long time despite higher resolutions were available - I disliked the need to play with font sizes to have a comfortable layout. With Windows 7 and its awesome scaling feature I finally jumped to 1920*1080. I moved to 4k HDR less than a year ago and had some wow-moments in the process.
interfaced
There was such a magic to ega games, then vga, that I think was lost a bit in the transition to 3d engines. I count myself lucky to have experienced the surprise he mentions about doom and a monster jumping out at you, the land unfolding worlds of sierra games, and quirkiness of Lucas arts stories. It's a good reminder that graphics capabilities can change, but our human software can be entertained by all the old tricks.
georgewsinger
> At that time, each new improvement brought astounding differences in capability.

Yes! There's a post we wrote on precisely this phenomenon with John Carmack as the main character that you might find interesting.[1]

TLDR: There was a time when people were willing to spend (literally) tens of thousands of dollars on ultra-premium hardware in order to compute on hardware a few years ahead of the market.

For example, John Carmack spent $23K for a NeXT workstation on which he made Wolfeinstein 3D, Doom I & II, and Quake. He also spent ~$10K on the world's first 1080p monitor, which he used to program the Quake trilogy.

[1] https://simulavr.com/blog/paying-for-productivity/

psadauskas
>in 1995, Carmack spent $9,995 on one the first 1080p monitors… It provided a 28" screen with 1920x1080 @ 85Hz… Essentially, Carmack was able to trade $9,995 of 1995 money for a monitor that put him decades into the future.

“Decades” is a bit hyperbolic. I got a 22” that would do 1920x1440@80 for under $1000 in 1999. I’m also skeptical of that non-4:3 resolution quoted.

hed
I've seen pictures of his desk of what in the '90s we would have called "goofy looking CRT", I'm pretty sure its native aspect ratio was not 4:3.
agumonkey
Era aside, Carmack is a special guy, he can talk articulately and gently for hours. He did a talk few years ago (quakecon ? .. I forgot), basically a 3h long monologue about thinking while coding, there was only a single 5min pause to sip some water, incredible.
boppo1
I can speak just like that. Problem is I'm an uninformed idiot. But people who don't know that seem to think I'm pretty smart.

*this post does not contain an implication about Carmack. He is actually real smart.

agumonkey
Any uninterrupted and coherent hours long monologue is impressive to me.
sudosysgen
You should tell that to my annoyed relative. They may disagree on the coherence front.
noufalibrahim
He was a hero of mine when I was in engineering school but i only see pictures of him mostly at the time and thought of him (probably due to his specs) as an archetypical geek. However, reading about him more and listening to his talks over time has really made me appreciated how well rounded, low drama, and high impact he is.
Arisaka1
I'm a 40 years old guy who taught himself and got his first gig last year and he's also my hero. I'll sound "kids nowadays" but it's surprising how many young developers never even heard of Carmack.
noufalibrahim
I read Abrash's Black book when I was in my late teens and early 20s. It offered some insights into how Carmack operated. That's what made me a fan but I thought of him as a "rockstar" rather than a professional. That's the important bit that changed over several years.
russellbeattie
I remember seeing that video, and others like it at Oculus. The variety and depth of his knowledge is truly astounding, as is his ability to talk about it without rambling. Every time he switched topics, you knew there was so much more he could have said.

When I was a technical evangelist, I regularly gave hour long technical presentations to relatively large ballrooms and it's ridiculously hard to maintain focus. The fact that Carmack gives a detailed talk rather than a presentation or speech is already a distinction, but mostly off the cuff, for hours, non-stop, to a packed conference hall? Impressive doesn't describe it.

jdm386
Does anyone recall which talk specifically this is? I'd love to give it a watch.
epolanski
His expertise over a very wide array of objects is also extremely impressive.

I know spectroscopy very well, and yet hearing him talk about light-matter interaction was still very educative for me at the time and I was impressed by the depth and sheer knowledge he had on the matter, learned many things I didn't even know existed from him.

Same applies to many other topics related to physics, engineering and mechanics, not just computer science and programming.

Whoever says that you need a degree to get depth in several topics has never knew people like Carmack who simply study and try to understand.

baby
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)

royjacobs
I think Carmack was mostly talking about regular Visual Studio as his IDE of choice, though. Not VSCode.
pm3003
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.

bjconlan
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)
badsectoracula
VS6 has intellisense but doesn't cope that well with macros.
dleslie
VS 6 is great, honestly, if you're just hacking c89 or a narrow subset of c++98. Look out, though, the compiler isn't fully standards compliant.
imron
VS6 was such a great product.
tpmx
I tried out VS 2019 last year on a whim. The last time I used VS before that was in the early 2000s (probably 6.0).

It was a surprisingly bad experience - weirdly slow even on a high performance PC and so much clutter by default.

Tried out VS 2022 just now. First impressions are better.

tren
2022 was the first VS in 64 bit, the increase in responsiveness was enough to make me switch back from rider
tpmx
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#.

pjmlp
Since Visual Studio 2010.
dmitriid
Obligatory Casey Muratori rant about modern Visual Studio, complete with Visual Studio 6 running in a VM: https://youtu.be/GC-0tCy4P1U
Volt
Since I just re-watched it: he ran it on a P4 from 2003.
badsectoracula
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.
jbverschoor
Visual studio has been a great IDE from the early 90s when I used it. (Also game/graphics dev)
bogwog
I’ve never had anything but a terrible experience with it when doing C++

Either the whole thing freezes and becomes unresponsive, or intellisense stops working, or (often) both.

Sublime Text + GDB + RR is my no-bullshit setup right now and I love it. A mouse interface to GDB would be nice, but I can live without it.

gitfan86
Yes and he is talking about coding in c++
brtkdotse
Visual Studio is to VSCode what car is to carpet.
rfrey
So, one is too heavy to lift and the other one flies?

(agreed though. VS has been a beacon of light inside MS even in its darkest periods.)

iKlsR
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 ;)
Arisaka1
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.

drbojingle
The talent was realizing his challange and finding a way to deal with it.
VogonPoetry
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.
mariusmg
>Agree with him, VSCode is THE IDE.

Lol, he said Visual Studio is THE IDE, not VSCode. Compared with VS, VSCode is a toy.

baby
> Compared with VS, VSCode is a toy

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

bergheim
Yes. If you are doing something serious in C++, VSCode does not hold a candle to VS.
jack_pp
> he has insane hours and has never burnt out

I think there's two major things you need in order to do that. Work on what you love/want and have no/little need for socializing.

ramraj07
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.

baby
> bullshit socializing

damn, I can only feel bad for people who use that term :( it seems like simple human interaction are being optimized out.

Karrot_Kream
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.
ramraj07
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.
baby
I think everyone learns to outgrow these events
coutego
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.
jillesvangurp
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.

balfirevic
> 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.

jessermeyer
Work/life balance applies to people who would ordinarily not do their work if they did not have to.
balfirevic
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.
t-3
I assure you, I will never stock shelves, deal with abuse at a register, drive a hilo, work in a factory, touch Windows, etc. if I don't get paid to.
makapuf
Well he did have enough spare time to build a working rocket, or did that count as work also?
bryanlarsen
100 hours a week is no life.

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.

balfirevic
> 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.

borroka
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.

balfirevic
Congratulations on your black belt! I'm a white, but won't be even advancing to blue with my training (in)consistency, haha.

Yeah, competitive scene is a whole different beast.

snowpiercer
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?
nvarsj
There was a twitter thread a couple months ago where his ex-wife called him out as an absentee husband and father. Those kind of hours may be necessary for greatness, but are not without sacrifice.
dev_0
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
baby
> 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.

huntoa
It's not that much caffeine, his 3 liters of coke contains about the same as 1 liter of brewed coffee.

1 standard can of diet coke (375 ml) contains 48 mg caffeine -> 128 mg/liter. So 3 liters (8 cans) contains 384 mg caffeine. Brewed coffee contains ~400 mg/liter.

baby
I think I would probably die if I drank 1 liter of coffee
ycombinete
400mg is the suggested daily limit. It is a lot of caffeine.
justinlloyd
I should probably rethink my 8 to 14 espresso shots per day then.
LAC-Tech
I feel like one litre of brewed coffee is a lot of caffeine!
ahartmetz
It is! I drink one 300ml mug of strong coffee (or two of thin coffee) a day and that feels like enough for sure.
justin66
> 8-9 diet cokes a day. Holy fuck. That's a lot of caffein (and I'm guessing not good for the teeth)

It's not that much caffeine and it won't do anything to your teeth.

> Agree with him, VSCode is THE IDE.

Nothing in that interview suggests he's ever used VSCode.

fantod
He does discuss VSCode towards the end of that clip.
mikedelago
Why wouldn't it be bad for his teeth?

It's my understanding that soda is typically acidic, and after you drink it the soda coats your enamel, in turn wearing it down.

baby
I once read that soda is one the worst thing you can do for your teeth, hope I'm not helping propagate a falsehood
faeriechangling
Not having sugar helps a lot, but drinking Diet Coke means literally drinking diluted acid. Not exactly the healthiest thing for your teeth.
pzh
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…
Ciantic
> 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.

justin66
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.
nvarsj
> 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.

I wonder how other people feel about this. There were some comments from Carmack's ex-wife on twitter, calling him a deadbeat dad and terrible husband because he worked all the time. There's also the famous story of him taking his NeXT workstation on his honeymoon. It seems like he sacrificed everything at the altar of programming greatness.

I have kids and I feel conflicted about it. My dad was basically an absentee dad and it messed with me, so I promised myself to never do that and spend lots of time with my family. But let's face it, this has had an impact on my career. I usually think I made the right choice, but I look at friends who are unencumbered by family (either they don't have it, or push it all on their spouse), and they have gotten farther, built businesses, etc. which all require large amounts of hours. Is it just the cost of greatness?

matwood
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.

bryanlarsen
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.
matwood
Listening now. Great so far, but 5 hours will probably take me all week.
api
> 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.

snowpiercer
How is it possible that he has never burned out before?? Doesn't sound human to me
stjohnswarts
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
jillesvangurp
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.

doikor
> 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)

jhauris
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.
bigDinosaur
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.
baby
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.
jillesvangurp
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.

baby
Blame the tool, not the users
Barrin92
I'm one of the people he talks about who moved from diehard Emacs use slowly to more and more VSCode use largely due to the better UI experience around debugging and integration of a lot of modern tools. His point about features not being used when they're complicated to reach despite people claiming that they'll use them is a true observation in particular. You always can set up a lot of those features in your unix-style environments, but you're just not as likely to use them if the experience is somewhat scuffed.

As a sidenote I wonder if he's ever used Pharo, it seems like the kind of thing he'd like.

heynowheynow
VSCode is based on Electron, a glorified hack/resource hog of Chromium than even Github largely abandoned. It maybe "great" and mildly "popular" here and there, but it's built on a foundation of mud. Build native apps that work and are performant.

With enough effort and care, a frictionless experience can be made with a TUI should some "Jetbrains" come along and try to make a commercial product out of it.

robenkleene
> It maybe "great" and mildly "popular" here and there

VS Code is not just mildly popular, it's significantly more than twice as popular as any text editor has ever been in the modern era.

Source, it's currently used by 74% of programmers (https://survey.stackoverflow.co/2022/#technology-most-popula...), the next highest text editor, since the survey started in 2015, was Sublime Text in its prime (2016) at 31%.

It's fair to call VS Code's popularity unprecedented and historic. And it's already being used to shape the future of the industry. E.g., we're watching the decline of local development right now (outside of specialized use cases) largely through VS Code's support for remote development features.

This is most likely just beginning of how VS Code will leverage its position to shape the future of programming.

pjmlp
Ironically the main architect is Eric Gamma from Eclipse fame.
cxr
> it's currently used by 74% of programmers

74% of the respondents to the latest Stack Overflow survey, you mean.

rascul
Github didn't abandon Electron. Github created Electron for their editor called Atom. Microsoft later used Electron for VS Code. Microsoft bought Github. Github is sunsetting Atom (not Electron) to focus on VS Code.

https://github.blog/2022-06-08-sunsetting-atom/

nkzd
Mildly "popular"? Which editor is more popular than VSCode?
pm3003
Notepad++?
ctvo
The Windows only text editor is more popular than VSCode?
smolder
By number of installs, maybe vim :)
jasonm23
ed
latency-guy2
If we go by this page: https://en.wikipedia.org/wiki/Usage_share_of_operating_syste...

Then it has to be Windows Notepad. Android does not have a default text editor, if it did then I'd agree.

d_tr
Why should I prefer a strict grid of characters based on technology from more than half a century ago to a GUI for something with the functionality of a tool such as VSCode or Sublime Text?
d0mine
«it lists different values that each tool prioritizes, and how "Core values are self-reinforcing. They attract like-minded people, who will then defend them."» https://news.ycombinator.com/item?id=29159433
overtomanu
It is useful in corporate setting when you have to edit files over ssh on some random machine and you already have terminal open. VS code has remote option but you have to set it up and navigate again etc
jasonm23
> "Technology from more than half a century ago"

I think you are missing out the part where it's technology developed continuously for almost half a century.

VSCode is very nice, but I quickly become frustrated by it's lag in comparison.

It does beats the pants of every other GUI IDE out there, with JetBrains IDEs coming a significant second place.

But Vim or Emacs with LSP are extremely capable IDEs and have unmatched speed compared to any GUI IDE you can name.

d_tr
> But Vim or Emacs with LSP are extremely capable IDEs and have unmatched speed compared to any GUI IDE you can name.

I do not doubt that they are. I use Emacs with a simple config as the default editor to open files with, but I do not know elisp to set up something more feature-rich, and have not felt the need to yet, but I would like to try some day. It is a truly unique piece of software with lots of love put into it, and it is also GPL which I like. The problem is just that the defaults are painful and I want to know exactly what my elisp is doing, and this would take some work. Yes I know that Spacemacs and Doom Emacs exist.

But my comment (the phrasing could be clearer) was about the choice of TUI vs GUI if one was to start creating a new IDE today, in response to the parent comment:

> With enough effort and care, a frictionless experience can be made with a TUI should some "Jetbrains" come along and try to make a commercial product out of it.

In such a case my preference would be to have a decoupled architecture which would allow for both. You can make such nice things with today's computing power and graphics cards, that it would be a shame to not take advantage of it. And the performance can be stellar. We are talking TFLOPS nowadays.

mpeg
I agree that electron apps are unnecessarily wasteful but if there’s something important enough to deserve the resources is a code editor.

The underlying problem with Electron is that browsers are also massive resource hogs and I don’t see people switching to elinks anytime soon.

Maybe I’m stuck in a cycle of consumerism - accepting slower software and buying faster hardware - but I value convenience a lot and in the grand scheme of things vscode using up like $5 worth of RAM is not enough to look for alternatives.

simonh
>Build native apps that work and are performant.

The ‘native’ there is redundant. The only thing that matters is if VSCode works well enough and is performant enough to be a viable option.

Often native apps will win on the ‘works well enough’ criteria, due to superior OS integration and familiarity, but that isn’t a given. If you use multiple platforms then having a solid cross platform option also has advantages in that area.

osigurdson
It will be interesting to see if Microsoft's Maui effort will be able to compete with Electron using a somewhat more native approach. I suspect that it will not.
pjmlp
For that Electron users would need to learn C#...
pier25
> I suspect that it will not.

I agree. The reason Electron got popular is because front end devs can quickly build a desktop app for use cases where a web app will not work.

And I say that as a web dev who has worked on probably a dozen apps with Electron. Mostly internal tools, but also stuff in production for end users.

For the end user projects we ended up replacing Electron with native apps using the native web view. Each app had a tiny native layer for stuff like downloading files, etc. I don't remember the exact numbers but our macOS app went from +100MB to about 5MB download. Memory usage was also great reduced. The macOS app barely used something like 15MB of RAM IIRC. That was in 2018. Today there are projects that already do this.

I think Maui will rather compete with Flutter and QT, not Electron.

pjmlp
It can via Blazor and WebWidgets, however I see that as a waste of development resources from the Blazor team.
koonsolo
Maybe there is an editor out there for you that was developed in pure machine-code.
stjohnswarts
and yet millions of people use it every day just fine. It's not any more of a resource hog than emacs when you load up enough lsp's and add ons to make it useful and modern.
jpalomaki
Vscode has a client-server architecture.

No idea what kind of API they have between the components, but maybe you could replace the Electron based client with native GUI or TUI.

alanek2007xD
lol you probably never wrote a live of code in your proffesional life xD i've used Idea and it's shit and slow as fuck. VSCode works fast even on a laptop, with intellisense scanning code in background. Noob.
marmada
This is the most "just use rsync instead of Dropbox" HN-style argument I've ever heard.

It's sufficiently comical to be satire

loup-vaillant
Yet I’m seriously considering moving away from Emacs solely because it does not boot instantly. Sure I could set up an Emacs server and all that, but come on: it’s a text editor. It should not take more than 200 milliseconds to boot on a modern machine.

If I care about that, I’ll probably care about Electron using hundreds of megabytes of RAM I shouldn’t even have to buy in the first place. It’s thinking like this that make people say sad things like "16GB of RAM is a bit tight nowadays, maybe you should go up to 32".

(Edit: to people who think buying a bit more RAM is no big deal: remember that our resources are finite, that computers are one of the most polluting industries out there, and the climate clock is ticking.)

pizza234
I've done some tests some time ago, and Sublime Text, which is a native app, also takes a lot of memory. Plugins also do take lots of memory.

JetBrain's IDEs are extremely slow and memory intensive - well beyond VSC and ST - and yet, complaints are always directed at VSC.

I like to be able to edit new text files instantly, and the simple, pragmatic solution, is to keep an editor always open in the background.

mpeg
I understand your point, but I can’t say I relate at all.

I start my code editor maybe once or twice a day, so the launch speed does not even register

RAM and computers in general are so cheap that I just max out every laptop configuration I buy. If you’re a programmer and will use a machine for work spending $3-4k every couple years should not be a problem, we’re paid very well and should therefore use the best tools we can find.

loup-vaillant
> I start my code editor maybe once or twice a day

I start my main editor (with the shortcuts I like and all) every time I write (or edit) a commit message. And back when I used Mutt, every time I wrote an email as well. (Now I’m using Thunderbird, but I did like the ability to use my preferred text editor everywhere.)

RAM is cheap at the individual level. But if the entire world needs to go from 16GB to 32GB or whatever, the sheer volume of the resulting electronic waste does not exactly increase my faith in humanity.

rolisz
In JetBrains (and VSCode) you can write the commit messages in them directly, so no need to open another instance of the editor.
Zild
Just for reference, start emacs once, run M-x server-start and set your global git editor to emacsclient -t and you end up with an instant in terminal emacs editor for git, that will also leverage magit when necessary.
d0mine
you could start the server automatically using `-a ""`.

I've configured $EDITOR to start `emacsclient "$@" -a ""` with necessary arguments (I get emacs frame instantly when necessary).

https://stackoverflow.com/questions/4458800/how-to-use-one-i...

JackMorgan
Have you tried Magit in Emacs? It's an embedded git client with a very smooth workflow. No need to open and close Emacs just to edit the commit message. Once I got really used to Magit, it's definitely my favorite way to interact with git.

Some valuable advice I got about Emacs after switching from Vim is that it's not really a text editor, it's more like an operating system. You shouldn't need to reboot the OS between saving a file and commiting it. I typically only start Emacs once, then do everything from inside it. That being said, it's a very different workflow from Vim or VSCode, and not everyone's favorite way to work.

I even got it setup so I open multiple projects in the same single instance, and slightly change the background color based on what root directory a file is in. This way I don't get turned around when working in both a client and server, or producer and consumer.

hopperific
Great to about the bg colors
boppo1
Please describe how you achieved the color config.
JackMorgan
Here's a write-up!

http://deliberate-software.com/emacs-project-tip/

boppo1
Awesome, thanks!
Volt
Seems more to me like saying "someone should make an rsync that's more like Dropbox".
stjohnswarts
I'm thinking "use rsync instead of github" myself lol
sgt
That's an interesting counter argument. I would think that for the target audience on HN, rsync would absolutely be preferable to Dropbox. We are developers, not regular consumers. Same would apply to IDE's and editors.
Asooka
I've used IDEs, but just keep ending up using vim. With fzf, ctags, clangd and YouCompleteMe, it's a very productive tool for C++. The two things I really miss from Visual Studio are the easy project setup - writing cmake by hand isn't very fun and debugging why it isn't generating what you want is a pain ; and the great visual debugger - nothing I have tried on Linux is as comfortable as GDB's TUI, which isn't very comfortable to begin with, though the capabilities unlocked by the python bindings are unmatched. I've used GDB's python features to great effect to continually monitor the program and stop when it reaches the invalid state I'm interested in, while logging back traces of interesting points.
triyambakam
You should check out some of the new plugins that use the LSP - it's the same thing used by VS Code but available to any editor. Conqueror of Completion (Coc) is what I use and is very popular. It's even better than YCM
baby
Same here, sort of. I've been using like 30 IDEs throughout my life, and chose emacs over vim during the period I was trying to stay within the terminal, but VSCode is the best IDE I've ever used period.
reillyse
Yes me too. I started with basic and then up through Microsoft products, swore off them for emacs for years and am now on vs code cause it works so damn well. That in itself says how well it works.
d0mine
30 IDEs seems like a lot. Could you share why have you switched between so many? Could you list several specific points that make VSCode preferable over emacs.
baby
I guess I’ve been programming since I was very young, so I went through a lot of horrible things like frontpage, dreamweaver, notepad++, and then a number of them per language (phpstorm, and other php IDEs, java IDEs, etc.)

The biggest selling point for me for vscode is good defaults (I like vanilla configurations to get started fast on new machines) and discoverability. I want to be able to install 10 plugins and try all of them in a few minutes, and learn shortcuts as I use the plugin (with emacs each extension is an investment)

d0mine
Agreed, on approachable defaults for VSCode.

I found use-package, try elisp packages make it easy to try new packages in emacs.

https://github.com/jwiegley/use-package

https://github.com/larstvei/Try

wiseowise
Have you tried IntelliJ products?
baby
Yeah, half of my coworkers used to be on CLion (for Rust). TBH I couldn't get past the fact that it reminds me of Java IDEs with too many things going on. What's better compared to VSCode?
dmitriid
VSCode is very, very bare bones compared to what JetBrains can offer in terms of refactoring, debugging, and code analysis (for major languages).

It's hard to start at anything specific :)

kunos
Not for Rust tho. VSCode+Rust Analyzer offers an amazing experience and I found it to be on-par if not better than IntelliJ/Clion with a much more responsive editing, startup times and task customization.
lostmsu
For Rust I found CLion to have no improvement over VS Code.
baby
Considering that JetBrains doesn't use rust-analyzer I have a hard time imagining that it's better, more that it's worse :o
rudnevr
Absolutely, and I wonder how people who are not professional in both IDEs can compare. Typically VSCode + plugins + some additional software from old time like BeyondCompare etc. poorly make up Intellij's core functionality.

I haven't seen a single person who seriously used both and went back.

Search, VCS, keymapping, defaults, heuristics, refactoring wide of use, AI-based autocompletion - there's simply no real adversary.

Last time I was blasted when copying an old DB to a one in a new DB it correctly guessed the renamed columns based partly on type and size, partly on column names.

Also I love its suggestions so much that when learning a new language I always look at Jetbrains' respective autosuggestions - simply because it makes me a better programmer, faster.

girvo
I have, and previous to that I was a big fan of Komodo IDE. One weird feature that I love from both VSCode and Komodo is the ability to open a folder as a project, no need for an actual project file or other IDE specific handling of it that older style IDEs always seemed to a require. The feature set of the IntelliJ products are quite excellent of course, but for whatever reason my need for some weird IDE-editor hybrid where the filesystem is what matters, not the project, always meant I bounced off them.
zo1
I regularly open folders as projects and the intellij (pycharm in my case) IDE creates it as a project without hassle. Just add a bit of a script to cleanup any ide project cruft it creates and I'd say you're mostly there. Compared to all I get from a real ide, VSCode is like a stone age dinosaur.
Kiro
Sounds horrible. Just let me open a folder without it being a project or having to use a script to clean up stuff (wtf?).
lostmsu
VS Code creates a project though: .vscode folder.
nickersonm
Only if you make workspace-specific settings changes.
stjohnswarts
or be forced to bend to their idea of what a project is and which build tools I need to be using, I concur 100%.
kalleboo
I use an IntelliJ IDE and open folders all the time and it's never created any cruft to clean up. I think that only shows up if you start making project configurations (like file watchers to run preprocessors for web languages)
evol262
It still makes a .idea folder to add to .gitignore or clean up, just as .vscode makes a .vscode folder.

I don't see this as a lot different than MacOS spraying .DS_STORE files everywhere. It's not a big deal to add to .gitignore, but it does leave a fingerprint. It's just that tries to determine reasonable defaults if the path doesn't exist instead of Netbeans/Eclipse/whatever forcing you to pick them with a wizard if you want any of the "real" features to work.

koonsolo
I ended up with the best of both worlds (subjective of course!).

I use VSCode with a Vim plugin. I get all the best keystrokes from Vim, and the GUI of VSCode.

For me, going to Vim would be worse, and going to plain VSCode would be worse.

tingol
I went the other way, as soon as VSCode-like language server protocol was available for neovim I dropped VSCode. Now I have the same speed with modern features too. In the end it's what's best for you that counts, having quality options helps a lot.
robenkleene
Do you have debugging setup in Vim? (If so, I'd love to hear what that looks like!)
koonsolo
> In the end it's what's best for you that counts, having quality options helps a lot

I agree. I just can't stand the git CLI, and love the GitGraph plugin in VSCode. But like you say everyone has their preferences.

jalino23
except macros doesnt work! and the multiline editing from vs code doesnt work anymore.

unless you got both to work?

FPGAhacker
They both work fine for me most of the time.

There are edge cases but I can’t think of a specific right now. When I run into one, which isn’t that often anymore, I’ll open vscode’s terminal panel and do a quick edit in nvim there.

koonsolo
For me I don't use macro's that much. I remeber they worked fine in the Visual Studio plugin, but not sure VSCode. If I really need it for a file, I can always quickly open gvim itself. If you use it in your daily workflow, then it might be an issue indeed. But I don't see a reason why a plugin couldn't offer that (like the Visual Studio plugin).

Vim multiline editing works fine :). Not sure what the VSCode offers thoug (maybe I'm missing out)

bregma
VS Code with a vim plugin is in the uncanny valley of text editors. It doesn't work quite right and a lot of functionality is missing. It's enough that there's more frustration and less productivity for no advantage.
koonsolo
Works fine for me. Can you give an example?

One thing I have issues with is autocomplete and using . to repeat the last edit (which includes the autocomplete). Other than that, all fine.

Edit: all the vim commands give me a huge advantage on productivity when editing. All the GUI with plugins gives me a huge advantage on project navigation. Would love to see anyone do better using either one or the other.

ctvo
The majority of my movements are moving around files and making minor edits that the vim plugin supports well. It saves me from reaching for the mouse in many case, and that's the entire goal for me.
madog
Try the vscode-neovim[1] plugin instead of the more popular vscode-vim plugin. It runs an actual neovim instance in the background and works so much better than vscode-vim, which I also found was "not quite right" and very laggy. It really is excellent, pretty seamless and can't recommend it enough.

1: https://marketplace.visualstudio.com/items?itemName=asvetlia...

mark_l_watson
I found myself using VSCode instead of Emacs when browsing a lot of files. Just recently I added treemacs to my Emacs setup so my use of VSCode is much reduced. I also took the small effort to setup GitHub Copilot to work with Emacs - for some types of work, Copilot is a real time saver for Common Lisp and Python work.

I would also like his take on Pharo, which I like and many years ago released an open source NLP library for Pharo.

NGRhodes
Linus Torvalds likes the fact Kernel debugging is not user friendly so that it does not detract from good programming practice, making sure you really understand your code and what it should do before having to resort to a debugger.

https://lkml.org/lkml/2000/9/6/65

koonsolo
Yes, he also worked his entire life on his own codebase. Reality for most programmers is not like that.
inglor_cz
Nokia's Symbian OS was notoriously hard to debug, too. Half-baked emulators and the real device debugging was even worse.

I wonder to what degree this contributed to the eventual downfall of the platform. The learning curve was so steep and the IDE and tools placed so many mines under your feet so relentlessly that it must have driven some talent away.

(An example: you closed the emulator and it left over some running background processes that you had to fish out and kill in the Windows process manager. If you forgot to do that, you could restart the emulator, but breakpoints would stop working. But if you mistakenly killed another important background process, the restarted emulator would freeze and you had to restart the entire Windows.)

On the contrary, I just love working with JetBrains IDEs. The debugging functionality is so great that I feel no one is trying (deliberately or out of neglect) to waste my time. Given that I am 15 years older than I was in the Nokia days, time has become a more valuable resource for me.

secondcoming
That was not the fault of the OS though, but rather embedded dev in general. Techview (the emulator) allowed you to test your code to a point, but because x86 CPUs were more forgiving than ARM ones you still had to test your code on ARM reference boards (H2 and H4). There were only a handful of Lauterbachs floating around since they were so expensive. Only one team got to see the actual phones being developed, and that part of the building was off-limits to everyone else.

We went through several IDEs, Visual Studio, CodeWarrior and finally Carbide.

I’m not saying the OS itself wasn’t complicated though.

tomxor
Don't both perspectives make sense?

If you are working on a relatively small or modular codebase for a long period of time Torvalds perspective makes sense, since the codebase will also benefit from that kind of introspection (ok Linux is not exactly small but excluding drivers is on the order of ~100k AFAIK, which is small relative to the time it's been active); id games are on the order of millions of lines of code (according to Carmack) and while the different engine generations are related they still draw a line under each one after a certain point and move on so they are also very time limited.

I enjoy playing computer in my head in fine detail on small code and find a lot of joy in small code. But I can also respect that on a large and unwieldy enough code base where it's necessary, it's going to make more sense to lean on a debugger and other tools more often.

physicles
There’s an important reason to keep up these computer-in-your-head skills: you don’t have an interactive debugger in production, or on customer devices. If you can’t reproduce the problem, then all you have is code and (hopefully!) enough logs to figure out what’s going on and make a fix.
zo1
It's all well and fine if all that you see is what will run. These days so many frameworks and layers are below and on top of your code that it's hard to know how your (relatively) simple code will behave at runtime. We've become on some level config and package install warriors.
stjohnswarts
that works for him, and he is intimately familiar with his software, also he's a programming savant. I find as a consultant I often get dropped into poorly documented code to fix it and a good shell environment and IDE/debugger are invaluable especially for spaghetti python code with references that are nonobvious until you can hit a breakpoint and decipher where the hell an object is coming from.
mongol
Yes I also thought about that. Two programming gurus on opposite sides of a spectrum. I find it refreshing.
jbverschoor
Anyone who says a tool is better when it’s shittier is just insane or has a huge ego to protect
vlovich123
That note always struck me as pride in self flagellation. Having been around many talented kernel developers, most are perfectly happy with a debugger or any other tool they can use to debug something.
teddyh
“Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.”

— Brian Kernighan

TinkersW
Sounds like Brian has never used a good debugger
pjmlp
UNIX has never been the place of cool graphical debugging anyway.
frou_dh
That doesn't really refute the point that Carmack made. Namely that a lot of the supposed inherent difficulty in the endeavour of debugging is actually incidental from a general cultural attachment to crap old tooling.
teddyh
And I believe the point of Kernighan, as well as Torvalds, is that the difficulty of debugging serves as a bulwark against over-complicated code.
frou_dh
So that's why ed(1) is the standard text editor. Anything more usable is a dangerous extravagance! :)
mdp2021
> pride in

Not really: the linked text shows it is a costly strategy to avoid later «self flagellation»: it is meant to avoid the practice of mindless coding - of overly fast feature insertion, blowing amounts of low quality code to maintain. Torvalds: «I'd rather not work with people who aren't careful».

Also: «I happen to believe that not having a kernel debugger forces people to think about their problem on a different level than with a debugger ... that mindset where you know how it behaves, and then you fix it from there. [...] It's that you have to look at the level _above_ sources. At the meaning of things. Without a debugger, you basically have to go the next step: understand what the program does. Not just that particular line».

vlovich123
Implicit in that argument is that these kernel developers are writing low quality code / coding mindlessly. That’s a bold statement to make when you don’t know who I’m talking about.

At no point has anyone suggested using the debugger in lieu of understanding what the program does and that’s a pure strawman. Understanding is step 0. Once you’ve done that piece, a debugger levels up your game. Same with other tools like profilers, printf debugging, EBPF debugging, etc. Hell, even simple things like executing the code in the first place / running tests / gathering metrics is a debugging tool. It’s rare that someone stares at a difficult bug until they see the matrix. It usually involves iteration cycles of some kind to test out different hypothesis / collect data and a debugger is one tool to speed up those iteration cycles.

There was a story on HN a while back about how one of the inventors of Ethernet had to hook up oscilloscopes to figure out what the electrical signal was doing to figure out why CSMA wasn’t working properly. An oscilloscope is an analog debugger and you can’t tell me that the inventor of Ethernet didn’t understand Ethernet or that the oscilloscope hampered that in any way, especially since the bug turned out to be very nuanced with a chip generating a spike switching modes.

mdp2021
As the cheerful used to say: "«You» who"?

That is not implicit: it seems explicit and literal. Apparently, Torvalds must have had different experiences - and evidently within a strongly different framework: it looks like the project manager in a drastic effort to propagate the will about what is part of the project and what is not.

lmedinas
I have a similar experience, I started to use Emacs with my first Linux installation way back in the late 90s together with pico (later nano for fast editing). A few years ago i came to know about sublime text and I was astonished how much can be done with it and how quick it was compared to Emacs. Sure it does not contain all the goodies Emacs has but i after getting sublime text i realized how much time i saved and focusing on code. Recently i stop bothering and moved to VSCODE and its pretty damn good.

I miss sometimes Emacs but i prefer to use VSCODE nowadays as its a much modern environment and brings me directly to the point of comfort. I also tried Neovim but i was not convinced to replace VSCODE, i mostly use it on the console for quick and dirty editing.

hombre_fatal
I'm also one of those people. I learned both Vim and then Emacs + evil-mode, used them for a decade, and then one day I changed computers, couldn't be bothered to set up .vim/.emacs.d and stopped using them except for Vim for topical config edits.

Now I like to have a GUI that has things like a right-click menu instead of having to rely on maintaining muscle memory for everything.

Of course, another part of that, I think, is becoming older. Mastering some aspect of the computer or software like Vim just isn't interesting to me like it used to be.

stjohnswarts
It's just easier, it's not as powerful but it is "good enough" and much less steep learning curve.
iforgotpassword
I tried VScode twice and despise it. Cold never get it to be much more useful than a text editor with syntax highlighting. Tried setting it up for java and even with fiddling and tweaking it didn't work nearly as well as the default eclipse setup regarding code navigation and maven integration. It felt just like trying to get vim to be modern and useful. Maybe possible, but a lot of effort when there is other solutions that work right out of the box. Second try was for PHP, and that was even more futile. For PHP it actually seems like jetbrains is the only one providing an ide that doesn't make you lose your mind with that language, so not necessarily a sign that VScode in particular is bad.

For C++ I never even tried it because I'm usually content with qt creator.

kuxv
Qt creator is awesome for C++ development. It is so crazy fast, especially when compared to Visual Studio.
lostmsu
Java, C++, and C# have best in class IDEs. But for other languages, especially dynamic ones, VS Code is close or better than a dedicated IDE.
avl999
Using a JetBrains IDE (or whatever IDE) + Vim plugin is the best of both worlds. Writing code is composed to two tasks:

1. Pure Raw Text Editing: This stuff like jumping around within a single file, making edits. Vim really shines here with keybindings that become muscle memory & are portable cross platform- for example I am forced to use a Mac for work but use Linux for my personal stuff, the keybindings for the exact same tool are often different between mac and linux. Vim really shines here

2. Work that requires you to consider the language AST: Stuff like refactoring- renaming something through the entire codebase, jumping to definitions and implementations, auto-completing symbols. This is where I fall back to IDE features as they are unambiguously better at it than Vim. (Yes I know you can get this type of stuff kinda working in vim but it has never worked well enough to my satisfaction... you have a to install dozens of plugins, often a plugin for each language that you want syntax support for which adds bloat and in my experience I have never gotten them to work quite right in a reasonable amount of time)

rvdginste
In 2000-2006 I implemented garbage collectors in C on Linux. I used Emacs and GDB, and likely also DDD and GDB from within Emacs. I don't think there was anything better back then.

It's been a long time since I used C, but I wonder whether VSCode really gives a better experience than Emacs. Nowadays you can use Emacs with an LSP server, which is likely also what VSCode is doing. And there are Emacs distributions like Spacemacs and Doom Emacs that take away the configuration pain. As someone who has used Emacs for a very long time, I'd be tempted more into looking at CLion from JetBrains instead.

Regarding the comment about the debugging. For me personally, I always take the time to study the code first before I start debugging. A lot of times I already find the problem by just reading the code and even if that is not the case, I have a much better understanding about how the code is supposed to behave and that makes the debugging session a lot more useful.

And I say that because I have the impression that it is common for developers to dive straight into a debugging session without a good understanding of what the code is doing or trying to do. It's like they see the sympton and want to fix the sympton instead of fixing the core cause.

But that might just be my background with garbage collectors: in that case the sympton only becomes visible a long time after the actual problem occurred. The sympton was often dereferencing a pointer that failed, while the problem was the garbage collector writing a wrong value for that pointer in one of the earlier garbage collections. And that led to a lot of assertions in the code to catch problems early on.

alkonaut
> Regarding the comment about the debugging. For me personally, I always take the time to study the code first before I start debugging. A lot of times I already find the problem by just reading the code and even if that is not the case, I have a much better understanding about how the code is supposed to behave and that makes the debugging session a lot more useful. And I say that because I have the impression that it is common for developers to dive straight into a debugging session without a good understanding of what the code is doing or trying to do.

I don’t understand this sentiment about “modern” (interactive, user friendly) debuggers.

Simply because you have a tool doesn’t mean you have to skip the step of trying to understand the code. Is the suggestion seriously to avoid having tools that are objectively better because there may be a temptation to use them too early, whereas having only more primitive tools would do better?

I have seen the same argument about syntax highlighting. That pretty colors makes for sloppy code reading and monochrome text means you read slower and thus more thoroughly…

noisy_boy
> I have seen the same argument about syntax highlighting. That pretty colors makes for sloppy code reading and monochrome text means you read slower and thus more thoroughly…

The amount of times color change has indicated syntax error to me makes it a no brainer. Sure, some systems may have an older editor that doesn't have color highlighting, but that's a rare scenario for me. I'm not going to give up the huge benifit just to "train" my mind for such rare cases.

rvdginste
> Simply because you have a tool doesn’t mean you have to skip the step of trying to understand the code.

Exactly. Maybe that was not clear from my comment, but my point is basically that using the most fancy tools is not gonna help a lot when you don't start with getting an understanding of the code.

BlargMcLarg
>That pretty colors makes for sloppy code reading and monochrome text means you read slower and thus more thoroughly…

On the contrary, I get quite annoyed losing track of indents and scoping. VSCode finally adding colored brackets has been a blessing in navigating legacy code with way too much nesting in the face of developers still unable to keep their code from scrolling horizontally and dividing methods / using different paradigms to prevent overnesting.

Also helps to just not have to spend the limited amount of focus on things that an IDE can cover for you. Programming has become far more complicated (no, not complex) in many ways, and we as a species haven't magically gotten a lot better at understanding it while we seem awfully good at writing things even more complicated.

badsectoracula
> In 2000-2006 I implemented garbage collectors in C on Linux. I used Emacs and GDB, and likely also DDD and GDB from within Emacs. I don't think there was anything better back then.

Around 2003-2004 or so i used Anjuta on Linux which provided a Visual Studio-like environment with integrated debugger, C++ code completion, project management, etc. I used it for all my C and C++ development as it was both fast and featureful.

Sadly the developers decided to rewrite some core part (probably my first brush with the GNOME approach to software engineering) and the rewrite was so buggy that crashed pretty much all the time, forcing me to move elsewhere.

omegabravo
Language Server Protocol (LSP) came from the VSCode team.
comfypotato
The podcast guest addresses your debugger sentiment by saying that it’s often not possible [not a valuable use of your time] to comprehend a large codebase and debuggers allow you to make progress anyway.
robenkleene
> Regarding the comment about the debugging. For me personally, I always take the time to study the code first before I start debugging. A lot of times I already find the problem by just reading the code and even if that is not the case, I have a much better understanding about how the code is supposed to behave and that makes the debugging session a lot more useful.

> And I say that because I have the impression that it is common for developers to dive straight into a debugging session without a good understanding of what the code is doing or trying to do. It's like they see the sympton and want to fix the sympton instead of fixing the core cause.

Did you watch the video? He spends a significant amount of time talking specifically about why he thinks what you are saying here is misguided.

rvdginste
I actually did watch the video. Don't understand me wrong: I don't have anything against a good IDE and a good debugger. I currently work with C# and use Rider.

Still, for me personally, I need to study the code and know what to expect before I start the debugger. It makes the debugging session a lot more useful and efficient. And, actually, like John Carmack said that other people told him, in a way, I do "replay" the code in my head while reading it. And a lot of times, I already figure out what the error is when reading the code. But, I will often still debug the code to verify that what I'm thinking is true: I do trust the debugger more than my brain.

Aside from that he also mentioned that nowadays software systems tend to be complex and too big to completely fit into one's mind. I agree with that, but IDEs make it easier to isolate the code in the system that is relevant for the issue at hand: you can find the call sites of a method, the use of results, the origin of input values and so on. I don't know how good IDEs are currently for C/C++, but those things are standard for C# and Java. And with those tools, it really is not that hard to get a rough view on where and how a piece of code is used in a big system. Obviously, this will be easier in a well-designed system than in a spaghetti-code system.

It is important to know all the contexts in which the code you are debugging is used. Often people are focused on the one specific context in which a user saw a bug, and they focus on that, start a debugging session for that, fix the code for that and break the usage in the other context... because they do not take the time to read and understand the code. And that is also where unit/integration tests come into play.

So, nothing against the use of good IDEs and debuggers, but always be sure to understand the code you are changing.

noisy_boy
Couldn't agree more on the monitor real estate - the difference is day and night. Also, I am one of those developers who rely a lot on log statements. It is probably a combination of old habits (having getting started coding with shell scripts which don't have the kind of debugging support full-fledged languages have) and past difficulties troubleshooting as a production support person (you always remember those painful moments so now that I'm a developer, I want to make my logging as helpful as possible to my fellow support folks). Great point on debuggers though - I need to use them a lot more.
ycombinete
What did he say about monitor real estate? I haven't watched all 5 hours, and I can't infer it from your comment.
jstx1
There's so much interesting stuff in the full interivew - talk programming languages, how software is written in big companies, games and history of games, AI, VR etc. It's always interesting to hear about how Carmack thinks and works. He had some very pragmatic takes too (not liking lisps for large projects, wanting to write more Go if he has the opportunity, nice things to say about JavaScript...)

The original HN post got derailed into talks about Lex, and I don't think that most people had even watched / listened to a 5-hour podcast at the time of the discussion.

pm3003
I only listen to two long podcasts regularly (and the occasional Lex Friedman or JRE, though they’re usually shorter):

- Alles Gesagt from German newspaper Die Zeit (almost half of them are in English). These are interviews that go on until the interviewee says a magic word. They usually do them at the interviewee’s home.

- Dan Carlin’s Hardcore History, my favourite on long drives.

labrador
John Carmack expressed exactly how I feel about having a good debugger. I've never heard anyone say that or comment on that, so it was nice to get confirmation from a master programmer.
redthrow
Another master programmer Linus Torvalds seems to have the opposite attitude though

https://lwn.net/2000/0914/a/lt-debugger.php3

Wonder if there's a difference in average attitude between people who do creative stuff (e.g. games) vs people who do infrastructure type stuff (e.g. Linux kernel)

labrador
Yes, but of the two, which one would you say is happier? Some people like doing it the hard way because they think a bit of suffering is good for you.
al_mandi
Furthermore, Carmack mentions that this aversion to debuggers stems from the Linux bias.
mrweasel
Around 15 years ago I worked as a .Net developer, using Visual Studio, and I loved having the debugger available. I might be less clever than others here on HN, but the debugger helped me locate so many stupid mistakes extremely quickly. Sure you could just read the code an reason about the flow and structure and find the bugs that way, but that takes me much longer.

After the .Net jobs I pretty much switched back to Vim, TextMate and other text editors, and frequently forgot that debuggers are available. As Carmack points out, if they are difficult to use, you'll find yourself using them much less. For some reason I've found myself in environments where IDE are seen as second rate. Like training wheels for less skilled developers, but you know what: I want a debugger, I wanted integrated into my code editor and that's good enough for a guy like Carmack, then it's good enough for me.

labrador
Like he said, our brains make mistakes interpreting the code and running it our heads. Sometimes you need a debugger to see what's really going on, especially as the system becomes more complex
meitham
I think his views are understandable in the lights that most games developments targets Windows platform, and text editors with GDB were for a long time not as mature on Windows compared to Linux.

His comment on not keeping code in your head also aligns with the fact that most games development prefer object oriented approach to model characters and other entities, and that lends itself less toward reasoning about code in your head as opposed to FP.

badsectoracula
GDB can work as a backend for an IDE and even in mid-2000s you had VS-like IDEs like Anjuta that provided a very decent interface. A little bit later Eclipse/CDT did a great job and IMO in terms of features it was better than VS around late 2000s / early 2010s. It did eat up all the system resources though (i used to have "only" 1GB of RAM on my midlate-2000s PC and until i added another 1GB i had to choose between Eclipse/CDT and Firefox if i wanted to avoid constant HDD noises :-P).

I remember working at a gamedev studio around 2007 and while almost everyone else used Visual Studio 2005 (i think, i don't remember exactly), i used Eclipse/CDT with some makefiles that another developer (who used Vim) had written and always felt VS was more limited overall.

(it has been almost a decade since i used Eclipse/CDT though, i don't even remember why i moved on from it)

KerrAvon
Xcode tried to use gdb as a backend for a long time and it was awful. It only got better when they moved to lldb.
klohto
Most game dev is OOP because most games are C++ for performance and graphics, not because of reasoning.
laumars
He’s done plenty of work in FP too. His point wasn’t that good programmers couldn’t work the way you describe but rather “why wouldn’t you want to make programming easier for yourself by using these tools?”

It’s a really pragmatic opinion and shows a real maturity and lack of ego. Something a lot of self-proclaimed “rock star” developers could learn from.

axelfontaine
Amen. Good powerful IDE, debugger, static typing, static analysis and 3 monitors as opposed to a text editor with random plugins, random log statements, dynamic typing and a small laptop screen. Couldn't agree more!
georgewsinger
An underrated John Carmack factoid is how he leveraged ultra-premium workstations (several years ahead of the rest of the market) in order to create the Doom & Quake series[1]. In 1991, before embarking to work on his early FPS game titles, John Carmack spent $11,000 ($23,219.85 inflation-adjusted) on a NeXT workstation. The story of his purchase is chronicled in Masters of Doom:

> On a cold winter day, Carmack laced up his shoes, slipped on his jacket, and headed out into the Madison snow. The town was blanketed in the stuff, cars caked in frost, trees dangling ice. Carmack endured the chill because he had no car; he'd sold the MGB long before. It was easy enough for him to shut out the weather, just like he could, when necessary, shut Tom and Romero's antics out of his mind. He was on a mission.

> Carmack stepped into the local bank and requested a cashier's check for $11,000 [$23,219.85 inflation-adjusted]. The money was for a NeXT computer, the latest machine from Steve Jobs, cocreator of Apple. The NeXT, a stealth black cube, surpassed the promise of Jobs's earlier machines by incorporating NeXTSTEP, a powerful system tailor-made for custom software development. The market for PCs and games was exploding, and this was the perfect tool to create more dynamic titles for the increasingly viable gaming platform. It was the ultimate Christmas present for the ultimate in young graphics programmers, Carmack. – Masters of Doom, pg. 93

Carmack also shelled out $10K to use the world's first 1080p monitor, which he used to create Quake I, Quake II, & Quake III:

> [In] 1995, Carmack spent $9,995 on one the first 1080p monitors: the Intergraph Interview 28hd96. This monitor was gigantic, but the extra screen space and image quality surely came in handy during the creation of the Quake trilogy. It provided a 28" screen with 1920x1080 @ 85Hz, a resolution not unheard of on today's hardware. Essentially, Carmack was able to trade $9,995 of 1995 money for a monitor that put him decades into the future.

[1] https://simulavr.com/blog/paying-for-productivity/

jbverschoor
Because webdevelopment is usually short-lived request-response, and very stateless, there’s little value of a debugger.

That said, I love good debuggers.. basic, C++, Java, all had great tools. I always ran my Java servers with hot code replace.. saves you hours of startup time

bilalq
VSCode is definitely the first IDE I've ever felt satisfied with. I still run it with vim keybindings and will often pop up the VSCode terminal to run actual neovim for certain workflows, but it feels smooth switching between the two. Eclipse, IntelliJ, and especially XCode feel so frustratingly slow and confusing in comparison.

The tight focus on the developer experience with TypeScript was what won me over. Functionality like live share has been a game changer. The extensibility is also pretty great and doesn't feel like I sacrificed that aspect of vim either. If anything, it even surpasses it because of the UI possibilities. Some personal examples that come to mind are:

* Live preview rendered markdown as you edit

* Live preview MermaidJS diagrams as you edit

* Live preview MJML email templates as you edit

* Live preview draw.io/diagrams.net diagrams as you edit

* Live preview SVG images being edited/generated by code

* Work on Jupyter notebooks and actually run them

davidatbu
For context, I daily-drive neovim and:

> Live preview rendered markdown as you edit

I use a plugin for that.

> Work on Jupyter notebooks and actually run them

I use a "repl plugin" for that, and I actually prefer the experience over Jupyter a lot! (even discounting the vim keymaps).

> Live preview SVG images being edited/generated by code.

Now that is something I didn't even consider. There's probably a plugin for that and I'll look into it lol.

I've never needed to do the rest, but I can imagine how helpful those features would be If I did.

To be clear, setting up even the two plugins above was not easy (in that, I probably spent about 2 hours between the two), so I think this comparison, by itself, actually favors VSCode.

chrisan
Can't speak to Jupyter notebooks but the rest works on Jetbrains products too, something I find closer to Visual Studio (what Carmack was referring to) than VSCode
lloeki
> Live preview SVG images being edited/generated by code

Glad you like that one, I was probably the lunatic that kickstarted that hack of an idea back in the Atom days :) Can't recall if I ported it to VScode or if someone else did/copied the idea (not that I care! I just needed such a tool in a pinch and then gifted it for someone else to take over)

https://github.com/josa42/atom-svg-preview/commit/995e4fe0ba...

bilalq
Thanks for being an inspiration, haha. I was working on iterations of shields.io style badges and this was a life-saver.
arendtio
I find it funny that John seems to be such a fan of debuggers.

One of the first projects I worked on, as hobby, was based on the Quake 3 engine (which was one of the projects Carmack worked on). However, especially with real time applications I find the use of debuggers particularly difficult, because there are a lot of bugs that depend on timing and which are therefore hard to catch using debuggers.

Nevertheless, I completely agree, that good tooling is absolutely essential. Even as someone who likes the minimal setups (e.g. tmux+vim), I know that you should ask yourself often, if you are using the right tool for the job.

aborsy
I am curious: how does this guy Friedman make a living?!

His full time job seems to be running this podcast interviewing people. Every few days he publishes a 2-hour long interview.

He distributes ads, I am not sure how much that brings in.

davidatbu
I remember Lex saying he gets 300K-400K listens per episode, so making a living is surely not a problem because the sponsorships will be priced accordingly.

Also, he's a research scientist at MIT, which I'm also sure means making a living is not a problem.

lukeschwartz
It brings millions of dollars.
jackblemming
The same way Joe Rogan does, just on a smaller scale. 1/100th of what Joe Rogan makes is still an extremely comfortable life.
mongol
Lex seems to be on a trajectory to really make it big. It is amazing what kind of guests he is having. Perhaps if he turns it more mainstream he will become the next Rogan?
spaceman_2020
Lex is too cerebral, as are his guests.

Rogan, being a comedian, has a completely different energy. He will discuss serious topics too but his most iconic moments are usually him and some comedians/fighters shooting the shit about drugs or chimps.

jack_pp
He doesn't have the personality necessary to be mainstream like Rogan. Rogan is to podcasts what pop singers are to music. Lex is like a fledgeling indie band, he will carve his niche but that's pretty much it. Mainstream audiences by definition don't have the intellect or curiosity for 90% of his content
BbzzbB
An indie #1 tech and #74 all-included podcast in the US.

The comparison to Rogan is of course wrong, there are levels to this, but that doesn't really make his audience niche as in small despite all the robot comments since the start.

https://chartable.com/podcasts/artificial-intelligence-14342...

barefeg
He’s a lecturer at MIT
gtsnexp
Not sure thats still the case.
aborsy
What does he teach?! He does not seem to have papers on AI and machine learning.

Update: As commented below, he does have papers.

TJSomething
Looking at the MIT directory, he's a research scientist and isn't teaching anything this trimester, but has previously taught a few courses on deep learning. He has 78 papers published. He has an office in the Ray and Maria Stata Center at MIT.
Kiro
You answered the question yourself. He runs a podcast. Even tiny podcasts can bring in enough to make a living and he's huge. His Patreon alone probably gives him enough to live comfortably (1000 patrons).
pm3003
He gives lectures at MIT, I think.
iamflimflam1
A semi successful YouTube video with less 2m views can easily bring in several thousand dollars in ad revenue.

He is way more successful and has multiple sponsors.

https://www.atomic14.com/2022/07/27/successful-youtube-video...

astrostl
Also has a Patreon with nearly 1000 subscribers.
aborsy
Several thousands for what time duration?

That’s one month of rent.

I would be interested in some estimates of revenue per audience.

spaceman_2020
I would assume he gets to charge a much higher rate from sponsors due to the prestige of his guests and the quality of his audience.
iamflimflam1
We’ll of course - that is the trick - you need to repeat it consistently. There are people who do it and make a lot of money doing it (have a look at MrBeast as an example).

Lex will he making an awful lot of money from his sponsorship - which is also where the big channels on YouTube make the majority of their money.

If you can go to a marketing department and say “I’ll get your product in front of a captive audience of X-million people with this demographic” you can charge a lot of money.

cal85
You didn’t answer the question.
prvc
Any tips or caveats for using VS6 to develop modern software?
cudgy
What is “modern software”?
badsectoracula
Installing VS6 on modern Win10 can be annoying. Might actually be easier to make a dedicated Wine prefix on Linux :-P.

Anyway, there is an article written on CodeProject[0] a few years ago about installing VS6. It may also work on Win11, however due to the changes over time you need to do some more additional stuff:

1. Do not install the OLE/COM viewer

2. Ensure the installation finished propertly otherwise SP6 wont install

4. Install SP2 CD if you have it (it was part of my own VS6 box)

5. If setupsp6.exe wont run, copy sp698ent.stf to acmsetup.stf and run acmsetup.exe instad

6. Install tlloc fix from [1], otherwise the debugger wont be able to terminate finished applications

After all that Visual C++ 6 should work fine. For VB6 you may want to run it in Win9x compatibility mode, otherwise you'd get some slow drawing in the form editor. But something like Lazarus[2] would be better if you want to throw together some GUI app, it isn't like there is any special integration between VC6 and VB6 (something that i always found weird - ideally VB6 should have been able to use VC6 headers or even C sources directly just by making them part of the project, kinda like how you could mix Delphi and C++ in later versions of Delphi and C++ Builder, but for some reason Microsoft treated VS6 and VB6 as if they were each being made by a different company and only coincidentally happened to be on the same CD).

Though honestly if you have enough RAM, VS6 isn't really that much faster compared to modern Visual Studio. From that time period something like C++ Builder 1 is way faster.

[0] https://www.codeproject.com/Articles/1191047/Install-Visual-...

[1] https://github.com/pinchyCZN/VC6x64Fix

[2] https://www.lazarus-ide.org/

laumars
> ideally VB6 should have been able to use VC6 headers or even C sources directly just by making them part of the project

You could access compiled DLLs from C and C++ projects within Visual Basic. Not quite the same thing as headers I know but it did at least fill that gap that you described.

badsectoracula
You could do that from pretty much any Windows language, Visual Basic wasn't special in that regard and my point was that since both were MS products and part of the same package they could have much better integration.
laumars
> You could do that from pretty much any Windows language, Visual Basic wasn't special in that regard

You mean “Microsoft” language surely? You couldn’t access DLLs from Perl, PHP, Java, and a bunch other other languages that had been ported to Windows.

And my point wasn’t that VB was special. Just that you could still interface with C++ code albeit only via compiled libraries (you also could access COM objects too).

> my point was that since both were MS products and part of the same package they could have much better integration.

I got that was your point but they weren’t part of the same package. VB didn’t ship with a C++ compiler and nor did Visual Studio support compiling Visual Basic. They were sold as separate products and their IDEs were rather different too. Don’t be fooled into thinking that because they share a similar product name (I mean that makes sense from a marketing perspective) that they were the same package. Having used both, I wouldn’t be at all surprised if the similarities were only skin deep.

badsectoracula
> You mean “Microsoft” language surely? You couldn’t access DLLs from Perl, PHP, Java, and a bunch other other languages that had been ported to Windows.

There were languages that weren't able to call such DLLs, but there were also many that could that weren't made by Microsoft - e.g. Borland Delphi, Power BASIC, a bunch of Smalltalk implementations, etc.

> I got that was your point but they weren’t part of the same package. VB didn’t ship with a C++ compiler and nor did Visual Studio support compiling Visual Basic. They were sold as separate products and their IDEs were rather different too.

I know what they were, what i referred to was what they should have been considering that they were (potentially) part of the same package (Visual Studio as a product, not the IDE that hosted Visual C++, though honestly that shouldn't really matter) and made by the same company who had access to the source code, libraries, etc to make these two programs "know" about each other in a more integrated way than what external 3rd party development tools were able to do.

This was about a what could have been, not about what it was (nor about why it was like that either - chances are they were made by largely different teams that competed with each other and only had to deal with their programs "living" in the same CD :-P).

laumars
> there were also many that could that weren't made by Microsoft - e.g. Borland Delphi, Power BASIC, a bunch of Smalltalk implementations, etc.

I know. I’m not saying “only Microsoft languages” could. I’m responding to your absolute stating that not “all” Windows languages could. I’m simply saying that absolute only works with regards to Microsoft languages. I’m not suggesting it’s limited to only Microsoft languages.

You really need to calm down a little here mate because your comments are an over reaction to the replies being made.

> I know what they were, what i referred to was what they should have been considering that they were (potentially) part of the same package

But they weren’t part of the same package. So your argument falls flat on the very first assumption.

> made by the same company who had access to the source code, libraries, etc to make these two programs "know" about each other in a more integrated way than what external 3rd party development tools were able to do.

This is another assumption. If you’d spent any time working for a company like Microsoft you’d quickly realise that different products might fall under different teams who have very little cross pollination. I’ve seen this problem time and time again in larger tech companies and it’s often just as frustrating for the employees as it is for the customers.

> This was about a what could have been, not about what it was

I got your point was about “what ifs” but the problem is your “what ifs” are based on assumptions that don’t hold true. So you’d need to stack up a number of other “what ifs” just to get to the stage that your original “what if” is even imaginable.

tibbydudeza
Bear skins and stone knives - LOL - PyCharm made my life so much easier.
triyambakam
His comments on Vim are rather annoying and surprising. He says he spent a week using pure vi (not vim) as a test in comparison to Visual Studio (or whatever IDE). Such a poorly informed comparison. I don't really care what he uses, but it's annoying that he chose the absolute worst way to do the experiment and concluded, unsurprisingly, that it isn't worth it. Yeah, I don't want to use vi either. That's why I use Neovim with Language Server Protocol (LSP) plugins that uses the same "intellisense" as VS Code does.
smitty1e
Another clip from the same interview on the "best" programming language => https://youtu.be/RfWGJS7rckk
spaceman_2020
Honestly the full five hour interview is gold. And Lex is a great interviewer since he can keep up with him.
trollied
It is great. I'm hoping he does a part 2, this Tweet from him suggests it'll happen: https://twitter.com/ID_AA_Carmack/status/1555240951911686144... (me reading between the lines!!).
OliverM
Are there no good UI experiences you can bolt onto gdb? Do Emacs/Vim not have nice modes that take some of the pain away?

I've no real experience with using gdb - my main debugger usage has been on the JVM or using old Borland debuggers on Win32. Are there no good open source user-friendly debuggers out there?

I tend to develop software interactively with a REPL where I can so if a good debugger can give you something akin to that experience I'd be very tempted to jump ship from emacs to VSCode to try it for languages like C/C++.

OliverM
Hmm it does seem like Emacs is growing support for the Debug Adapter Protocol (DAP), the LSP-alike convention that allows language developers to build language-specific debuggers that tie into the VSCode UI: https://github.com/emacs-lsp/dap-mode
emidln
CLion has a good debugging story and is based on gdb/gdbserver.

Emacs has a couple gdb modes which are fine, and a DAP mode which is very good.

davidatbu
I really hope that the Debugger Adapter Protocol (DAP) from Microsoft catches fire like the Language Server Protocol (LSP) did, because I think it would do the same thing to debugging that LSP did to language intelligence/refactoring.

Both vim and neovim have DAP client plugins, but many DAP servers/adapters are not well maintained, so the overall experience isn't great.

imaltont
Emacs comes with a built in debug mode that works with several debuggers, including gdb, out of the box. There are also things like DAP-mode. Vim has Vimspector which is pretty decent as well as a debug/gdb mode introduced in vim 8 that I have not tried yet. There is a built int TUI as well, but I haven't tried it too much. There are probably stand alone interfaces available too that I am not aware of.
SantiagoElf
Carmack said he is using Visual Studio - the full, big, freaking IDE. Not Visual Studio 6.0, but the latest version ( I assume 2022).

So, to repeat Carmack IS NOT using VS Code, but the full Visual Studio on Windows.

Amen.

Yuioup
Previous dicussion: https://news.ycombinator.com/item?id=32347172

Link to the podcast this clip is taken from: https://www.youtube.com/watch?v=I845O57ZSy4

NGRhodes
Would loved him to go into more detail about his approach to coding and how debugging fits into the picture. I personally treat debugging as a last resort for when unit testing and verbose logging are insufficient. I can't remember the last time I debugged a scripting language, but I used to frequently did bug C#
tpmx
For e.g. (single process) C++ development on Windows it's probably hard to beat Visual Studio and its debugger.

Perhaps he's a little biased in his broad conclusion because this is the kind of work he often does?

formerly_proven
The VS debugger seems to pull the weight of the entire IDE, because the other aspects of VS just aren't good (any more).
nextaccountic
Does VSCode have a nearly as good debugger?
wudangmonk
The killer feature is really just the debugger but having decent debuggers is a Windows only feature. I have no idea why people are mentioning VSCode, it doesn't have a good debugger.
pjmlp
For multiple process and threading as well. I keep meeting people unaware of parallel tasks, parallel stacks, graphical thread dependencies,....
rejectfinite
He is saying Visual Studio. The full paid suite.

NOT the free VSCode.

2 different tools. :)

https://visualstudio.microsoft.com/vs/

the_black_hand
Vim mode on VScode is pretty easy. Msft nailed VScode by making it an easy electron app that gets up and running . An improved sublime.
sgt
When I tried vim mode on VSCode it seemed to have extremely few vim features. So it's basically more to get the vim keys. That was one of several reasons why I didn't like VSCode.
FPGAhacker
I suppose it depends on what vim features you use but it hits the sweet spot for me now. I frequently use macros and block editing, as well as tim pope’s surround.

I hit edge cases occasionally still though I can’t think of a specific one right now. When it happens I sometimes open vscode’s terminal panel and Do a quick edit in nvim on the spot without leaving vscode.

Vscode has replaced putty for me in my workflow.

iamflimflam1
Listening to the full 5 hour podcast - never listened to a lex podcast before - he sure does talk a lot!
TT-392
I can't be the only one who likes the commandline gdb experience right?
anotherhue
I use it, but I wouldn't say 'like'.

Don't forget that a terminal puts off 4/5 developers.

LAC-Tech
Really? The idea of developing without a terminal is incredibly weird to me.
odiroot
Not using GDB much but I definitely love ipdb (for Python). It's more natural to me now than any IDE's UI.
bregma
Nope. You're not alone.
cryo
Up until rencently I didn't like gdb much, but this was mainly for one thing I got wrong all the time: Make a code change, recompile, restart gdb and start again debugging.

Then I learned: you never need to stop gdb! Just enter "r" and it will restart the program with the fresh changes leaving all breakpoints and setup intact.

Game changer to me.

transfire
LOL You can’t program in C/C++ without a debugger!
beebeepka
I am yet to watch the video but I have been following (except his twitter as I don't like the service) this guy for almost 30 years. Listened to many QuakeCon keynotes.

Arrogance is not something I have observed. Is he not allowed to share his perspective on doing things? I doesn't have to work equally well for everybody

heynowheynow
Has only a hammer and looking for nails.

What takes appreciation is the differences between a DOS game executable and a modern hyperscale backend app server fleet. gdb-server ain't going to solve many problems on 500k boxes.

laumars
He’s talking about his field. Clearly gdb isn’t going to cut it for all fields within programming. You wouldn’t use gdb for HTML nor PL/SQL, for example. But these fields have their own debugging tools too. As does working on server fleets.

I don’t really see the need to get snarky about his comments like that.

pjmlp
Even PL/SQL has a quite nice debugger.
todd8
I've programmed for a long time. One of the best programmer's I've known actually had his own debugger. He was an OS kernel developer and carried the debugger with him from job to job; we were working on the new operating system at IBM that would become AIX. He was a bit of a nuisance in the large development organization because he would wander around the kernel in his debugger fixing code before others had even noticed the defects.

We were working on a distributed file system, and I had complained that we couldn't be expected to finish on the same deadline as the hardware device driver teams and the network stack teams. How would we even develop our software if we didn't have any working communication between machines? Well, my friend came to the rescue and wrote the kernel support for the NIC and a comm stack up to the level of UDP (having a debugger helped).

Eventually, the managers of the other departments that wouldn't cut my team any slack on our schedule started coming around to ask us for help because they were falling behind schedule. They were responsible for the official development of the network device drivers and networking, and it turned out they didn't have a working kernel debugger like we had (thanks to my friends personal one), so they had fallen behind schedule while we were already making good time on our distributed file system running on top of the our own hacked together temporary device drivers and networking code. I had to lend the teammate and his debugger to the other two teams to help them with their schedules.

pragmatic
I’d love to hear more about this. What happened to this guy and the debugger?

I’m guessing he got fired and moved to a cabin in the woods. No way talent of that level can exist in a corporate environment too long. Too much jealousy, etc and the higher ups usually can’t stand someone who won’t play by their rules even if the results speak for themselves.

Hope I’m wrong.

sam36
I believe he died in 2018 after becoming homeless and getting hit by a nearby train.
biggerChris
Brilliant reference.
wkdneidbwf
tasteless reference to terry a. davis?
todd8
He continued to be a very highly paid contractor. The last time I communicated with him was many years ago. He had married another friend of mine, and they relocated overseas. He was doing contract programming for high performance network hardware back then.
HN Theater is an independent project and is not operated by Y Combinator or any of the video hosting platforms linked to on this site.
~ yaj@
;laksdfhjdhksalkfj more things
yahnd.com ~ Privacy Policy ~
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.