Hi, I’m Joseph.

I study computer science and pure mathematics at the University of Waterloo. Welcome to my small slice of the web :) In addition to longer-form blogs, I also post shorter notes and links to pieces I enjoyed on the tidbits page.

Perhaps you’d like to learn a bit more about me. To get in touch, email me at jliu1602 [at] gmail.com; I am also active on Discord as jo3_l.

Posts

2026

The algebraic structure of regular expressions

Converting NFAs to regular expressions by solving linear systems of equations

 · 19 min read

Nuking stats problems with a probabilistic programming language

Let’s write a compiler for a probabilistic programming language using probability generating functions in 200 lines of Python

 · 19 min read

Bitap: my favorite string matching algorithm

An exposition of the bitap or shift-and exact string matching algorithm

 · 8 min read

Summer '26 in the Big Apple

Reminiscing about my summer in NYC interning at Bloomberg

 · 8 min read

Perspectives on LLM-assisted development

Articles and posts about LLM-assisted development that I found interesting and are not slop, plus some of my opinions

 · 10 min read

2025

A puzzling Python program

Counting down, seemingly without loops or recursion

 · 4 min read

2024

Property-based testing is magical

Tests that expose gaps in your thinking instead of confirming what you already know

 · 9 min read

A collection of my favorite blog posts

Some pieces of technical content that influence the way I think about programming.

 · 4 min read

Highlighting codeblocks with Shiki in Hugo

A guide on using Shiki for syntax highlighting in Hugo websites

 · 6 min read

2023

Pressure and chemical equilibrium

Examining the effect of changes in pressure on equilibrium position mathematically

 · 5 min read

2022

Exploring the sum of exponents law

Some practice with induction: a proof of the sum of exponents law for integer exponents

 · 5 min read