Curriculum Vitae

Personal Profile

I am currently working as a Principal Software Engineer in BBC Future Media with over 11 years' industry experience. My undergraduate degree was an MA in Computer Science from the University of Cambridge and I have recently completed an MSc in Software Engineering and Internet Architecture run jointly by the University of Bradford and the BBC.

I consider myself a general software and "DevOps" engineer with a broad experience across a number of languages, services, tools and libraries. I presently have a strong interest in REST, RDF, Linked Data and the semantic web as well as development process methodologies such as Agile, Scrum, Kanban and BDD.

I also have interests in domain modelling, data architecture and systems design. In June 2014, I published and presented a paper at the CAiSE 2014 conference in which I explored using more formal modelling techniques from academia for practical, enterprise systems and also touched on parallels between Soft Systems Methodology and Agile whilst exploring SSM's use to bring wider context to Agile software development practices.

My responsibilities in the BBC have been within the main BBC Homepage, Search and the global navigation across the website. This has allowed me to work with the languages Java, PHP, Ruby, Python and JavaScript (including Node.js) in an enterprise setting.

Skills

Expert

Agile, BDD, CentOS, Debian, Java, JAX-RS, Kanban, Linked Data, Maven, Python, RDF, Red Hat, REST, TDD, XML

Advanced

Apache, Apache Camel, AWS, Cucumber, DevOps, Django, Docker, Elasticsearch, Git, GNU/Linux, HTML, Jenkins, LaTeX, RDF, Ruby, Scrum, Solr, Spring, SQL, Subversion, Ubuntu, UML

Intermediate

Flask, MongoDB, MySQL, PHP, Postfix, PostgreSQL, Soft Systems Methodology (SSM), SPARQL, Tomcat, Wordpress

Novice

Active Directory, Oracle, Prolog

Beginner

Clojure, Haskell, Kerberos

Work Experience

Principal Software Engineer at BBC North: 2015-06 to present

In early 2015, I moved to a new "Navigation" project within the same Content Discovery team as the BBC Search product in my previous job title.

This project allowed me to take a position as a main engineer reporting to one product manager and technical lead and working with at most one graduate engineer . This gave me great opportunity to develop skills and best practices for bootstrapping a new project on Amazon Web Services .

The global nature of navigation across the whole BBC website gave me much opportunity to engage with many teams across the BBC Digital division (now named Design and Engineering).

The combination of taking a principal technical position on the project and my shift to engaging with a lot more of the business side of our work, I was able to achieve an in-role promotion to the title "Principal Software Engineer" .

Internal changes in the wider team have more recently expanded my remit as one of two principal engineers across all of BBC Homepage, Search and the global navigation. My role now has more emphasis on supporting three teams of engineers, facilitating technical decisions with my experience and taking some ownership of forthcoming work on the roadmap that has strong need for technical input and championing to the right people in the business.

Senior Software Engineer at BBC North: 2012-02 to 2015-06

I am currently working on the main BBC website search functionality as part of the Content Discovery team within BBC Future Media. My role is part of a development team working with a Kanban methodology to deliver high-quality web services that collect, index and query across all BBC online content.

The spread of technologies, domains and systems involve lead to a classic Enterprise Integration project, but in my role I have been driving to lead on introducing principles from REST architectures (e.g. HATEOAS, hypermedia) and even Linked Data to create long-running and evolvable service applications, which minimises the amount of bespoke integration code required.

The project is primarily written in Java, with Ruby used extensively for integration and acceptance testing of services. The search page itself uses PHP and Javascript, but the bulk of the work is in the Java applications that acquire and process the data. We use Spring and JAX-RS (Jersey) for individual services, with some use of Apache Camel and ActiveMQ where appropriate.

Software Engineer at BBC Cymru Wales: 2010-12 to 2012-02

I worked as a contractor in the Future Media team at BBC Wales/Cymru as a software engineer on the new BBC Home Page. My role was a working as a Java backend service developer to create data feeds for part of the new home page, but also contribute on PHP, Javascript, HTML development and any other tasks as needed.

Director at Functional Programming Ltd.: 2010-11 to present

I founded my own company to take on more serious contract work as well as to provide a financial basis for some of my own projects. The business is not actively marketed as I still seek contract/freelance work under my own name, but there are plans for it to grow into something more active.

Systems Developer at Cranfield University: 2007-04 to 2010-06

This role was as a Systems Developer in the IT department of Cranfield University. The department is a support department for almost all IT facilities across the university. The systems development team sat within the infrastructure team to develop solutions to needs within and outwith the department and support said in-house projects. Most projects were Java-based web applications.

Skills and techniques I developed in the role include setting up production Apache Tomcat servers, installing and basic amounts of work with Oracle, interacting programmatically with MS Active Directory over LDAP and developing web applications with the Apache Struts framework.

Tester at Transversal Corporation: 2006-02 to 2005-10

I was employed as a Tester at Transversal Corporation. They produced a web-based software product and I was given the task of running and maintaining an automated test application implemented in Python that would test the speed and responsiveness of the application as well as find broken functionality.

Fundraiser at Tim Lilley Fundraising: 2005-10 to 2006-12

I worked as a house to house fundraiser for Tim Lilley Fundraising. This was a fundraising agency that employed fundraisers for a number of charities to directly approach people and ask if they would like to support. The work required the confidence to be able to ask people such questions outright and to be able to move on with the job regardless of negative reactions from a minority of people.

During my year in this role, I felt I developed within myself more confidence, patience, motivation and communication abilities.

Tester at Level 5 Networks: 2004-07 to 2004-09

I worked for one Summer as a tester of a new Ethernet interface card. I had to test speed and statistics for the network interfaces and the drivers on both Linux and Windows servers.

Education

MSc Software Engineering at University of Bradford (2016)

I completed an MSc programme and degree in Software Engineering and Internet Architecture awarded by Bradford University and but run in conjunction with the BBC.

MA Computer Science at University of Cambridge (2005)

MA (Hons) (Cantab) in Computer Science from the University of Cambridge. Also gained a pass in the Intermediate III level of German with the Cambridge University Language Programme.

Further Education (2002)

Gained an A grade in each of A-Level Mathematics, Further Mathematics, German and Physics. Additionally achieved a B grade in AS-Level French. Also completed STEP I Mathematics with grade 1 and STEP Physics with grade 3.

GCSEs (2000)

10 GCSEs including A* in Mathematics, Sciences, German and French. Attained A in English Language. Also obtained an A grade in an Additional Mathematics qualification having completed the GCSE the previous year (1999).

Interests