I am an engineer, consultant and innovator with a holistic approach to Systems, DevOps and software delivery. This includes all of software/deployment architecture, continuous delivery automation, centralising duplicated effort/waste and the human side of how teams ship changes safely at pace.
Areas I’ve covered as part of working on BBC online have included analytics, microservices for distributed teams and centralised delivery automation. I’ve also been a driver of reducing overheads and undifferentiated heavy lifting in how we build, test and delivery our applications.
My role title is currently principal software engineer, but in practice I work at a consultant or senior principal capacity with a focus on communicating domain knowledge, proposing opportunities for broad improvements and ensuring engineering teams are able to do their work with minimal overheads or friction.
In my personal time I play music (bodhrán and tin whistle), work a little on personal, open source projects and study philosophy, languages, computer science and other various fields of interest.
Agile, AWS, BDD, CentOS, Continuous Delivery, Debian, DevOps, Jenkins, Jenkins Pipelines, Kanban, Linked Data, Maven, nginx, Python, RDF, Red Hat, REST, TDD, UML
Apache HTTP Server, Cucumber, Django, Docker, Elasticsearch, Flask, git, Git, GNU Make, GNU/Linux, Gradle, Java, JAX-RS, Jersey, LaTeX, MySQL, Node.js, PostgreSQL, Ruby, Scrum, Solr, Spring Boot, Subversion, Travis CI
ActiveMQ, Groovy, gulp, Jupyter Notebook, NumPy, RabbitMQ, Redis, scikit-learn, Soft Systems Methodology, SPARQL
Clojure, Grafana, Haskell, MongoDB, Prolog
Principal Software Engineer at BBC North: 2015-06 to present
My current role is one of two Principal Software Engineers supporting four teams within the Search and Navigation department (renamed from previous name of “Content Discovery”) within BBC Design and Engineering.
My role is a balance between stepping back from implementations — giving only support and domain knowledge to other engineers where needed — and also doing more “hands on” technical work when it comes to prototyping or in the DevOps and deployment automation domain.
I have also been involved in architectural design and data modelling for improving our pan-website analytics and work to improve our tracking beyond simple impressions and clicks, e.g. user engagement tracking and audience demographics.
Senior Software Engineer at BBC North: 2012-02 to 2015-06
I worked as a senior engineer on the main BBC website search functionality as part of the Content Discovery team within BBC Future Media.
This was a major Enterprise Integration project, but my drive was to lead on introducing principles from REST architectures and Linked Data to create long-running and evolvable service applications with minimal bespoke integration code. Technologies were primarily Java, JAX-RS (Jersey), Apache Camel and ActiveMQ. Ruby and Cucumber was used for component tests.
Contract Software Engineer at BBC Cymru Wales: 2010-12 to 2012-02
Systems Developer at Cranfield University: 2007-04 to 2010-06
Systems Developer in an IT department that supported the teaching and service departments 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 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
Manual and automation tester for a web-based software product. Maintained an automated test code in Python that tested performance of the application as well functionality.
Fundraiser at Tim Lilley Fundraising: 2005-10 to 2006-12
House to house fundraiser on behalf of Amnesty International.
Tester at Level 5 Networks: 2004-07 to 2004-09
I tested performance for a new Ethernet interface and its drivers on both Linux and Windows servers.
MSc Software Engineering at University of Bradford (2016)
MSc degree in Software Engineering and Internet Architecture awarded by Bradford University 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.
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.
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).