Carmack Doesn't Like Vim | Prime Reacts

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
what about your setup how many screens what kind of keyboard is there something interesting what kind of I uh IDE to be completely Fair me and Lex we share the same keyboard okay him and I we use the same keyboard okay and I'm a one screen I'm a monogamous screen user okay it's just a fact of how I live my life emacs Vim or something modern uh Linux what operating system laptop or any interesting thing that brings you Joy so I kind of migrated cultures where early on through all of Game Dev there was sort of one culture there which was really quite distinct from the more uh the Silicon Valley venture you know uh culture for things it's they're different groups and they have pretty different ways and the way they think about things where and I still do think a lot of the big companies can learn I can learn things from the hardcore game development side of things where it still boggles my mind how um how hostile to debuggers and Ides that so much of them the kind of big money get billions of dollars Silicon Valley venture-backed funds are well this is who says anyone's hostile no but no one hears hostile towards I should think sorry so you're saying like like big companies like Google meta are hostile to they are not big on debuggers and Ides like so much of it is like emacs Bim for things and we just assume that debuggers don't work most of the time uh for the systems and a lot of this comes from a sort of Linux bias on a lot of things where I did come up through the the personal computers and then the dos and then I am windows and and it was Borland tools and then visual studio and do you appreciate the buggers very much so so I do think there is something here that's a little bit just a little out of sync here you know sorry if I'm you know just I'm not trying to be a mean guy here I'm just slightly correcting John Carmack I know I shouldn't even do that but I'm gonna do that uh there's also this idea that being able to log and be good at logging to debug and relying on logs to debug is really great for your servers right because that way when you're off in production you have a way to be able to turn on the complete and proper set of debugging instrumentation and know exactly what the problem is and if you're not good and Adept at that you won't know why something is breaking one of the worst possible solutions in production is when you have to create what's happening you know on the server on your local machine to know why it's breaking I think that's really really really hard and so to me that's like a it's a different problem it's a different problem a different scope and so I think a lot of people are used to one way or the other and I totally get why people like the buggers people love the buggers uh I think a lot of times it's also based on the complexity like the stuff that he worked on is vastly different then the stuff I work on right there is no such thing as a Shader the amount of complexity and things that I'm working on is extremely small in comparison and so is it faster or worse is it better what is it JavaScript is not like this continuously running debuggable environment like he's talking about it's not quite the same worlds that were you know that we live in here um but it's interesting you know and so a very good thing is to know how to debug what's going wrong in production when you need to what did he work on John Carmack what did he work on do you need to get the hell out of the chat buddy you need to get out you want to get the hell out of the startup coming at me with that who's John Carmack talk I'm gonna leave this earth both feet fly through space and they're gonna land betwixt your shoulders okay I'm gonna drop kick you if you keep this up clean out of the startup I mean a debugger is how you get a view into a system that's too complicated to understand I mean anybody that thinks just read the code and think about it that's an insane statement in the that is an insane statement you can't just read the code and think about it that's there's no way that you can do that but again it you know logging is an important aspect of debugging that's different for different things yeah we can't even read all the code on a big system you have to do experiments on the system and doing that by adding log statements recompiling and re-running it is an incredibly inefficient way of doing it I mean yes you can always get things done even if you're working with stone knives and you know and bare skins that's that is the mark of a good programmer is that given any tools you will figure out a way to get it done I do like my bare skins and my stone knives sir sir uh you know but again it's still very very different like there is no I don't have like a an equal here when it comes to like when I'm developing on Netflix there is just it's just like not even a thing right it's like I can't what he is saying I can't even like do you know what I mean like I have to run it I have to compile it I have to go it's always compiling it's just like a go and it has to take the input and play it through so replayability is like a huge part of debugging for me like that's really where I put a lot of my like emphasis on on stuff is in that area but it's amazing what you can do with sometimes much much better tools where instead of just going through this iterative compile run debug cycle and you have the you have the old list direction of like you've got a repo and you're working interactively and doing amazing things there but in many cases a debugger as a very powerful user interface that can stop examine all the different things in your program set all these different break points and of course you can do that with GDB or whatever there but this is one of the user interface fundamental principles where when something is complicated to do you won't use it very often there's people that will break out GDB when they're at their wit's end and they just have beat their head against a problem for so long but for somebody that kind of grew up in Game Dev it's like they were running into the debugger anyways before they even knew there was a problem and you would just stop and see you know what was happening and sometimes you could fix things even before you you know even before you did one compile cycle you could be in the debugger and you'd say well I'm just going to change this right here and yep that did the job and fix it and go on and for people don't know GDP GDP is cool though RGB GDB is good I I've always wanted to get better and better at GDB because I feel like that's like the end game of great of like knowing your stuff like I kind of know it a little bit here a little bit there you know what I mean I'm okay at it the grand dick debugger yes that's what it stands for B is also popular I guess Linux debugger uh primarily for C plus plus they handle most of the languages but it's you know it's based on c as the the original kind of Unix Heritage and it's kind of like command line is not user friendly it's not it doesn't allow for clean visualizations and you're you're exactly right so you're using this kind of debugger usually when you're at what's end and there's a problem that you can't I mean I agree it's not as pretty as like uh the Chrome debugger or intellij's nice debugger I assume he uses vs code or not vs code but visual Studios and so visual Studios I assume is is probably is prettier right when they say not friendly a lot of times what it comes down to is the fact that you can see your changed variables your stack trace your code you have like a lot of options for what you can see um I just don't really again I just don't really have like a a huge need for it you know what I mean I figure out why by just looking at the codes they have to find it that's how I guess normal programmers use it but you're saying there should be tools that kind of visualize and help you as part of the programming process just the normal programming process to understand the code deeper yeah when I'm working on like my CC Plus Code I'm always running it from the debugger you know just I type in the code I I run it many times the first thing I do after writing code is set a breakpoint and step through the function now other people say it's like oh I do that in my head well your head is a faulty interpreter of all those things there and I've written brand new code I want to step in there and I'm going to single step through that examine lots of things and see if it's actually doing what I expected it to it is a kind of companion the debugger like you're you're now coding in an interactive way with another being uh the debuggers are kind of dumb being but it's a reliable being that is an interesting question of what role does AI play in that kind of um well I think this is pre-chat gpt3 right yeah so so a lot of times whenever I'm doing something this is kind of an interesting take also here which is whenever I'm programming any sufficiently complicated function anything that's really kind of difficult for me to be able to do first try so I think of like a classic example is like how do you uh chat generation or not chat generation sorry CSV generation it's it's not an easy problem it's not an easy problem to create a CSV and so with that in mind when I'm doing my stuff I'm going to create unit tests around that and program against it right and so as I create the whole thing I then create a unit test make sure that I done the happy path correct think of one or two things that aren't good and program against that and as something breaks inevitably I use that as a mechanism for remembering that this thing broke this way or even more so I will sometimes use unit tests as a way to develop when it's just too complicated to try to run that thing any other way now some people might call this tdd but it's not quite tdd because I've finished the implementation and I'm just using it as a way to validate and test it quickly and then I delete that test often because it's just me using it in various ways and I try to formulate a test that's more reasonable you know what I mean uh yes 2020 BC before the old the new BC is now moved all the way to 2020. with codex and these kind of ability to generate code it might be you might start having tools that understand the code in interesting deep ways that can work with you I mean there's a whole spectator that's code analyzers and various kind of dynamic tools there up to AI that can conceivably grock these programs that know he literally no human can understand they're they're too big to intertwine and too interconnected but it's not beyond the possibility of understanding it's just beyond what we can hold in our heads as kind of mutable State while we're working on things and and I'm a big proponent again of things like static analyzers and some of that stuff where you'll find some people that don't like being scolded by a program for how they've written something where it's like oh I know better and sometimes you do called rust okay that's why we all use rust all right we all use rust because we're not sadomasochists we're actually people that we want strong static you know analysis I know better that I'm not that smart and by the way I just have to be able to figure out any way I can bring in Rust into this okay I just have to know you know like this is one of those moments this is a clear moment I saw the opportunity I brought it in dude but that was something that I was it was very very valuable for me when uh and not too many people get an opportunity like this to have this is almost one of those spiritual experiences as a programmer and Awakening to I am feed software code bases were a couple million lines of code and at one point I had used a few of the different analysis tools but I made a point to really go through and scrub the code base using every tool that I could find and it was eye-opening where we had a reputation for having some of the the most robust strongest code you know where there were some you know great things that I remember here that's a great reputation like who wouldn't want that rep like how would you like to know that when people use your code or use your stuff that the way they say it is oh yeah that yeah that's like the best code out there like if I'm gonna have to integrate with anybody I want to integrate with that guy like that's that should be like a hashtag goal for everyone I love that that's what I want in my life I want more of that bring from like Microsoft telling us about crashes on Xbox and we had this tiny number that they said were were probably literally Hardware errors and then you have other significant titles that just have millions of faults that are getting recorded all the time so I was proud of our code on a lot of levels but when I took this code analysis squeegee through everything it was it was shocking how many errors there were in there things that you could say okay this was this was a copy paste not changing something right here lots of things that were the most the most common problem was something in a printf format string that was the wrong data type that could cause crashes there and that I did I've I've print I have print myself way too many times way too many times in my lifetime to dang dang it gets me now you really want the warnings for things like that then the next most common was missing a check for null that could actually happen that could blow things up and those are obviously like top CC plus plus things everybody has those problems but the long tail of all of the different little things that could go wrong there and we had good programmers and my own code stuff that I'd be looking at it's like oh I wrote that code that's definitely wrong we've been using this for a year and it's this summer you know this mind sitting there waiting for us to step on and it was humbling it was and I reached the conclusion that anything that can be syntactically allowed in your language if I'm it's going to show up eventually in a large enough code base I you're not gonna good intentions aren't going to keep it from happening you need automated tools and guard rails for things and those I like this take a lot like I you know I I know we'll probably disagree on the debugger thing or really I don't even think we disagree I think we're just in different environments uh it's just like not really an option A lot of the things he's talking about for me to run but this idea of being able to run additional tooling on top of your code to say that you are correct correct you know that's why I've said multiple times this new like co-pilot X thing coming up the fact that it does not have a hey these could be problems in your code blows my mind right like that is the they they've integrated it with GitHub and they do like unit test generation I don't want it writing unit tests I want to really think about my unit test I don't want to generate just crap I don't want it to alert me that I don't have enough testing I wanted to tell me where have I messed up that's not caught by the language like something my own dumb self Has Done Right like to me that is like the greatest possible use of AI in programming and that's like the one they're not doing that is the best thing it blows me away honestly it blows me away start with things like static types and or even type hints in the more Dynamic languages but the people that rebel against that that basically say uh that slows me down doing that there's something to that I get that I've written you know I've cobbled things together in a notebook I I'm like wow this is great that it just happened but yeah that's kind of sketchy but it's working fine I don't care it does come back to that that value analysis where sometimes it's right to not care but when you do care if it's going to be something that's going to live for years and it's going to have other people working on it I and it's going to be deployed to millions of people then you want to use all of these tools you want to be told it's like no you've screwed up here here and here and that does require kind of an ego check about things where you have to to be open to the fact that everything that you're doing is just littered with flaws it's not that oh you occasionally have a bad day it's just whatever stream of code you output there's going to be a statistical regularity of things that you just make mistakes on feels good too doesn't it oh man especially like right now I'm kind of having what uh you know we've jokingly referred to as like you know it's just like my tool is kind of being used a bunch um at my job now my latest tool and a lot of people are using it and dude I get like one or two reports a day like hey it doesn't work this way hey this thing broke it hey this one thing you didn't expect this output from the server because you know I'm hobbling together like seven different services to do output and dude I just get bamboozled bite all sorts of things I didn't know existed right just constantly and I am and I do think there's a whole argument about test driven design and unit testing versus kind of analysis and different things I am more in favor of the analysis and the stuff that just like you can't run your program until you fix this rather than you can run it by the way that was obviously a rust reference clearly that was a rest reference okay I know he may not admit it out loud no matter what but you know we all know and hopefully a unit test will catch it in some way yeah in my private code I have asserts everywhere uh just there's something pleasant to me pleasurable to me about sort of the dictatorial rule of like this should be true at this point and too many times I've made mistakes that shouldn't have been made and I would assume I wouldn't be the kind of person that would make that mistake but I keep making that mistake therefore an assert really catches me uh really helps all the time so my code I would say like 10 to 20 of my private coach just for personal use is probably a certain and they're active I do like that I really I really do feel like I need to try using more asserts I don't really assert like I do feel like there's something to that that just seems like such a good move and yet I don't do it you're gonna assert these nuts Where Are You Gonna assert them at they don't make any difference to the program and if it was all operating the way you expected it would be then I they will never fire but even if you have it right and you wrote the code right initially then circumstances change the world outside your program changes and in fact that's that's one of the things where I'm kind of fond in a lot of cases of static array size declarations where I went through this period where it's like okay now we have General collection classes we should just make everything variable I because I had this history of in the early days you get Doom which had some fixed limits on it then everybody started making crazier and crazier things and they kept bumping up the different limits this many lines this many sectors uh and it seemed like a good idea well we should just make this completely generic it can go kind of go up to whatever and there's cases where that's the right thing to do but it also the other aspect of the world changing around you is it's good to be informed when the world has changed more than you thought it would and if you've got a continuously growing collection you're never going to find out you might have this quadratic that's a really good that's that it is very interesting right like to be able to always find your bounds like what cannot what can something not exceed and if it's exceeding it why is it exceeding it this video is in 1.25 slow down on something where you thought oh I'm only ever going to have a handful of these but something changes and there's a new design style and all of a sudden you've got 10 000 of them so I kind of like in many cases picking a number some you know nice Brown power of two number and setting it up in there and having an assert saying it's like hey you hit the you hit this limit you should probably think are the choices that you've made around all of this still relevant if somebody's using 10 times more than you thought they would yeah this code was originally written with this kind of world view with this kind of set of constraints you were thinking of the world in this way if something breaks that means you got to rethink the initial stuff and it's nice for it to for for it to do that is there any stuff like a keyboard or awesome I wonder how well that works in the web world right like you can't assert things in production but you need a way to be able to run enough things to be able to know that because right like you can't just explode your pro you can't just take down your servers it's interesting a fairly pedestrian on a lot of that where I I did move to Triple monitors like in the last several years ago I had been dual monitor for a very long time and I am and it was one of those things where probably years later than I should have I'm just like well the video cards now generally have three output ports I should just put the third monitor up there that's been a that's been a pure win I've been very happy with that um but no I don't have fancy keyboard or mouse or anything really the key things is an IDE that has I always feel like that argument for multiple monitors it always just comes down to one thing how efficient are you at moving within your operating system uh for me I'm a one monitor person I will always probably be a one monitor person because it's just a single key press to do that which for me it feels easier than looking somewhere else focusing getting the point and doing you know and using it the same way I'd rather just do this because for me that's easy I don't know I've always been a one monitor kind of person I have two computers I only have a second computer because I stream it's not because I have two computers I when I when I'm at my day job I'm just I'm just doing that and I just play my music right here you know I'm on YouTube doing whatever on YouTube there we go this is fantastic and then when I'm done I'm just right back here you know I'm just I'm just working and when I want to change something I just hop back over to it I3 yeah I know a window manager is really good a window manager is really really good I think people sleep on how good a window manager is uh helpful debuggers has helpful tools so it's not the Emax vimro and then Diet Coke yeah so I did spend you know I spent uh one of my week-long Retreats where I'm like okay I'm gonna make myself use uh there's actually classic VI which I know people will say you should never have done that you should have just used them you know I gave it the good try it's like okay I'm being in kind of classic Unix developer should have went with Vim VI is too old it's not quite it misses a lot of good motions it's why I don't really like VI there's a lot of motions and ways you can manipulate texts that are just so much better with Vim developer mode here and I use I worked for a week on it I used kinky to like teach myself the different little key combinations for things like that right and at the end it's just like all right this was kind of like my Civil War reenactment phase you know it's like I'm going out there doing it like they used to in the old days and it was kind of fun in that regards so many people right now like it was screaming as they're listening to this okay the out is that this is not I mean I am offended okay I am genuinely a program I think it's just the best the fact that I can do that this is fantastic to be able to jump in here and just hit that Chad stack right like look how good that was okay to be able to go back here and go to that cargo chatter that we're building right the ability just to swap between these two projects with you know just oh modern video but still I yes I was very happy to get back to my visual studio at the end yeah I'm actually I struggle with this a lot because so use a Kinesis keyboard and um I use emacs primarily and I I feel like I can exactly as you said I can understand the code I can navigate the code there's a lot of stuff you could build with an emacs with using lisp you can customize a lot of things for yourself to help you uh introspect the code like to help you understand the code and visualize different aspects of the code you can even run debuggers but it's it's work and uh the world moves past you and the better and better ideas are constantly being built and that that puts a kind of I need to take the same kind of retreat as you're talking about but now I'm still fighting the Civil War I need to kind of move so I did I did do it you guys saw it I did a week-long in vs code right I I decide to lay down my musket and try out one of these new fancy ArmaLite rifle platforms it was horseshit solid solid yeah I spent a lot of time setting up vs code I spent a lot of time setting up vs code it just works no it actually doesn't you gotta set up quite a few things and then you're playing this game of finding options and all the options are crazy to find just like Vim except for it's just not it's just not quite the same you know just not quite the same moving to the 21st century and it does seem like the world is or a large chunk of the world is moving towards Visual Studio code which is kind of interesting to me against the JavaScript ecosystem on the one hand I use Harpoon and I did use Harpoon by the way I used Harpoon and vs code I was using it I was loving it okay I still have I still hate it and and IDs are one of those things that you want to be infinitely fast you want them to just kind of immediately respond and like I mean heck I've got there's someone I know I'm an old school Game Dev guy that still uses Visual Studio 6 and on a modern computer everything is just absolutely instant on something like that because it was made to work on a computer that's ten thousand or a hundred thousand this is why I like using them right here this is this is the statement that's why I like it is because I don't want to have to be in here and having to play this game of like why isn't my stuff loading why is my LSP taking so dang long like I just want things to feel really crispy you know what I mean that's why I use it because I don't like that feeling that vs code gives me it just drives me nuts thousand times slower so I'm a glutton for performance I love it just everything happens immediately and all the modern systems just feel you know they feel so crafty when it's like oh why is this refreshing the screen and moving around and updating over here and something blinks down there and you should update this and there's you know there are things that we've lost with that incredible flexibility but lots of people get tons of value from it and I am super happy that that seems to be winning over even a lot of the old vimini Max people that they're kind of like hey Visual Studio codes maybe you know not so bad um that may be the final peacekeeping solution where everybody I actually I would rather use Visual Studio Real Talk I'd rather use Visual Studio if you said hey do you want to use Visual Studio or vs code I would rather use Visual Studio I'd rather use IntelliJ at least IntelliJ it takes like a minute to start up it has to go crunch some indices for a while it takes a long time to get set up but once it's there IntelliJ is fast but it has to do a bunch of crunching but at least after it's crunched it is fast and to me that is really important is that I want that smooth feeling I want all that stuff you don't get that with vs code ever it just never feels fast he is reasonably happy with Iowa is good I use IntelliJ for two years I really tried to love and learn IntelliJ and I really did I used it for quite some time and then I moved over I did I did Visual Studio I've done IntelliJ I Sublime vs code Adam Vim neovim emacs do Max space Max I've tried so many gosh dang editors you know what I mean I've tried so many intellij's tooling is absolutely great yeah it is it is very very good IntelliJ is really good
Info
Channel: ThePrimeTime
Views: 392,219
Rating: undefined out of 5
Keywords: programming, computer, software, software engineer, software engineering, program, development, developing, developer, developers, web design, web developer, web development, programmer humor, humor, memes, software memes, engineer, engineering, Regex, regexs, regexes, netflix, vscode, vscode engineer, vscode plugins, Lenovo, customer service
Id: qFnHWMxlOBc
Channel Id: undefined
Length: 26min 52sec (1612 seconds)
Published: Sat Apr 22 2023
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.