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.
Common Lisp Website
I built a website to promote Common Lisp, including a gallery of Lisp success stories, a wiki, and a tutorial.
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.
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.
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.
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.
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 thelibssh2
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
- 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.