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

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

Articles