Programming Languages and Runtimes

Over the years I’ve built innumerable little languages and runtimes. In high school, I was inspired by a friend’s HP RPL calculator to build a similar language interpreter using pascal, and that quickly led to a friend, Nigel Bree, pointing me in the direction of Scheme, and a number of subsequent Scheme-like language interpreters (generally inspired by Aubrey Jaffer’s SCM) were the result.


On the road to 3-MOVE I built a few earlier programmable text-based virtual-reality systems, each with their own programming language, culminating in OOM, a system for DOS which accepted connections over dial-up modem and via the local console, using a cooperative threading library for the system’s concurrency.


A precursor to gAlan, aLan was a text-based audio pipeline construction language, inspired by Haskell and Haskore. It was syntactically very close to Haskell, though without the indentation rules. Semantically it was much closer to Scheme: eager and unityped. Special operators were provided for combining audio streams—for example, || mixed two streams together—but most audio manipulation was done by built-in primitives returning “generator” objects.

I haven’t cleaned up the code for release yet; if you’re interested, please contact me to hurry the process along.

Recent years

Latterly, though—basically, ever since I got a job—the experiments have gotten fewer and further between. Besides my contributions1 to the Highwire project2, I’ve been tinkering with Newmoon, an R5RS scheme compiler, for a few years; and in 2007, after discovering Richard Jones’s FORTH system, Jonesforth, I implemented the assembly-language part of the system in PowerPC assembly, thereby learning both PPC assembly and a little something about FORTH at the same time.

I’ve also contributed a few things to other people’s projects: a green-threads and socket library for Slate (way back in 2005—I’m not sure any of that code survives today); a port of the Chicken Scheme compiler and runtime to Sparc and PA-RISC architectures, along with a few bugfixes and, eventually, libraries for a few systems-programming-type tasks.

Ongoing Experiments

These days, most of my language-related experimentation is happening over here.

  1. which are probably still under commercial NDA, otherwise I’d love to write about some of it here! 

  2. A Microsoft incubation project from 2002–2004 that LShift was retained to work on; there used to be a project description at http://www.lshift.net/case.mshighwire.html, but it seems to have vanished recently. Fortunately, the WayBack Machine has a copy