The Craft Behind Crafting Interpreters
?
?
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)
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 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 CreditsIn-Menu Movement
a
w
s
s
d
h
j
k
l
←
↑
↓
↓
→
Quotes and References Menus
Enter Jump to timecodeQuotes, 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: 'Opening Notes'
⏫
0:01: Thank you
0:01: Thank you
0:01: Thank you
0:04: I was promised fire
0:04: I was promised fire
0:04: I was promised fire
0:09: Didn't you sign a contract that said you'd drink Chocolate Wine?
0:09: Didn't you sign a contract that said you'd drink Chocolate Wine?
0:09: Didn't you sign a contract that said you'd drink Chocolate Wine?
0:14: What is the deal with ChocoVine?
0:14: What is the deal with ChocoVine?
0:14: What is the deal with ChocoVine?
0:21: Chocolate Wine is just a pure delight
0:21: Chocolate Wine is just a pure delight
0:21: Chocolate Wine is just a pure delight
0:34: Is it good?
0:34: Is it good?
0:34: Is it good?
0:39: Let's move on to the next presentation
0:39: Let's move on to the next presentation
0:39: Let's move on to the next presentation
0:43: Introduce Bob
0:43: Introduce Bob
0:43: Introduce Bob
0:52: Not a VM hacker, but working directly on Dart1 language design
0:52: Not a VM hacker, but working directly on Dart1 language design
0:52: Not a VM hacker, but working directly on Dart1 language design
1:56: You also wrote a book?
1:56: You also wrote a book?
1:56: You also wrote a book?
2:01: I've written two books
2:01: I've written two books
2:01: I've written two books
2:04: Let's talk about those two books
2:04: Let's talk about those two books
2:04: Let's talk about those two books
2:05: On writing Game Programming Patterns2 and Crafting Interpreters3
2:05: On writing Game Programming Patterns2 and Crafting Interpreters3
2:05: On writing Game Programming Patterns2 and Crafting Interpreters3
2:32: Ask our moderator to post the link in the chat
2:32: Ask our moderator to post the link in the chat
2:32: Ask our moderator to post the link in the chat
2:36: It is craftinginterpreters.com4
2:36: It is craftinginterpreters.com4
2:36: It is craftinginterpreters.com4
2:41: On putting Handmade Seattle on a language hiatus due to vicious contentiousness
2:41: On putting Handmade Seattle on a language hiatus due to vicious contentiousness
2:41: On putting Handmade Seattle on a language hiatus due to vicious contentiousness
4:23: Is this really just a criticism of Dart?5
4:23: Is this really just a criticism of Dart?5
4:23: Is this really just a criticism of Dart?5
4:28: On not wanting the conference to become a boxing ring
4:28: On not wanting the conference to become a boxing ring
4:28: On not wanting the conference to become a boxing ring
4:47: It's a real thing
4:47: It's a real thing
4:47: It's a real thing
4:50: How do you feel about this trend?
4:50: How do you feel about this trend?
4:50: How do you feel about this trend?
4:56: People feeling the opportunity cost in language development
4:56: People feeling the opportunity cost in language development
4:56: People feeling the opportunity cost in language development
6:43: It's interesting because you did write a book…
6:43: It's interesting because you did write a book…
6:43: It's interesting because you did write a book…
6:47: …telling people to make lots of new languages
6:47: …telling people to make lots of new languages
6:47: …telling people to make lots of new languages
6:57: Can people build the skill to build special-purpose languages such that it becomes a normal thing? Is there a way to simplify complexity of the tech stack?
6:57: Can people build the skill to build special-purpose languages such that it becomes a normal thing? Is there a way to simplify complexity of the tech stack?
6:57: Can people build the skill to build special-purpose languages such that it becomes a normal thing? Is there a way to simplify complexity of the tech stack?
7:52: On making it easier for new languages to be successful
7:52: On making it easier for new languages to be successful
7:52: On making it easier for new languages to be successful
9:15: Excitement for tooling like the Language Server Protocol6
9:15: Excitement for tooling like the Language Server Protocol6
9:15: Excitement for tooling like the Language Server Protocol6
10:02: The biggest cost for language success is getting it into people's heads
10:02: The biggest cost for language success is getting it into people's heads
10:02: The biggest cost for language success is getting it into people's heads
10:09: Mind share
10:09: Mind share
10:09: Mind share
10:11: The rational reluctance of people to invest their time and attention in a new language
10:11: The rational reluctance of people to invest their time and attention in a new language
10:11: The rational reluctance of people to invest their time and attention in a new language
10:26: Isn't integrating into tools like LSP adding to the complexity of the ecosystems?
10:26: Isn't integrating into tools like LSP adding to the complexity of the ecosystems?
10:26: Isn't integrating into tools like LSP adding to the complexity of the ecosystems?
10:47: Yes
10:47: Yes
10:47: Yes
10:48: On surfacing new languages through the ability to write something similar
10:48: On surfacing new languages through the ability to write something similar
10:48: On surfacing new languages through the ability to write something similar
12:18: The value of coping with the feeling of disempowerment through making things
12:18: The value of coping with the feeling of disempowerment through making things
12:18: The value of coping with the feeling of disempowerment through making things
13:31: As a niche of people making languages, is self-preservation all we can expect?
13:31: As a niche of people making languages, is self-preservation all we can expect?
13:31: As a niche of people making languages, is self-preservation all we can expect?
15:00: Being charitable to suboptimally implemented software
15:00: Being charitable to suboptimally implemented software
15:00: Being charitable to suboptimally implemented software
16:23: Getting a Big Mac in 15 minutes at the press of a button
16:23: Getting a Big Mac in 15 minutes at the press of a button
16:23: Getting a Big Mac in 15 minutes at the press of a button
16:30: Appreciating functionality provided by crappy code
16:30: Appreciating functionality provided by crappy code
16:30: Appreciating functionality provided by crappy code
16:52: Potential inspiration of businesses prioritising software quality over other incentives
16:52: Potential inspiration of businesses prioritising software quality over other incentives
16:52: Potential inspiration of businesses prioritising software quality over other incentives
17:55: Rewinding to before Dart7 and Flutter,8 how did you come to write Crafting Interpreters?9
17:55: Rewinding to before Dart7 and Flutter,8 how did you come to write Crafting Interpreters?9
17:55: Rewinding to before Dart7 and Flutter,8 how did you come to write Crafting Interpreters?9
18:42: Career path to writing Crafting Interpreters,10 working in computer animation, UI design, game programming and language development, and learning F♯ on paternity leave
18:42: Career path to writing Crafting Interpreters,10 working in computer animation, UI design, game programming and language development, and learning F♯ on paternity leave
18:42: Career path to writing Crafting Interpreters,10 working in computer animation, UI design, game programming and language development, and learning F♯ on paternity leave
20:54: Is it11 the book you wish you had when you were learning?
20:54: Is it11 the book you wish you had when you were learning?
20:54: Is it11 the book you wish you had when you were learning?
21:11: On wishing the book existed, and being wired to want to tell people about exciting things
21:11: On wishing the book existed, and being wired to want to tell people about exciting things
21:11: On wishing the book existed, and being wired to want to tell people about exciting things
22:16: Did you design Lox as well?
22:16: Did you design Lox as well?
22:16: Did you design Lox as well?
22:18: Yep, the whole thing
22:18: Yep, the whole thing
22:18: Yep, the whole thing
22:20: Then you wrote interpreters for Lox in two different languages?
22:20: Then you wrote interpreters for Lox in two different languages?
22:20: Then you wrote interpreters for Lox in two different languages?
22:30: In Java and C
22:30: In Java and C
22:30: In Java and C
22:40: So you're writing a VM in a VM?
22:40: So you're writing a VM in a VM?
22:40: So you're writing a VM in a VM?
22:45: Using Java as a stepping stone while learning
22:45: Using Java as a stepping stone while learning
22:45: Using Java as a stepping stone while learning
23:20: Can you define "tree-walk interpreter"?
23:20: Can you define "tree-walk interpreter"?
23:20: Can you define "tree-walk interpreter"?
23:22: Definition: Tree-walk interpreter12
23:22: Definition: Tree-walk interpreter12
23:22: Definition: Tree-walk interpreter12
24:52: Put Q: in #Main to ask a question
24:52: Put Q: in #Main to ask a question
24:52: Put Q: in #Main to ask a question
25:14: I've requested that Abner ask me the most embarrassing questions
25:14: I've requested that Abner ask me the most embarrassing questions
25:14: I've requested that Abner ask me the most embarrassing questions
25:21: So you've taken away all the minutiae
25:21: So you've taken away all the minutiae
25:21: So you've taken away all the minutiae
25:40: Learning the high-level concepts
25:40: Learning the high-level concepts
25:40: Learning the high-level concepts
25:53: So Part 2 switches away from Java
25:53: So Part 2 switches away from Java
25:53: So Part 2 switches away from Java
25:55: Doing the whole thing again from scratch in C13
25:55: Doing the whole thing again from scratch in C13
25:55: Doing the whole thing again from scratch in C13
27:35: How do you manage memory for your interpreter in C?
27:35: How do you manage memory for your interpreter in C?
27:35: How do you manage memory for your interpreter in C?
28:00: Memory management
28:00: Memory management
28:00: Memory management
28:18: Memory management: 1) In the C implementation of Lox
28:18: Memory management: 1) In the C implementation of Lox
28:18: Memory management: 1) In the C implementation of Lox
29:24: Memory management: 2) Lox's Mark-Sweep garbage collector14
29:24: Memory management: 2) Lox's Mark-Sweep garbage collector14
29:24: Memory management: 2) Lox's Mark-Sweep garbage collector14
30:41: So you generate bytecode at some point?
30:41: So you generate bytecode at some point?
30:41: So you generate bytecode at some point?
31:15: All this happens internally
31:15: All this happens internally
31:15: All this happens internally
31:18: How do you design bytecode instructions?
31:18: How do you design bytecode instructions?
31:18: How do you design bytecode instructions?
31:27: Designing the bytecode instruction format for Lox
31:27: Designing the bytecode instruction format for Lox
31:27: Designing the bytecode instruction format for Lox
32:57: So you're translating one representation to a more compact and execution-efficient form?
32:57: So you're translating one representation to a more compact and execution-efficient form?
32:57: So you're translating one representation to a more compact and execution-efficient form?
33:05: Compiler pipelines generally transforming data to a format for the next stage to work on
33:05: Compiler pipelines generally transforming data to a format for the next stage to work on
33:05: Compiler pipelines generally transforming data to a format for the next stage to work on
33:28: After reading your book,15 could someone replace LLVM?
33:28: After reading your book,15 could someone replace LLVM?
33:28: After reading your book,15 could someone replace LLVM?
33:40: …Yes, within weeks
33:40: …Yes, within weeks
33:40: …Yes, within weeks
33:49: Plug the booth of a 19 year old who wants to take on LLVM
33:49: Plug the booth of a 19 year old who wants to take on LLVM
33:49: Plug the booth of a 19 year old who wants to take on LLVM
34:48: Put Q: in #Main to ask a question
34:48: Put Q: in #Main to ask a question
34:48: Put Q: in #Main to ask a question
34:59: What's your take on the whole memory safety fiasco online?
34:59: What's your take on the whole memory safety fiasco online?
34:59: What's your take on the whole memory safety fiasco online?
36:31: We are a tribal primate species
36:31: We are a tribal primate species
36:31: We are a tribal primate species
38:05: Check the chat
38:05: Check the chat
38:05: Check the chat
38:11: Recognising the variety of perspectives
38:11: Recognising the variety of perspectives
38:11: Recognising the variety of perspectives
39:07: Round of applause for Bob
39:07: Round of applause for Bob
39:07: Round of applause for Bob
39:17: People in the chat server, you can ping Bob, and find him in-person
39:17: People in the chat server, you can ping Bob, and find him in-person
39:17: People in the chat server, you can ping Bob, and find him in-person
40:02: Chocolate and Wine is such a strange combination
40:02: Chocolate and Wine is such a strange combination
40:02: Chocolate and Wine is such a strange combination
40:08: So if you had Cabernet Sauvignon and then Dark Chocolate Bar separate, you're cool with that, but if I crush the chocolate bar into the wine and stir it and give it to you, you would say no?
40:08: So if you had Cabernet Sauvignon and then Dark Chocolate Bar separate, you're cool with that, but if I crush the chocolate bar into the wine and stir it and give it to you, you would say no?
40:08: So if you had Cabernet Sauvignon and then Dark Chocolate Bar separate, you're cool with that, but if I crush the chocolate bar into the wine and stir it and give it to you, you would say no?
40:19: It is suspect. Hypothesis: No food product whose name is a portmanteau is good
40:19: It is suspect. Hypothesis: No food product whose name is a portmanteau is good
40:19: It is suspect. Hypothesis: No food product whose name is a portmanteau is good
40:49: I need to vet my speakers better
40:49: I need to vet my speakers better
40:49: I need to vet my speakers better
41:01: On not liking all of the parts of writing Crafting Interpreters16
41:01: On not liking all of the parts of writing Crafting Interpreters16
41:01: On not liking all of the parts of writing Crafting Interpreters16
42:42: No plans to write a third book
42:42: No plans to write a third book
42:42: No plans to write a third book
44:02: On the wider language-adjacent field of software
44:02: On the wider language-adjacent field of software
44:02: On the wider language-adjacent field of software
45:20: Preferring recursive descent parsers partly for their relative ease with error handling
45:20: Preferring recursive descent parsers partly for their relative ease with error handling
45:20: Preferring recursive descent parsers partly for their relative ease with error handling
46:52: Give him a round of applause one more time
46:52: Give him a round of applause one more time
46:52: Give him a round of applause one more time
46:54: Thank you
46:54: Thank you
46:54: Thank you
⏬
Next: 'Weathering Software Winter'
⏬