Thesis
Writings
-
On the universal relation
October 27, 2024
-
Adding row polymorphism to Damas-Hindley-Milner
October 22, 2024
-
Damas-Hindley-Milner inference two ways
October 15, 2024
-
What's in an e-graph?
September 11, 2024
-
microui+fenster=small gui
September 7, 2024
-
Precedence-aware pretty printing
August 25, 2024
-
Abstract interpretation in the Toy Optimizer
July 23, 2024
-
Some tricks from the Scrapscript compiler
July 10, 2024
-
TCC does support __attribute__(section(...)), actually
June 19, 2024
-
A baseline scrapscript compiler
June 1, 2024
-
Compilers for free with weval
May 19, 2024
-
Waking my computer from afar
March 15, 2024
-
Neat parallel output in Python
February 22, 2024
-
Vectorizing ML models for fun
February 18, 2024
-
scrapscript.py
January 23, 2024
-
Type information for faster Python C extensions
January 13, 2024
-
Building a small REPL in Python
November 27, 2023
-
A quick look at destination-driven code generation
November 9, 2023
-
Ninja is enough build system
November 4, 2023
-
Compiling ML models to C for fun
September 19, 2023
-
Compiling typed Python
June 19, 2023
-
Writing a symbolizer for the Cinder JIT
November 3, 2022
-
How we use binary search to find compiler bugs
October 18, 2022
-
How the Cinder JIT's inliner works
May 2, 2022
-
Recursive Python objects
May 2, 2019
-
Understanding the 100 prisoners problem
March 11, 2019
-
Bytecode compilers and interpreters
January 4, 2019
-
JumboSmash: a technical retrospective
July 13, 2018
-
How to mess with your roommate
May 29, 2018
-
Driving student programs
April 13, 2018
-
I'm confused
January 13, 2018
-
How to shoot yourself in the foot without really trying
October 6, 2017
-
An error in ML that caused me much grief
October 19, 2016
-
The cost of applying to college: data
January 2, 2014
-
A quest for anonymity
September 20, 2012
-
DNS tunneling, or, how to get around Gogo
August 20, 2012
-
Dictionary
August 13, 2012
-
New public key!
July 25, 2012