Portfolio

Here I have highlighted achievements from some of my more recent roles to demonstrate my core competencies. For a more complete picture check out LinkedIn, Stackoverflow and Github.

Java, Scala and Grails

eFront - www.altexchangevp.com

At eFront I developed JSON based REST services in Java 7 that were fronted by a Scala 2.10 /Play 2.2 web application. These services were used by the web application as well as being made available for external consumption. The project used SCRUM and a TDD approach with some pair programming.

Barclays Retail - www.barclays.co.uk

At Barclays Retail I worked on several small scale applications using Java 6, Spring 3 (core and MVC) that consumed middleware services - SOAP and restful JSON. All the work was conducted using a TDD approach.

Equal Experts - O2 Priority

At Equal Experts I worked on a back office administration system written in Grails, including migrating it from Grails 1.6 to Grails 2.1. I also worked on a number of micro services providing services to single page administration applications and consumer handsets, written in a mixture of Scala 2.9 and Java. Data was stored in a NoSQL database (MongoDB).

I also spent two months implementing the end-to-end integration of a third party voucher feed which involved several distinct components: a REST client to consume the XML feed; a transformation component to translate the data into our own internal model and merged the data from the feed with historical data and finally amendments to the services that delivered data to the consumer handset.

All the work at Equal Experts used SCRUM and a TDD approach with pair programming accounting for 25% to 75% of the work depending on size and complexity.

Sky - www.sky.com

At Sky the team operated a 100% pairing and 100% TDD approach to development on a complex Grails application that was clustered across multiple servers. The application consisted of the sky.com home page with some subordinate pages (such as the site map) and an extensive content management system together with associated services for consumption by other teams. TDD included writing comprehensive unit and integration tests in Groovy as well as writing Cucumber test cases. Data was stored in a clustered Postgres database.

HTML, CSS, and JavaScript

eFront - www.altexchangevp.com

At eFront I worked extensively on HTML5 pages using jqGrid to display and interact with tabular data and jQuery to interact with and display results from REST services. I also introduced jReject to warn users who were using unsupported browsers, submitting a patch back to the jReject project in the process.

Barclays Retail - www.barclays.co.uk

At Barclays I developed a pair of slider components as part of the Instant Lending application. The ‘amount’ slider was adjusted either via mouse drag/click, the use of buttons or the entering of a monetary value in a text field. When the ‘term’ slider was moved this could affect interest rates so in addition to only moving to one of several fixed points on the scale it would perform a post back to update details of the loan’s rate and actual cost.

Equal Experts - Visa

Whilst on one of Visa’s digital wallet projects I worked to develop new JavaScript components. This was undertaken using Jasmine to work in a test-driven way; 90% of the functionality was developed in this way before the component was seen in the browser so that the CSS could be perfected. This was the first (and successful) introduction of Jasmine into the Visa development environment.

Sky - www.sky.com

Working on the Sky home page frequently involved producing new HTML components and creating new JavaScript widgets or modifying those already present. One significant piece of work involved refactoring a carousel module to take a variable number of carousel entries read from a JSON feed while another involved working on re-styling existing CMS components to adopt a new overall style and layout. One of the constraints in this work was then need to support Microsoft browsers all the way back to IE6, requiring extensive testing and tweaking of both CSS and JavaScript.

DevOps and Monitoring

eFront - www.altexchangevp.com

At eFront I worked on the Jenkins continuous integration server to fix maven repository issues. I also refactored the web site to externalise environment-specific configuration and extended the automated deployment job to download and use the appropriate configuration for the environment it was deploying to.

Equal Experts - O2 Priority

Whilst working on O2’s Priority programme I extended the existing AWS Jenkins installation with a Windows 7 node so that we could run Geb tests (similar to Cucumber) on Internet Explorer. I worked on refactoring the Geb tests to run more reliably. Finally I developed a Chrome plugin to operate as a Jenkins status screen for use in the team bull pen.

Sky - www.sky.com

At Sky the home page team had the responsibility of building and supporting its own infrastructure. One of my early jobs was to set up a new Jenkins build server. To ensure a speedy end-to-end build process this included setting up a number of slave servers that were configured to run Cucumber tests using an installed browser (instead of running headless).

About half way through my time at Sky I worked with our system administrator and another team member to rebuild our disaster recovery site from the ground up. This involved extensive Linux administration tasks including installing and configuring Nagios monitoring and the Puppet deployment tool across over a dozen CentOS 6 nodes as well as fixing network configuration and routing problems and then proving performance and site switch-over. Finally I developed a single page web application that monitored the availability of both live and DR sites for use in the team bull pen alongside the existing build monitor and helped re-write the deployment to live as a more automated process.