What I've learned from Casey

Even though this seems to be a niche community and following, I must say that having been in the software world professionally now for a few years, Casey is one of the smartest, most respectable, and most hardworking programmers I've ever had the pleasure of "meeting." The fact that the show still exists after FOUR YEARS says perhaps even more than all of the great lessons learned by watching it. I think this in and of itself goes understated in the community - so many codebases on GitHub are started and abandoned in a matter of months - let alone years.

I thank myself all the time for having learned so many core computer science fundamentals from Casey - and many folks I work with have been impressed by my knowledge which is directly attributable to this show.

But most importantly, Casey has amazing work ethic that is almost completely unheard of now adays. I've never developed a video game and probably never will - but the videos on multithreading, CPU architecture, and compiler stuff are priceless and relevant to the line of work that I'm in as well.


I want to extend a HUGE thank-you to Casey Muratori for having such a positive influence on me as a programmer and also on my career. In a sea of mediocre, Casey's skills, dedication, and teaching ability stand out like a sore-thumb. Casey may appear dogmatic at times but a dose of dogmatism instead of conforming to bullshit practices because "that's the new thing everyone is doing" is extremely important to producing a quality product. In this regard, Casey has inadvertently been a (very, very high quality) mentor to me. It's a shame HandmadeCon is no longer happening because I'd love to meet the man in person!

Edited by Todd on Reason: Initial post
I can second that one buddy you hit the nail on the head!
I 100% agree. I am much more comfortable programming now thanks to learning from casey's techniques of compression oriented programming and not trying to pre-plan an architecture from the start.
I remember something like 7 or 8 years ago, I saw a conference of Jonathan Blow during which he explain a little bit about how he programmed. (like how having a long function can be perfectly fine). This was good, but nearly not enough. I already had the good direction but, I still missed so much on how to manage the complexity of a real program.

Handmade Hero really made a big difference for me. It probably gave me a shortcut of at least ten years of trial and error.

There is still so much to learn. But on my way, I'll make some awesome softwares !
I learned that when a sign says "here be dragons", it's perfectly possible to conquer those dragons.

A lot of the nitty gritty bits of programming that was hidden behind the runtime or libraries now became clear to me as an area that you can explore instead of leaving it to the experts. And there is no reason to be content with bad APIs though I'm pragmatic enough to deal with historic baggage and leaking abstractions.
I have to share my appreciation for Casey's work as well.

I have been working on game-related technology; specifically, an application that demonstrates this technology. This application has been developed in a fairly standalone environment, apart from surrounding company technologies and practices, so I have been largely in control about how the application is developed.

I was, at some point, tasked with porting the application to a new private platform that I have never touched before. Because I had abstracted the platform code from the application code in a clean way and followed other sane practices taught by Handmade Hero, I was able to port the application in a matter of 1 or 2 days of work. This is also an application that was required to also run on both Windows and Linux.

I can only imagine the sort of nonsense I'd be having to deal with had I not constructed the program in a sane way. It was a great feeling, seeing that the lessons I had learned from Handmade Hero be that valuable in a real-world, work-related scenario. It was great to personally experience evidence that this stuff is actually legit, and that the criticism of Handmade Hero style development sort of falls flat, evidence-wise.
Ryan,

Thanks a lot for sharing a relevant, concrete professional testimonial!

To be more concrete, Casey's work with multithreading has helped me implement a native multithreaded application for work and his explanation of the CPU pipeline, multithreading, hyperthreading, and compiler stuff has helped me in my projects reverse-engineering malware and other software for work (I work as an engineer in software security so my job involves a fair bit of "research" work reverse-engineering assembly code and etc...). He also restored my love of programming because for a while, I was under the impression that eveything had to be OOP because that is "how it's done" now but I learned from him that that is only true if you believe it is... And there is plenty of non-OOP great code out there and also folks who support it.

Edited by Todd on
Todd
I was under the impression that everything had to be OOP because that is "how it's done" now but I learned from him that that is only true if you believe it is... And there is plenty of non-OOP great code out there and also folks who support it.


I second that. As an indie game dev who's always worked in C (because of a severe aversion to C++) I've always felt in the back of my mind some degree of shame like there must be something wrong with me for not getting on the OOP bandwagon. So when I finally stumbled upon HMH it was somewhat cathartic to see someone elucidating so many of the ideas/thoughts/concerns/suspicions that had been playing around in my head for so long. I really think HMHs real and lasting value will be the community it helped to spawn as opposed to the educational value of its material.

Edited by NelsonMandella on
I planned writing something like this too. But you beat me to it. I'm at episode 91 now and I can't tell you how thankful I am for:

1. The effort Casey has put in doing this and the generosity he has shown. Similar to you've I've been a professional developer for some years now but this series has enhanced my skills in ways no shitty tutorial page would ever be close to doing. When Casey speaks of new programmers being lost in the abstractness of the OOP-world, resting on frameworks and whatnot (which he often does) he is absolutely right. Nothing has revived my interest in programming more than this series, and in a way I'm going back to my own (almost forgotten) roots. I used to fiddle a lot with hardware as kid/teenager, and honestly always felt that the way I've been programming before this series has lacked something. I know what that was now, it was the concrete hardware/OS-near way of programming.

The possibility to follow something like this, where we code a game completely from scratch without any external dependencies, has always been something I wanted. Nowadays being a developer means you are tossed into a job where you meet a huge complex (and abstract) system where you spend most of the time just learning to navigate the code base. I'm forever grateful for getting the chance to see the full chain of creation here. Immensely grateful. In a way it's like getting a super talented programmer by your side who teaches you like a mentor. Priceless imo. This is also why I "sell" this series to anyone I want to help learning programming, in an almost fanatical fashion, haha.

2. Finally breaking the imposter syndrome barrier. This has been huge for me as a person. Just before I found out about this project I actually discussed the syndrome with the same friend of mine who recommended this project (who, incidentally, works at DICE and has been part of the team building Frostbite, so this series is being recommended by some very capable people :)). I asked him "Creating games has been a dream all my life, basically since I was 10 years old or so, what do I need to know in order to work at a company like DICE? He told me I needed to learn c/c++ (possibly Rust and the likes in the future perhaps), and how to create 2d graphics and then 3d graphics. A few days later he followed up with a link to Handmade Hero. It kinda changed my life. I know these are big words, but it's true.

Casey has shown me that he's basically the same kind of developer as I am, trying to be pragmatic and with a huge portion of humility, breaking the bubble that told me that I could never do this, because all game devs are part of some kind of alien race with superior skills in just about everything. In a way this series has made clear to me that I too can become a game dev, no problems, if I just put effort into it. (My math skills are better than ever, and it has even been fun doing math, for ONCE).

The fact that Casey himself has uploaded a video discussing the very same syndrome (I haven't watched it yet, but I will) I think I suffered from all my life until now, just made me more certain that this series was the perfect thing for me.

Almost at 100 episodes now! Thank you Casey!!


Edited by Anders on
First and foremost.

Thank you Casey, I am not crazy!
_ In easy verse, that’s good and terse_


About my background.

My education was completely oriented to hardware, in a country with no video game development background.

I am graduated in Electronic Engineering and by the time I started leaning to the computer graphics & video games, there were ZERO decent books, no colleagues or professors to ask, limited internet and very few web sites dedicated to the topic. A myriad of misinformation.

While I was still in the bachelor, the whole thing about programming was getting the code to execute as fast as possible, fitting in some Kb of RAM and specifically written to run in this and that hardware; no sweet syntax sugar, no overloaded operators, no design patters, or GC, let alone OOD.

When I first started working for the industry, I had the chance to join a AAA team with very experienced programmers. The one thing I had to struggle the most, was the working method, the strict scrum methods. Later I realize it became standard in my career, project after project the amount of programming bureaucracy kept growing.

This is partially it

* C++ extensive usage of stl, templates, and obscure techniques none understood but the 1 genius person who use to work some time there
* Use GC, scripted language to protect yourself
* Become a master in OOP, scrum, Visual Studio, XCode and you choose
* Strict code rules, style
* Spend more time planning and meetings that solving a problem

Each one of the above are crucial to some extent, but I think a lot of the most experienced programmers I worked with, didn't really know where to draw the line.


Right here, right now.

* Casey have thought me there is viable way of producing high quality games, to make out of a living from it and without all the bureaucracy. It is possible and it is also needed

* There is a community that's aware of the mess we are in (i.e. Windows OS policies, C/C++ limitations, optimization, 3rd party dependencies, and so on), it has the curiosity to explore further

* Programming should start from a natural and intuitive way of solving a problem (what I define as organic), but the programmer in turn has to have real world experience. Do not over engineer. This is probably the most difficult part of all

* Compression Oriented Programming was the method I first learned during my career, and none really teach you that. Is the way one naturally solve a problem, do not kill it

* I don't think this community or the programming method used in the HH series belongs to a niche AT ALL, is just that a great majority of game developers have been dragged by misinformed professionals, a greedy industry and a bunch of unnecessary bureaucracy


Looking forward playing your games and tools made with the power of your hands.


Edited by itzjac on
As a side note, is there any episode (or does anyone know) about how Casey himself learned all of this? His knowledge is VAST, and I know that he started at a young age, his dad was a non-game programmer, and he didn't attend college.

When Casey started, Google didn't exist, so I wonder how he got so much of this foundational knowledge... In fact, since he's basically the best programmer I know and he DIDN'T HAVE StackOverflow or Google, it actually makes me question whether we exaggerate the importance of those two learning resources.
I cannot speak for Casey, but I can tell you how I learned programming without internet, around early 90s to 2000. At that time access to internet was very rare thing to me. I got limited access to it only around highschool time when using modem at home.

So almost all the learning I did was from books (mostly in russian). You bought a book and read it over and over until you understood it. And did lot of trial&error by programming simple things util you got it how it works. And if you did not understand something, then you took pen & paper and tried to figure out yourself. That way I learned about computer graphics, pascal, later C, x86 assembly, etc... I had few friends at school who were also programming, so discussing things with them helped.

I went to university (but did not finish it), and I did learn some things which I think are useful, like discrete math, complexity, algorithms. But not any practical skills. All my practical programming skills comes from experimenting on your own.

I do not see stackoverflow as a good place to learn. It is one of the worst ways to learn. Reading official documentation would be much better. I sometimes use stackoverflow, but only to find relevant keywords as answer to my question and then I look up information in different sources to read and understand the topic I'm interested in.

Edited by Mārtiņš Možeiko on
I believe there was an episode where Casey talked about how he started programming and getting work. But I don't know which one and I can't find it in the episode guide. Maybe miblo could help you find it. And there might also be some answers in the Jeff and Casey show.
mrmixer
I believe there was an episode where Casey talked about how he started programming and getting work. But I don't know which one and I can't find it in the episode guide. Maybe miblo could help you find it. And there might also be some answers in the Jeff and Casey show.


Thank you. I think I recall that too but I don't remember him talking about how he LEARNED the topics though... Just that his dad was a programmer and he went to a studio and got inspired, etc... But I'm not sure which books he read, if for example he mostly experimented and used compiler errors, or he had a mentor, etc...


Mārtiņš, thank you for sharing! Actually, I've thought of banning myself completely from Google and StackOverflow. That sounds silly but actually, before I became a software professional, I was unemployed for about a year and during this time I would spend around 12 hours per day reading software books and experimenting... Also, as you said, using a notepad.

To this day, there has been ABSOLUTELY NOTHING ELSE That has even come remotely close to being as good of a learning experience.

I learned more stuff doing that during that one year than I probably did in 10 years in school, and I would go on what I called "learning binges" where I would have 2-4 drinks of caffeine and just study and practice for hours on end... Not the best for my physical health, but it's what got me into this career, and I've recently become a technical lead after a pretty short period mostly due to my self-driven habits that I learned during that period of study.

So Mārtiņš, I don't know many who've done this, but I can personally attest to the effectiveness of it and have begun to realy question how effective some of this new technology actually is. I think a lot of it is good at making you think it's effective.

Edited by Todd on
The 90s/2000s were a golden age for learning how to program. All the information you'd ever need was readily available but it was just inaccessible enough to force you to consider carefully wether or not pursuing it was worth it. Plus the average quality of a programming book or website was many many times higher than in today's world. If anything we have too much information today and the greater quantity is arguably offset by filtering costs and lack of curation.

Stackoverflow is just a giant reference book, it certainly doesn't teach anyone to program or make them better, if anything on average it probably makes them worse. If one guy goes to stackoverflow whenever he encounters a problem that takes him more than 4 hours to solve and his friend doesn't opting to spend as much time as it takes, in the long run the ladder guy is going to end up a much better programmer because he's grappled with and learned from problems that were far more difficult than the first guy, obviously. To the extent that people use stackoverflow as a crutch, they're probably reducing their long term abilities.