Rhys Keepence

Professional Summary

Over 15 years experience in a variety of industries, developing distributed systems and web
applications. I am passionate about improving the way that software is developed, with a particular
focus on simplicity and quality. I have plenty of experience of delivering high-quality applications
which have been developed in a sustainable manner.

I like to work on simple systems, refactoring ruthlessly to evolve the design. I’m a big believer
in starting small, demoing & releasing often, and iterating based on user feedback.

In 2008 I began learning Scala, in 2009 I used it on a small production application, and at Sky
I introduced it to the team, switching all new development to Scala. In recent years I have enjoyed
learning functional programming in Haskell. Through this journey I have found that fully utilising
the type system results in clearly documented code, that is simple to test and easy to reason about.
At Deutsche Bank I championed Haskell and Elm for two production applications, which has been well
received within the team.

Key Skills

XP/Agile

Pair Programming

Functional Programming

Scala

ScalaJS

React

Haskell

Elm

CSS3

SQL

Continuous Delivery

Open Source

Elm Websocket—a library for
creating a websockets server in Haskell, which automatically generates the Elm client code. This
includes JSON codecs and data types, derived from the Haskell types.

Clairvoyance—a specification-by-example
testing framework that produces living documentation on the system's behaviour.

Experience

Senior Scala Developer—Contract

Deutsche Bank

09.2013 - present

I am currently working on a project to address an audit point within structured finance. Strand is a front-office
application for the lifecycle management of structured transactions that consist of multiple bookings,
some of which carry non-standard risks.

The project consists of a small team of developers, responsible for talking to senior members of the business,
building the system to capture the transactions, and supporting it in production. The project has been a large success,
and we have a good relationship with front and middle office.

I was also on a team tasked to develop a workflow system for rates
exotics sales and trading. We began with a small prototype, which was shown to traders and
iterated upon.

Senior Software Developer—Contract

BSKYB SNS

05.2010 - 09.2013

Part of a small team to rewrite an application to communicate with telephone switches. I was the
main driver behind the team adopting Scala. In my own time I wrote a port our chosen acceptance
testing framework to run with Specs2 tests, which I maintain on Github and has a small number of
users outside of Sky.

I lead the development of rewriting an address matching application, using Lucene, Scala, Scalaz,
Dispatch and Spray, which was delivered ahead of all estimates, despite most of the team having
to come up to speed on Scala. The application is written in a pure functional style and has no
exceptions, no 'if' statements and had only one small bug once going live. It has a full set of
automated tests and can be deployed to production in minutes.

In my free time I wrote a JMX statistics collection and dashboard monitoring system (Scala,
Liftweb) for 30+ applications. This has prevented problems in production on numerous occasions,
and is used by support, developers and managing directors.

Agile Software Developer—Contract

Wiley Online Library

07.2009 - 05.2010

A large, 30 developer project, developing an online library. Much of the revenue for the business
is based on usage statistics to various pieces of content, therefore timely and accurate statistics
are important. I was put on a team of six developers, working on the reporting subsystem of the
website. Raw usage information was stored in a distributed data grid, analysed in various ways,
and aggregated in multiple dimensions. Because the system is asynchronous and distributed, testing
it comprehensively posed a challenge to the team, so my experience in this area proved useful.

Agile Software Developer—Contract

BSKYB

09.2007 - 12.2008

I was contracted to develop a telecommunications provisioning system for Sky Talk. The team’s primary role was to develop a replacement to the existing system, written in Oracle PL/SQL, which was scaling poorly with increased subscribers. Rather than completely discard the existing system, we designed the new system in such a way that provisioning events would be routed through the existing workflow system until the replacement workflow had been developed. Each bi-weekly deployment contained more workflows, until the existing system was no longer used. This allowed us to deploy very early in the project, gaining rapid feedback and allowing the business to quickly see return on their investment.

I was offered a contract renewal, however I left to travel for six months.

Agile Software Developer—Contract—Brisbane, Australia

Suncorp (retail banking and insurance)

03.2006 - 06.2007

Worked in a 100% agile development team on a Java based financial document rendering system. Our team pioneered the use of XP development processes within the bank. Among other things, we developed strictly in pairs, enjoyed close collaboration with system architects/stakeholders/testers, had full test coverage, and continuously improved our process. This approach was highly successful - to the point that on numerous occasions, we were asked to talk to other development teams to promote agile practices. Furthermore, as a result of this experience, I was invited to present at the Agile 2007 Conference in Washington DC.

Software Developer—Contract—Melbourne, Australia

GE Energy

01.2006 - 03.2006

A short consulting gig to produce a integration component between an existing Windows application, and a third party Java application.

Software Developer—Contract—Brisbane, Australia

Queensland Government (Department of Industrial Relations)

02.2005 - 02.2006

Software Developer—Contract—Singapore, Singapore

A Singapore Bank

11.2004 - 02.2005

Team Lead—Brisbane, Australia

Digicon

12.2001 - 10.2004

Various consulting projects in government

Software Developer—Sydney, Australia

Secure Interactive

06.2000 – 10.2001

Various consulting projects in the banking sector

Education

University of Queensland, Master of Information Technology Studies, 2004-2005