About

Me

Hi, I’m Chris.

Since 1983 I’ve had a fascination with computers and writing computer software. I first encountered a computer in my final year of primary school when out classroom got the first BBC Micro in the school. My teacher also introduced me to the Commodore VIC-20 and I persuaded my parents to purchase one for me fore Christmas that year. I started out teaching myself BASIC and then Machine Code, writing a mix of games and useful utility programs.

Fast forward 8 years in which I’d had access to and created software and games for the Amstrad CPC464, AppleII and Commodore Amiga in both BASIC and C. It was then time to head off to University to study for a BSc (Hons) in Computer Science.

My Experience

Since graduating I’ve worked in a large range of business domains, including:

  • Credit Card Payments
  • Travel Reservations
  • Car Dealership Automation
  • Telecoms / Voice-Driven Services
  • Media
  • E-Commerce
  • Retail
  • IoT
  • Green-Tech
  • Banking

Technology

My primary area of expertise is building large-scale, distributed solutions. In fact, almost eveey project I’ve worked on has been either a distributed system, something that needed to function at high volume, or both.

My primary development platform has always been the JVM, which I started using in 1996 after receiving a version Beta 3 CD on a computer magazine! On this platform I’ve developed in Java, Scala, JRuby, Groovy and Kotlin. Currently I’m using Kotlin as my primary development language. However, my list of programming languages is long:

  • Java
  • Kotlin
  • Scala
  • Groovy
  • Python
  • Haskell (and Elm)
  • Ruby/JRuby
  • C
  • C++
  • C#
  • BASIC
  • Assembly
  • Shell Scripting

My Approach

I’ve been a proponent of automated testing, plus iterative and incremental development since the late 1990s. Much of my early thinking was shaped by the seminal Extreme Programming Explained: Embrace Change book, published in 2000.

I practice all of the important engineering approaches to testing: test-driven development, specification by example and so forth. I’m also very much a proponent of the practices of Continuous Integration and Continuous Delivery.

Since 2001 I’ve been following agile development practices such as feature driven development, user stories and iterative and incremental development. For me agile is less about sprints, story points and ceremonies and more about delivering working software frequently in order to experiment, learn and get feedback as early in the development cycle as possible.

My Work

I currently work for Crown Agents Bank where our business goal is “Moving money where it’s needed”. I am part of an amazing, high performing engineering team who build high volume payment systems using modern software engineering principles and practices.

Beyond Engineering

Outside of software engineering I have the following interests:

  • Spending time with my family
  • Building conservation and maintaining my 16th Century cottage
  • Mointain biking (and cycling in general)
  • Reading science fiction and fantasy
  • Gardening

Old Blog

Please don’t forget my older blog, which you can find at So, you want to write software?

comments powered by Disqus