My Programming Work

Application Development

Although I've been doing web work for years now, most of my working life I've spent building cross-platform applications in C/C++. I've worked mostly in the fields of advanced visualisation, aka virtual reality and console games.

I've never really been much good at, (read interested in) the graphics side of this kind of programming. There's two major branches of coding that I have specialised in:

Physical Simulation

I have a physics degree and I have been lucky enough to have kept this interest alive by having quite a few projects that have included physics engines. I've implemented Featherstone's Articulated Robot Dynamics Algorithm, played around with implementations of Open Dynamics Engine (ODE) which I customised to use Verlet Particles. I have recently got familiar with the Havok physics engine and rag-doll simulation and pose driving.

Distributed Simulation

It's funny how just by simply being given a project that nobody else wanted to do when I was a junior programmer has shaped the kind of work I have done since then. I was given a project while I was working in Artemedia's Virtual Reality Dept in Berlin to create a distributed physical simulation using HLA/RTE, an old US DoD library. It was an eye opener to the limitations of any kind of real-time simulation by network speeds and latency.

It was this project that got me into the role at Studio 33 to develop the online side of their game Destruction Derby Arenas. It was quite an ambitious project to get 20 players driving around a track with full physics.

At Virtalis I designed and implemented an "Entity System" that was essentially a library to allow our in-house developers to create objects that exist across processes and machines. We used the system in the context of simulated objects but found it useful for sharing any kind of data.

Web Development

I've never been employed in web development but have worked as a freelancer, finding my own clients but also taking work through web design companies.

Being a programmer and not a graphic designer, much of my web experience is in backend programming. That is, programming scripts that run on the server. However, I do enjoy doing front-end scripting in Javascript.

I choose LAMP as my server side technologies because of their popularity, stability and cross-platform nature. I like to use Drupal these days as my platform for web development as it is flexible and powerful. Find out more about my views on Drupal in this article.