A 2D Game engine for the Kotlin programming language.


ParaTask-core is a general purpose library. Its Parameter classes make it much simpler to create forms, while 'Task' use those parameters to create a graphical front-end for a runnable task. ParaTask-app builds on top of -core. It is s a jack of all trades and master of none. It has many built-in tools, including a file manager, text editor, web browser, and git tool.

Drunk Invaders

Drunk Invaders is full featured demo game created using Itchy. The invaders from space are back, but this time they are drunk. They soon lose their tight, regimented formation, and start bouncing around the screen, making them much harder to shoot down. Much more fun than the boring game from which it sprang, with many surprises along the way.


Itchy is a game engine written in Java, designed to be easy to use, and yet still provide power and flexibility.

It is Inspired by Scratch, but as Itchy games are written using a full-strength scripting language (currently Python or Groovy), it requires a higher degree of skill, and can create professional quality 2D games.


Jame is a set of Java bindings for SDL, giving high perfomance, cross platform, bitmap graphics, sound and device input. The low-level requirements for game development.


Tetra is a clone of the classic Tetris game. Written in one day as a demo for Itchy. Including sound, exploding block effects and a high score. Yet it weighs in at less than 400 lines of very readable code.

It's Gonna Rain

It's Gonna Rain is the first game written in Javascript using my Itchy game engine. Its a very simple game, just over 100 lines of code, but is fun to play.

Destroy Debris

A new take on an old classic. The graphics are simple, but high res, and in COLOUR!

Like most of my games, Destroy Debris is written with the aid of my game engine Itchy. The game was originally written in Javascript, but I rewrote it in Python.


A 2D puzzle game. The goal is to collect all of the coins and stamps, without getting stuck, while avoiding being hit on the head by falling rocks.

There are many other nasties too. Stinging bees, planes, trucks, and best of all grenades.

Cavern Quest

A copy of the TRS-80 classic "Cavern Quest" by Barry Diller. I've kept the old-fashioned low-res black and white graphics. Should I design some colourful graphics, and switch between them with a press of a button?

Dodge 'Em

Another game knocked up using my game engine Itchy.

Dodge everything, and don't touch the walls. It sounds easy, and looks naff, but it's quite compelling.


During the 2020 covid-19 lockdown, I created a program to let you play board games and card games with friends and family across the internet. It currently supports chess, draughts, scrabble, cribbage and other card games. The program knows little (if anything) about the rules of the games. You can move the pieces however you like, just as you can with a real board game. So beware of cheats!

It was my first project to use (for the client side) and node.js (for the server side).


A new design for javadocs. This isn't about asthetics, this is about functionality. Traditional Javadocs are just too cumbersome to use. PriorityDocs has neat features, such as :

  • Shows only the most important methods, and hiding the others. Show them with a single key press.
  • Skipping through to methods based on their initial letter with a single key press.
  • Remove clutter by hiding fully qualified names; hover over a type to see its package name.
  • Expand and contract method and field details.
  • Static fields and methods are separate from their non-static cousins.
  • Designed to be easy to scan through, by careful use of fonts, colours, icons and paring the text down to a minium.


A plugin for inkscape, which exports a path (or a set of paths) to openscad's format. You can then manipulate them in openscad however you like (most commonly using linear_extrude). However, there are some extra special functions, e.g. extruding a shape along a path (such as the ogee in the "2" above).


Control your 3d Printer via a web front end.

Each of my printers has a Raspberry PI attached to the side, and the PI connects to the printer's Arduino via a usb cable. You can use Adoddler with any computer (that can run Python), but a Raspberry PI seems ideal to me.

The PI has WiFi, and is connected to my file server (using NFS).

The net result, I can control my printers from any device (I use a phone or a tablet), and it can load gcode models from my file server (not via the phone/tablet).

The PIs have cameras too which Adoddler can make available via the web front end, so I can keep an eye on progress, and see if the print has failed.

All I need now is a hydraulic ram to remove the part at when it is finished, and I can automate the whole process ;-) ... and a robot arm to change filament.