[video output=day218 member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Hashing Debug Elements" vod_platform=youtube id=66DXTnHDesc annotator=Miblo] [1:20][All You Can Eat][quote 302] [1:50]["We don't know which kind of a lunch buffet our debug system will be yet..."][quote 303] [2:58][Build and run and note how fast the guy zips around, before turning the debug system back on] [3:34]["There will always a better lunch tomorrow"][quote 304] [3:47][handmade_debug_interface.h: Recap the GUID concept] [5:23][On shifting the place settings when serving lunch][quote 305] [5:53][handmade_debug_interface.h: Pass in the GUID and make it work] [7:15][Thoughts on the macro processor][quote 306] [8:22][On thinking about memory allocation over lunch][quote 307] [9:40]["It's more of a lunch thing"][quote 308] [10:01][handmade_debug.cpp: Make CollateDebugRecords put Elements into locations based on where they came from] [12:13][handmade_debug.cpp: Introduce GetElementFromEvent] [16:04][First Rule of Programming: "You don't eat lunch if you're already full"][quote 309] [16:21][handmade_debug.cpp: Continue implementing GetElementFromEvent] [19:50]["That's like getting lunch delivered..."][quote 310] [20:46][handmade_debug.cpp: #if 0 CreateVariable, AddVariableToGroup, CreateVariableGroup and FreeVariableGroup] [21:11][handmade_debug.cpp: Introduce StoreEvent] [23:54]["Easy peasy lemon squeezy"][quote 311] [24:31][handmade_debug.cpp: Continue working with the StoreEvent] [25:58][Thoughts on lunch despotism][quote 312] [26:24][handmade_debug.cpp: Remove all of the Region stuff and #if 0 AddVariableToGroup] [27:32][handmade_debug.cpp: Implement StoreEvent] [29:07][handmade_debug.cpp: Fix compile errors] [30:51][Apologise for making a faux pas][quote 313] [31:00][On the programming equivalent of sitting at the wrong seat at lunch][quote 314] [31:18][handmade_debug.cpp: Vaporise PushSizeWithDeallocation] [32:01]["Don't let your whole life be defined by the one bad lunch you ate"][quote 315] [32:32][handmade_debug.cpp: Make the StoredEvents be freed as necessary] [36:58][handmade_debug.cpp: Introduce FreeOldestFrame] [39:36][Compile, fix compile error and ensure everything else is doing something reasonable] [40:14][handmade_debug.cpp: Add if(ArenaHasRoomFor) to NewFrame] [42:40][handmade_debug.cpp: Make a PerFrameArena SubArena] [44:44][Debugger: Step into PushSize and discover that we didn't have enough debug memory] [45:33][Run the game and note that we're storing all of our debug data] [46:25][handmade_debug.cpp: Investigate why our Last frame time is wrong] [48:10][Debugger: Hit a FrameMarker and inspect values] [50:06][handmade_debug.cpp: Correctly set the MostRecentFrame] [50:19][Run the game and see that our Last frame time is now correct] [50:32][handmade_debug.cpp: Print out the memory usage of the arena] [52:37][Run the game and see our Per-frame arena space remaining] [53:05][handmade_debug.cpp: Reduce the size of that SubArena] [53:41][Run the game and see the new Per-frame arena space remaining] [53:57][Debugger: Step into StoreEvent and ensure that everything's still working properly] [55:10][Warn against eating more lunch than we can reasonably digest][quote 316] [55:43]["There's always lunch tomorrow"][quote 317] [56:02][Q&A][:speech] [56:32][@Miblo][When we come to do the AI system, do you think it'd be reasonable to give the dudes a "gather lunch" behaviour?] [56:50][@insofaras][What did you have for lunch?] [57:24][@doritosranger][Imagine that you're young again and you're eating your lunch and you can choose between a C and Java-like language in what you can work with memory in much C-like way but that language would say you how to implement some ideas (like a Python is about line offsets, which is not good I think)? What would you choose then and why?] [58:42][@evraire][During HandmadeCon will there be an organised lunch at the Campfire BBQ?] [59:04][@assnburgers][Does Emacs offer more syntax support than what I am seeing at the moment?] [59:36][@Ikkir_Isth][Is there anything that could be considered a "free lunch" in low level optimization?] [59:47][@cubercaleb][Fair warning: The optimizer might store the strings in the same place which will break the whole GUID thing] [1:00:13][@btnGames][Do you suggest programming should be snacked upon throughout the day as an alternative to a 3 course code feast?] [1:02:28][@insofaras][Why do you think that there have been no good new languages since C? Are all the language designers out to lunch these days?] [1:04:13][@PookiesRevenge][Do you feel there's a perfect balance between test-based coding, or more efficiency / optimization? Or do you prefer one over the other?] [1:06:39][@assnburgers][What are your thoughts on clang?] [1:07:31][@TheMaxS_][I think he meant string literals, like the -Og flag, I think] [1:07:41][@Csixone][What do you think about Unity, etc.?] [1:09:49][@z3rky][What's been the biggest hurdle you've had to overcome so far on this endeavor?] [1:10:03][@killerfred3000][What do you suggest that people who are in the first year of C++ do as projects for coding throughout the day? (Feel free to skip if you've answered this before)] [1:11:21][@jessem3y3r][Have you seen John Cleese's talk on creativity? If so, what are your thoughts on it?] [1:11:36][@insofaras][How many more features will the debug system get? It already eats most other engines' lunch] [1:12:25][@LeXxXiNgToN][Do you feel that taking calculus 1/2 is needed to become a good programmer?] [1:13:31][@TheMaxS_][It was actually the -GF flag for the MSVC compiler. It enables string pooling, lumping all string literals into a read-only portion of memory so it only stores one of each different string] [1:14:42][@ImJustRoids][Do you think there really hasn't been a good language since C, period? Or just that there haven't been any good languages that do what C can, like a good "competitor"? For example, if someone needs a small app, use C regardless or some higher languages are good for that (in your opinion)?] [1:16:00][@insofaras][What if it doesn't pool strings and two same string literals get different addresses? Would the system lose its lunch?] [1:17:06][Pseudonym73: Note that "good language" is relative to what you're doing. I've done things in Prolog that I wouldn't want to do in C] [1:20:14][Wind down][:speech] [1:22:34]["Don't forget to eat lunch"][:speech][quote 318] [/video]