Hi, I am Toby.

I am a software developer who loves to learn and teach. Currently my interests are compilers, programming languages, software architecture, assembly language programming, and debugging.

Videos ↓Writing

Algorithm Friyay

Free Up Disk Space with Recursion

Aug 20th 20211:02:52

Fun with ASTs

Aug 4th 202158:01

Fun with AST Part 2

Aug 6th 202159:56

Intro to Dynamic Programming

Sep 17th 202149:15

Intro to Dynamic Programming 2

Oct 27th 202159:39

I Tell Huiqi About

What is LLVM? I Tell Huiqi About It. Part 2

Jun 20th 202018:45

What is LLVM? I Tell Huiqi About It - Part 1

Jun 20th 202017:03

How Strings Actually Work - with guest Huiqi Zhou

Jun 5th 202027:50

Deep-Zoom Debugger Demo with Huiqi Zhou

May 16th 202017:47

How Databases Work

Sep 16th 202029:58

How Time Traveling Works

Nov 16th 202031:55

Memory Management with malloc and free

Nov 30th 202032:16

Games and Education

Dec 8th 202024:12

Automatic Reference Counting

Dec 9th 202031:31

Garbage Collection with Mark and Sweep

Dec 17th 202024:39

What it's Like to Code with a Time Traveling Debugger

Jan 11th 202147:52

Automatic Test Case Simplification Tool

Jan 27th 202123:28

rr and Time-Traveling Debuggers

Mar 10th 202129:00

dabeaz's Compilers Course And X86 Registers

Mar 10th 202115:22

Let's Talk About Performance

Apr 21st 202138:37

Learning C/C++ vs Go or Rust

Apr 21st 202106:39

Let's Talk about Performance! (2)

Apr 28th 202116:33

Python vs C: Side by Side (Plus Macros!)

Apr 28th 202112:02

Reverse Engineering with GDB

May 12th 202129:43

Visual Concepts: Subway Maps and Flight Paths

May 20th 202121:27

Visual Concepts: Social Graphs and Wikipedia Edit Histories

May 20th 202119:28

Making a Terminal-Based UI Framework

May 26th 202119:23

Law of Leaky Abstractions

Jul 7th 202110:39

Real World Leaky Abstractions 1: Kubernetes, ng, and React

Jul 14th 202113:30

Real World Leaky Abstractions 2: Sharing TypeScript

Jul 14th 202110:52

Real World Leaky Abstractions 3: Python and Having No Time

Jul 14th 202115:05

Can Leaky Abstractions be Solved?

Jul 14th 202108:43

Leaky Abstractions IRL

Aug 4th 202108:34

Thoughts on Ejecting from a Framework

Aug 11th 202107:21

How to Print a Booklet on OSX

Aug 12th 202103:26

Global vs Local

Aug 12th 202114:38

Time Machine Status Update 3

Aug 26th 202109:16

Seeing Code As Fractals

Aug 26th 202118:50

Time Machine Status Update 4

Sep 2nd 202104:40

Eureka Moments

Sep 2nd 202111:35

How to Code the Mandelbrot Set

Sep 30th 202135:26

GPUs, Shaders and OpenGL

Oct 21st 202132:30

Is Code Reuse Bad?

Nov 4th 202117:14

Live Code: LLVM Tutorial Walkthrough

What is LLVM? I Tell Huiqi About It - Part 1

Jun 20th 202017:03

What is LLVM? I Tell Huiqi About It. Part 2

Jun 20th 202018:45

LLVM Tutorial #1: Introduction

Jun 12th 202019:25

LLVM Tutorial #2: Lexer

Jun 12th 202029:41

LLVM Tutorial #3: AST Nodes

Jun 12th 202025:55

LLVM Tutorial #4: Recursive Descent Parser

Jun 12th 202028:34

LLVM Tutorial #5: Operator Precedence Parsing

Jun 12th 202025:18

LLVM Tutorial#6: Compilation Trouble

Jun 12th 202031:37

LLVM Tutorial #7: What is SSA?

Jun 12th 202025:37

LLVM Tutorial #8: CodeGen

Jun 12th 202028:18

LLVM Tutorial #9: CodeGen for Functions

Jun 12th 202041:17

LLVM Tutorial #10: Getting Out of Trouble

Jun 12th 202035:55

LLVM Tutorial #11: Playing with REPL

Jun 12th 202010:48

LLVM Tutorial #12: Optimizers

Jun 12th 202033:55

LLVM Tutorial #13: Optimizers Work

Jun 12th 202008:04

LLVM Tutorial #14: JIT

Jun 12th 202036:55

LLVM Tutorial #15: Finishing "The JIT"

Jun 12th 202024:24

LLVM Tutorial #16: If Expression Parser

Jun 20th 202030:40

LLVM Tutorial #17: The Φ (Phi) Function

Jun 20th 202024:55

LLVM Tutorial #18: CodeGen For If Statement

Jun 20th 202036:19

LLVM Tutorial #19: "If" It Can Work

Jun 20th 202019:44

LLVM Tutorial #20: For loops!

Oct 20th 202031:14

LLVM Tutorial #21: "For" Expr Codegen

Oct 20th 202040:10

LLVM Tutorial #22: Custom Operators

Oct 22nd 202027:07

LLVM Tutorial #23: Codegen for Binary Operators

Oct 22nd 202022:16

LLVM Tutorial #24: Unary Operators

Oct 22nd 202022:34

LLVM Tutorial #25: Mandelbrot?

Oct 22nd 202042:55

Nepo's bishop is TRAPPED?

Dec 7th 202100:47

Time Traveling Debugger

Time Traveling Debugger - Part 1

Jan 10th 202029:14

Time Traveling Debugger - Part 2

Jan 10th 202023:17

Time Traveling Debugger - Part 3

Jan 13th 202028:49

Dream of the Time Machine

Feb 21st 202029:30

Introducing the Deep Zoom Debugger

May 22nd 202005:17

Deep-Zoom Debugger Demo with Huiqi Zhou

May 16th 202017:47

Time Machine Status Update 1

Aug 19th 202036:22

Time Machine Status Update 2

Aug 28th 202027:43

Design Problem: Data Fetching Scheme of Zoom Debugger

Aug 31st 202037:40

How Time Traveling Works

Nov 16th 202031:55

What it's Like to Code with a Time Traveling Debugger

Jan 11th 202147:52

Time Traveling Debugger for Python

Feb 2nd 202135:08

Python Debugger Update

Feb 2nd 202118:54

rr and Time-Traveling Debuggers

Mar 10th 202129:00

Time Travel Debugging (in Python)

Mar 24th 202105:44

Omniscient Debugging (ODB) With Bil Lewis

Apr 1st 202145:24

TT Debugger Data Storage Optimization

Apr 7th 202122:46

Data Visualization in Debugging

Apr 7th 202117:46

Questions Developers Ask When Debugging

Apr 14th 202146:07

Let's Talk About Performance

Apr 21st 202138:37

Learning C/C++ vs Go or Rust

Apr 21st 202106:39

Let's Talk about Performance! (2)

Apr 28th 202116:33

Python vs C: Side by Side (Plus Macros!)

Apr 28th 202112:02

rr Time-Traveling Debugger

May 19th 202117:13

Making a Terminal-Based UI Framework

May 26th 202119:23

Debugging UI Widget with Time Travel

Jun 18th 202115:58

Building a UI Framework with Time Travel

Jun 18th 202119:14

An Interesting Bug

Jun 27th 202113:49

Time Machine Status Update 3

Aug 26th 202109:16

Seeing Code As Fractals

Aug 26th 202118:50

Time Machine Status Update 4

Sep 2nd 202104:40

Time Machine Status Update 5

Sep 11th 202111:40

Time Machine Status Update 6

Sep 16th 202113:55

Time Machine Update and Design Discussion

Sep 23rd 202142:53

Time-Travel Debugging with Robert O'Callahan

Feb 13th 202232:56

Code Exercise with a Time-Traveling Debugger

Sep 17th 202309:23

Time Travel Debuggers Talk

Jan 12th 202425:38

How to Make a Programming Language

What Does it Mean to Make a Programming Language?

May 13th 201918:32

Parsers and ASTs

Jun 13th 201908:50

Building MyPL Part 1 - Parser

Jun 13th 201916:33

Building MyPL Part 2 - Still Parser

Jun 24th 201921:35

Building MyPL Part 3 - Generator

Jun 24th 201918:48

How to Make a Parser using Nearley.js - Part 1

Jul 29th 201935:55

How to Make a Parser using Nearley.js - Part 2

Aug 2nd 201927:10

Make a Parser With Nearley.js - Part 3 - Handling Whitespace

Aug 15th 201911:00

How to Make a Parser with Nearley.js - Part 4 - Parsing String Literals

Aug 20th 201921:04

How to Build a Parser with Nearley.js - Part 5 - Operator Precedence

Aug 20th 201920:51

Build a Parser using Nearley.js - Part 6

Sep 10th 201909:06

Make a Parser with Nearley.js - Part 7

Sep 10th 201912:16

Make a Parser with Nearley.js - Part 8 - Making ASTs

Nov 6th 201929:45

Making a ProgLang - Evaluating ASTs

Nov 8th 201930:24

How to Build a Code Generator

Nov 18th 201918:45

The Fun Programming Language

Nov 18th 201913:15

Moo.js Tokenizer with Nearley.js

Feb 10th 202028:23

Earley Parsing Algorithm

Jan 17th 202030:53

Generating Friendly Parser Errors with Earley Algorithm

Jan 22nd 202021:05

Make Your Own Language 1: The Lexer

Jul 18th 202016:01

Make Your Own Language 2: The Parser

Jul 18th 202021:06

Make Your Own Language 3: Parsing Function Calls

Jul 19th 202016:25

Make Your Own Language 4: The Generator

Jul 20th 202017:35

Make Your Own Language 5: Runtime Functions

Jul 20th 202011:40

Make Your Own Language 6: Parsing Lambda Functions

Jul 20th 202018:38

Make Your Own Language 7: White Space and Ambiguous Grammar

Jul 25th 202017:40

Make Your Own Language 8: Code Generator for Lambda

Jul 25th 202010:57

Make Your Own Language 9: Comments and More Ambiguous grammar

Jul 27th 202010:10

Make Your Own Language 10: Coding Challenge

Aug 10th 202029:10

Parser Performance Story

Aug 24th 202024:20

dabeaz's Compilers Course And X86 Registers

Mar 10th 202115:22

Fun with ASTs

Aug 4th 202158:01

Fun with AST Part 2

Aug 6th 202159:56

Compilers Challenge #1: Reverse Polish

Oct 25th 202114:40

Compilers Challenge #1 Solution: Reverse Polish

Nov 2nd 202118:21

Writing ↑Videos