diff --git a/pervognsen/bitwise/bitwise/bitwise002.hmml b/pervognsen/bitwise/bitwise/bitwise002.hmml index a3ad728..9554568 100644 --- a/pervognsen/bitwise/bitwise/bitwise002.hmml +++ b/pervognsen/bitwise/bitwise/bitwise002.hmml @@ -1,2 +1,49 @@ -[video member=pervognsen stream_platform=twitch project=bitwise title="C Programming & Parsing" vod_platform=youtube id=0woxSWjWsb8 annotator=] -[/video] \ No newline at end of file +[video member=pervognsen stream_platform=twitch project=bitwise title="C Programming & Parsing" vod_platform=youtube id=0woxSWjWsb8 annotator=Miblo] +[0:01][Recap and set the stage for the day, with a recommendation to read Chapter 2 through 4.1 of Wirth's 'Compiler Construction'[ref + author="Niklaus Wirth" + title="Compiler Construction" + url=https://www.inf.ethz.ch/personal/wirth/CompilerConstruction]][:language :parsing :speech] +[3:05][Dive in to ion.c, with a few words about debugger-centric workflow][:language] +[12:42][Introduce stretchy buffers, invented by [@nothings Sean Barrett]][:memory] +[18:28][Introduce BufHdr struct and the buf__hdr(), buf__fits(), buf__fit(), buf_len(), buf_cap() and buf_push() macros][:memory] +[28:15][Introduce buf__grow(), buf_free() and MAX()][:memory] +[38:55][Step in to buf_push() and inspect the buf][:memory :run] +[40:14][Enable buf__grow() to include the BufHdr in the reallocation][:memory] +[42:06][Step back in to buf_push() and inspect the buf][:memory :run] +[43:32][Fix buf__grow() to return the new_hdr->buf][:memory] +[47:33][Step through a loop of buf_push()][:memory :run] +[49:11][@chargrove_dev][@pervognsen Here's another poke to check your stream z-order; your camera is behind the IDE] +[49:37][@asafgartner][@pervognsen (1) There's a lot of audio buzzing. (2) Visual Studio is on top of your webcam. (3) We can't see menus in VS] +[50:26][@normalnull_][@pervognsen One idea, designate one trusted helper who is able to ping you while you ignore regular chat for hints like audio issues or window switching or whatever] +[51:20][@manokara][Dedicated capture hardware is better so your CPU doesn't struggle with encoding and streaming] +[51:33][@captainkraft][@pervognsen Why use macros for this instead of functions?] +[51:37][@garretttypes][@pervognsen Line 17, shouldn't "buf" be just "b"?] +[51:48][Fix buf__hdr() to operate on b rather than buf][:memory] +[53:10][@danbokser][@pervognsen For buf__hdr it looks like you're using buf instead of b] +[54:04][Could you add more functions like reserve()?][:authored :memory] +[54:32][Loft our code out into buf_test()][:memory] +[54:50][@symbolic_butt][@pervognsen This is kind of similar to the implementation of lists in cpython right?][:language] +[55:42][@onebloke][@pervognsen The menus and pop up windows cannot be seen] +[56:13][@manokara][Is it me or is the mic lower than yesterday?] +[57:05][@satire_][What's the reasoning for using macros vs functions for most of the stuff?] +[58:47][@zxsnkx][Connection here is unreliable... Will have to catch this later on YouTube] +[59:08][@manokara][Jesus, is that coke?] +[59:37][@manokara][But I think it's a bit too acidic to hydrate] +[59:50][Introduce lexing, with a TokenKind enum and Token struct][:parsing] +[1:03:29][Introduce the notion of a global state machine, with next_token()][:parsing] +[1:06:35][Introduce lex_test() with a few words on this testing approach][:parsing] +[1:08:21][Step into lex_test() to see what it does][:parsing :run] +[1:08:41][Set TokenKind to start at 128][:parsing] +[1:08:56][Continue to step through lex_test()][:parsing :run] +[1:10:16][Augment the Token struct with semantic information, and implement string to integer conversion][:parsing] +[1:12:28][Step in to lex_test() to see if that worked, waxing lyrical on Ctrl-F10 for stepping through the loop][:parsing :run] +[1:13:34][Introduce identifier :parsing with cases for every letter in the alphabet, including print_token(), with a few words on ] +[1:19:59][A few words on printf()'s .* pattern to specify the number of bytes to print][:speech] +[1:20:33][Let lex_test() test alphabetical characters and finish implementing print_token()][:parsing] +[1:25:14][Step in to lex_test() to see how the identifier stuff shakes out][:parsing :run] +[1:26:07][Revert print_token() to use printf()] +[1:26:27][Step in to lex_test() and note Visual Studio's ability to let us specify how many bytes of the string to print][:parsing :run] +[1:28:52][Prevent print_token() from falling through the entire switch statement] +[1:29:12][Continue to step through lex_test() to see how it works][:parsing :run] +[1:29:47][A few words on our basic lexer, before stopping the recording][:parsing :speech] +[/video]