I write small libraries. If a project implements something that may potentially be useful somewhere else, I’ll factor it out.

I’ve written a lot of Common Lisp libraries. Other than libraries, I mostly write compilers or small utilities.

Austral

My current main project is the Austral programming language: a systems programming language with a linear type system. The language is designed to be simple to understand and implement.

The key features are: memory safety, data race freedom, and capability-based security.

A screenshot of some Austral coode.

Common Lisp Website

I built a website to promote Common Lisp, including a gallery of Lisp success stories, a wiki, and a tutorial.

A screenshot of the lisp-lang.org website.

Crane

Crane is an ORM for Common Lisp. It uses CLOS’s amazing MetaObject Protocol to map Common Lisp objects to SQL records and back, and provides a Django-inspired simple interface and automatic migrations.

Internally, Crane is very similar in structure to SQLAlchemy, only most of the components SQLAlchemy implements internally are external libraries that Crane depends on. Crane is built mostly on top of fukamachiware: cl-dbi is used to provide a backend-agnostic database abstraction, and SxQL is used as the DSL for generating SQL.

A screenshot of a code example of using Crane.

cmacro

cmacro is like sweet.js for C. It implements a simple, pattern-matching based macro language that can be used to extend C.

cmacro is written in Common Lisp, and is compiled to a native binary, so you can drop it right into your Makefile between a file and clang without changing anything.

The companion project, Magma, is a collection of cmacro extensions that shows the scope of the macro system.

A screenshot of a code example of using cmacro.

Corona

Corona is basically a Vagrant clone. You define virtual machines (Their name, a base system to build from, amount of RAM, IP address, etc.) and Corona sets it up. It uses VirtualBox to run the machines and Vagrant Cloud as a source of base images to build machines from.

The advantage it has over Vagrant is simply that it’s pure Lisp, so it can be used as a dependency in a Common Lisp system, without the user having to set up the Ruby ecosystem to install Vagrant. It’s also pretty nice to use.

A screenshot of a code example of using Corona.

Rock

Rock is an asset manager for Common Lisp, basically a combination of Bower plus an asset pipeline. It automatically downloads web development libraries (JavaScript libraries like jQuery, JS/CSS libraries like Bootstrap, etc.), manages their versions, and allows you to merge their files together so you only serve a single CSS file and a single JS one.

A screenshot of a code example of using Rock.

Other Projects

Common Lisp Projects

ansi-spec

A project to parse the TeX sources of the draft ANSI Common Lisp specification.

antimer

A wiki in Common Lisp.

arachne

A web crawling framework in Common Lisp, inspired by Scrapy.

asdf-linguist

A collection of extensions to ASDF, the de-facto build system for Common Lisp.

avatar-api

Retrieve avatar metadata from social media services.

ceramic

Electron for Common Lisp.

cl-base58

An implementation of Bitcoin’s base58 encoding and decoding.

cl-libyaml

Low-level libyaml bindings for Common Lisp.

cl-pass

Password hashing and verification with reasonable, secure defaults.

cl-virtualbox

A few functions that map to vboxmanage commands.

cl-yaml

Common Lisp yaml parser built on top of cl-libyaml.

clack-errors

A clone of better_errors for Clack.

clos-fixtures

Test fixtures for CLOS classes.

codex

A documentation system for Common Lisp built on top of CommonDoc.

common-doc

A framework for representing and manipulating documents.

common-doc-plump

Translates a Plump DOM into a CommonDoc document and back

common-html

An HTML target for CommonDoc.

docparser

Library to extract documentation from Common Lisp systems by injecting into the macroexpansion process.

eco

A fast and designer-friendly template engine, inspired by the syntax of eRuby.

find-port

A Common Lisp library to programmatically find open ports.

git-file-history

Library to retrieve a file’s commit history in Git.

hermetic

An authentication library for Clack web applications.

lass-flexbox

Flexbox macros for Lass.

lcm

System configuration management in Common Lisp.

liblmdb

Low-level bindings for LMDB.

lime

High-level client for SLIME’s swank protocol.

lmdb

High-levels LMDB bindings for Common Lisp.

lucerne

Common Lisp web framework built on top of Clack.

pandocl

A document converter built on CommonDoc, similar to Pandoc.

parenml

An S-expression markup language for CommonDoc.

parse-front-matter

Jekyll-style front matter parser for Common Lisp.

path-parse

Parser of the PATH environment variable.

postmaster

High-level library for sending and retrieving emails in Common Lisp.

postmaster-mock

Test classes for Postmaster.

remote-dom

A library to remotely-control the browser DOM from Common Lisp.

remote-js

Run JavaScript in the browser from Common Lisp.

scriba

A markup language with Scribe syntax for CommonDoc.

swank-protocol

Low-level client for SLIME’s swank protocol.

terminal-keypress

Library to read terminal keypress events.

terminal-size

Library to query the size of a terminal window.

texgen

Common Lisp DSL for generating TeX.

thorn

CommonDoc extension for inserting special characters.

trello-json

Common Lisp parser and simplifier for Trello JSON exports.

trivial-build

A tiny library to compile a Common Lisp system into an executable.

trivial-compress

Utility library to compress a directory.

trivial-download

It downloads files.

trivial-extract

For extracting .tar, .tar.gz and .zip files simply.

trivial-open-browser

Portable library to open the system’s web browser to a URL.

trivial-ssh

A simple abstraction layer over cl-libssh2, a binding to the libssh2 library.

trivial-ws

Simple WebSockets for Common Lisp.

vertex

A markup language with TeX syntax for CommonDoc.

wax

TeX-like markup language experiment.

which

The which command in Common Lisp.

Standard ML Projects

concordia

A document preparation system.

interim

Low-level Lisp with compile-time memory management.

l0

Lisp with linear types.

mlunit

Unit testing framework for Standard ML.

parsimony

Parser combinators for Standard ML.

sml-sqlite3

SQLite bindings for MLton.

tfc

A tiny compiler for a monomorphic typed Forth.

Other Projects

MNT

Simple molecular devices built with NanoEngineer.

NeuriteTracer

An old experiment in computer vision: using OpenCV to trace the contours of neurites in electron micrographs of human brain tissue.

astro-eog581

Astronomical calculations for The Epiphany of Gliese 581.

dotfiles

My dotfiles.

eudoxia0.github.io

The source code for this website.