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 for 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 and Flight 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 every 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
  • Javascript/Typescript/Node.js
  • 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 the important engineering approaches to testing: test-driven development, specification by example, and so forth. I’m also very much an advocate towards the practices of Continuous Integration and Continuous Delivery. I believe strongly in building software with high cohesion and low coupling across its components.

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 to experiment, learn, and get feedback as early in the development cycle as possible.

I’m currently doing a lots of research and experimentation into how generative AI can be used to improve developer productivity without compromising software quality, maintainability, and the ability to work in small iterations.

My Work

I currently work for Kyte where we build software for the travel industry. Our primary product is an API that connects with multiple airline reservation platforms to provide our agency customers with the simplest possible one-stop integration for their booking tools.

Beyond Engineering

Outside software engineering, I have the following interests:

  • Running and athletics: I’m a competitive athlete and also a coach and athletics official
  • Spending time with my family
  • Building conservation and maintaining my 16th Century cottage
  • Mountain biking (and cycling in general)
  • Reading science fiction and fantasy
  • Travel

Old Blog

Please remember my older blog, which you can find at So, you want to write software?

comments powered by Disqus