Here is a selection of free software I wrote in the last 13 years. Most applications
are written for
MacOS or for the
Java platform. All software on this page is
distributed as freeware.
Keris
Keris is an extension of
the programming language Java which focuses on the development of extensible
sofware. Keris introduces extensible modules
as the basic building blocks of software. Software developed with Keris
is closed in the sense that it can be executed, but it is open for future
extensions. Such extensions are non-destructive: they do not require source
code modifications and existing binaries persist.
Jaco
Jaco is an extensible
Java compiler. This software was part of my
master's thesis
at the
University of Karlsruhe.
Jaco is written in an extension of itself: Java + extensible algebraic
types. It runs on all platforms for which a Java virtual machine is
available. Jaco is currently used in a couple of projects at
EPFL and the
School of Computer and Information
Science of the
University of
South Australia.
Funnel
Funnel
is a new programming language that is conceptually based on
functional nets. The Funnel compiler
maps Funnel programs to an intermediate language which is then interpreted
by a virtual machine. Funnel programs can access the full Java API through
a rudimentary Java interface. This prototype implementation
is experimental and should be considered as work in progress.
JavaParty
JavaParty
is an extension of Java with features that facilitate the development of
distributed applications. It provides:
- Transparent Remote Objects: Although RMI seems to offer this, you really have to
re-work your multi-threaded Java programs significantly before you can exploit the
combined computing power of all your workstations with RMI. JavaParty programs
are just a tiny step away from regular Java.
- Object Mobility: JavaParty objects are free to move from one node of the network to
another. Object migration results in locality of access and therefore may hide
network latency.
JavaParty compiles programs to ordinary Java bytecode, and interfaces with existing Java
code, retaining the broad compatibility to Java. I was the original developer of this
software. From 1999 on, it was maintained by staff of the
Institute for Program Structures and Data Organization of the
University of Karlsruhe, Germany.
MacBPM
Initially,
MacBPM was
intended to be a simple
bpm (beats per minute) counter. I wrote
it in order to count the beats of my dance music CDs. From time to
time, I added a database module for cataloging music tracks and a
playlist compilation utility. MacBPM is mainly useful for DJs. Indeed,
there are really a lot of them using it, since there is no other comparable
Mac program available. This is a MacOS 9 application and I have
currently no plans to port it to MacOS X.
Pizzeria
Pizzeria is a small
integrated development environment for the
Pizza
programming language. Pizza is a superset of Java that incorporates three
additional features: parametric polymorphism, first-class functions and
algebraic data types with support for pattern matching. Pizzeria was the
only free native Java IDE on
MacOS
for a long time.
LiLa
LiLa is a Lisp programming
environment for MacOS 9 with a built-in interpreter and compiler. I started
already more than 12 years ago with the implementation. The MacOS version is
actually a port of my former Amiga Lisp interpreter. I wrote LiLa in order to
get experience with the implementation of functional
programming languages. LiLa is completely written in Modula-2. This allowed me
to include a lot of multi-purpose modules I wrote during my
Amiga times (including long integers,
complex numbers, a garbage collector, etc.).
Although the system is not really fast, it was my Lisp interpreter of choice
for a long time.