Apart from scripting for the bash shell, C was the first programming language I learned. It remains the most powerful although nearly the trickiest (bested only by C++ ;-)). However, their power and performance mean that sometimes you just have to use them.

Oxford date converter

I've often been frustrated with the inconsistencies of the old-school Oxford term-time dates, which I unfortunately tended to think in while up in Oxford. Of course, this is completely useless outside of term, and "real-world" dates in general during term sent me scurrying for a calendar, painstakingly tracing my finger up and down looking for the week that corresponded to (say) 5th week of next term!

Upon being told it sounded like a good idea, I wrote a little utility to do the conversions. I used it as an excuse to learn GUI code, so it's available for Windows or Qt3 (i.e. the KDE3 environment on Linux or any other Unix-like OS). Each download zip file contains full source code and an executable program. As long as you're running a similar system to what I was when I wrote it (Windows XP SP2 / Fedora 4 Linux, on a Pentium 4) it should just work.

Licensed under the GNU General Public License.

Download for Windows   ||  Download for Linux/*nix (KDE)

Brainf*ck / Ook Interpreter and Converter

Because I've wanted to write some kind of language interpreter for some time -- something relatively low-level compared to most of the very-high-level scripting I do -- I decided to write a quick, simple interpreter for a quick, simple language like Brainf*ck. It passed most of the tests, and runs most of the sample programs, found at Daniel Cristofani's Brainf*ck site.

And, because esoteric programming languages are fun and infectious, I soon expanded it to support Ook, a dialect of Brainf*ck particularly suited to use by orangutans, and it is now capable of converting files written in one language to the other, though it will not preserve sanity-saving devices such as comments.

Licensed under the GNU General Public License

Download/View Source Code

l33t interpreter

The infectious fun of esoteric programming languages took me to Stephen McGreal's l33t, a language evidently designed for r34l h4xX0rs. Since it's similar in some ways to Brainf*ck, I figured I'd have a go at an interpreter (in C, of course)... and here it is. The archive holds the source code (l33t.c), several sample programs as found here, and a plaintext version of the language specification itself which I worked from. It's been tested and is known to work on Linux, Mac OS X, and even Windows (though only with GCC, as it relies on POSIX functions to parse the command-line).

Licensed under the GNU General Public License


Beatnik interpreter

From l33t, above, I moved on to Beatnik, again in C and again heavily inspired by various sources on the Internet. Apart from the official specification, I also found inspiration (and a working 'Hello World' program to test against) here and here. also helped me clarify what the spec meant about stack arithmetic.

As with the l33t interpreter, it's been tested and known to work on Linux, Mac OS X and Windows (with the above proviso that it relies on POSIX getopt to parse the command-line, and may require GCC). The archive contains the source code, a simple Makefile, the language specification and a couple of sample programs (including a working version of the "Hello aunts! Swim around brains!" mentioned by Biffle).

Licensed under the GNU General Public License


File encryption

This is a simple terminal application that allows file encryption and decryption using the very old Vigenere, the much newer ARCFOUR, and the even newer Twofish ciphers. It's very much a work in progress, written in the process of learning C. The Linux package holds source code, a Makefile, and a short "how-to-install" file; the Windows package contains source code and the Nkryft executable. More information can be found by running the application with the "-h" switch from the command line, or e-mailing me (here). NB: I wrote this as a learning exercise, so it's anything but cryptographically secure -- do not use this for real security!

Licensed under the GNU General Public License.

Download for Linux/*nix  ||  Twofish Code (by Niels Ferguson, version 0.3)

Media Browser

I own a medium-sized collection of movies and TV shows on DVD, and in order to make them a little easier to carry around I decided to rip them to disk. Of course, then I needed a place to keep the meta-data (information about the episodes, etc, that I obviously couldn't store in the filename). So I wrote this little KDE3-based app, using an SQLite3 database to store meta-data, and allowing me to edit all the information using a simple GUI.

Requires KDE 3 and Qt 3!

The archive contains:

To install it, you need to first build the qt-sqlite3 plugin according to the instructions here. Only then can you compile the application. You may need to edit your Makefile to include the appropriate KDE and Qt include directories, if you're not using Fedora. Finally, you need to put your media.db database where you'd like it to go, rename it however you like, and remember the path - on first startup, the application will require you to edit its configuration file to tell it where to find the database.

Useful? Perhaps not. But then I wrote it for myself, and in the spirit of free software am making it available to the world. I hope it's helpful! Don't hesitate to e-mail me with questions, concerns, complaints, or anything else!

Licensed under the GNU General Public License.

Download for Linux/*nix || Download the qt-sqlite3 plugin (version 0.2)