Listing

Generic code used to keep a remote directory synchronized with a local directory. The code detects what has changed using different methods (SHA1 or MD5 hashes of file contents' or checking files' modification times) and uploads changes to a server using different methods (scp, tar over ssh, ftp/kermit).

Code to generate format functions. It is relatively flexible, supporting inheritance and allowing you to extend your formatters. It is accompanied by an implementation of Common Lisp's format function which is thread safe and extendible (meaning you could define new format characters).

Code useful for generating graphics of events over time. We use this in svnblog to generate a graphic of the posts made over time. The horizontal line represents time: when events occur, they are shown as a point. You can see an example of this in the following URL (though you should really increases its height): http://azul.freaks-unidos.net/svnblog/graph-pong.png

A simple and fast (well, actually not that fast, since it uses streams of characters) HTML generator, implemented as a macro that transforms expressions such as (html (body ((a href "there") "link"))) into a stream-generating code. I use it for all my HTML-generating programs. I don't expect to modify its interface in the future.

Library for iterating through all the positions in an n-cube in the discrete set N^n containing multiple n-cubes that need not be disjoint. At each moment in the iteration, a list with all the n-cubes in the current position is returned. Among many other uses, this code lets you combine multiple layers that might overlap in different ways into one single image (layer).

Parser and generator for LDIF (LDAP Data Interchange Format) files. Parser returns a stream of hashes, one for each entry in the file. Each hash has as keys names of attributes and as values lists of the values for the given keys. The generator expects information in exactly the same format (which makes it easy to perform transformations in LDIF files, for example).

Parses its own wiki format, which was designed to be as compatible as possible with those used by popular wiki engines (such as MoinMoin and MediaWiki). Converts from the wiki format into multiple formats (currently HTML and LaTeX, work is in progress to also convert to Open Document Format).

An implementation of ZLIB compression/decompression algorithms, as specified in RFC 1950 and 1951. I am not aware of any bugs on it, but I have not tested it exahustively. It is, unfortunately, rather slow. It needs some improvements to be usable on big files (it doesn't currently dump old entries from its hash table). It compresses itself to around 30% of its size. HTTP logs get compressed to about 10% their original size.

Incomplete yet functional wrapper around Subversion's C libsvn_client. We extend it adding functions as we need them. Right now it is rather dirty; we'll probably clean it up at some point, breaking backwards compatibility. So don't use it, not right now.