Dairy Farm Simulator

Screenshot
Originally designed to carry out decision making experiments with real dairy farmers. The program simulates crop/pasture growth, soil nutrients, cow life-cycle, digestion and milk productivity. Users manage the cropping and pasture regime of fields, laid out on a real dairy farm map, as well as maintaining a herd of milk producing cows. Randomly generated market data and weather conditions (based on real past data) create an ever-changing and challenging farming scenario.

PastureSim

Screenshot
PastureSim is an agent-based grazing simulator, designed to allow users to test alternative management regimes. It was developed as part of my fourth year dissertation in Computer Science, with the original porject aim of building a visualisation tool. PastureSim features a spatially heterogeneous pasture growth model, with an individual-based sheep model to simulate grazing pressure. Users import pasture maps, which are scanned to derive initial soil fertility parameters. They are then able to define field boundaries and water sources, before assigning herds of grazing animals to their pastures.

VisualCube

Screenshot
A web-based application designed to generate images for any Rubik's cube configuration conceivable. It facilitates visual explanation of cubing techniques, as well as providing a library for third-party cubing applications. The system uses an internal cube model to simulate the effects of algorithms. Images are generated in SVG, and then converted to the desired format using ImageMagic. VisualCube implements an image caching system which ensures that popular images can be served promptly. VisualCube is open-source (LGPL) and is now used routinely among the cubing community. The software occasionally receives developments and updates from third-party developers.

cTimer

Screenshot
A JavaScript-based timer for timing Rubik's cube solves, and maintaining a time log with statistics. It features scrambles and scramble images (via VisualCube) for puzzles ranging from the 2x2x2 cube up to 7x7x7, and includes scrambles for more esoteric puzzles such as Megaminx, Pyraminx and Square-1. This was the first web-based timer to offer random-state scrambles for the Rubik's cube. This is recognised as the fairest scrambling method, and is adopted by the World Cubing Association. It is also the only online timer to offer multi-stage timing - useful for solve breakdowns and blindfold cubing.

Algorithm Database

Screenshot
With the recent growth of speedcubing, more and more algorithms are being discovered, covering an ever more diverse range of cube configurations. This application was designed as a public database for storing these algorithm sets. It features automatic algorithm verification and organisation to ensure it remains free of erroneous algorithms. It also generates diagrams for each case with the help of VisualCube. The system is integrated into MediaWiki as a module, to allow it to bolt onto the existing speedsolving.com wiki - the primary information resource for speedcubers.

Snake

Screenshot
Another incarnation of the classic Snake. It features two modes (1) score mode and (2) level mode. In score mode a player simply continues collecting squares until the tail grows too long and inevitably crashes into it. In level mode the arena is filled with obstacles. The aim is to collect a fixed number of squares to complete each level. If all the levels are completed, the Level Editor is unlocked and players can create their own levels. The program was created back in my school days and was one of my first significant programming efforts.

Pong

Screenshot
The 'hello world' of game programming. This is a remake of the epic classic, also done during my early programming days. Easily spent many more hours playing this than programming it. Great entertainment value for such a simple program!