• en

Side effects and Java 8 streams

There is a lot of excitement in the Java community since Java 8 was released. Lambdas and Streams are a massive improvement and nobody wants to go back to the old days. Today, however, I want to talk about the caveats of some use of...


Creating a local NuGet repository for offline development

I spend several hours each week on long-distance train journeys and often use the time to code, whether on a pet project or practising a kata or two. Large parts of this journey have patchy-at-best mobile data coverage, so tools with a reliance on a...


Interaction Driven Design

Interaction Driven Design How can we quickly tell what an application is about? How can we quickly tell what it does? How can we distinguish business concepts from architecture clutter? How can we quickly find the code we want to change? How can we instinctively...


Design Patterns in the 21st Century: Conclusion

This is part five of my talk, Design Patterns in the 21st Century. Over the past week, we've seen three examples of design patterns that can be drastically improved by approaching them with a functional mindset. Together, these three span the spectrum. The Abstract Factory...


Design Patterns in the 21st Century: The Chain of Responsibility Pattern

Here's a thing you might not see a lot. @Test public void hungryHungryPatrons() { KitchenStaff alice = new PieChef(); KitchenStaff bob = new DollopDistributor(); KitchenStaff carol = new CutleryAdder(); KitchenStaff dan = new Server(); alice.setNext(bob); bob.setNext(carol); carol.setNext(dan); Patron patron = new Patron(); alice.prepare(new Pie()).forPatron(patron); assertThat(patron,...


Design Patterns in the 21st Century: The Adapter Pattern

This is part three of my talk, Design Patterns in the 21st Century. The Adapter pattern bridges worlds. In one world, we have an interface for a concept; in another world, we have a different interface. These two interfaces serve different purposes, but sometimes we...


Making Sense of Docker Volumes

Docker is a platform that allows users to build, ship, and run distributed applications. Applications are stored inside docker containers. A docker container uses a Union File System which consists of read-only layers and a read / write layer on top. Whilst the container is...


Design Patterns in the 21st Century: The Abstract Factory Pattern

This is part two of my talk, Design Patterns in the 21st Century. This pattern is used everywhere in Java code, especially in more "enterprisey" code bases. It involves an interface and an implementation. The interface looks something like this: public interface Bakery { Pastry...


Design Patterns in the 21st Century, Part One

I've been having a bit of trouble blogging recently. In an effort to get back into it, I thought I'd take a talk that I presented at JAX London last year, split it up into blog-sized posts as it's pretty long, and post them all...


Dangerous Words

Ludwig Wittgenstein was one the greatest philosophers of 20th century. His book Tractatus Logico-Philosophicus addresses the limits of language and its relationship with reality. A friend of mine, great polemicist, suggested me to read it some years ago to understand one of his favourites conversational...


Subscribe to newsletter