Ben Griffiths

An enthusiastic Clojure developer with 10 years commercial experience developing software and building robust systems. I'm particularly interested in high availability, scalability, distributed systems, functional programming and building great programming teams. I'm looking for a challenging role working with talented people to solve interesting problems.

Technical Summary

  • Clojure, Java, Javascript, others
  • Micro-services, distributed systems
  • REST, JSON, HTTP
  • Scalable systems and high availability
  • Kafka, queues, asynchronous programming
  • AWS, EC2, DynamoDB, SQS, EMR, Redshift, IAM
  • Linux, Devops, Git, scripting, Vim, Emacs

Work experience

MixRadio, Microsoft, Nokia

This period of employment covers three employers:

  • MixRadio: April 2015 - Present
  • Microsoft: April 2014 - April 2015
  • Nokia: Jan 2012 - April 2014

During my time at MixRadio I've worked on a variety of systems: initially with Java before helping to introduce Clojure in mid 2012.

Key Responsibilities

  • Building Clojure micro-services that powered the music platform
  • Designing software, systems and taking responsibility for the overall health of our architecture
  • Monitoring the health of the platform (Graphite, Logstash, Kibana) and responding to live issues
  • Developing and supporting the continuous delivery system
  • Recruitment, conference sponsorship and helping new starters
  • Mentoring, one-to-ones and developing the team
  • Helping to improve the organisation and how we worked

Analytics pipeline

The analytics pipeline takes music, navigation and usage events from millions of clients daily and makes them available to many consumers throughout the platform.

  • Designed and built many of the components and worked on the project from its initial prototype in MongoDB
  • Based on a Kafka pub-sub architecture
  • Data flows into many parts of the organisation from micro-services to map reduce jobs and into the Redshift data-warehouse
  • Most recently redesigned the data analytics and warehouse service into a clean queue based event architecture to remove service state, improve reliability and reduce the time taken to reach Redshift

Continuous delivery system

  • Helped design and implement MixRadio's second generation continuous delivery system allowing quick and simple deployments of micro-services into AWS
  • Based loosely on the Netflix approach using machine images as the deployable artifact
  • Built the AMI baking service based on Packer, Puppet and Yum
  • Built the command line tool that interacts with the deployment services and acts as a frontend to deployments. Written in Go, it was cross-compiled to various platforms and auto-updates itself when new versions are released
  • Created the Clojure service template that allowed new services to be quickly bootstrapped
  • The whole system allows a new service to be created and deployed into dev and production in under 30 minutes and averages around 40 deployments a day

Some other systems worked on

  • The authentication, authorization and token management system
  • The Homescreen service which recommended mixes and created a feed of music tailored to a user's taste
  • Redesign of a reporting data flow into a distributed queue based system across data centres
  • CRM systems and integration

Target Harlosh: 2008 - 2011

Working in the R&D department as a Java and frontend developer building a software system that allowed client business analysts to create bespoke insurance and financial systems.

  • Java, Spring Core, Spring Web Flow
  • Hibernate with support for multiple databases
  • Javascript, jQuery, HTML, CSS

Accenture: 2006 - 2008

During my time at Accenture I worked on a number of projects in Java, Javascript and HTML largely at the Discovery Channel. I introduced version control into their engineering team and helped to modernise their approach to frontend software development.

Education

  • MEng Computer Software Engineering, University of Sheffield 2:1 Hons [2001 - 2005]
comments powered by Disqus