Blog
-
You can use C-Reduce for any language
November 15, 2024
-
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
Runtime optimization, the series
Compiling a Lisp, the series
-
Compiling a Lisp: Overture
August 29, 2020
-
Compiling a Lisp: The smallest program
August 30, 2020
-
Compiling a Lisp: Integers
August 31, 2020
-
Compiling a Lisp: Booleans, characters, nil
September 2, 2020
-
Compiling a Lisp: Primitive unary functions
September 5, 2020
-
Compiling a Lisp: Primitive binary functions
September 16, 2020
-
Compiling a Lisp: Reader
September 22, 2020
-
Compiling a Lisp: Let
October 1, 2020
-
Compiling a Lisp: If
October 7, 2020
-
Compiling a Lisp: Heap allocation
October 11, 2020
-
Compiling a Lisp: Instruction encoding interlude
October 19, 2020
-
Compiling a Lisp: Labelled procedure calls
October 29, 2020
Writing a Lisp, the series
-
Writing a Lisp, Part 0: Fundamentals
October 27, 2016
-
Writing a Lisp, Part 1: Booleans
October 28, 2016
-
Writing a Lisp, Part 2: Symbols
November 1, 2016
-
Writing a Lisp, Part 3: Lists
December 6, 2016
-
Writing a Lisp, Part 4: Environments
December 19, 2016
-
Writing a Lisp, Part 5: If-Expressions
December 19, 2016
-
Writing a Lisp, Part 6: Primitives 1
December 27, 2016
-
Writing a Lisp, Part 7: Primitives 2
January 18, 2017
-
Writing a Lisp, Part 8: ASTs
January 31, 2017
-
Writing a Lisp, Part 9: Quote
February 1, 2017
-
Writing a Lisp, Part 10: Closures
February 7, 2017
-
Writing a Lisp, Part 11: Primitives 3
February 9, 2017
-
Writing a Lisp, Part 12: Metacircular Evaluator
March 1, 2017
-
Writing a Lisp, Part 13: Let
March 14, 2017
-
Writing a Lisp, Part 14: Comments
March 15, 2017
-
Writing a Lisp, Part 15: I/O
March 18, 2017
-
Writing a Lisp, Part 16: Standard Library
March 22, 2017
-
Writing a Lisp, Part 17: Modules
May 2, 2017
-
Writing a Lisp, Part 18: No Define
May 11, 2017