We are currently in the process of converting the website to the new design. Some pages, like this one, are still broken. We appreciate your patience.
Bitwise»Episode Guide
C Programming & Parsing
?
?

Keyboard Navigation

Global Keys

[, < / ], > Jump to previous / next episode
W, K, P / S, J, N Jump to previous / next marker
t / T Toggle theatre / SUPERtheatre mode
V Revert filter to original state Y Select link (requires manual Ctrl-c)

Menu toggling

q Quotes r References f Filter y Link c Credits

In-Menu Movement

a
w
s
d
h j k l


Quotes and References Menus

Enter Jump to timecode

Quotes, References and Credits Menus

o Open URL (in new tab)

Filter Menu

x, Space Toggle category and focus next
X, ShiftSpace Toggle category and focus previous
v Invert topics / media as per focus

Filter and Link Menus

z Toggle filter / linking mode

Credits Menu

Enter Open URL (in new tab)
0:01Recap and set the stage for the day, with a recommendation to read Chapter 2 through 4.1 of Wirth's 'Compiler Construction'1
🗩
0:01Recap and set the stage for the day, with a recommendation to read Chapter 2 through 4.1 of Wirth's 'Compiler Construction'1
🗩
0:01Recap and set the stage for the day, with a recommendation to read Chapter 2 through 4.1 of Wirth's 'Compiler Construction'1
🗩
3:05Dive in to ion.c, with a few words about debugger-centric workflow
3:05Dive in to ion.c, with a few words about debugger-centric workflow
3:05Dive in to ion.c, with a few words about debugger-centric workflow
12:42Introduce stretchy buffers, invented by Sean Barrett
12:42Introduce stretchy buffers, invented by Sean Barrett
12:42Introduce stretchy buffers, invented by Sean Barrett
18:28Introduce BufHdr struct and the buf__hdr(), buf__fits(), buf__fit(), buf_len(), buf_cap() and buf_push() macros
18:28Introduce BufHdr struct and the buf__hdr(), buf__fits(), buf__fit(), buf_len(), buf_cap() and buf_push() macros
18:28Introduce BufHdr struct and the buf__hdr(), buf__fits(), buf__fit(), buf_len(), buf_cap() and buf_push() macros
28:15Introduce buf__grow(), buf_free() and MAX()
28:15Introduce buf__grow(), buf_free() and MAX()
28:15Introduce buf__grow(), buf_free() and MAX()
38:55Step in to buf_push() and inspect the buf
🏃
38:55Step in to buf_push() and inspect the buf
🏃
38:55Step in to buf_push() and inspect the buf
🏃
40:14Enable buf__grow() to include the BufHdr in the reallocation
40:14Enable buf__grow() to include the BufHdr in the reallocation
40:14Enable buf__grow() to include the BufHdr in the reallocation
42:06Step back in to buf_push() and inspect the buf
🏃
42:06Step back in to buf_push() and inspect the buf
🏃
42:06Step back in to buf_push() and inspect the buf
🏃
43:32Fix buf__grow() to return the new_hdr->buf
43:32Fix buf__grow() to return the new_hdr->buf
43:32Fix buf__grow() to return the new_hdr->buf
47:33Step through a loop of buf_push()
🏃
47:33Step through a loop of buf_push()
🏃
47:33Step through a loop of buf_push()
🏃
49:11chargrove_dev pervognsen Here's another poke to check your stream z-order; your camera is behind the IDE
🗪
49:11chargrove_dev pervognsen Here's another poke to check your stream z-order; your camera is behind the IDE
🗪
49:11chargrove_dev pervognsen Here's another poke to check your stream z-order; your camera is behind the IDE
🗪
49:37asafgartner 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
🗪
49:37asafgartner 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
🗪
49:37asafgartner 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:26normalnull_ 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
🗪
50:26normalnull_ 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
🗪
50:26normalnull_ 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:20manokara Dedicated capture hardware is better so your CPU doesn't struggle with encoding and streaming
🗪
51:20manokara Dedicated capture hardware is better so your CPU doesn't struggle with encoding and streaming
🗪
51:20manokara Dedicated capture hardware is better so your CPU doesn't struggle with encoding and streaming
🗪
51:33captainkraft pervognsen Why use macros for this instead of functions?
🗪
51:33captainkraft pervognsen Why use macros for this instead of functions?
🗪
51:33captainkraft pervognsen Why use macros for this instead of functions?
🗪
51:37garretttypes pervognsen Line 17, shouldn't "buf" be just "b"?
🗪
51:37garretttypes pervognsen Line 17, shouldn't "buf" be just "b"?
🗪
51:37garretttypes pervognsen Line 17, shouldn't "buf" be just "b"?
🗪
51:48Fix buf__hdr() to operate on b rather than buf
51:48Fix buf__hdr() to operate on b rather than buf
51:48Fix buf__hdr() to operate on b rather than buf
53:10danbokser pervognsen For buf__hdr it looks like you're using buf instead of b
🗪
53:10danbokser pervognsen For buf__hdr it looks like you're using buf instead of b
🗪
53:10danbokser pervognsen For buf__hdr it looks like you're using buf instead of b
🗪
54:04Could you add more functions like reserve()?
🗪
54:04Could you add more functions like reserve()?
🗪
54:04Could you add more functions like reserve()?
🗪
54:32Loft our code out into buf_test()
54:32Loft our code out into buf_test()
54:32Loft our code out into buf_test()
54:50symbolic_butt pervognsen This is kind of similar to the implementation of lists in cpython right?
🗪
54:50symbolic_butt pervognsen This is kind of similar to the implementation of lists in cpython right?
🗪
54:50symbolic_butt pervognsen This is kind of similar to the implementation of lists in cpython right?
🗪
55:42onebloke pervognsen The menus and pop up windows cannot be seen
🗪
55:42onebloke pervognsen The menus and pop up windows cannot be seen
🗪
55:42onebloke pervognsen The menus and pop up windows cannot be seen
🗪
56:13manokara Is it me or is the mic lower than yesterday?
🗪
56:13manokara Is it me or is the mic lower than yesterday?
🗪
56:13manokara Is it me or is the mic lower than yesterday?
🗪
57:05satire_ What's the reasoning for using macros vs functions for most of the stuff?
🗪
57:05satire_ What's the reasoning for using macros vs functions for most of the stuff?
🗪
57:05satire_ What's the reasoning for using macros vs functions for most of the stuff?
🗪
58:47zxsnkx Connection here is unreliable... Will have to catch this later on YouTube
🗪
58:47zxsnkx Connection here is unreliable... Will have to catch this later on YouTube
🗪
58:47zxsnkx Connection here is unreliable... Will have to catch this later on YouTube
🗪
59:08manokara Jesus, is that coke?
🗪
59:08manokara Jesus, is that coke?
🗪
59:08manokara Jesus, is that coke?
🗪
59:37manokara But I think it's a bit too acidic to hydrate
🗪
59:37manokara But I think it's a bit too acidic to hydrate
🗪
59:37manokara But I think it's a bit too acidic to hydrate
🗪
59:50Introduce lexing, with a TokenKind enum and Token struct
59:50Introduce lexing, with a TokenKind enum and Token struct
59:50Introduce lexing, with a TokenKind enum and Token struct
1:03:29Introduce the notion of a global state machine, with next_token()
1:03:29Introduce the notion of a global state machine, with next_token()
1:03:29Introduce the notion of a global state machine, with next_token()
1:06:35Introduce lex_test() with a few words on this testing approach
1:06:35Introduce lex_test() with a few words on this testing approach
1:06:35Introduce lex_test() with a few words on this testing approach
1:08:21Step into lex_test() to see what it does
🏃
1:08:21Step into lex_test() to see what it does
🏃
1:08:21Step into lex_test() to see what it does
🏃
1:08:41Set TokenKind to start at 128
1:08:41Set TokenKind to start at 128
1:08:41Set TokenKind to start at 128
1:08:56Continue to step through lex_test()
🏃
1:08:56Continue to step through lex_test()
🏃
1:08:56Continue to step through lex_test()
🏃
1:10:16Augment the Token struct with semantic information, and implement string to integer conversion
1:10:16Augment the Token struct with semantic information, and implement string to integer conversion
1:10:16Augment the Token struct with semantic information, and implement string to integer conversion
1:12:28Step in to lex_test() to see if that worked, waxing lyrical on Ctrl-F10 for stepping through the loop
🏃
1:12:28Step in to lex_test() to see if that worked, waxing lyrical on Ctrl-F10 for stepping through the loop
🏃
1:12:28Step in to lex_test() to see if that worked, waxing lyrical on Ctrl-F10 for stepping through the loop
🏃
1:13:34Introduce identifier parsing with cases for every letter in the alphabet, including print_token(), with a few words on
1:13:34Introduce identifier parsing with cases for every letter in the alphabet, including print_token(), with a few words on
1:13:34Introduce identifier parsing with cases for every letter in the alphabet, including print_token(), with a few words on
1:19:59A few words on printf()'s .* pattern to specify the number of bytes to print
🗩
1:19:59A few words on printf()'s .* pattern to specify the number of bytes to print
🗩
1:19:59A few words on printf()'s .* pattern to specify the number of bytes to print
🗩
1:20:33Let lex_test() test alphabetical characters and finish implementing print_token()
1:20:33Let lex_test() test alphabetical characters and finish implementing print_token()
1:20:33Let lex_test() test alphabetical characters and finish implementing print_token()
1:25:14Step in to lex_test() to see how the identifier stuff shakes out
🏃
1:25:14Step in to lex_test() to see how the identifier stuff shakes out
🏃
1:25:14Step in to lex_test() to see how the identifier stuff shakes out
🏃
1:26:07Revert print_token() to use printf()
1:26:07Revert print_token() to use printf()
1:26:07Revert print_token() to use printf()
1:26:27Step in to lex_test() and note Visual Studio's ability to let us specify how many bytes of the string to print
🏃
1:26:27Step in to lex_test() and note Visual Studio's ability to let us specify how many bytes of the string to print
🏃
1:26:27Step in to lex_test() and note Visual Studio's ability to let us specify how many bytes of the string to print
🏃
1:28:52Prevent print_token() from falling through the entire switch statement
1:28:52Prevent print_token() from falling through the entire switch statement
1:28:52Prevent print_token() from falling through the entire switch statement
1:29:12Continue to step through lex_test() to see how it works
🏃
1:29:12Continue to step through lex_test() to see how it works
🏃
1:29:12Continue to step through lex_test() to see how it works
🏃
1:29:47A few words on our basic lexer, before stopping the recording
🗩
1:29:47A few words on our basic lexer, before stopping the recording
🗩
1:29:47A few words on our basic lexer, before stopping the recording
🗩