Personal Profile

Recently, I've been working predominantly on opensource platforms to streamline business processes. Being a part of an expansive network has given me the opportunity to learn from the experience of a broad network of people. I have been given the honour of committership and PMC membership to the Apache XMLGraphics project. I hope to continue to repay to the community for all that I've learned and experience I've gained.

On a personal note I find software development to be a very rewarding experience and really enjoyed the mixture of logic and creativity needed to design APIs that are flexible while still maintaining some of the founding principles of modern software engineering. My motivation comes from yearning for self-improvement and learning new platforms, languages and libraries. I teach myself a lot in my own time, working on several opensource projects (see my pet projects section) and learning new frameworks. I'm a big believer that with every new language/platform you learn, you add to your repertoire of solutions to any particular problem, making you a more efficient and proficient engineer.

Outside of the office I love playing sports; I regularly play rugby, football, squash and go to the gym

Thunderhead Ltd - Software Engineer (2010 - present)

Developing on the opensource projects that support the proprietary product which include Apache FOP and Apache PDFBox. This involves various technologies including XML, XSLT, PDF, PostScript, AFP and the various image and font formats, development is almost entirely in core Java. I drove improvement to the development process to include use of Git and fully automated end-to-end testing (written in Groovy and results displayed using JavaScript). The development environment was Ubuntu, but also worked on Windows and other linux flavours. The projects undertaken include:

  • Porting Apache FOP to be used in a SaaS/PaaS environment and to be cloud compatible
  • Implementing TrueType font support for the PostScript document output format
  • Developing on both FOP and PDFBox to allow PDFs to be used as an image format
  • Setting up and maintaining a Jenkins CI server
  • Languages used include Python, Groovy, Java and C/C++
  • Set up JaCoCo and Sonar to perform code-coverage testing and static code analysis
  • A strong focus on JUnit testing including adding the Mockito library to perform behavioural testing
  • Other languages include Ant, Gradle, Maven, bash, powershell and XSLT

Telsis Ltd - Graduate Software Engineer (2009 - 2010)

Developing software for SMS server systems in core Java, C and C++. Developing in both Windows and Linux (RHEL, CentOS and Fedora) environments working with both server-side and Web technologies.

  • Worked on various Web, server-side and embedded system technologies used in telecoms, telephony and SMS
  • Worked with highly virtualized systems, hyper-visors used include KVM, Xen and VMWare
  • Various scripting and building technologies used including VBA, Make, RPM, bash, powershell, Wise installer
  • Used various databases including MSSQL, MySQL and MSAccess (if that counts)
  • Travelled to Kartoum, Sudan to install, configure and UA test an SMS server system

Apogee Flow Systems - Project Engineer (2008 - 2009)

Project Engineer: Responsibilities were primarily conducting the final quality control, R&D and product development but also partook in production by assembling flow cytometers.

  • Researched and development to improve the flow cytometer, testing new parts and module designs.
  • Performing and developing the qualiy control process.
  • Attended international conferences to market the product (inc. ICASA, Senegal).
  • Conducted maintenance/training for US military (Ft Hood, Texas).
  • Trained to align/calibrate ultra-high light scatter resolution flow cytometer.
  • Customer presentations, customer support and marketing improvements.
  • Developing better PMT dynode calibration algorithms.