Free/Open Source Software
Projects
Having programmed computers since 1985, I have written a lot of software - some useful, some not so useful. A lot of it unfortunately trapped on legacy (or proprietary) platforms that I have neither the time or the inclination to resurrect.
I've written programs in many languages (Pascal, C/C++, DBase, VB/VC, 6502/Z80/68000 assembly), but these days tend to stick to C, C++, Java and Python for my own projects (I also do C#, VB, VC++/ATL/MFC and other Microsoft languages if I'm getting paid for it)
Every single one of these projects is licensed under the GPL, LGPL or Public Domain.
These are projects I'm currently working on:
- Animal Shelter Manager - Free software for animal sanctuaries and rescue shelters. Also the widest used shelter management package in the world.
- UMLSpeed - A compiler for a C-style UML language that can produce SVG diagrams and XMI documents.
- SwingWT - a free implementation of the Java Swing/AWT APIs to run on free Java virtual machines and allow native widgets.
- Fruity Banking! - A web-based double-entry accounting package (similar to GNUcash and Quicken, but simpler, completely portable and very flexible).
- inetdxtra - A set of inetd-based servers for use on systems with very tight resources (like my NSLU2/slug). These comprise a webserver, a DNS server, an SMTP relay server, a DHCP server, a CTorrent control server, an HTTP proxy and a Jabber/XMPP server.
These are projects I've pretty much finished with.
- hotvolume - a simple volume control script that can be used as the target of keybindings for laptop/multimedia keyboard hotkeys. It has an on-screen display and is useful for lightweight window managers such as windowmaker, fvwm, icewm, etc.
- mp32m3u - Very quickly write m3u stream files from collections of mp3 files with readable titles from the tags.
- MVPMC VLC - I wrote and maintain the VLC stream integration code for the excellent MVPMC media player software.
- OOWeb - A lightweight standalone HTTP server to allow rapid (and fun!) web application development in Java, similar to CherryPy.
- COMConnect - THE fastest and most efficient way to integrate COM, .NET and Java applications on a TCP network. My employer graciously decided to release this product I designed and built for them under the GPL.
- Videobooth - The framework of a video diary booth to allow members of the public to record audio/video diaries.
- OpenPetLocator - A free implementation of a pet search engine tool to allow shelters to publish their animals to a central site and allow potential owners to find by proximity, similar to PetFinder.
- MultiCDBurn - A simple CD recording tool with a GTK interface to burn all files in a directory to multiple CDs without archiving.
- ObexMGET - Command line tool to connect to Mobile/OBEX compliant devices and retrieve multiple files from a directory based on regular expression match.
- FreeTime - A free, GPLed, cross-platform, replacement client for the TimeWatch PersonalTime client that runs anywhere (unlike the real thing that only supports Windows).
- Grinder2SQL - Command line tool to read CSV files generated by Grinder 3 agents and generate SQL statements to populate a database with the data.
- BuddyALL - Command line tool to automatically add all users of a jabber 1.x server to each others buddy list.
- iCal2Calendar - Command line tool to convert iCalendar/VCalendar meeting requests into ~/.calendar/calendar entries for use with the UNIX calendar command line tool.
- RemindMe - Command line tool to allow you to set reminder messages for a date/time which will then be emailled to you.
- MyBay - A program to keep track of your ebay auctions and calculate the real cost of selling items.
- eBay Summary - A simple CGI application to present a view of how your ebay auctions are doing along with feedback for mobile devices.
- MobileMail - A minimalist mobile phone mail gateway for those with their own webserver, a phone capable of basic (X)HTML and exorbitantly expensive UK GPRS charges.
- Java ReplicatedHashtable - A distributed hashtable in a single class you can drop into your Java applications to add instant failover. Auto discovers other nodes on the same machine/subnet via multicast.
- Java SMTP - A single java class that allows sending of email via SMTP transports.
- Java JDBCHandler - A single java class that centralises boiler plate JDBC handling to eliminate connection leaks and keep query code elegant.
- Java RollingExpirableCache - A single java class that provides a cache implementation with a fixed number of elements on a FIFO bases with expiry times.
- MP3Rename - A simple program to rename mp3 files based on their ID3 tags.
- Java2XMI - A fast program to convert Java sources to an XMI document for loading into Umbrello. Does not require reflection or the code to compile and is very fast.
- SlashScrape - A command line tool to scrape a given Slashdot frontpage (eg: BSD) and return a given number of article links (or all). The links can be fed into a non-interactive download agent (such as wget) for offline caching of articles.
- FetchGMail - A program to retrieve mails from your GMail inbox to a local UNIX mailspool.
- GenerateUUID - A single, Java helper class to generate Type 1 (time-based) UUID's to the IETF draft.
- RSSGrabber - A *nix command line utility to download content from RSS/RDF feeds.
- Routerbooter - Designed to reboot any broadband router when the connection is lost. Built for my Samsung E300 router, but is fully configurable to work with any router with a web-based interface.
- SiteSniffer - Command line utility to read the server info string from the HTTP headers sent by a webserver.
- QuitMeter - A cross-platform application to show a running total of how long since you quit smoking, the amount of money not spent and the amount of your own life saved as a result.
- SQLRecordset - An implementation of a client-side cursor engine in Java/JDBC that allows offline updates/synchronising and writes ANSI 92 compliant SQL.
- JCOM - A bridge to allow Java applications to talk to Microsoft COM and .NET applications.
- IAGE - A cross-platform multiplayer adventure game authoring system, crossing design elements of interactive fiction and MUDs.
These are other projects I've contributed code to:
- SWTSwing - The reverse of my SwingWT project, it allows for a portable SWT renderer using Swing. Very handy for platforms where native SWT binaries don't exist.
- Umbrello - The best free, graphical UML tool.
- MVPMC - A free replacement for the Hauppage MediaMVP software and supports most streaming media types.