Portfolio

My GitHub profile is probably the best place to look at my latest work, but here a few of the things I’ve done over the last couple of years.

My Personal Site

This site is an ongoing project, and is updated regularly to reflect my current development tastes. Currently, it’s built using the Ruby on Rails framework.

I use the site as a platform to test new ideas, so keep up to date with the development source to see what I’m up to.

Compose

Compose is a PHP build and deploy toolset. I built it as a bit of an experiment into deployment using Git.

I do most of my web development on the backend, and so having a good set of tools to make building applications as straightforward as possible is essential. Compose is a command line tool that makes use of Pake, a PHP library that provides a number of simple ways to create build scripts. It is essentially a set of pre-defined Pake tasks that make deployment as straightforward as possible.

It’s as simple as:

pake deploy {staging/live/whatever}

Compose comes with a number of tasks dedicated to deploying Symfony 2 projects. It takes inspiration from tools like Capistrano, but keeps everything in PHP to make development as clean as possible. The full source code can be on GitHub.

C++ Game Engine

For my degree dissertation I ported an existing Java game engine to C++. The engine was targeted at the Android OS, and so porting involved working with the Android NDK and the JNI to integrate the new native code base.

The purpose of the port was to provide a comparison between the use of Java and C++ when developing games for mobile phones. Heuristics such as code performance and ease of development were measured. The results showed that, despite recent improvements to the Java interpreter, C++ can still greatly outperform it in some circumstances. They also showed that when C++ is used correctly and intelligently, a solid codebase can be built that provides ease of development that rivals that of a managed language like Java. To get an in depth description of the project, read the full report.

Translating a Game Engine - Ben Constable The resulting C++ code was built and tested on both desktop (using the Qt framework) and Android. It uses OpenGL (ES on Android) for 3D rendering, and avoids the use of STL by way of custom container classes. Most of the source code can be found with extensive comments and documentation on GitHub, but if you’d like to see more (platform specific renderers, an example game) please contact me using the details below.

Flocking

Flocking is a small flocking simulation, made using Processing. I built it to play around with the framework, and used some existing example code as a base. To make things a bit more interesting, I played around with a variety of inputs to provoke different reactions in the ‘flock’.

For example, the ambient light level in the room affects the speed at which the flock moves around the screen. As the room gets brighter or darker, the flock will respond accordingly. The flock is also affected by loud noises, and will respond to one by scattering for a short period before gradually regrouping.

The project was just a bit of fun (although I did use it for a course in Generative Creativity as part of my degree), but was an interesting insight into the sorts of effects that can be achieved with different, non-standard inputs. You can download the Java app here to play around with it yourself.

NOTE: The application makes use of a Mac specific library to get access to hardware inputs, and so probably won’t work on Windows.