CV

Download PDF version

I am a Senior Software Engineer and Architect with 8 years of experience in secure software engineering and design.  I have key programming skills in C and Python and a wide breadth of knowledge encompassing software architecture, secure design, protocol design, virtualization, databases, linux administration and web apps.  Alongside development skills, I’m an experienced leader of engineering teams with proven success in introducing new software processes and tools to an organisation.  I am passionate about technology, attending meetups and hack days, developing web apps and contributing to open source projects in my own time.

Skills

Programming

  • Languages – C, Python, C++, Perl, Bash

  • Concepts – UML, Agile

  • Tools – SCons, Mercurial, Git, Valgrind, PC Lint, SONAR, Vim

  • Testing – Jenkins, googletest, pyunit

Security

  • Testing – fuzzing, denial of service protection

  • Cryptography – public key (ECDH), signatures (ECDSA), symmetric encryption

  • Protocols – ESP, IKEv2, Strongswan

Technology Domains

  • Networking – IP, UDP, TCP, routing

  • Platforms – Linux, QNX, Windows

  • Web Apps – Django, MySQL, Bootstrap, Perl CGI, Google App Engine, jQuery

  • Virtualization – KVM, LXC

  • Mobile – jQuery Mobile, Android

 Soft Skills

  • Team Leadership, people management, recruitment, mentoring

Education

  • Postgraduate Certificate in Management, University of Bath, 2009

  • MEng Electronic Engineering (2:1), University of York, 2005

Employment

Senior Software Engineer at Samsung Electronics

April 2014 to Present

  • Developing security solutions for mobile platforms in C

Senior Software Engineer and Architect at Thales e-Security

September 2009 to March 2014

  • Senior Software Engineer developing network security products.  Key technologies:

    • C/C++ and object oriented UML for secure embedded development.

    • Python – introduced the use of this language for testing frameworks, build systems and code generation.

  • Software Architect for the Thales e-Security DCM3 network encryptor product line.

    • Responsible for architecture of 1M line codebase under development with 20 engineers.

    • Designer of a multi-processor embedded system with redundant processing.

    • Ensured  software compliance with UK government high grade evaluation criteria through the architectural design and development processes.

  • A key advocate within the organisation for the selection and adoption of new technologies, tools and processes.  Main achievements:

    • Championed the introduction of Agile software development.

    • Designed and introduced a continuous integration and automated testing environment built on Jenkins, googletest, pyunit and Linux virtualization (KVM, LXC).

    • Trained the team in using distributed version control (Mercurial DCVS).

    • Organised monthly seminars for the 20 person software team to share knowledge and present ideas.

  • Led a team of 6 engineers over 2 years and with £800k budget.  Project covered the full software development lifecycle – from requirements to integration.

  • Excellent understanding of the usage of cryptographic functions (public key, signatures, Elliptic Curve) and the secure design lifecycle.

  • Good understanding of network protocols and their design (IP, TCP, IKEv2, routing).

  • Clear communicator able to present and explain technical designs and ideas to senior stakeholders, customers and to peers.

  • Experienced in forming, leading, mentoring and motivating high performing software teams.

  • Effective people manager (line management, appraisals and recruitment).

Software Engineer at QinetiQ

Oct 2005 to Sept 2009

  • Project lead of a team of software engineers delivering software for network security products.  Working in C, Python and UML.

  • Customer facing role – liaising with customer on requirements, technical solutions, deliverable deadlines and integration at customer’s site.

  • Sole author of 10,000 word report explaining outcomes of research for non-technical readers.

  • Part of the QinetiQ Graduate scheme and gained a Postgraduate Certificate in Management

Other Projects

    • Co-founder responsible for all development using Perl, MySQL, Python, jQuery, Bootstrap, Google App Engine and Django.  Administrator of the Linux servers.

    • Grew from a gaming website I started in 1997 (at age 14).

    • Business model of advertising and selling subscriptions to high speed downloads.

    • Created news aggregator VGtap.com with custom algorithms using machine learning and natural language processing.

  • PyCharacterize – Experimental tool for auto generating characterization tests of Python code.

  • Azulejo – Python application for Linux that moves windows using keyboard shortcuts.

  • jtes.net – blog about software and hack days I have organised or attended.