Game developer & web programmer
I'm a game developer and web programmer, currently working for Firefly Studios maintaining the servers for their F2P MMO. I'm looking for an opportunity to move on, learn new things, and (ideally) to get more involved in the process of making new games.
As part of my current job and in my own time, I work with the following languages (and frameworks) extensively:
Other languages that I have used on projects in the past have included Java, C, C++ and Python.
I believe that "programming is easy; software engineering is hard". I therefore endeavour to structure projects that I have control over with the aim of separating concerns, encapsulating information in appropriate scopes and sticking to the DRY principle. I advocate unit and acceptance testing, and introduced those processes (using PHPUnit and Runscope) into the server project I have been working on for the past three years.
Having worked as part of a development team on several differently-organised projects, I am comfortable using a variety of version control and ticketing systems, including Git, Subversion, Perforce, Microsoft’s Team Foundation Server, Trac and OnTime.
I have encountered first-hand several different approaches to the software lifecycle, and have been required to write extensive documentation, though generally I prefer to rely upon writing readable, well-encapsulated and commented code in the first place.
I have extensive experience managing large MS-SQL and MySQL databases. I have designed, built and maintained normalised, well-indexed data schemas, as well as doing optimisation work on existing, flawed schemas.
I have also written code to reliably load data into, retrieve data from and transform data within those schemas, and scheduled jobs to build summary tables from live data to improve the performance of analytics queries.
Though to date it has not been one of my primary professional responsibilities, I have been required in various roles to maintain web and database servers. In my current job, this has involved working with a deep stack of technologies and service providers, including AWS, Puppet, Vagrant, Linux and Apache to create repeatable procedures to build and provision servers for development and production environments.
For most of my tenure at Firefly, I have been responsible for managing the "Profile" server that tracks players' account data in Firefly's free-to-play MMORTS, Stronghold Kingdoms. That has involved, among a great many other things, creating REST API calls to handle client logins and purchases, integrating third-party payment and ad-tracking systems, and building a data analytics backend and dashboard to monitor and report the game's KPIs and answer questions about player behaviour.
More recently, however, I have begun to work on a new (as yet unannounced) project for them, an iOS/Android title being made in Unity. My responsibilities on this project so far have included building a service in the game client that fetches and applies the most recent balancing data set by the designers, and building re-usable GUI code assets for the in-game menu and shop.
I was hired by Market Developer to work on the development of the new version of their eponymous CRM database software: Market Developer v5. MD is a web application written in ASP.NET and VB.NET that acts as a frontend to a MS-SQL database containing customer data. I was responsible for creating the data loading and cleansing (ETL) system: a key feature of the new version. This required me to develop a C# service to monitor incoming files on an FTP server, a VB application that processes, cleans and loads CSV files into staging tables in the DB from a user-supplied template, and to write thousands of lines of SQL stored procedures to run and log the full staging, de-duping and loading process.
After graduating from University, I worked for Oxford-based games developer Exient as a Junior Programmer for 10 months. I was part of the team that developed The Sims 3 for Nintendo DS (released October 2010); a project that required both low- and high-level C programming as part of a large codebase, while carefully operating within the stringently limited resources of the DS hardware. I was primarily responsible for the development of the UI - both static information display and dynamic touchscreen controls - although I was also called upon to work on gameplay elements, develop external development-aid applications (using .NET C++) and to patch bugs in other parts of the game.
I left Exient to spend a year backpacking around the world, hence the gap between my departing them and joining Market Developer.
Master of Engineering in Computer Science (Upper second-class honours) from Warwick University, 2009
5 A-levels - A grades in Maths, Further Maths, Electronics and Physics, and a B in English Literature.