Programming Projects

Common Lisp
UnCommon Web Related
Golgonooza
ucw-forms
ucw-core branch
Trivial-Timers
Scheme
Guile XOSD2
Standard ML
Domtool
Old Projects
Bobot++
Guile-Web

All of my current, and mostly not so current, projects are browsable in a few places:

You might want to take a look at my Lisp related projects page too.

Common Lisp

UnCommon Web Related

Golgonooza

Fourfold the Sons of Los in their divisions: and fourfold.
The great City of Golgonooza: fourfold toward the north
And toward the south fourfold, & fourfold toward the east & west
Each within other toward the four points: that toward
Eden. and that toward the World of Generation.
And that toward Beulah. and that toward Ulro;
Ulro is the space of the terrible starry wheels of Albions sons:
But that toward Eden is walled up. till time of renovation:
Yet it is perfect in its building. ornaments & perfection.

Golgonooza is a set of utility components for ucw-core. As of December 2008 it is nearing a releasable state and is in use on one production site online (darcsweb::beesknees for source).

ucw-forms

ucw-forms is a slightly enhanced and de-javascripted version of the forms library from ucw_ajax updated for use with ucw-core.

ucw-core branch

I maintain a personal branch of ucw-core with various work in progress patches that are intended to go upstream. My primary task is filling in the ucw-standard library which was removed in the ucw-core fork.

Trivial-Timers

Clon is a nice library for scheduling tasks within a Lisp image, but it used the SBCL timer extension. I wanted to run something using Clon on Clozure CL and so I looked at the SBCL source and found that, after a bit of fairly straightforward editing, it was possible to write a portable version for any compiler supporting Bordeaux Threads. The SBCL timers internally use sb-unix:setittimer; Rather than using Osicat to emulate this I chose to rework the scheduling loop to run in a dedicated thread that sleeps on a condition variable with a timeout. This seems cleaner to me than using POSIX lib calls, but requires a threaded Lisp.

Releases are available with the usual darcs repo. Currently there is a native SBCL implementation and a portable implementation relying upon Bordeaux Threads. Patches to export other Lisp implementations' timer interface are welcome.

Scheme

Guile XOSD2

A simple SWIG based wrapper for libxosd2. I forked this from guile-xosd after the maintainer did not respond to an email with a small patch to make the interface nicer. Guile-XOSD2 requires SWIG 1.3.x and has been tested against the VM branch of Guile. I renamed most of the functions to have properly Scheme names.

Standard ML

Domtool

Originally authored by Adam Chlipala, as of late 2010 I have been tasked with keeping it up to date for HCoop.

Old Projects

I used to work on some programs in terrible languages like C++ when I was a poor misguided youth. I still attempt to respond to bug reports and patches for any that are still in use (Bobot++ appears to be the only one), but they are otherwise not being worked upon.

Bobot++

A fancy little IRC bot that is extensible with Scheme. If you can figure out the scripting interface (which is partially documented) it is fairly powerful. dsmith from #guile has a nicely featured bot written on top of Bobot++; if I find time I shall attempt to post the source.

There is now a darcs repo available with a few minor changes. I am sporadically working to make the internals of the bot fully threadsafe so that multithreaded Scheme extensions don't run into issues. I may potentially clean up the Scheme interface as well (as it was clearly not designed by a Schemer and I was not so well versed in proper style in 2002 when I did most of my work on Bobot++).

Guile-Web

A perhaps still useful library of web related utilities for Guile Scheme. Be warned that the serializer is inefficient, consy, and hacky as Hell, but the XHTML generation library might be useful.

Valid XHTML 1.0! [ Viewable With Any Browser
	] [ Powered by Debian ] [ Hosted by HCoop] [ FSF Associate Member ]

Last Modified: May 9, 2019