The Craft Behind Crafting Interpreters
?
?
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: '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'
⏬