[video output=day219 member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Automatically Constructed Debug Hierarchies" vod_platform=youtube id=FQzGVuWDHcg annotator=insofaras]
[0:02][Intro]
[0:31][Background on the number 219]
[1:10]["You should fertilize that directory with human tears, and then you should see what grows from it. It will probably be black roses that crumble and blow away with the wind."][quote 322]
[1:39]["The whole point of the existence of this system is because humans are so fallible and always do everything wrong."][quote 323]
[1:49][Current state of the game when run]
[2:04][Brief explanation of unlimited debug info storage system from yesterday]
[3:25][Determining today's goal: bringing the debug system together]
[4:31][Starting work on hierarchical debug event UI]
[4:52][Describing how debug events should be grouped into a hierarchy of debug elements]
[6:43][Changing terminology of root tree back to root group]
[7:23][Re-enabling hierarchy generation for the new system]
[8:38][Considering whether or not to add free-list for the debug info]
[9:25][Updating AddVariableToGroup, CreateVariableGroup to work with elements in a tree hierarchy]
[12:31][Splitting AddVariableToGroup into AddElementToGroup and AddGroupToGroup]
[13:49][Noting names aren't stored in debug_variable_group, and fixing it]
[15:41][Removal of CreateVariable]
[16:21][Adding root variable group handling in GetGroupForHierarchicalName]
[17:37][Creating root variable group]
[18:26][Adding hierarchy lookup to GetElementFromEvent]
[19:25][Thinking how BlockName and/or GUID should be used to create the hierarchy]
[22:14][Use GetGroupForHierarchicalName when adding a new event to check for a parent group, and link them if there is one]
[23:43][Enabling the drawing of the hierarchy]
[24:18][Debugging crash due to not knowing how to draw certain debug elements]
[25:50][Adding a default name for unhandled debug events to prevent crashing]
[26:09][Running the game, now doesn't crash, but debug variables aren't listed]
[26:28]["Sometimes even in the depths of despair, some little tiny thing goes your way, and the important thing to remember is not to let that go to your head"][quote 324]
[26:59][Start looking into why debug variables aren't appearing]
[29:51]["I want to break down in tears. I want to just give up and let the horrors of the world continue unabated. But instead what I'm gonna do is set a breakpoint on MarkDebugValue"][quote 325]
[30:09][Add breakpoint to MarkDebugValue to see which events are getting through]
[30:46][Explanation of the bug, partial fix by storing GUID in the event]
[31:49][Rerunning the game, multiple events now correctly show up, but with incorrect text]
[31:57][Storing BlockName into the event too, making the debug display slightly more correct]
[33:37][Explaining how the debug names can be used to assemble the hierarchies]
[34:25][Implementing the hierarchy building in GetGroupForHeirarchicalName]
[38:00][Adding the GetOrCreateGroupWithName helper function]
[41:01][Putting a name into the debug_variable_group struct, completing hierarchy creation code]
[44:03][Adding a StringsAreEqual function with explicit length parameters]
[46:22][Describing what more needs to be added for the debug hierarchy to display correctly]
[48:10][Start branching the code to handle both single elements and hierarchies]
[51:39][Running the game, now events are displayed hierarchically]
[53:53][Adding interaction support to the hierarchical debug events]
[58:18][Rewriting how groups are expanded]
[59:36][Game running, interactions now working but with improper highlighting]
[1:01:43][Debugging why multiple interactions are being highlighted as hot]
[1:02:11][Found the bug]
[1:03:08][Everything running correctly]
[1:03:45][Q&A][:speech]
[1:04:11][@d7samurai][was this the 'depression oriented programming' approach i keep hearing about?]
[1:04:32][@m1el][you pass string length together with pointer to string data in several places. Do you think it would be better to create a string struct that holds length and a data point?]
[1:05:13][@vidster88][You've talked a lot about languages lately, have you taken a look at Swift at all? Thoughts?]
[1:05:31][@elxenoaizd][How do you come up with that literacy stuff? That was Awesome!]
[1:05:53][@programgamer][I DONT GET ANYTHING \:(]
[1:06:12][@yoonfan][do you think that the bug in DebugInteractionsAreEqual would have been caught by a compiler-generated comparison operator as in C++?]
[1:07:08][@groggeh][will handmadehero2 be written in JAI ?]
[1:07:16][@elxenoaizd][I meant literature talk sorry lol]
[1:07:57][@thegeekpirate][Who is your favourite figure in the computing world (dead or alive)? Mine's currently Claude Shannon]
[1:08:19][@ikkir_isth][how about handmadebrowser in JAI? \:)]
[1:08:40][@luijee][Off topic but how old were you when you started coding]
[1:08:47][@a_pulsing_mage][prestream question: do you think that intel hitting the proccesa size limit will make video game falter of will they survive?]
[1:09:33][@mitch77x][Casey, you are as old as me. Are you also planning to retire from working ASAP ? \:-)]
[1:10:58][@falsemann][What do you think about Test-Driven Development?]
[1:11:13][@hecline][do you actually play games yourself? If so what?]
[1:11:34][@jayp2][Why should i keep on going in this harsh cold reality, when i get lost on episode 005 of hmh \:(]
[1:12:22]["We just have to have faith that The Variable is looking down on us from The Great Memory, and that if we all just work hard and try to be good people that eventually The Variable will let us into The Great Memory and we'll live in peace and happiness with all of our other discretized values."][quote 326]
[1:12:57][@actbinary][would you prefer to ui in c code or use something like html or something else?]
[1:13:08][@ingenero][If you could be given complete control over Microsoft or Apple, which one would you choose and what would be your number one priority?]
[1:13:48][@brethudson][Mind giving a shout-out about your appearance on the indie(Radio); podcast tomorrow?]
[1:15:59][@mitch77x][Casey, the question was not entirely meant funny: Can you imagine to still code games and stuff when you are like 60?]
[1:16:55][@elxenoaizd][sometimes I compare myself with other great programmers and get depressed cause I'm far away from their level - I know I shouldn't be comparing cause they grew up in different environments etc and I know for sure I can reach their level if I apply myself and learn quick, but sometimes it just gets to me and I feel bad about it... have you ever felt that way? any tips how to overcome it?]
[1:23:10][@gasto5][Do you think Japanese not adopting the OOP paradigm is because they are smarter or simply because of not even being interested in changing to new languages?]
[1:23:46][@jayp2][Pseudo coder question: How would one go about learning Assembly language? And are compilers/linkers written in that?]
[1:26:12][@reimaginedgames][would you ever think about using C# or python?]
[1:26:27][@yoonfan][how do you approach getting an overview of a large code base, like clang or the linux kernel?]
[1:27:28][Wind down][:speech]
[1:28:06][Support episode guide extraordinaire @Miblo[ref
    site=Patreon
    page="Matt Mascarenhas is creating annotations for Handmade Hero"
    url=https://www.patreon.com/miblo]][:research]
[/video]
