• en

Queue Based Synchronisation

The first rule of using locks for thread synchronisation is, "Do NOT use them!". Recently I saw an implementation that made heavy use of locks to synchronise access to a shared cache between two threads. The overall approach is explained in the diagram below: Why...


Mob Programming, and the importance of fun at work

It's been a few weeks since SoCraTes UK 2014, and I've had some time to reflect on the event and my learning experiences. Today, I want to talk about the biggest things that stood out for me. Mind. Blown. The session that really blew my...


Google+ Sign-In with Scalatra

The requirements For one of our internal pet-projects at Codurance, we decided to have authentication and authorisation using Google+ Sign-in. Google+ Sign-In is able to authenticate anyone with a Google email account (gmail or business) using OAuth 2.0. However, we wanted to restrict the application...


A Software Craftsman Is

Someone who aspires to quality. Someone who considers the means as well as the ends. Alternatively, one who realises that everything has more than one outcome, and that as many of them as possible should be considered. Someone who does not build unnecessary things. Someone...


TDD is NOT (just) about you

Recently, another big debate about TDD started on Twitter and blogosphere. Is TDD dead? (No, that's ridiculous.) Does it improve or damage our design? Does it make us faster or slow us down? Seb Rose compiled a list of blog posts and tweets about it,...


Test Driving Algorithms

Software Craftsmanship After over ten years since the Agile summit, software projects are still failing and developers are still behaving and being treated as factory workers. The software development industry is still very amateur when compared to other professions. How can we change this? Why...


Screencast - Explanatory Methods

On 9th of April 2014, we created our first screencast on our new YouTube channel. The idea is to have a series of (reasonably) short videos explaining some of the techniques we use when developing software. The videos will range from basic to advanced topics...


Keeping the domain in the core

Inspired by Alistair Cockburn's excellent article on Hexagonal Architecture, on our current project we have kept the core domain of our application independent of the infrastructure by taking the simple decision to divide our code into two main sections (higher level packages): infrastructure and core....


Explanatory Methods

Explanatory Methods Using explanatory methods to make the code more readable, expressing the business rules.


Just Another Day at the Office

On 4th of March 2014, a few days before my baby boy Samuel completed two months, a well-regarded cardiologist—let's call him Dr. Smith—gave us the news that Samuel had a heart condition called pulmonary valve stenosis. Dr. Smith's recommendation was that Samuel had a heart...


Subscribe to newsletter