Immutability is becoming a real trend in computing, from the programming language, infrastructure, to applicative and data layers. In this three articles installment we’ll see how immutability is changing the way we build system and enable a new breed of applications to be designed. But first a bit of background…

I began my career in IT with a fascination for one particular computing paradigm called TupleSpaces, invented and subsequently implemented as a language called ‘Linda’, by the brilliant David Gelernter. Gelernter developed his ideas in a forward thinking book called “Mirror Worlds, or the Day Software Put the World in a Shoebox”, a book so groundbreaking that it made him a target of a mail bomb from the Unabomber, which left him partly crippled.

As soon as I started to program I grew to care about general aesthetics of computing, and till this day I find TupleSpace one of the simplest and most powerful ways to build distributed systems. At its core it’s an associative shared memory, which lays on a very reduced set of operations: Read, Take, Write. The data model for TupleSpace as its name could hint to, is Tuples – an ordered collection of elements.