Employment History
2013-present
Senior Software Developer / Project Lead at Apical Ltd, a company specializing in advanced image processing.
2010-13
Recipient of a research fellowship from the Royal Commission for the Exhibition of 1851 - 'Automated key generation in texture coding' - Lay Statement [pdf]
2007-10
2004-07
First-class BEng in Mathematics and Electronic Engineering from the University of Nottingham in 2007 (final-year average 95.3% )
Skills
Personal Skills
Management
In my current job I lead a team that works on both R&D as well as ensuring timely deliverables to customers. This has involved leading meetings, setting and monitoring deadlines, deciding priorities for workloads, and meeting with customers.
Working in a team
I have worked on projects on my own and as part of a team, and I definitely enjoy the later. I am personable, friendly and have on many occasions seen that talking through ideas in a group leads to better end results.
Communication
I have given a variety of presentations to a wide range of audiences, a number of which involved speaking about technical subjects with a non-technical audience.
Programming
Javascript/Node.js
I have built several large javascript applications and node.js is my default scripting language. Projects have ranged from a ray-optics demonstration, that is now used by the University of Nottingham, to image encoding and numerous GUI control systems for different projects. I try to stay up to date with the newest additions to the language, e.g. ES6/7 additions, and have experience with jQuery, angular, Q, RxJS and most common frameworks and libraries.
C/C++
C and C++ have been my main high-performance languages for the last 10 years, I have experience using the GNU debugger, optimizing code, and using numerical libraries such as the GNU software library
Python
I have used python for a number of years building some larger-scale programs and for code prototyping.
Databases
Knowledge of SQL language including database design, UML, recursion, as well as some NoSQL solutions and where they might be appropriate. The main databases engines I have experience with are PostgreSQL, Redis and Cassandra, although I have also worked with map/reduce systems such as CouchDB.
Haskell
Haskell is a recent addition to this cv, however in grappling with some of its fundamental concepts it has altered the way I approach some code problems, for example chaining of map/bind/reduce, the advantages of immutable data and seeing monads everywhere.
Others
Other languages I have had experience with: Java, C#, Perl, Fortran, PHP and Bash script.
OSes
I have experience programing in all three major OS's: Linux (10+ years), Mac (4 years) and Windows (10+ years). Both my work and home computers run linux as their primary OS. I have set up several LAMP and node.js (on linux and mac) servers and am competent at both the terminal and shell scripting.
High Performance Computing
CUDA
I have created and deployed large scale genetic algorithm computations on GPUs through the CUDA environment. This involved consideration of architecture and utilising different memory types to achieve a 308x speed-up over a comparable CPU solution.
Monte-Carlo Simulations
My largest Monte-Carlo simulation to date was in calculating the statistics of light in a media due to roughness at its surface, which was investigated using the university of Nottingham's high performance computing (hpc) clusters. As well as running the several million individual processes, the results had to be collated, transferred, analysed and visualized.
Large data sets
I have worked on a number of larger data projects, both in absolute size of data and incoming data rates. A recent project involved the collect of large amounts of continuous streaming data, which was then pre-processed and stored in an append-only amenable manner. Visualizing results from large data sets has been a particularly interesting challenge.
Mathematics
Mathematica
Mathematica was, for a number of years, my day-to-day programming environment. I have wide ranging experience with Mathematica, including image processing, prototyping code, multi-core deployment, data visualisation and data-mining
Matlab
Experience with Matlab centers around multi-dimensional-scaling, the problem of determining a collection of objects' positions when given only the distances between them
Academic History
2012
Presented at the METAL Workshop - January 2012
2010
Enhanced twinkling in left-handed media , Optics Letters, Vol. 35, Issue 22, pp. 3802-3804
Presented in the Theoretical Mechanics Seminar series - February 2010
University Endowed (Andrew Hendry) Postgraduate Prize 2009/2010
2009
Perfect lens with not so perfect boundaries , Optics Letters, vol. 34, Issue 7, pp. 1015-1017
Negative refraction and rough surfaces: A new regime for lensing , Optics Communications, Volume 283, Issue 6, 15 March 2010, pp. 1188-1191
Presented at the British Applied Mathematics Colloquium - April 2009 (One of four winners of the SIAM prize for best postgraduate student talk)
Presented in the Applied Optics Group (Run by the Electrical Systems & Optics Research Division) - May 2009
Presented at PIERS '09 - Moscow, August 2009 (Two talks)
2008
2007
Power-law-distributed level crossings define fractal behavior , Physical Review E, vol. 76, Issue 3, id. 031134
Institution of Electrical Engineers Prize: For the most outstanding final year student in the School of Electrical and Electronic Engineering.
Tryfan Rogers Memorial Prize: For most outstanding graduating student in the School of Mathematical Sciences.
Marsden Prize: For a student who has gained high distinction in examinations, and has throughout their University careers been of exemplary conduct and given proofs of outstanding character and personality.
2006
Price Waterhouse Coopers Mathematics Prize 1: Best overall performance in the second year by a joint honours undergraduate student.