Recent Posts

Profiling legacy code using characterization tests

3 minute read

As you might have read, I've been refactoring some example code for a multi-threaded cache that I got from CodeProject into a source-only NuGet package which will soon be published as FluidCaching. Since this cache has been built to be very performant, the internal algorithms are not trivial to g...

March 10, 2016

A least recently used cache that you can use without worrying

5 minute read

At the beginning of this year, I reported on my endeavors to use RavenDB as a projection store for an event sourced system. One of the things I tried to speed up RavenDB's projection speed was to use the Least Recently Used cache developed by Brian Agnes a couple of years ago. This cache gave us ...

February 11, 2016

How Git can help you prevent building a monolith

5 minute read

During last weeks' Git Like a Pro talk I tried to convey the message that switching to Git is much more than introducing a new source control system. It will affect not just the way you commit source code, branch or merge, it changes the entire development workflow. In fact, I'm willing to claim ...

February 4, 2016

Why C#’s “var” keyword can hamper maintainability

3 minute read

Coding conventions never cease to be a great source for heated debates. However, within the C# realm, two specific topics tend to reappear occasionally. The first one is about whether or not to use underscores for class fields (but I'm not going to discuss that here). The other one is the usage o...

January 29, 2016

Why every software architect is also an entrepeneur

5 minute read

I'm not sure when it happened exactly, but at some point this month while watching the new TV show Billions, it dawned on me: being an architect is just like being an entrepreneur, just without the huge financial benefits and risks. I might be wrong about this, or worse, I might be insulting our ...

January 21, 2016

Evaluating RavenDB as an embedded database

6 minute read

During the last two months of 2015, we've been evaluating RavenDB 3.0.30000 as an embedded database hosted in a Windows Service. We employ an architecture based on Command Query Responsibility Segregation and Event Sourcing architectural styles, but this post is relevant to anybody who wants to u...

January 5, 2016

10 more things professional software developers do

9 minute read

Since my last post about 12 things I believe professional software developers should do, in August, I started to take note of other behavior, skills, and characteristics I like or miss in the people I run into while working on complex software projects. Next to that, I received quite a few sugges...

December 24, 2015

Why I am abandoning GitFlow

1 minute read

Now that the number of downloads of Fluent Assertions is about to cross the magic number of 1 million downloads, and the library is quite feature complete, it is time to rethink the release strategy. Since its inception we’ve always used a separate branch for working on future features and improv...

December 13, 2015

An opinionated definition of a unit test

3 minute read

During the same C# code reviews that triggered last week's blog post about writing great unit tests, another discussion tends to pop-up, in particularly with new joiners (both experienced and junior): "What's the difference between a unit test and an integration test?" Well, in my opinion (whi...

November 22, 2015

12 tips to write unit tests that don’t cripple your codebase

4 minute read

Over the last months, I’ve been involved in more and more code reviews, mostly because we’ve increased the level of quality required for code changes to our code base. While doing that, I started to track my most frequently used review comments intended to improve . <ol><li>If the dep...

November 11, 2015