Eventual Consistency and Concurrency in the real world

One of the challenges that face a team when they start thinking in terms of distributed systems – such as Microservices – is eventual consistency. We’re so used to writing software with transactions and ACID style consistency, that this can be un-nerving at...

Fixing an “unfixable” bug with the help of Track.js

Recently I was helping a client who had found an intermittent issue in their single-page application. This particular issue was that under some circumstances – which they weren’t able to describe, as it wasn’t any particular sequence of actions – the UI...

Defensive Coding 101

It is sometimes said that the developer mindset is to make stuff work, while the tester mindset is to make stuff break. In modern professional software development though, it is not OK to make testing or quality control “someone else’s problem”, and...