Compiler Podcast – Episode 2
?
?
W, K, P / S, J, N Jump to previous / next timestamp
t / T Toggle theatre / SUPERtheatre mode
V Revert filter to original state Y Select link (requires manual Ctrl-c)
X, ShiftSpace Toggle category and focus previous
v Invert topics / media as per focus
Keyboard Navigation
Global Keys
[, < / ], > Jump to previous / next episodeW, K, P / S, J, N Jump to previous / next timestamp
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 CreditsIn-Menu and Index Controls
a
w
s
s
d
h
j
k
l
←
↑
↓
↓
→
Esc Close menu / unfocus timestamp
Quotes and References Menus and Index
Enter Jump to timestampQuotes, References and Credits Menus
o Open URL (in new tab)Filter Menu
x, Space Toggle category and focus nextX, ShiftSpace Toggle category and focus previous
v Invert topics / media as per focus
Filter and Link Menus
z Toggle filter / linking modeCredits Menu
Enter Open URL (in new tab)⏫
Previous: ‘Low-Level Emotional Programming – Q&A;’
⏫
0:00Opening titles
0:00Opening titles
0:00Opening titles
0:42: Welcome to the podcast
0:42: Welcome to the podcast
0:42: Welcome to the podcast
1:12: Hello
1:12: Hello
1:12: Hello
1:18: Hello
1:18: Hello
1:18: Hello
1:27: Hello
1:27: Hello
1:27: Hello
1:38: Briefly introduce Mason
1:38: Briefly introduce Mason
1:38: Briefly introduce Mason
1:48: Way of Rhea1
1:48: Way of Rhea1
1:48: Way of Rhea1
2:19: Assign Mason as our Rust representative
2:19: Assign Mason as our Rust representative
2:19: Assign Mason as our Rust representative
2:53: Discovering and using Rust
2:53: Discovering and using Rust
2:53: Discovering and using Rust
5:16: How do you square the circle of enjoying two languages, Rust and Zig?
5:16: How do you square the circle of enjoying two languages, Rust and Zig?
5:16: How do you square the circle of enjoying two languages, Rust and Zig?
5:44: Advocating for multiple languages
5:44: Advocating for multiple languages
5:44: Advocating for multiple languages
6:18: Racing to replace C & C++
6:18: Racing to replace C & C++
6:18: Racing to replace C & C++
7:11: Making Zig strictly better than C, and possible to incrementally introduce2
7:11: Making Zig strictly better than C, and possible to incrementally introduce2
7:11: Making Zig strictly better than C, and possible to incrementally introduce2
8:08: No sense to replace C, scoping Odin to high performance modern systems programming
8:08: No sense to replace C, scoping Odin to high performance modern systems programming
8:08: No sense to replace C, scoping Odin to high performance modern systems programming
9:29: Scoping Zig to general purpose programming
9:29: Scoping Zig to general purpose programming
9:29: Scoping Zig to general purpose programming
10:11: Caveat Odin as also general-purpose, just for 32-bit and 64-bit platforms
10:11: Caveat Odin as also general-purpose, just for 32-bit and 64-bit platforms
10:11: Caveat Odin as also general-purpose, just for 32-bit and 64-bit platforms
11:44: What industries are Rust permeating?
11:44: What industries are Rust permeating?
11:44: What industries are Rust permeating?
11:54: Rust's potential for security-critical applications
11:54: Rust's potential for security-critical applications
11:54: Rust's potential for security-critical applications
12:31: What do you look for in a co-contributor, for Zig?
12:31: What do you look for in a co-contributor, for Zig?
12:31: What do you look for in a co-contributor, for Zig?
14:16: A desirable co-contributor: Keeping the big picture in mind and teamwork
14:16: A desirable co-contributor: Keeping the big picture in mind and teamwork
14:16: A desirable co-contributor: Keeping the big picture in mind and teamwork
15:52: So a big technical gap may be fine?
15:52: So a big technical gap may be fine?
15:52: So a big technical gap may be fine?
15:58: A student's willingness to learn
15:58: A student's willingness to learn
15:58: A student's willingness to learn
16:51: Willingness to sit down and do the work, to demystify problems
16:51: Willingness to sit down and do the work, to demystify problems
16:51: Willingness to sit down and do the work, to demystify problems
18:44: Range of skill-levels required of compiler development
18:44: Range of skill-levels required of compiler development
18:44: Range of skill-levels required of compiler development
19:38: Drawing on public knowledge
19:38: Drawing on public knowledge
19:38: Drawing on public knowledge
20:08: Semantic checking as the most complicated bit of a compiler
20:08: Semantic checking as the most complicated bit of a compiler
20:08: Semantic checking as the most complicated bit of a compiler
22:25: So semantic checking is where the magic happens?
22:25: So semantic checking is where the magic happens?
22:25: So semantic checking is where the magic happens?
22:44: A desirable co-contributor: Able to read and learn strategies from foreign codebases
22:44: A desirable co-contributor: Able to read and learn strategies from foreign codebases
22:44: A desirable co-contributor: Able to read and learn strategies from foreign codebases
23:37: Reading source code is a valuable skill
23:37: Reading source code is a valuable skill
23:37: Reading source code is a valuable skill
24:47: Reading the Clang codebase to implement Zig's "translate C" feature
24:47: Reading the Clang codebase to implement Zig's "translate C" feature
24:47: Reading the Clang codebase to implement Zig's "translate C" feature
25:22: Learning to write compilers by reading other ones
25:22: Learning to write compilers by reading other ones
25:22: Learning to write compilers by reading other ones
25:27: Getting answers from SDL code
25:27: Getting answers from SDL code
25:27: Getting answers from SDL code
26:00: Exceptions and error handling in general
26:00: Exceptions and error handling in general
26:00: Exceptions and error handling in general
27:46: Usage of exceptions
27:46: Usage of exceptions
27:46: Usage of exceptions
29:35: So it's a problem of user discipline?
29:35: So it's a problem of user discipline?
29:35: So it's a problem of user discipline?
30:07: Usage of exceptions: 1) Culture of passing up the stack
30:07: Usage of exceptions: 1) Culture of passing up the stack
30:07: Usage of exceptions: 1) Culture of passing up the stack
30:29: Usage of exceptions: 2) Treating "errors" as just different code paths
30:29: Usage of exceptions: 2) Treating "errors" as just different code paths
30:29: Usage of exceptions: 2) Treating "errors" as just different code paths
31:41: I don't think Odin supports exceptions
31:41: I don't think Odin supports exceptions
31:41: I don't think Odin supports exceptions
31:45: No exceptions in Odin
31:45: No exceptions in Odin
31:45: No exceptions in Odin
31:55: Is that a British saying, about the cows?
31:55: Is that a British saying, about the cows?
31:55: Is that a British saying, about the cows?
31:59: Yes
31:59: Yes
31:59: Yes
32:03: Pokémon programming
32:03: Pokémon programming
32:03: Pokémon programming
32:24: Error handling in Zig
32:24: Error handling in Zig
32:24: Error handling in Zig
35:09: It sounds like errors in Zig are a first-class thing
35:09: It sounds like errors in Zig are a first-class thing
35:09: It sounds like errors in Zig are a first-class thing
35:20: Popular error handling techniques: Returning error codes
35:20: Popular error handling techniques: Returning error codes
35:20: Popular error handling techniques: Returning error codes
37:04: Popular error handling techniques: Exceptions
37:04: Popular error handling techniques: Exceptions
37:04: Popular error handling techniques: Exceptions
40:43: Swift has a "throw" annotation
40:43: Swift has a "throw" annotation
40:43: Swift has a "throw" annotation
40:58: Zig's error type
40:58: Zig's error type
40:58: Zig's error type
42:12: Exception handling requires code maintaining a self-consistent state
42:12: Exception handling requires code maintaining a self-consistent state
42:12: Exception handling requires code maintaining a self-consistent state
45:20: More structured language construct, e.g. defer
45:20: More structured language construct, e.g. defer
45:20: More structured language construct, e.g. defer
46:00: In C we structure these things manually
46:00: In C we structure these things manually
46:00: In C we structure these things manually
46:58: Some companies disallow "goto"
46:58: Some companies disallow "goto"
46:58: Some companies disallow "goto"
47:14: Error code mismatches without type-safety
47:14: Error code mismatches without type-safety
47:14: Error code mismatches without type-safety
47:57: Odin's structured features implementing people's usage patterns of "goto"
47:57: Odin's structured features implementing people's usage patterns of "goto"
47:57: Odin's structured features implementing people's usage patterns of "goto"
49:16: Let's reduce your arguments on exceptions to a thumbs up / down
49:16: Let's reduce your arguments on exceptions to a thumbs up / down
49:16: Let's reduce your arguments on exceptions to a thumbs up / down
49:26: Thumbs down
49:26: Thumbs down
49:26: Thumbs down
49:31: Praise Walter Bright's humility for saying exceptions were a mistake
49:31: Praise Walter Bright's humility for saying exceptions were a mistake
49:31: Praise Walter Bright's humility for saying exceptions were a mistake
49:55: It takes a lot to change your mind. Thumbs down
49:55: It takes a lot to change your mind. Thumbs down
49:55: It takes a lot to change your mind. Thumbs down
50:20: Without D, Odin wouldn't have "scope exit"
50:20: Without D, Odin wouldn't have "scope exit"
50:20: Without D, Odin wouldn't have "scope exit"
50:59: When to Rewrite3
50:59: When to Rewrite3
50:59: When to Rewrite3
51:30: Virtually none of Odin's ideas are new
51:30: Virtually none of Odin's ideas are new
51:30: Virtually none of Odin's ideas are new
52:51: Inline assembly
52:51: Inline assembly
52:51: Inline assembly
53:50: Inline assembly in Zig
53:50: Inline assembly in Zig
53:50: Inline assembly in Zig
54:55: Rust supports inline assembly
54:55: Rust supports inline assembly
54:55: Rust supports inline assembly
55:32: New inline assembly syntax in Rust4
55:32: New inline assembly syntax in Rust4
55:32: New inline assembly syntax in Rust4
55:42: It is there
55:42: It is there
55:42: It is there
55:44: Rust uses GCC-style opaque string for inline assembly
55:44: Rust uses GCC-style opaque string for inline assembly
55:44: Rust uses GCC-style opaque string for inline assembly
56:23: Inline assembly in Odin
56:23: Inline assembly in Odin
56:23: Inline assembly in Odin
59:05: Confusion of AT&T vs Intel assembly operand order
59:05: Confusion of AT&T vs Intel assembly operand order
59:05: Confusion of AT&T vs Intel assembly operand order
59:39: Unifying assembly dialects in Odin
59:39: Unifying assembly dialects in Odin
59:39: Unifying assembly dialects in Odin
1:00:25: Difficulty making Intel syntax the only dialect in Zig
1:00:25: Difficulty making Intel syntax the only dialect in Zig
1:00:25: Difficulty making Intel syntax the only dialect in Zig
1:00:37: Preferring AT&T syntax
1:00:37: Preferring AT&T syntax
1:00:37: Preferring AT&T syntax
1:00:52: Is Zig aiming to streamline the assembly experience?
1:00:52: Is Zig aiming to streamline the assembly experience?
1:00:52: Is Zig aiming to streamline the assembly experience?
1:00:59: Unifying assembly dialects in Zig
1:00:59: Unifying assembly dialects in Zig
1:00:59: Unifying assembly dialects in Zig
1:01:28: That's curious
1:01:28: That's curious
1:01:28: That's curious
1:01:30: Rust's assembly syntax roughly matches that of GCC and Clang5
1:01:30: Rust's assembly syntax roughly matches that of GCC and Clang5
1:01:30: Rust's assembly syntax roughly matches that of GCC and Clang5
1:01:59: Executing machine code in python
1:01:59: Executing machine code in python
1:01:59: Executing machine code in python
1:02:28: Generating bytecode in Rust
1:02:28: Generating bytecode in Rust
1:02:28: Generating bytecode in Rust
1:03:15: Let's talk about community building
1:03:15: Let's talk about community building
1:03:15: Let's talk about community building
1:04:20: Closed vs open development models
1:04:20: Closed vs open development models
1:04:20: Closed vs open development models
1:05:45: Odin's open development model
1:05:45: Odin's open development model
1:05:45: Odin's open development model
1:08:03: On not having enough time for Zig to not be open source
1:08:03: On not having enough time for Zig to not be open source
1:08:03: On not having enough time for Zig to not be open source
1:09:28: Needing to manage community involvement
1:09:28: Needing to manage community involvement
1:09:28: Needing to manage community involvement
1:10:27: Little scripting language's closed development model
1:10:27: Little scripting language's closed development model
1:10:27: Little scripting language's closed development model
1:12:46: Was Rust open source early on?
1:12:46: Was Rust open source early on?
1:12:46: Was Rust open source early on?
1:12:49: Rust and Go probably began closed before becoming open
1:12:49: Rust and Go probably began closed before becoming open
1:12:49: Rust and Go probably began closed before becoming open
1:13:28: Managing open vs closed source development
1:13:28: Managing open vs closed source development
1:13:28: Managing open vs closed source development
1:15:34: Is Zig and Odin development similarly hierarchical?
1:15:34: Is Zig and Odin development similarly hierarchical?
1:15:34: Is Zig and Odin development similarly hierarchical?
1:15:37: Zig's development hierarchy
1:15:37: Zig's development hierarchy
1:15:37: Zig's development hierarchy
1:16:06: Odin's development hierarchy
1:16:06: Odin's development hierarchy
1:16:06: Odin's development hierarchy
1:17:02: Jakub's linker expertise in Zig
1:17:02: Jakub's linker expertise in Zig
1:17:02: Jakub's linker expertise in Zig
1:17:43: Odin's language server, written by someone else
1:17:43: Odin's language server, written by someone else
1:17:43: Odin's language server, written by someone else
1:18:14: Helping demystify computers at a low level for learners
1:18:14: Helping demystify computers at a low level for learners
1:18:14: Helping demystify computers at a low level for learners
1:20:34: Recommend "nand2tetris"6
1:20:34: Recommend "nand2tetris"6
1:20:34: Recommend "nand2tetris"6
1:21:13: Nice
1:21:13: Nice
1:21:13: Nice
1:21:18: Recommend "Crafting Interpreters"7
1:21:18: Recommend "Crafting Interpreters"7
1:21:18: Recommend "Crafting Interpreters"7
1:21:37: Encouraging people to write working software, rather than "good code"
1:21:37: Encouraging people to write working software, rather than "good code"
1:21:37: Encouraging people to write working software, rather than "good code"
1:24:51: "Together we serve the users"
1:24:51: "Together we serve the users"
1:24:51: "Together we serve the users"
1:25:05: That's definitely catchier
1:25:05: That's definitely catchier
1:25:05: That's definitely catchier
1:25:07: No need to be catchy
1:25:07: No need to be catchy
1:25:07: No need to be catchy
1:26:27: Welcoming in people at the outer edges of affinity with our subject
1:26:27: Welcoming in people at the outer edges of affinity with our subject
1:26:27: Welcoming in people at the outer edges of affinity with our subject
1:27:36: Different people's demotivation by societal treatment
1:27:36: Different people's demotivation by societal treatment
1:27:36: Different people's demotivation by societal treatment
1:29:34: Ideas spreading through seeming to be good
1:29:34: Ideas spreading through seeming to be good
1:29:34: Ideas spreading through seeming to be good
1:30:25: Feeling allowed to be critical of "best practices"
1:30:25: Feeling allowed to be critical of "best practices"
1:30:25: Feeling allowed to be critical of "best practices"
1:31:26: The folly of trying to find a shortcut to wisdom in the young field of programming
1:31:26: The folly of trying to find a shortcut to wisdom in the young field of programming
1:31:26: The folly of trying to find a shortcut to wisdom in the young field of programming
1:32:10: Helping to get people unstuck
1:32:10: Helping to get people unstuck
1:32:10: Helping to get people unstuck
1:32:40: Everyone gets stuck
1:32:40: Everyone gets stuck
1:32:40: Everyone gets stuck
1:33:13: Do not cargo cult advice from "experts", but understand it
1:33:13: Do not cargo cult advice from "experts", but understand it
1:33:13: Do not cargo cult advice from "experts", but understand it
1:33:27: Wish for evolved, pre-subscribed dogmas
1:33:27: Wish for evolved, pre-subscribed dogmas
1:33:27: Wish for evolved, pre-subscribed dogmas
1:34:08: Anything to add, Andrew?
1:34:08: Anything to add, Andrew?
1:34:08: Anything to add, Andrew?
1:34:15: Putting googly eyes on textbooks, to make low-level programming cool
1:34:15: Putting googly eyes on textbooks, to make low-level programming cool
1:34:15: Putting googly eyes on textbooks, to make low-level programming cool
1:34:34: Thank you, everyone
1:34:34: Thank you, everyone
1:34:34: Thank you, everyone
1:34:40: Plug "Way of Rhea"8
1:34:40: Plug "Way of Rhea"8
1:34:40: Plug "Way of Rhea"8
1:34:54: And, Andrew, how do people find Zig?
1:34:54: And, Andrew, how do people find Zig?
1:34:54: And, Andrew, how do people find Zig?
1:34:58: Plug Zig9
1:34:58: Plug Zig9
1:34:58: Plug Zig9
1:35:00: What about Ginger?
1:35:00: What about Ginger?
1:35:00: What about Ginger?
1:35:04: Plug Odin10
1:35:04: Plug Odin10
1:35:04: Plug Odin10
1:35:16: Excellent, thank you
1:35:16: Excellent, thank you
1:35:16: Excellent, thank you
⏬
Next: ‘Unexplored 2’
⏬