Here is a partial list of software of which I wrote the initial useable versions or otherwise major portions. I'm currently (2015) mostly spending time on Kawa and DomTerm.
From 2007 to 2010 my day job was working on the compiler, runtime, and language definition of SUN's JavaFX Script language.
As technical lead for the Cygnus Java project, I did most of the design and wrote most of the early code for the compiler.
Kawa compiles the Scheme functional language to Java bytecodes. It is both a full-featured Scheme implementation, and a compiler toolkit for implementing other programming languages.
DomTerm is a combined terminal emulator and rich-text console written using JavaScript and DOM/HTML5 technologies.
Qexo ("Query Expressions for XML Object") is a project to implement XQuery, the W3C's new XML Query language. Qexo achieves high performance because a query is compiled down to Java bytecodes using Kawa.
A project to implement Emacs using Kawa, compiling Emacs Lisp to Java bytecodes.
I wrote some scripts useful for managing images, such as photographs downloaded from a digital camera. The original version used XSL; the current re-write uses XQuery. The idea of these scripts is that you write a "picture-group file", which is an XML file which describes a group of images. You then run a script which reads the picture-group file, and the script generates a series of html files: An overview page containing small images, plus one page for each picture. The advantage is that you just edit the picture-group file, tweak the scripts to your preference, and automatically get nice linked web pages.
make-slides
I wrote some scripts
that I'm using for paper and slide presentations.
The make-slides
script converts an XML file with
<slide>
elements containing HTML markup
to a set of linked HTML pages with flexible navigation.
Another script converts Docbook to LaTeX.
An efficient library for manipulating bit-strings, based an macro framework for iterating over bitstrings. Includes a complete implementation of one-dimensional "bitblt": that is all 16 bit-wise operations of two equal-length bitstrings, which need not be aligned and can overlap. This is included in libg++, or you can get just the bitprims source.
Chill is the "CCITT [now ITU] HIgh-Level Language". It is a programming language similar to Modula-2 and Ada, and is still used in the tele-communications industry in various parts of the world. Cygnus wrote a Chill implementation based on Gcc. It was in the Gcc source tree until it was removed for lack of interest.
I wrote
config.guess
, a script to figure out the "canonical
host triple" of a system. This make it easier to "configure"
various GNU programs. It is now being maintainer by the current
maintainers.
The C Pre-Processor library provides a library API to the
functions of cpp
, the C Pre-Processor. I wrote
it in 1994-1995, but never had time to finish it, so it languished
little-used in the Gcc source tree for years. (However, I was
amused to find a copy in the Enlightenment sources.)
Later, Zack Weinberg and others worked on making it a
complete and efficient replacement for cpp
.
The term
major mode for Emacs provides the full
functionality of Shell mode combined with a complete standard ANSI
terminal emulator. While I no longer maintain it, it is part of
the standard Emacs and XEmacs distributions;
other people have added features such as color support.
You can get the
README,
the
TODO list,
and an old version of the
term.el
source. (This is the most recent version I have personally worked on.)
The rlfe
program (previously called fep
)
provides input line editing for any program.
There are a number of similar front-ends;
what distinguishes this one is that it monitors the state of the
inferior pty, and if the inferior program switches its terminal
to raw mode, then rlfe
passes your characters through directly.
This basically means you can run your entire session (including
bash and terminal-mode emacs) under rlfe
.
Also worth noting is that rlfe
uses GNU readline.
This is alpha software, only tested on a few platforms.
Grab the compressed archive here.
I wrote an integrated implementation of the C stdio interface and
the C++ iostreams interface. This was picked up for the Linux
version of libc
.
The mkshadow
programs makes a "shadow tree" of a directory
tree. It logically copies all of the "MASTER" directory into ".".
However, ordinary files, and RCS/SCCS directories are "copied"
by creating a sybolic link to the corresponding file in MASTER.
This program is inspired by the traditional X11 program lndir
,
but is better in various ways.
You can get the README or the source as a shell-script archive. It was also included in X11R6.
Q was a programming language I developed for my dissertation, and enhanced in the years following. Lately, I have stopped work on Q, but I hope to implement some of the good ideas in the context of Kawa.
Note that Q is not being maintained, but the source code is available, and I still think it had some neat ideas.
Q is a very high-level programming language. Where APL uses arrays to avoid explicit looping, Q uses generalized sequences (finite or infinite, stored or calculated on demand). Q has lexical scoping, and some support for logical and constraint programming. Q can be compiled (into C++), or interpreted interactively. The syntax was designed to make it a convenient interactive command language. A macro facility together with primitives to run programs is used to make an interactive command language with full shell features. Q also provided various primitives to implement Scheme and Common Lisp.
You can find a quick overview here. You can browse the (quite incomplete) Q Reference manual. The article A Programming-Language Shell discusses the features of Q that make it a very high-level shell.
The source code is available for perusal, but getting it to run will be a challenge at this point!