[video output=day523 member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Introduction to Git" vod_platform=youtube id=3mOVK0oSH2M annotator=Miblo]
[0:01][Welcome with introductory thoughts on professional-grade source code control][:speech :vcs]
[2:15][Introducing git[ref
    site=GitHub
    page="cmuratori / meow_hash"
    url=https://github.com/cmuratori/meow_hash/]][:admin :vcs]
[3:13][`git help -a`][:admin :documentation :vcs]
[6:23][`git clone`, followed by preparation using `git bless`[ref
    site=GitHub
    page="cmuratori / meow_hash"
    url=https://github.com/cmuratori/meow_hash/]][:admin :vcs]
[10:40][Understanding and addressing git's ERROR G0099 "unrevertmail would overwrite previous degettree" using `git unrevertmail`][:admin :vcs]
[16:06][Addressing git's ERROR G0102 "unsetup-graph over graph 4f7b4e1a failed" using `git reset --no-hermeneutics --force`][:admin :vcs]
[18:51][Addressing git's ERROR G0103 "Can't trihash-scribe-index", understanding mail servers and :hashing, using `git retract` (and flags)][:admin :vcs]
[22:55][Addressing git's ERROR G0097 "trirevert-index / mail 436dbcfa conflicted with quadreadporcelainmsg", using `git retract` with the --no-porcelain and --unprint-errors flags][:admin :vcs]
[24:56][Addressing git's ERROR G0103 "quadverify-quote over format 315c4d46 failed" using `git retract` with the --ignore-quilt-errors and --requilt-unquilted-formats flags][:admin :vcs]
[26:24][Reflect on the simple and rewarding nature of the aforementioned process][:speech :vcs]
[29:25][@reductum][Q: Could you go over the git-soil-archive command? I've had a really hard time understanding the docs on it[ref
    site="git man page generator"
    page=git-soil-archive
    url=https://git-man-page-generator.lokaltog.net/#e77d906d648337772dba6e27ff91b2ea]][:vcs]
[29:56][`git git-soil-archive` and the notion of gardening][:admin :vcs]
[33:59][@jkfsda][Q: What if the atomization fails?][:vcs]
[34:51][@ivereadthesequel][Q: I heard Knuth recently proved gardening had a probabilistic polynomial time algorithm? It just has huge coefficients]
[35:18][@longboolean][Q: I am still skeptical. Will this affect the arrangement of my garden gnomes? Rearranging them is not really something that I am able to do as they are permanently fixed in place][:vcs]
[36:14][`git bless --by-gnome --assume-mutable-gnomes`][:admin :vcs]
[36:54][Understanding git's ERROR G0104 "Can't procpinsta-column after uncheckmultiimap with map 27ac3787"][:speech :vcs]
[37:37][@vtlmks][Q: Can you explain the --tricycleentropy option?][:encryption :vcs]
[39:25][Addressing Microsoft Visual Studio's Error '$Loader is undefined' by using @x13pixels' ~remedybg][:admin]
[43:15][Launch and add our project to ~remedybg[ref
    site=RemedyBG
    url=https://remedybg.itch.io/remedybg]][:admin]
[45:40][Organise our ~remedybg layout][:admin]
[49:26][Set up to fix the clipping of our hero's body with the floor during shearing][:"entity system" :run]
[53:16][Walk through the ZDisplacement code][:"entity system" :research]
[57:06][Change SpriteValuesForUpright() to use the sheared YAxis in the ZDisplacement computation][:"entity system"]
[57:18][Find that that doesn't improve our clipping situation][:"entity system" :run]
[57:28][Prevent SpriteValuesForUpright() from factoring the WorldDim into the ZDisplacement computation][:"entity system"]
[57:52][Find that that does solve our clipping problem, except on stairs where our hopping arc is too shallow][:"entity system" :run]
[1:00:20][Note that the top stairs sometimes flash in and out of our fog range][:camera :"entity system" :run]
[1:02:26][Determine to finish up the asset packing for sounds, admiring our realistic :lighting][:"asset system" :run]
[1:04:24][Note our need to assess the ZDisplacement calculation for spinning entities][:"entity system"]
[1:05:03][Listen to and organise our audio assets][:admin :art]
[1:08:33][Set up to parse audio assets][:"asset system" :research]
[1:10:12][Add a "music" block to intro_cutscene.hht, introducing IntroCutscene and TitleScreen tags][:"asset system"]
[1:14:32][Add "sound" blocks to base_game.hht, introducing tags for our audio assets, including the concept of a Variant][:"asset system"]
[1:18:15][Enable ParseTopLevelBlock() to handle "music" and "sound" blocks][:"asset system" :parsing]
[1:27:55][Introduce ProcessAudioImport() and ParseWAV(), guided by the PNG equivalents][:"asset system" :parsing]
[1:36:52][Copy in our WAVE code from test_asset_builder.c][:"asset system" :parsing]
[1:40:51][The Resource Interchange :"File Format"[ref
    site=Wikipedia
    page="Resource Interchange File Format"
    url=https://en.wikipedia.org/wiki/Resource_Interchange_File_Format]][:research]
[1:42:14][Reacquaint ourselves with LoadWAV()][:"asset system" :research]
[1:45:54][Change ParseWAV() to process the entire stream, delegating any chunking to users of LoadWAV()][:"asset system"]
[1:50:29][Audio sample rate and bit depth][:dsp :speech]
[1:55:32][#if 0 out ParseWAV() with the determination to do it tomorrow][:"asset system"]
[1:56:04][Q&A][:speech]
[1:56:51][@jkfsda][Q: Will C++ add CSP type concurrency in the next edition?][:language]
[1:58:35][@ejgremlin][Q: Have you seen Bret Victor's talk Inventing on Principle?]
[1:58:41][@ivereadthesequel][Q: On the pre-stream I'd asked about finding the filter kernels and you asked whether I meant the integer one or the floating point. Do you mind explaining how you found each? Thanks!][:codec :filtering]
[2:00:47][@jkfsda][Q: Have you tried Oni?[ref
    site="onivim / oni"
    url=https://github.com/onivim/oni/]]
[2:02:15][@philliptrudeau][Q: Don't we want 32-bit floating samples for high quality audio streams? Additionally, are we planning to support surround sound later?][:audio]
[2:04:41][@ormone88][Q: What do you think about procedural :audio? Will we explore something about this during future streams?][:"procedural generation"]
[2:04:50][@ivereadthesequel][Q: Thanks! Also, why was the windowed sinc worse than the one you found, if sincs are ideal? Does the kernel need slight changes from the ideal's values once it is windowed?][:codec :filtering]
[2:05:56][@centhusiast][Q: Is it possible to write a graphics card debugger like NSight, or is it something that has to be done by graphics card vendors?]
[2:07:27][@godgifts][@handmade_hero Hello, I'm a computer science student but recently started following your series on YouTube. They helped me a lot because you explain really good in depth. I just want to say thanks for all the work you do for us and I hope that I never catch up with the series because you will never stop doing them]
[2:08:31][@ivereadthesequel][Q: I'm still wondering why we should choose git over TRAVELMAN? Despite its simplicity, I'm just not convinced it's better][:vcs]
[2:09:24][Add the -diagnostics\:column flag to our cl line in build.bat, for columnar errors]
[2:11:54][@jbcgannon][Q: You made an off-hand comment on a source control tool you made yourself. I take it few have seen it other than yourself?][:vcs]
[2:12:15][@aidsjorb][Q: They intentionally didn't make reporting columns the default behavior in order to not break backwards compatibility]
[2:12:51][@jkfsda][Q: Have you seen V-lang? Is it vaporware?][:language]
[2:13:20][@ivereadthesequel][@handmade_hero Since there are so few questions, can I just comment that your coding style is super pleasing? Just popping out structs left and right, so procedural, no weird modern C++-isms, verbose variable and function names so there's no ambiguity. It's nice and has had a huge influence on my style for the better!][:language]
[2:16:06][@roam00010011][Q: Hit a wall, every company I lookup demands OOP, and not a healthy balance of OO and procedural, but the ultra radical OO and nothing but OO][:language]
[2:16:24][@centhusiast][Q:At work, I started rewriting a python package in C since its performance is so bad that nobody wants it anymore. I was wondering why people do not write in native code that often anymore and choose the scripting languages that causes lots of problems further down the road. Do you have any comment on that?][:language]
[2:18:12][End it there][:speech]
[/video]
