Stuff I Wrote About Programming Languages


Feb 01 What Color is Your Function?


Dec 08 Baby's First Garbage Collector
Aug 26 What is "Open Recursion"?
Jul 18 JavaScript Isn't Scheme
Apr 23 Playing with Generics in TypeScript 0.9.0
Apr 17 Well Done: A Sentinel Value
Feb 24 Iteration Inside and Out, Part 2
Jan 13 Iteration Inside and Out


Dec 19 The Impoliteness of Overriding Methods
Jun 12 Multimethods, Global Scope, and Monkey-Patching


Oct 29 A Proposal for Null-safety in Dart
Oct 21 Wrapping My Head Around Optional Typing
Jun 06 Magpie Wants You!
Apr 21 Multimethods, Multiple Inheritance, Multiawesome!
Mar 19 Pratt Parsers: Expression Parsing Made Easy
Feb 13 Extending Syntax from Within a Language
Jan 16 Pattern Matching in a Dynamic OOP Language


Dec 31 Rethinking User-defined Operators
Dec 14 The Trouble with Constructors
Nov 08 Refining Exceptions and Error Codes
Oct 29 Bootstrapping a Type System
Oct 21 The Language I Wish Go Was
Oct 01 Solving the Expression Problem
Sep 28 Ruby blocks, Python's with, and Magpie's Test Suite
Sep 18 Future-proofing, Uniform Access, and Masquerades
Sep 01 A Type-checking Conundrum!
Aug 31 Type-checking a Dynamic Language
Aug 23 void, null, Maybe and nothing
Aug 01 Class in the Front, Proto in the Back
Jul 24 Killing Primitive Loops and Conditionals
Jul 23 What I Learned at the Emerging Languages Camp
Jul 18 Jasic: A Complete Interpreter in One Java File
Jul 13 Fibers: Coroutines in Finch
Jun 25 Methods on the Ether: Or Creating Your Own Control Structures for Fun and Profit


Dec 26 Conditional Binding with "let" in Magpie
Jun 05 Naming Things in Code
May 15 Loops in Magpie
May 13 ML-style Pattern Matching in C#
May 05 One and Only One
Apr 26 Stupid Magpie Tricks (Or: Yes, I'm Making a Programming Language Like Everyone Else)


Dec 28 Fixing Ambiguities in Grammars