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.
Since graduating I’ve worked in a large range of business domains, including:
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:
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.
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.
Outside software engineering, I have the following interests:
Please remember my older blog, which you can find at So, you want to write software?