Here are some programs and things I have worked on in my spare time. As most of my data is published on the Comprehensive Perl Archive Network (CPAN), there is also a full list of my Perl-related open source work. Ohloh, a social network for open source developers, can also provide some insight into my coding habits.
Work in Progress
To ensure reliability, some file systems and databases provide support for something known as journalling. The idea is to ensure data consistency by creating a log of actions to be taken (called a Write Ahead Log) before committing them to disk. That way, if a transaction were to fail, the write ahead log could be used to finish writing the data.
While this functionality is often available with full-fledged databases, often it is not completely necessary, yet reliability can be desirable. Other times, the filesystem does not provide support for journalling, but it can still be desirable. Thankfully, Alberto Bertogli published a userspace C library called libjio that can provide these features in a small (less than 1500 lines of code) library with no external dependencies.
I write Perl programs and modules, later releasing them under the BSD or Perl license (depending on the module). Below are some modules I’ve worked on recently (and hence are my pride and joy).
This is a module useful for decoding the Four Character Code of AVI video files. These are a four-byte sequence embedded in every AVI file which tells the video player which codec to select. It includes a utility called peekvideo which will tell one what codec a video was encoded with, which is particularly useful for debugging codec issues.
ISAAC (Indirection, Shift, Accumulate, Add, and Count) is an algorithm written by Bob Jenkins in the late 1990s. It is a pseudorandom number generator (PRNG) algorithm, which means that it takes ordered data and mixes it using an algorithm, in order to generate a longer sequence of random-looking data.
Bob’s project page explains how it works, why it’s useful and how it’s different from other algorithms.
Currently there are outstanding portability problems with the C/XS implementation. I’ve been meaning to take another look at it, but will be unable to until I have some free time.
Each CPAN-distrubuted Perl package contains a file called MANIFEST, which lists the files that exist in the current directory. It may optionally also contain a file called MANIFEST.SKIP, which is a list of regular expressions; if files in the directory match these regular expressions, they must not be considered part of the distribution itself.
The work on this module largely leads up to features for Test::DistManifest, but is not limited as such.
I am not the primary author; I simply contributed a fair bit of code for the 0.05 release.
This is a module aimed at authors of modules, particularly (but not limited to) those which commit versions to CPAN. This simple author test allows authors to ensure that their distribution’s MANIFEST accurately reflects the expected state of the distribution prior to release, so that errors can be caught and repaired quickly.