Technical Skills

C++

I am the sole developer of SpikeStream, which was written in C++ on Linux using object-oriented programming and Qt and OpenGL for the graphics. This is a complex application (over 25,000 source lines of code) that has involved multiple tasks managed using PVM, multiple threads, several databases, XML and spikes streamed over a network using TCP/IP. My other C++ experience includes 10,000 source lines of code that was written for the analysis part of my PhD and a program developed using Microsoft Visual Studio, which instrumented an early version of Mozilla so that its execution patterns could be monitored by a second process using shared memory.

Java

I have used Java for a number of years and have experience with most of the major features of the language, including networking, MIDI, webservices and a substantial amount of GUI development using Swing. Some of projects that I have developed in Java are as follows:

  • Geo-location web service. At Trinity Mirror I contributed to the development of a geo location web service that enabled CMS users to tag articles with longitude and latitude so that they could be displayed on a map.
  • Correlation, anomaly-detecting and security agents. During my time working on the Safeguard project I constructed a number of different agents and customized code written by the other partners.
  • Brainbuilder. A graphical tool for assembling and simulating biologically structured neural networks.
  • MIDI Agent System. Live music software that uses the interactions between different agents to generate MIDI notes.
  • Distributed Saliency system. At the 2006 Telluride workshop, I collaborated with Sean Taffler on a top-down and bottom-up saliency system that streamed spikes between several computers. More information about this can be found in our contribution to the final report.

Databases

I gained commercial experience working with Oracle databases at Trinity Mirror. All of the data for SpikeStream is kept in MySQL databases and I wrote a substantial amount of C++ code to store and retrieve different types of information and display it in tables and in 3D. The debugging of this application involved many SQL queries on the command line and I have written code to load XML files into databases and to dump databases into XML files.

AI

As part of my work on the Safeguard project I gained experience with agent systems, anomaly detection, Bayesian networks and Petri nets and I am also using agents in my MIDI Agent System. My work on SpikeStream has the long term aim of developing more intelligent machines using the self-organising properties of spiking neural networks.

Website Development and Design

I worked at Trinity Mirror for almost a year carrying out back end web development for their large portfolio of regional websites, such as the Liverpool Echo and Birmingham Post. As part of this job I also carried out development work on the Trinity Mirror CMS. I have designed a number of websites using a mixture of PHP, JavaScript, CSS, Flash and HTML. A selection of these sites is given below.

Open Source Development on Linux

I developed SpikeStream on Linux using open source tools, which has given me experience with shell scripting, Qt, MySQL and MySQL++.