Nuking stats problems with a probabilistic programming language

Writing a compiler for a probabilistic programming language using probability generating functions in 200 lines of Python, following “Compiling with Generating Functions” (Li and Zhang)

12 September 2026 · 4041 words · Joseph Liu

Bitap: my favorite string matching algorithm

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

07 September 2026 · 1691 words · Joseph Liu

A puzzling Python program

Counting down, seemingly without loops or recursion

08 August 2025 · 673 words · Joseph Liu

Property-based testing is magical

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

11 August 2024 · 1736 words · Joseph Liu

A collection of my favorite blog posts

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

09 August 2024 · 694 words · Joseph Liu