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]