Preliminary note: I do not subscribe to the "github is my resume"
idea. First, I don't think all the world should put their OSS eggs
in one basket. And then, what I write in my Copious Free Time™
is substantially different from what I write at work.
At work, I like to do a thorough system design, documentation, test
cases, well-documented interfaces, all the works. That is also where
I put most of my programming energy, so there is not so much left
when I get home. The software I write at work is also not Open
Source, because reasons — mainly because it would require too
much extra work to make it usable for any other scenario than the
specific one it is written for.
At play, I just want to try out a few ideas, or have a small tool
for certain need, and all that for fun. It is no big fun writing
documentation or a test suite when there is no one else going to
use it, so don't judge me for the lack of it. Or do it, just as you
In between I have a few things on GitLab. My main repositories,
though, will still be on
my own site.
Some of the programs I wrote for fun or some purpose.
Simple name service lookup tool. Originally implemented in 1992, it
held up suprisingly well when I reworked it in November 2013 to use
the newer IPv6-capable name service API.
- Replacement for the calc utility below, finally
with RPN. Written in Common Lisp, it runs with Clisp and SBCL.
Due to its use of the Readline library, Clisp is very convenient
for interactive use. As my first "real" program in Common Lisp,
it has probably lots of room for improvement. Public domain.
A Perl script with a simple read-eval-print loop to evaluate Perl
expressions, intended as a calculator tool. I have used this for a
few years, although I actually wanted something with RPN syntax.
A Perl script to export the music of an iTunes playlist as files,
e. g. to copy the music files of your favourite playlist to an USB
stick. First export the playlist from iTunes as a text file, then
Tested on the Macintosh only; assumes CR line endings in the
playlist file. Preserves the Artist/Album directory structure. Does
not copy files that are already present with the correct size.
export-playlist-music playlist-file target-directory
Version 1 [ni 2010-01-27].
A program to have access to TCP sockets from the shell. Begun to
fill a gap in 1992, it is still maintained, and in use by some. Today
it can even use IPv6.
- Emacs Lisp
A collection of Emacs Lisp code I wrote mostly on the University.
- Tcl hacks
Some small Tcl hacks, also quite old.
Python Lambda Experiment, a Lisp interpreter in Python; I started
this while learning Python, but not so much to learn Python, but
rather because I was curious to see how its capabilities would apply
to this problem. It is intended to be minimal in terms of builtin
functions, but fully extensible with macros, and the rest implemented
in Lisp itself. Not completed; had problems to get the macros to
work (different problem than in lingo). 
A Lisp in Perl — because we can! Writing a Lisp interpreter not in
a language I am currently learning, but relatively familiar with
shifts the "how do I do this" decision-making from "... at all" to
"... in the most convenient and/or elegant and/or best of all ways".
That doesn't make it necessarily easier. Still, I get to learn new
things about Perl all the time.
Lis.pl has, despite the different implementation language, much in
common with the
lingo implementation (below), but I
tried to make it simpler. Fewer data types, so no files, vectors,
tables, sockets. Because of that, in parts, I made faster progress
and soon reached the point where I wanted to try something new (for
me): Lexical scope. I had always wanted to do that, but thought it
would be difficult and was afraid looking up bindings in nested
environments would be slow. It turned out that it was neither
difficult nor slow, not in Lis.pl and not in
between mostly abandoned again in favour of continuing work on
A small Lisp interpreter written in Go, intended mostly for myself to get
some more practice in Go and to toy around with a simple Lisp
interpreter. It is still work in progress, and mostly undocumented.
While it will, like the others, probably never be finished in any sense
of the word, it is the most complete of all the Lisp interpreters I
have written so far. Has in between taken over some features from
Lis.pl, in particular lexical scope. In between, it has macros!
- Hic Sunt Lambas
Another Lisp interpreter, in C this time. Originally I wanted to
write one in Lua, to finally learn that language a bit, but then it
started to pour out of me in C. I would like to say "work in
progress", but actually it is just unfinished and
abandoned now. Main issue is the garbage collector, which is a bit
overeager and collects things it shouldn't. 
Lisp implemented in Java. More a proof-of-concept and just-for-fun
thing than a really usable programming environment. With recursion
and higher-order functions it can rightfully claim to be a Lisp
dialect, though. [2006, mostly]
When we studied computer science at the TU Berlin, Bernd Machenschalk
and I took a course with the task to write a small Lisp interpreter in
Modula II (see here). We
were a bit unsatisfied with some of the specs, but we completed
that assigment anyway (and learned a lot doing that). Afterwards
we felt the need to have one that was truly our own, so we wrote