Over the years, I have been involved in a number of free software projects that are publicly available for everyone take advantage of. A comprehensive overview is also available at Ohloh, the open source network.

# Tools

• The Nix project

NixOS is my personal favorite of all Linux distributions. It supports atomic upgrades, rollbacks and multi-user package management, and it has a declarative approach to system configuration management that makes it easy to reproduce a configuration on another machine.

• GNU Autoconf Macro Archive

The Autoconf Archive collects Autoconf macros from friendly contributors all over the world. As of today, it it contains over 300 of them, all categorized and nicely documented.

• hledger-interest

hledger-interest is a small command-line utility based on Simon Michael’s hleder library. Its purpose is to compute interest for a given ledger account. Using command line flags, the program can be configured to use various schemes for day-counting, such as act/act, 30360, 30E360, and 30/360isda. Furthermore, it supports a (small) number of interest schemes, i.e. annual interest with a fixed rate and the scheme mandated by the German BGB288 (Basiszins für Verbrauchergeschäfte).

• mini-httpd

mini-httpd is a small web server designed for optimal performance, high security, and as little use of system resources as possible. It uses the poll(2) system call to multiplex an arbitrary number of connections internally, rather than using fork(2) or OS threading. The daemon is very portable and should work on any POSIX system.

• mapSoN <–> NoSpam

mapSoN is an efficient albeit somewhat dated challenge/response spam filter. It consists of a single Unix utility that is hooked into your local mail delivery system via procmail, sendmail’s \$HOME/.forward mechanism, or a similar mechanism.

• The Petidomo Mailing List Manager

Petidomo is a a simple mailing list server for the Unix operating system. It is written in C and comes with many features such as moderated mailing lists, challenge/response-style spam protection, and a powerful access-control language.

• PGPAmiga 2.6.3 International Version (LHA Archive)

Cryptography for the masses … now we only need to educate the masses where to find an Amiga.

• Postmaster ESMTP Server

The Mail Transport Agent (MTA) of choice for the discriminating Haskell hacker in an unstable alpha release.

# C/C++ Libraries

• Asynchronous I/O for C++

The ioxx library provides primitives for asynchronous I/O in C++. That kind of thing is typically useful for people who would like to implement a highly concurrent network service, i.e. an application that performs input/output simultaneously on a great number of sockets. The library’s main components are a socket event dispatcher, a time event dispatcher, and an asynchronous DNS resolver. There is also a class interface to socket programming that offers those wonders of modern C++ such as exception-style error reporting, transparent resource management, type-safety, and support for custom memory allocation strategies. Ioxx is thread-safe in the sense that it is fully re-entrant. The code runs on any POSIX-compliant operating system, most notably Linux, NetBSD, Solaris, AIX, HP/UX, and Windows.

• Variable-Expression Library

This C++ language library provides sh(1)-like variable substitution in text buffers. It can do quite a bit more than just »substituting«, though. And for those who don’t trust C++, an ISO-C version is available as well.

• FastCGI Protocol Library

libfastcgi implements a complete system-independent FastCGI protocol driver, which can be used to handle all communications between the web server and the FastCGI application.

• Extensible Data Serialization Library

libxds allows application programmers to serialize data structures in a way that can be exchanged between machines of different architectures without worrying about endian conversion or other traps. The library provides a framework, which let’s you plug-in various encoding and decoding backends. mplementations for XDR and XML formats are included. The library is written in C and is expected to be very portable.

A collection of C++ parsers for the grammar defined in IETF Request for Comment 2822. There are two versions of this library: an older, simpler variant, librfc822.tar.gz that uses a hand-written recursive descent parsers, and a newer, more powerful version that is based on the Boost.Spirit parser library.

• HsDNS

On top of the GNU adns library, these Haskell modules implement an asynchronous DNS resolver. On the Haskell side, the concurrency is hidden from the user through the use of an MVar.

• Internet-Message-Format Parsers

This package contains various parsers for the Internet Message Format defined in RFC2822, plus various additional e-mail related things from 2821.

• FFI bindings to syslog(3)

An hsc2hs module with FFI bindings to syslog.

• Functional MetaPost

Functional MetaPost is a Haskell frontend to the MetaPost language by John Hobby. Users write their graphics as Haskell programs, which then emit MetaPost code that can be compiled into encapsulated PostScript files and smoothly included into e.g. LaTeX.

• FFI bindings to OpenSSL

A very incomplete collection of functions implemented on top of the OpenSSL library. Currently provides the message digest algorithms MD2, MD5, SHA, SHA1, DSS, DSS1, MDC2, and RIPEMD160 through a unified API.

• Generic Stream Processor

Based on the Arrow class, this module implements a generic data stream processor which may be used in the IO monad or in pure code.

• Halipeto

Halipeto is a Haskell library for generating static HTML pages from XML templates and a file-based value dictionary.