Programming

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.

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.

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.

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

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

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.