Book Review

Book Review: Building Evolutionary Architectures

Posted on

Recently, I finished the new and popular book Building Evolutionary Architectures by the three (former) Thoughtworkers Neil Ford, Rebecca Parsons and Patrick Kua. Overall I was underwhelmed by the book, but continue reading for the full review and my reasons. Content The first chapter introduces software architecture “-ilities” as the basis for decisions made by software […]

Book Review

Book Review: Writing Great Specifications

Posted on

Today I’ll give you my insights about an interesting little book called Writing Great Specifications by Kamil Nicieja available from MEAP or Amazon. Content The book is all about writing executable specifications. Some relevant keywords here are specification by example, behaviour-driven development or acceptance test-driven development. The author starts it easy with an introduction to […]

Programming

The compiler is your friend

Posted on

During my recent coaching sessions I realized that different developers consider compilers in entirely different ways. In this post I’ll describe three dominant views I’ve encountered. View 1: Dynamically typed aka what’s a compiler? Type systems are complicated. It’s a good thing that we have dynamically typed languages, in which the type system is very […]

Book Review

Book Review: 99 Bottles of OOP

Posted on
Book cover 99 bottles of OOP

This time around, I decided to give you my comments on a book I recently read – or at least partially read since it is not finished yet. 99 Bottles of OOP is an amazing work from well-known Sandi Metz in cooperation with Katrina Owens (creator of exercism.io). Currently, the book consists of 5 of […]

Programming

Property Test-Driven Development

Posted on

It’s been some time since my last post. A lot happened in my life, but I’ll try my best to get back to writing more posts again. Let’s start off by looking at a variation of test-driven development: property test-driven development. Basically, it’s TDD with property tests. If you don’t know about property tests (QuickCheck […]

Programming

Quick Tip: Degenerating HashSets

Posted on

Recently, a colleague of mine found a problem deep down in the rabbit hole. What we could see from the outside was a major performance issue – the fix was simple, yet I found the root cause of the problem interesting enough to warrant this post. Consider it a follow-up on contracts and how deep […]

Programming

Further Deprecating the Decorator Pattern

Posted on
Design Patterns Book

In the last post, we saw ways to replace the decorator pattern for static use cases. If you want to decorate functional interfaces though, there is another whole class of use cases, in which the decorator pattern may not be the most suitable solution. Scenarios Let us consider a few typical scenarios, where dynamic decorations […]

Programming

Deprecating the Decorator pattern

Posted on
Design Patterns Book

This post explains how modern languages make most usages of the decorator design pattern obsolete. For those of you, who do not know the decorator pattern, a quick recap is given, before I explain why it’s not really a good idea if your language supports multiple inheritance properly. Finally, we will look at those few […]

Programming

Making implicit semantics explicit

Posted on

New students in computer science often have a hard time distinguishing syntax and semantics of a programming language. On top of that though, many also fail to recognize the numerous levels of semantics. In this post, I’ll try to highlight how making your program’s semantics more explicit helps us in achieving better overall software. Different […]