A Personal History of Legion, by Way of Its Papers

The path to publication is rarely as linear as the publication record would appear to indicate. For the last 12 years, I have been an active contributor to Legion, a research project originally out of Stanford which aimed to create a programming system for supercomputers that fundamentally and dramatically simplifies the way we program these machines, while providing best-in-class performance and scalability. Through many years of hard work, I believe we have succeeded in this goal. But even so, these years have been anything but straightforward.

This document is a personal history of Legion: the story of the project, told through the lens of the papers we wrote about it, and the journey that brought us to each one.

What Are the Enduring Innovations of Lisp?

Historically, Lisp was a behemoth in the world of language design innovation. The list of Lisp’s innovations is so long that I’d have to list most of the features associated with modern languages. (Do you like if statements? You can thank Lisp!)

But the language landscape has changed a lot since then, and realistically no programmer today cares about what made a language stand out 50 years ago. Clearly, the good ideas have been copied into other languages. Paul Graham even suggests this convergence towards Lisp is inevitable. I wouldn’t go so far. But this begs the question: Is there anything left? Are there any features that couldn’t be copied so easily into the various descendants of Algol?

Terra 1.0.0

I am extremely pleased to announce the release of Terra version 1.0.0. Terra is a programming language that integrates tightly with Lua and provides support for high-performance, low-level code and first-class metaprogramming. Terra runs on Linux, FreeBSD, macOS and Windows, is able to generate code for most CPUs, NVIDIA and AMD GPUs, and has been used on FPGAs. Applications and languages written in Terra have run on many of the world’s largest supercomputers.

On the State of Terra in 2022

Terra is a programming language that combines the power of a high-level scripting language with the ability to metaprogram low-level, high-performance code. Terra has been used on laptops, desktops, and many of the world’s fastest supercomputers. If you haven’t seen it before, it’s pretty awesome. You should go check it out.

My Kindle 3rd Gen (2010-2021)

My first exposure to ebooks was through the Kindle platform. I had money saved from a summer internship, and (among other things) used it to purchase a then-new third-generation Kindle. While I have continued to enjoy some aspects of paper, my Kindle had distinct advantages—most notably that it was actually lighter than many of the books I was reading. With it, I was able to maintain longer reading sessions without having to deal with my arms getting sore.

What Do You Want to Spend Your Life On?

Here’s a funny phrase: “What do you want to spend your life on?”

It refers, of course, to what you’d like your life’s work to be. But it also has, if you take it perhaps too literally, some other linguistic layers of meaning to it.

Sentimentality is Unearned Emotion

Sentimentality in fiction is generally considered something to be avoided. I’m thinking, for example, of the advice Laurie Alberts gives in her book Showing and Telling, though I’m sure similar advice would be given by any writing instructor. Sentimentality is cheap, and particularly if used at the end of a book, gives it an overall saccharine feel that detracts from its impact.

Review: Showing and Telling by Laurie Alberts

As writers, we’ve all been told to “show, don’t tell.” This oft-repeated advice is useful, but can sometimes be counterproductive. There are times when you actually want to tell.

Laurie Alberts helps to reframe the problem in her book on writing craft, Showing and Telling. Alberts tells us that in fiction (and other narrative prose) there are two primary modes of writing: scene and summary. Ultimately, we need both of these techniques, and few (if any) successful books use exclusively one or the other.

Review: NieR:Automata

This review contains NO SPOILERS except where specifically marked.

For me, NieR:Automata felt like it came completely out of left field, going from complete obscurity to a cult hit seemingly overnight. I put the game on my wishlist, promptly forgot about it, and then recently dug it back out. And I have to say, it’s a gem.

Dialogue Tags: An Empirical Study

Dialogue tags (“he said”, “she said”) seem simple, but can be surprisingly subtle. There are also a lot of variations that aren’t covered in common guides. I’ve had trouble finding good information about dialogue tags online, so I decided to put together this guide, mostly for my own use. Hopefully it might be useful for others as well.

Announcing a File-Based Integrity Checker

I’m happy to announce the initial release of a file-based integrity checker written in Rust that I’ve been developing in my free time. If anyone here has feedback on the tool, please let me know.

Regent: A Language for Implicit Dataflow Parallelism

Regent is a research programming language which extracts implicit dataflow parallelism from code written in an imperative and (apparently) sequential semantics.

AWS Infrastructure for Stanford Course in Parallel Programming

Over the last two winters I have had the privilege of being a teaching assistant for CS149: Parallel Programming at Stanford University with instructors Alex Aiken and Kunle Olukotun. When I started, I took up the job of overhauling the management of machines for the course. CS149 is unusual in that each assignment investigates a different programming model. As a result, every assignment runs on a different hardware and software stack.

How to Build Truly Private Email in Ten Easy Steps

This guide aims to demonstrate how easy it is to set up truly private email in ten steps.

Rust Precise Garbage Collection

This summer I had the priveledge to work on the Mozilla Research team on implementing precise garbage collection for Rust. I gave a talk at the end of my internship summarizing my work, and published my notes from the summer.

QR Decoder for ImageJ

I was recently asked about how to decode QR barcodes. To demonstrate how to do this, I wrote a simple plugin for ImageJ which does exactly that.

Binary downloads and source code are available on the project page.

Blackthorn 3D

This spring I was lucky enough to be able to spend time working on something I’ve wanted to do for a long time: a full-blown 3D game engine in Common Lisp. As a part of CSE 125 at UCSD (a senior design project course in video games), I worked a team with 4 other people to create a 3D multiplayer video game in 10 weeks. The result is Blackthorn 3D, and an accompanying demo game named LKCAS.

An Attempt to Explain the Uselessness of Political Flame Wars

I am becoming increasingly convinced that the folk saying “I’ll believe it when I see it” is wrong, at least some of the time. Or at least, people have a remarkably predictable ability to ignore seemingly convincing evidence in certain situations, when that evidence appears to contradict closely held beliefs. I’ve started calling this the “I’ll see it when I believe it” phenomenon.

Name Generator Returns

My random name generator is back, and has been rewritten in Common Lisp. Now it supports female and male first names too.

Update 2021-10-23: the random name generator has moved to a new domain. The links above have been updated.


Escalator, aka Entity System for Common Lisp (ESCL), is an experimental, high performance object system designed for games. An early version of the source code is available for use. While the system still has many rough spots, preliminary benchmarks indicate that the system may be up to 50% faster than CLOS for certain operations (tested under SBCL on default optimization settings).

Thopter 0.4

Thopter 0.4 has been released! Thopter is a 2D scrolling shooter game in the style of Raptor: Call of the Shadows, with support for LAN multiplayer co-op mode. Version 0.4 includes a major graphics overhaul in addition to gameplay tweaks. Downloads for Windows and Mac OS X are available now, with Linux coming soon!

Thopter 0.3

Thopter 0.3 has been released! Thopter is a 2D scrolling shooter game in the style of Raptor: Call of the Shadows, with support for LAN multiplayer co-op mode. Version 0.3 includes new support for arbitrary numbers of player in multiplayer, and the first ever build that does not crash on Windows :-) Downloads for Windows and Mac OS X are available now, with Linux coming soon!

Thopter 0.2

Thopter 0.2 has been released! Thopter is a 2D scrolling shooter game in the style of Raptor: Call of the Shadows, with support for LAN multiplayer co-op mode. Version 0.2 includes bosses, an autofire button, and improved LAN support. Downloads for Windows and Mac OS X are available now, with Linux coming soon!

Thopter 0.0

Thopter is a new scrolling shooter game in the style of Raptor: Call of the Shadows. See the demo video, which demonstrates the two-player coop ability of the game. Downloads and source are available from the Blackthorn project page.


Graphy extends Google Wave with the ability to collaborate on flow charts and graphs.

Graphy is currently hosted on Google AppEngine at graph-wave@appspot.com. The source is available on Google Code.

Bunny Slayer 0.1

Bunny Slayer 0.1 (an RPG written using Blackthorn) was released on 05/03/2009. Available in either source or Windows, Linux or Mac binary.

(You can subscribe to these posts via RSS.)