Generative Testing Part 2 – Properties and Oracles 2018-09-11

From the plain English root verbs of "generative testing", we can surmise there are at least two actions to explore: 'generate' and 'test'. In a nutshell, the actions are

Generative Testing Part 1 – Introduction 2018-09-03

It is rare that a topic is smack dab in the middle of the Venn diagram of so many of my favorite topics: software quality, functional programming, and extensibility. The topic of generative testing hits all three! I am excited to bring this to your attention and shed light on it from my point of view.

Domain Identifiers instead of 'Primitive Obsession' 2017-08-08

Summary: In strongly-typed programming paradigms, consider introducing domain identifier types instead of using primitives like strings.

Liskov Substitution Principal and the Pit of Success 2016-10-23

When a data structure attempts to implement two different, incompatible usage patterns, it can lead to some nasty surprises. In part 2 we explore how to avoid unexpected integration bugs by following the Liskov Substitution Principal.

ConcurrentDictionary and the Pit of Success 2016-10-21

When it comes to managing state in .NET, ConcurrentDictionary is not a silver bullet. When a data structure attempts to implement two different, incompatible usage patterns, it can lead to some nasty surprises. This post explores how a "small" violation of the Liskov Substitution Principal can lead to unexpected bugs. ConcurrentDictionary can be accidentally used incorrectly because of a subtle Liskov Substitution Principal violation.