Software Projects

Home David Personal Projects
Updated: 2009-01-18


I have been involved with several open source projects, both writing my own libraries and tools, and sometimes developing or porting resources to unsupported operating systems. I have separated these projects into various categories.


Python is the development language I choose to employ for many of my own projects. I have created various libraries and utilities to aid project development and provide a comfortable working environment. I also contribute to other projects which use the Python language, such as Sketch.

A package containing a simple application for sharing directories with RISC OS machines running Acorn Access peer-to-peer file sharing software.
A module for matching command line arguments to a syntax definition.
Classes for reading and writing Drawfiles with example scripts.
Filing systems for use with the FUSE project.
A package of modules and tools for reading and interpreting Computer Concepts Impression documents with the aim of converting their contents into a more accessible form.
A package providing facilities for the creation of LDraw scene descriptions.
A couple of programs to duplicate some of the functionality of lpr and lpq.
Python classes for reading Portable Document Format (PDF) files and interpreting their contents.
A package implementing aspects of the Object Exchange (OBEX) protocol.
PyPI Browser
A graphical user interface (GUI) tool for browsing the contents of the Python Package Index (PyPI).
Classes for reading and writing Spritefiles with tools for conversion and interoperability with other image formats.
Sketch Plugins and Tools
Import filters for the Sketch drawing package and tools for automating document conversion. Filters available include those for Drawfiles, Spritefiles and Impression documents.
A Python package for reading Icon Technology TechWriter documents with simple conversion tools that enable their contents to be exported to other formats.
An import hook for the Python interpreter which enables Python source embedded in XHTML documents to be imported in the same manner as for pure Python modules. Additionally, it is also able to fetch documents from remote locations if URLs are used instead of local paths in the sys.path list of module locations.

Qt and KDE

My preferred desktop environment on Linux is KDE, based on the Qt cross-platform GUI framework. In the recent past, I was responsible for developing various user interface ideas into components which were not quite in line with the standard look and feel of KDE but which were quite interesting and pleasant to use. I've recently become more interested in developing for KDE using Python using the PyKDE and PyQt modules for Python. I'm mainly interested in applying these modules to KDE's infrastructure rather than using them to write standalone applications.

KDE Resources
Some applications and tools for KDE, mostly written with Python and PyKDE.
Qt Resources
Some applications and tools for Qt and PyQt developers.


One of my main areas of interest is the emulation of the Acorn Electron using the ElectrEm emulator. I have written various tools to convert between various file formats used by ElectrEm and emulators of other Acorn 8 bit machines. I've also written a map creator for the Electron version of the Micro Power classic, Moon Raider.

A Python module and tool for reading ADFS floppy disc images, for use alongside emulators of Acorn 8 bit microcomputers. This replaces the tool included in the T2Tools distribution.
Modify the default Moon Raider map.
These Python scripts convert between file formats used to store information natively on the Acorn 8 bit machines and those used by emulators.
This tool allows you to manipulate the data stored in Unified Emulator Format files at the level of individual files or even at the "chunk" level.

Ancient History

Panoramic Desktop
My former employer no longer hosts my modifications to the KDE 3.0x series of releases – the above link goes to the Internet Archive. These changes enable each virtual desktop to be many times wider than the size of the screen. Navigation of the extended desktop environment is performed using a tool called the World In Miniature (WIM). Note that the patches found on that site don't work reliably against all KDE 3.0x releases and may only have worked well with CVS versions of KDE at around the time of their release.
RISC OS Projects
Two of the more useful projects that resided in my old university account are now hosted on Drobe Launchpad. One is a port of Mesa to old-fashioned RISC OS systems; the other is a Python GUI library for RISC OS.