IN A NUTSHELL
I am a developer with over fifteen years of experience working for all manner of organisations, from working as a single freelancer, through a number of cool startups, to large companies including Sun Microsystems and The Economist.
BUZZWORD ALERT: I am a poyglot full-stack programmer - right now I am making heavy use of Go and moving into Elixir. In my substantial time at The Economist means I have pretty much worked on every part of the stack. Technologies used in the projects listed below so far include Go, React, Redux, GraphQL, a slew of AWS technologies including ElasticSearch, Lambda, SQS, SNS, Code Pipeline, EC2, ECR (we use Docker), Elastic Beanstalk and S3.
MOST RECENT PROJECTS
Back at The Economist, this time straddling both front and back end teams armed with experience building out the microservice architecture (primarily in Go) with the platform team and a recent project making heavy use of React and Redux. Main remit was to act as a conduit between front end and back end as the former moved to consumption of a canonical data model built by the latter. Main work involved adapting GraphQL to work with the new model and helping to refactor the front end (Relay) parts accordinly. As of October 2017 I will be re-joining the content platform team full-time once again to work on wider intiatives.
Hired by the cloud computing consultancy that worked with The Economist on providing AWS services and training to build a data product using React and Redux on the front end and Serverless and AWS on the back. The system provides a dynamic UI on top of Peak's data management offering allowing clients to log in and navigate a series of data-driven dashboards.
Built out several iterations of a distributed content platform at The Economist. Involved in all aspects of the project:
- Building microservices in Go, including building the microservice template, mentoring team members in Go and building key components, some of which are now open source.
- Working alongside web products team to deliver the front end (using Node and GraphQL).
- Working as a devops resource on an API gateway and caching architecture, using a suite of tools including Salt, Nginx, Openresty, and Varnish. Initial gateway code was managed via Salt then ported to Docker.
- Working with a variety of AWS tools in a devops capacity, including S3, SNS, Lambda, CloudFormation, SQS, Elastic Beanstalk, EC2, EC2 Container Service and VPC.
- Builing a development environment using Docker Compose which integrated all services and the API gateway locally. Later work also involved a fair amount of Lua to turn the gateway into a true powerhouse.
- Assisting with implementing a continuous delivery pipeline with Docker and Amazon ECS, initially using GoCD for the pipeline and transitioning to AWS Code Pipeline.
- Assisting with ensuring the whole stack was fully tested using Go's built-in testing package and developing a set of contract and integration tests.
- Helping to build the service discovery layer, initially with Consul and transitioning to dynamic back ends in Nginx routing to AWS ELBs.
- Building Drupal modules for the back end to deliver content from the CMS to API consumers. Later iterations leveraged S3 events and SNS to trigger downstream Go workers which transformed and stored raw content in the appropriate format (modified JSON for API consumers, Apple News format for the Apple News service, and later all content consolidated in a canonical data model influenced by schema.org).
- In later stages of the project, worked on mechanisms to ensure content could still be served even if all the services and Drupal back end went down using Varnish write behind cache and storage of responses and content on S3.
- Documenting it all!
Other projects at the Economist included:
- an ID forwarding service to allow services to refer to resources using canonical identifiers.
- a service that pushes Economist content to the Apple News service.
- vendorgodeps - migrate from godeps to vendor folder
- goberry - microservice template.
- ramlapi - API plumbing.
- watchman - logging and metrics
- tripper - circuitbreaker wrapper.
- gq - worker queue package in go
- goconsul - simple service registration
Recent open source contributions to Go projects:
- gizmo (New York Times)
- docker - code
- docker - documentation
- docker - documentation
Open source contributions and projects outside Go:
- gothimbl - go client for the thimbl network
- badaboom - rails export tool for extracting audio from audioboom
- wildearth - refinery site for a remote production support company
- cardshark - rails app built in 40 minutes as a technical test
- quartz (ruby-go interface gem)
- rails api
- refinery CMS
- sass documentation site
- ghost - js blogging engine
- varnish cache
- regularity - rb regex library
- draper - rb presenter library
- discourse - rails and ember forum
- adn (API wrapper for app.net)
- adn-cli(command line client for same)
- split (ab testing gem)
- resque - rb redis-backed queue
- diaspora - decentralized social software
- rstat.us - decentralizised social software
COMMUNITY AND EDUCATION
I'm a big believer in sharing the love and have delivered training sessions at The Economist and am currently helping with the build and maintenance of Greater Commons, a course platform for developers. Here's an example of a session on Varnish testing I delivered for The Economist.
I was one of the original creators of rubyinthepub, a meet-up designed to put developers, journalists and writers in the same room to explore their common space and collaborate on projects. This small event has since transformed into the UK arm of Hackshackers, an event originally kicked off by the New York Times.