Experienced software developer with a love of functional programming and coding as language. Came to software by a somewhat unusual route - a first class degree in Creative Writing. Worked with numerous languages, most recently Clojure and Clojurescript, as well as Ruby, Java and Scala, and enjoys learning more. Gets a kick out of both mentoring/teaching and learning from colleagues. Loves making complex ideas simple; piecing the bits together carefully from the highest-level architecture to the smallest implementation detail. Most at home in the fast-paced, exciting environment of small, cross-functional teams who own their product.
2015 - 2016
Identified and highlighted some of the gaps with regards to non-functional requirements in the software being built by the company, and led a team to address them. Ran a weekly "Clojure Guild", which took the form of a short presentation on aspects of Clojure plus a practical workshop - say, implementing the Game of Life - with the aim of helping the large, relatively inexperienced team of Ruby developers transition to Clojure.
2014 - 2015
Brought in to help transition an academic group into a commercial, non-profit entity. Worked to bring the existing team on board with new ideas such as microservice architecture, pair-programming, code reviews, and incremental development, and to transition from Perl to Clojure. Designed and built a system for serotyping Streptococcus Pnemoniae composed of a number of Clojure services wired up via AWS SNS/SQS, with autoscaling based on demand. Built a rich Clojurescript front-end using Reagent, React, and Re-frame. Built and maintained a deployment infrastructure using Docker, with base AMIs configured by Ansible and AWS resources configured via Cloudformation JSON generated by a simple Clojure DSL. Developed monitoring capability using Riemann, Airbrake, and Loggly. Project-managed the development team, leading stand-ups and weekly meetings.
2014 - 2014
Built a system for collecting and querying analytics data using Clojure, Kafka, and Redshift. Began work to migrate a legacy monolith PHP application to a more service-based architecture, with a Rails frontend. Configured deployment of AWS infrastructure using Puppet.
2013 - 2014
Mentored multiple teams of .NET developers as they cross-trained into Ruby/Rails. Worked to isolate and replace parts of the existing .NET and Sharepoint systems with a more flexible service-oriented architecture. Responsible for the introduction of 10% time in order to foster innovation within the organisation. Regularly held informal talks/sessions covering Ruby, Erlang, and other interesting languages and technologies.
2012 - 2013
Worked on a variety of Ruby applications including the main site (a Rails app) and the search and aggregation engine, a Goliath app using MongoDB as its datastore. Flew the flag for immutability and the functional style within the company, and gave talks on the subject to the rest of the dev team. Put these ideas into practice when leading a small team in splitting out the core "basket" functionality of the site into a service and set of libraries that utilised functional constructs and no mutable state whatsoever, resulting in a clean, concise, and expressive code-base.
Due to the small size of this early-stage venture, the role encompassed all areas of development: from initial design and architecture (in conjunction with the Product Development Director); implementation planning and project management; technology scanning; coding the application itself; writing automated specs and performing manual testing; creating and maintaining development, integration and production environments; and demonstrating and providing training to audiences at board level in large organisations.
Developed a Rails application with a MongoDB datastore that wrapped up a third-party System Dynamics simulation engine. (The application was designed to help users make predictions about the long-term effects of particular interventions on an LTC pathway.) Used a lightweight development methodology loosely based on SCRUM. Began work on a bespoke simulation engine, initially in Scala, then Clojure.
Worked within the Data Warehouse team, acting as liaison with the Marketing department. Used PL/SQL stored procedures to aggregate data from disparate sources. Developed Java/Spring apps that integrated with external email and SMS providers. Wrote a new, modular, OSGi based system for scheduling and monitoring the team's many batch jobs.
Involved in all stages of the development lifecycle of a large, operationally critical healthcare system, written in Java. Worked on various projects including the development of a new suite of Secondary Care products, which integrated with existing hospital systems via HL7 messages.
Outside of programming I enjoy getting the most out of the weird and wonderful things living in London makes available. I love a wide variety of music, but especially the atonal, noisy stuff - the kind with violins being played with shards of glass, or trumpets played underwater - so you'll often find me at a gig at Cafe Oto. In the past couple of years I've also discovered the joy of physical activity, escaping the sedentary developer lifestyle I had unwittingly slipped into: I am evangelical about aerial yoga, which I do at least once or twice a week, along with any other activity I can find that lets me hang upside down from the ceiling.
Email: email@example.com | Mobile: 07849 465404