Software projects
A word on patents
Everything on this page would be made difficult or impossible by software patents being legalised in Europe. To learn more, and to find out how you can help stop the madness, please visit nosoftwarepatents.com.
Current projects
Palm applications
I own a Treo 680 and have started writing code for it. Here's my list of ideas.
- Timer — sounds alarms at regular intervals, optionally waiting for the acknowledgement of each alarm before starting the timer for the next.
- EndBeep — beeps when a call ends.
- GPilot conduit using Google Calendar data API, to sync with Google Calendar on hotsync.
- An MUA, at some point. It will do IMAP and reply-inline (not top posting), unlike the four currently available competitors.
- Browser-based remote control: not actually Palm-specific, but aimed at Palm-sized devices that have 802.11 or Bluetooth network access. A simple web script will read a directory tree of .desktop files (and CGI scripts for fiddly bits) and show listings with thumb-sized links (think touchscreen) for browsing and running these commands. With this, I will be able to use my Treo's web browser to control media players (including MythTV), shutdown/WOL my machines, control any home automation I might end up installing, etc. Reasonably low bandwidth (images can be turned off in the browser), so suitable for remote usage over GPRS as well.
Anti-spam address scheme enforcement
I intend to write whatever code is necessary around postfix to allow me to make up distinct email addresses to give to different organisations (itweek847@my.domain.example), and still bounce mail to randomly-generated or guessed addresses (e.g. somebody-elses-username@my.domain.example), without the use of a whitelist. I'll do this using a scheme that maps e.g. itweek to a few allowed numbers, simple enough to calculate in my head. The ideal is to be able to easily specify some perl that valid addresses must satisfy, and a blacklist of compromised addresses, and have mail to unwanted addresses bounced at the SMTP level, thus solving the problem of randomly-generated/composited addresses.
Packages for Debian GNU/Linux
I am the current maintainer of the packages listed below. As well as writing bash scripts, this involves working with code from upstream authors to ensure it installs and runs smoothly on Debian systems and is sufficiently well documented. It also involves passing on bug reports from Debian users and helping with the fixes where possible.
- aewm++ and aewm++-goodies
- A minimalist window manager written in C++ and some companion utilities.
- crack-attack
- A multiplayer OpenGL puzzle game.
- klogic
- A KDE digital logic simulator.
- sapphire
- Another minimalist window manager, from the same author as aewm++.
Future projects and ideas
- GpsToWeb, a Java Micro Edition application to relay position from a Bluetooth GPS device over GPRS to a server script, which will then display it using Google Maps, along with trails of previous positions, average speed, etc.
- An email notifier for Maildirs using FAM or Gamin. Currently, none of the available notification-only programs do this. I would like one that does, without being a full mail client (I use Mutt).
- If possible, an IAX or SIP client for
SymbianPalm in C, so myNokia 9500Treo can be an extension of the landline when in the house. - A port of ForecastFox to the GNOME panel/systray.
Past projects
My fourth-year project — BtCafe
My group worked on a food ordering system using Java Micro Edition and Bluetooth. This allows customers at pubs and restaurants to order using their mobile phones or touchscreens at the tables, thus avoiding the need to reprint menus for changes and clearing space at the bar since placing a food order becomes completely automated.
My third-year project — c4
In brief, c4 is a command-line/CGI calendar for relatively experienced users, in C++, using MySQL for storage and the iCal standard field set. Its goals are flexibility, power and interoperability. It is a calendar for people like myself; an antidote to Outlook. This project achieved its stated goals (basic calendar functionality) within the available time, but has not been worked on since then.
EbQt, a user-interface in C++ with Qt
I have spent some time working on parts of EveryBuddy. My main contribution was the first working user interface, EbQt. Unfortunately, the EveryBuddy project as a whole stalled before making a stable release, but it is quite usable. You can download an SVN checkout. EbQt requires Qt; if you want MSN Messenger support, you will need Gnu TLS when compiling the core. There is also an EbQt manual.
An unnamed photo index script
This is how I display my photo collection. Its eventual aim is to clone bins as a PHP DirectoryIndex, generating thumbnails on first use and generally not requiring more than just placing the photos in a directory. It uses the same XML description files as bins and includes support for a latitude/longitude field on photos and albums.
JavaScript page-modification using Greasemonkey
Some scripts for Greasemonkey, which is a Firefox extension to make arbitrary client-side modifications to pages.
Computing Society website events system (in Python)
During the most recent attempt at a rewrite of the Computing Society website, I worked on the signup system. The project was postponed because those responsible for checking performance and compatibility with other systems made mistakes, but the experience was useful to me. As well as the usual web development skills, this improved my knowledge of Python and the XML-based markup systems of Zope.
Fetchmail patch (in C)
A while ago I wrote a patch to improve IMAP idling for fetchmail. Eric S Raymond accepted it into 6.2.4.
Tutorial for UWLUG: The Command-Line for the Terminally Challenged
This is a tutorial mainly for people who have had hardly any experience with Unix-like environments so far. The Department of Computer Science has a first-year course which gives an introduction to this (mostly in the first lecture) and then proceeds with its main subject: writing scripts in bash. The aim of this tutorial was to offer a slightly more in-depth guide to using the Linux command line for day-to-day operations.
There are two downloads available:
- cmdline.tar.gz (352K)
- The MagicPoint file and accompanying images, for viewing as a presentation.
- cmdline-paged.ps.gz (356K)
- Compressed postscript of a 6-up paged version that was printed and distributed to the audience for future reference.
Unfortunately, while wiki security issues are being addressed, the detailed page for the command-line tutorial is not available. I have also written a how-to on alternative desktop environments, which is also currently unavailable.