About me

Ever since I started experimenting with the Arduino Uno, and the AVR range of ATmega and ATtiny chips, I've wanted to write a Lisp for the Arduino. Although I'm not a professional Lisp programmer, it's my favourite programming language, and I have been using it as the main programming language for my web-based projects.

It all started when as a research student I built my own 6800-based computer from a kit by Southwest Technical Products Corporation. I had learnt a bit of Lisp on the university mainframe, and so was excited when I found a listing for a Lisp interpreter for the 6800 in a copy of the popular American home computing magazine Byte. It took me several days to type in the listing from the magazine, but after a bit of work I got it working, and so had my own Lisp system. One of my first Lisp programs was a route-map program, to find the quickest route by road between any two places. I used to populate it with data from my car journeys. After I discovered Lisp I found it hard to go back to other languages, and Lisp has remained my preferred language.

The next version of Lisp I used was Acornsoft Lisp for the Atom and BBC Microcomputer, a ROM-based interpreter based on a Lisp originally written by Mike Gardner of Owl Computers. After that I progressed to Macintosh Common Lisp, released by Apple and subsequently maintained by Digitool, which allowed you to build Lisp applications using the Macintosh Toolbox. In 2000 I started working with CL-HTTP [1], a web server written in Lisp, and started developing web sites written in Lisp. For example, this site is running on a Wiki written in Lisp. In 2008 I switched to using LispWorks [2] for my projects.

Inspired by the early Lisps for the 6800 and 6502 I have been interested in the challenge of writing a Lisp for the Arduino since I started playing with it in 2014, and uLisp is the result. I hope you find it useful.

I also write an Arduino and AVR project blog: Technoblogy.com

David Johnson-Davies


  1. ^ A CL-HTTP Primer.
  2. ^ LispWorks website.