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
WWW::OPG
This small module retrieves data on the current amount of power being generated by Ontario Power Generation using their web site. It is based on the de-facto standard Perl library, libwww-perl.
CPAN – Repository – Test Reports – Kwalitee – Atlassian FishEye – Ohloh
IO::Journal
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.
CPAN – Repository – Test Reports – Kwalitee – Atlassian FishEye – Ohloh
CPAN Modules
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).
Video::FourCC::Info
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.
CPAN – Repository – Test Reports – Kwalitee – Atlassian FishEye – Ohloh
Math::Random::ISAAC
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.
Interface and Pure Perl implementation: CPAN – Repository – Test Reports – Kwalitee – Atlassian FishEye – Ohloh
C/Perl XS implementation: CPAN – Repository – Test Reports – Kwalitee – Atlassian FishEye – Ohloh
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.
Module::Manifest
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.
CPAN – Repository – Test Reports – Kwalitee – Atlassian FishEye
Test::DistManifest
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.
CPAN – Test Reports – Kwalitee
Leave a comment