Belorussian translation


Here can be found various programs.


CDoc is a simple program to generate pretty TeX output from annotated c or c++ code. Download or get the README.

Narsi (historical interest only)

Note that Narsi is no longer maintained. It has been replaced by Schell (see below) and Chell, which will arrive here soon.

Narsi is not a real scheme interpreter, but it's close. It's reasonably quick even though its an interpreter, and uses GMP, so that it has fast MP arithmetic. Fun for number theory play. Get it here. Documents, such as they are, can be found here. This is the latest release as of May 7, 2004. Fixed printer to cut off printing of circular data structures. Made Environment truly first class. Release as of April 3. Fixed to egregiously silly bugs. April 2, 2004. New, write behaves correctly, fix to obscure call/cc incompatibility. March 21, 2004. New, there is the beginnings of a code optimizer. (All it does now is elide begins with only one expression.) New, some minor performance improvements. Release as of March 15, 2004: New, ` is now implemented in scheme and understands ,@. (I know it's embarrassing it didn't before). This makes Narsi a little slower than before but there's now an inline macro expander that speeds things up to faster than before. New, macros are now in line with other (non-hygienic) scheme macro systems. New, one glaring bug in call/cc corrected. New, embarrassing bug fix. New found trivial crash condition and fixed it. New ugly feature, call/cc, but some people like it. New, nifty feature, coroutines. 'Nother new nifty feature: made more script friendly. 'Nother new nifty feature: sockets. Also check out this for a more or less complete listing of scheme implementations. Also check out for the best scheme jump off point.

Here's where the non-standard libraries needed for Narsi can be found: libpcre, libgmp.

userblock (historical interest only)

Userblock is a simple user space block device driver kit for Linux. Here is the README. Here is the source.

uvfs (historical interest only)

UVFS is a user space filesystem kit. The README is here. Here is the source for version 0.5, now only of historical interest, and here are the last release notes I had anything to do with. It is maintained now at

Earlier version:

Daniel Gryniewicz has kindly provided a patch against 0.4 which makes UVFS 0.4 work with devfs (for those of you brave enough to use devfs ;). With 0.5 this patch should no longer be necessary.

Version 0.4

Version 0.3.1

Version 0.3

Version 0.2

Version 0.1


Java Junk

I've written a number of things in Java over the years. They are all free software. For all practical purposes consider them public domain. Because of the wackiness of US copyright law there is apparently no way to actually place software into the public domain directly. The fact is, however, that I detest most of the open source licences out there. The GPL in its many and various incarnations irritates me no end. The only real purpose it serves is to give commercial open-source software companies a way of pretending that they sell free software. In every other way the GPL just makes life hard on programmers. Contrary to whatever Richard Stallman may believe, most programmers work, by necessity, on commercial software, and the GPL denies this majority of programmers the benefit of GPLed software, since they cannot use it in their day-to-day work. Rant over.

So consider the following programs and libraries covered by the MIT license which says, more or less, anything goes, just don't blame me.

I structure my java projects in such a way that makes life easy for me, and may or may not make life easy for you. All source is ant driven and uses the target distribute to build and install the project in a particular way. Jar files go into $JARS, startup scripts go into ${HOME}/bin, documentation, in the form of doxygen output goes in ${HOME}/documentation, and configuration files go into package specific locations which will be documented.

By the way, I tend to use foul language in my examples and comments. So, if such offends you, don't look.


org.sciencething.unix is a tiny java library which provides a useful set of native unix system calls via jni. It has been tested on linux and mac osx. Download it here


St-util is a collection of bits and pieces which make my programming life easier. Most of the packages here depend on it. Download it as source here or get the jar here.


Markup is an xml like markup syntax. I find it much less irritating than XML. For the most part it is intercovertible with XML and the package provides clts to do so.

Download the source here. Download the jar here. I know that this will not be to everyone's taste but several other programs here use it; and, you can use XML for those programs by converting to markup syntax on the fly. This package depends on jdom.jar, antlr-3.0.1.jar, and the st-util project.


Jnumeric is a collection of numerical routines for java. Matrix algebra, gauss-jordan elimination, real symmetric eigenvalues, and some other odds and ends. Download the source here. Get the jar here. Jnumeric relies on st-util.


Gterm is a swing based canvas that acts as a drawing board for another program talking to it over stdin and stdout. Download the source here. Download the jar here. Gterm needs JMathTeX-0.7pre.jar.


Javatool is a library that can parse java source (1.6) into a tree structure which is then visitible. It also contains a few tools to make things, like generating static proxies, convenient. Download the source code here. Download the jar here. Javatool needs antlr-3.0.1.jar, antlr-runtime-3.0.1.jar, and st-util.


Schell is yet another implementation of scheme, or, more precisely, of a schemish dialect of lisp. It has all of the important things in scheme, tail-recursion is optimized to iteration, call/cc behaves correctly modulo the call/cc torture tests I was able to find. It diverges from scheme when scheme gets dumb. There are no booleans, all objects are true except for the empty list which is false. (This is the way scheme behaved back in the old days.) Schell is case sensitive, (as I believe r6rs has finally mandated). The 'values' notion is not supported as that is just an obscurantist way of returning lists of values which are not lists. The numeric stack in schell is not that of scheme, no exact/inexact distinction, though there are rationals, bigints, and bigdecimals. In addition I've dumped the kitchen sink into schell. In addition to vectors, there are sets, tables, regexes, arithmetic expressions, matrices. There is some java integration, including a limited set of bindings to Swing. The documentation now is spotty to put it extremely charitably. Download the source here. Download the jar here. Schell requires jdom.jar, hsqldb.jar, and depends on markup, jnumeric, st-util, org.sciencething.unix, and gterm.