Posts by Tag

ALM

Continuous what?
Well, if you browse the internet regularly, you will encounter two different terms that are used rather inconsistently: Continuous Delivery and Continuous Deployment. In my words, Continuous Delivery is a collection of various techniques, principles and tools that allow you to d...

Solving the versioning problemIf you're building libraries, products or any other software system, versioning is usually a pretty big deal. It's the only way to determine what version of that library, product or system you're looking at. Before an organization settles on a versioning strategy, ma...

Last week, I was so fortunate to attend a marvelous talk by Donald Reinertsen on a amazingly effective approach for prioritizing projects within an agile organization (and which is part of SAFe). Most managers will tend to prioritize their projects based on non-quantifiable attributes such as the...

Is your inbox also filling up with loads of emails all part of some kind of discussion where each reply contains the entire history again? Do you also get all kinds of notification emails from build servers, source control systems, and other things to which somebody is supposed to react? Do you o...

After 50000 downloads and the recent final release of Visual Studio 2012 / C# 5.0 it was about time to do a thorough update of the C# Coding Guidelines. Although most of the guidelines have been preserved, I’ve tried to rewrite several of them using a less formal and less verbose writing style. I...

Yesterday I did a 2-hour talk on getting the most out of UI automation, particularly using SpecFlow and WaTiN. You can find the slides down here and the demo code at GitHub.<iframe allowfullscreen="" frameborder="0" height="356" marginheight="0" marginwidth="0" scrolling="no" src="http://www.s...

This week I completed reading a new book titled The Cucumber Book: Behaviour-Driven Development for Testers and Developers by Matt Wynne and Aslak Hellesoy. Aslak is the founder of the Cucumber project (which is what SpecFlow for .NET is based on), and Matt is one of its most active developers. T...

This is the fourth of several posts in which I’d like to share some of the things we learned throughout more than a year of Agile development using Scrum. Some of them might appear as open doors, but I wish I knew or thought about those before I started that project. Just by looking back at the m...

This is the third of several posts in which I’d like to share some of the things we learned throughout more than 14 sprints of Agile development using Scrum. Some of them might appear as open doors, but I wish I knew or thought about those before I started that project. Just by looking back at th...

This is the second of several posts in which I’d like to share some of the things we learned throughout more than 14 sprints of Agile development using Scrum. Some of them might appear as open doors, but I wish I knew or thought about those before I started that project. Just by looking back at t...

This is the first of several posts in which I’d like to share some of the things we decided throughout 14 sprint retrospective. Some of them might appear as open doors, but I wish I knew or thought about those before I started that project. Just by looking back at the mistakes a team of 9 develop...

I’m honored to have been selected to speak at my first event in the United Kingdom, Developer Developer Developer North, hosted at the University of Sunderland, near New Castle.
Our job as a software developer seems to revolve mostly around programming languages, frameworks and Visual Studio. And...

Somebody recently asked me what sessions I was planning to attend at the upcoming 2011 edition of the Microsoft Developer Days in The Hague. To be honest, my primary reason for going to a Dutch conference is to chat with fellow .NET enthusiasts, and attending sessions is usually a side-effect of ...

I’m very happy that I’ll be speaking at a number of very nice local and international conferences.
On Saturday March 26th, I’ll be joining the Dutch Code Camp event where I’ll be doing a chalk’n’talk on my Silverlight Cookbook initiative.
<ul> <li>On Wednesday, April 27th, I will t...

So now that I’ve finished my multi-part post on getting the most out of user stories, it is time to provide a nice convenient overview of some essential practices that I’ve blogged about. I don’t have any additional parts planned, but if I come up with something new, I’ll make sure this list is u...

In this multi-part post, I’m going to share my personal experiences while working with user stories for gathering, tracking and planning requirements. <ul><li>What are they and why do you need them? </li><li>Who writes them and how do you control scope? </li><li...

In this multi-part post, I’m going to share my personal experiences while working with user stories for gathering, tracking and planning requirements. It currently consists out of three parts:<ul><li>What are they and why do you need them? </li><li>Who writes them and how...

In this multi-part post, I’m going to share my personal experiences while working with user stories for gathering, tracking and planning requirements. <ul><li>What are they and why do you need them? </li><li>Who writes them and how do you control scope? </li><li&...

Well, QCon 2010 is over, so it is time to travel back to the Netherlands and finally see my wife and daughter again. However, after the previous post, the quotes have been coming in on Twitter space. So, to complete one of the most intense conferences ever, here are some more funny, inspiring and...

The 2nd day of QCon was not one where I chose wisely. My focus for this conference was everything Agile and anything from the well-known speakers. So I ignored most sessions that had words like REST, SQL or Java in it. How wrong I was…. But I did not discover that until I heard and read about all...

One of the funny things of this QCon is the many tweets that the attendees have been throwing into the world wide web. That's great for a speaker because now they get immediate feedback on their performance, both good and bad. These are some of the quotes I found funny, inspiring or refreshing: ...

A few weeks ago I had a chat with Paul Jansen, CEO of a small Eindhoven-based company named Tiobe. You might indirectly know Tiobe for its programming language index and their commercial code checker ClockSharp. But they have also been hosting a C# Coding Standard I co-wrote for Philips Medical S...

What is it?
The Ubiquitous Language is a unified language consisting of verbs and nouns from the business domain of an enterprise system and should be used by all team members, stakeholders and other involved persons.
Why would you do it?
Because it creates a bridge of understanding between th...

What is it? An automatic build is a fully automated compilation of a specific version of your source code repository and which runs at regular intervals. More often than not, such a build includes additional steps such as running a static code analysis and code coverage, executing all automat...

What is it?
A mindset and practice that requires you to continuously reevaluate a region of code each time you make a change. In essence, you need to look at the code related to your changes and reconsider whether the original solution is still the best solution accounting for the information you...

As promised earlier, you can now download the concept version of my new Coding Guidelines for C# 3.0 and C# 4.0 from a dedicated CodePlex site at www.csharpcodinguidelines.com. The list of changes is quite big, and includes new guidelines covering object-oriented design, design principles, C# 4.0...

What is it? Coding guidelines, or coding standards if you will, are documents consisting of rules and recommendations on the use of C# in enterprise systems. They deal with code layout, naming guidelines, the proper use of the .NET Framework, tips on writing useful comments and XML documentat...

I've recently finished the book The Inmates Are Running The Asylum by Alan Cooper, a well known proponent for interaction design. To be honest, I never really saw the purpose of interaction design in our projects. But after reading this book, I now know I didn't really understand what it was abou...

It has been only 6 weeks since I first released Fluent Assertions to the public, followed by version 1.1 a week later. In the weeks thereafter, I received some nice ideas from the community which caused me to start working on the next version.
But it was not easy. I found that designing a small f...

What is it? An (online) list of verification tasks to sign off as part of the delivery process of a newly delivered unit of work. Usually these include things that are often forgotten, or aspects that require explicit verification. See an example of such a list here. Why would you do it? Becau...

In response to my posts on Peer Reviews, Unit Testing & TDD, and Common Code Layout, someone noticed that all these posts were part of my Team Foundation Server Development Practices series, but not every post actually mentioned TFS. Obviously, he was right. The reason for using the TFS prefi...

What is it?
A collection of rules stating what a block of code should look like. These may include rules on where line breaks are required, how to place parentheses, how much whitespace to put before and after those parentheses, how many spaces to use when indenting and where to insert empty line...

What is it? In essence, Test Driven Development (TDD) is a practice in which the interface and the behavior of a component is designed while writing a unit test. In other words, you typically start writing a test case and define the exact members, behavior and names on the fly. In fact, the wor...

What is it?
A formal review of all code and artifacts related to a requirement or task by another person than the original developer. Rework because of review comments must be revalidated afterwards.
Why would you do that?
Because the average developer introduces 10-50 bugs per 10...

Storyotypes are stereotypes for user stories that can help to define the right scope for your user stories. You can read more about these in the article Using Storyotypes to Split Bloated XP Stories and these slides. Team Foundation Server 2010 includes a new VSTS for Agile process template close...

As part of my many assignments, I’m compiling a bunch of Application Lifecycle Management practices into a set of development guidelines for bootstrapping our internal projects using Team Foundation Server. I’ve decided to share these with the community so that others may benefit from it as well....

During this week’s PDC 2008, I’ve been spending particular attention to sessions related to the new features of Visual Studio 2010 Team System and Team Foundation Server 2010. The one statement almost every session started with was that this release is huge, and I totally agree! I’ve not seen so ...

November 2, 2008

ALM Practices

So now that I’ve finished my multi-part post on getting the most out of user stories, it is time to provide a nice convenient overview of some essential practices that I’ve blogged about. I don’t have any additional parts planned, but if I come up with something new, I’ll make sure this list is u...

In this multi-part post, I’m going to share my personal experiences while working with user stories for gathering, tracking and planning requirements. <ul><li>What are they and why do you need them? </li><li>Who writes them and how do you control scope? </li><li...

In this multi-part post, I’m going to share my personal experiences while working with user stories for gathering, tracking and planning requirements. It currently consists out of three parts:<ul><li>What are they and why do you need them? </li><li>Who writes them and how...

In this multi-part post, I’m going to share my personal experiences while working with user stories for gathering, tracking and planning requirements. <ul><li>What are they and why do you need them? </li><li>Who writes them and how do you control scope? </li><li&...

What is it?
Technical Debt is every change to your code base that does not comply with the usual level of quality your team has agreed upon. Since this level of quality has been introduced to guarantee a healthy code base throughout the life time of the system, introducing technical debt essenti...

What is it? A domain model is typically depicted by a UML class diagram in which the classes and associations represent the business concepts and the relationships between them. Although you can use a piece of paper to draw up a domain model, in most cases a UML case tool is better suited for t...

What is it?
Using Team Foundation Server’s User Story, Task and Bug work item types as the central unit of work for all the activities done within a project.
Why would you do it?
Because it adds traceability between the functional requirements and the way these requirements have been realized ...

What is it?
The Ubiquitous Language is a unified language consisting of verbs and nouns from the business domain of an enterprise system and should be used by all team members, stakeholders and other involved persons.
Why would you do it?
Because it creates a bridge of understanding between th...

What is it? An automatic build is a fully automated compilation of a specific version of your source code repository and which runs at regular intervals. More often than not, such a build includes additional steps such as running a static code analysis and code coverage, executing all automat...

What is it?
A mindset and practice that requires you to continuously reevaluate a region of code each time you make a change. In essence, you need to look at the code related to your changes and reconsider whether the original solution is still the best solution accounting for the information you...

What is it? Coding guidelines, or coding standards if you will, are documents consisting of rules and recommendations on the use of C# in enterprise systems. They deal with code layout, naming guidelines, the proper use of the .NET Framework, tips on writing useful comments and XML documentat...

What is it? An (online) list of verification tasks to sign off as part of the delivery process of a newly delivered unit of work. Usually these include things that are often forgotten, or aspects that require explicit verification. See an example of such a list here. Why would you do it? Becau...

What is it?
A collection of rules stating what a block of code should look like. These may include rules on where line breaks are required, how to place parentheses, how much whitespace to put before and after those parentheses, how many spaces to use when indenting and where to insert empty line...

What is it? In essence, Test Driven Development (TDD) is a practice in which the interface and the behavior of a component is designed while writing a unit test. In other words, you typically start writing a test case and define the exact members, behavior and names on the fly. In fact, the wor...

What is it?
A formal review of all code and artifacts related to a requirement or task by another person than the original developer. Rework because of review comments must be revalidated afterwards.
Why would you do that?
Because the average developer introduces 10-50 bugs per 10...

As part of my many assignments, I’m compiling a bunch of Application Lifecycle Management practices into a set of development guidelines for bootstrapping our internal projects using Team Foundation Server. I’ve decided to share these with the community so that others may benefit from it as well....

January 4, 2010

Agile

Continuous what?
Well, if you browse the internet regularly, you will encounter two different terms that are used rather inconsistently: Continuous Delivery and Continuous Deployment. In my words, Continuous Delivery is a collection of various techniques, principles and tools that allow you to d...

The characteristics of a growing organizationDuring this year's QCon conference held in New York, I attended a full-day workshop on the scalability challenges a growing organization faces, hosted by Randy Shoup. Randy explained us how every start-up goes through several phases, each with a differ...

Somebody on Twitter recently posed the question whether innovation in software and agile development can co-exist or not. To remove any misinterpretation - something quite common for Twitter discussion - I asked him to clarify what he meant with the word 'innovation'. In short, any kind of softwa...

Suppose you're in the following situation.You and your team are supposed to start working on some important architectural changes that were long due.Your team is then asked by your manager to help build an important feature that requires the unique skills of your team, and ...

I think that the gist of this post should be pretty clear. Unfortunately I've fallen in that same trap myself many times. So often, I had to refrain myself from pulling somebody's keyboard from under their hands, just because I thought I could fix the problem at hand myself much faster. But with ...

Solving the versioning problemIf you're building libraries, products or any other software system, versioning is usually a pretty big deal. It's the only way to determine what version of that library, product or system you're looking at. Before an organization settles on a versioning strategy, ma...

Last week, I was so fortunate to attend a marvelous talk by Donald Reinertsen on a amazingly effective approach for prioritizing projects within an agile organization (and which is part of SAFe). Most managers will tend to prioritize their projects based on non-quantifiable attributes such as the...

Over the last year or two I attended numerous sprint demos, product demos and technical talks hosted by technical teams and individuals. Although I can definitely improve as a speaker myself, standing at the side-line and observing other speakers have made me pretty opinionated. I also get bored ...

Lets be honest here. For a very long time, if I had to choose between an averagely skilled but well-spoken developer and a very skilled and experienced introvert, I would probably choose the first. And yes, I do realize that these are two extremes and that most people have characteristics of both...

Hey architect! Building a complex system with four talented developers is one thing. Building one with 40 developers is a whole different league. The quote above is closer to the truth than you might expect. Many large organizations develop software systems with hundreds of software developers. ...

If there's one term next to agile that's so overloaded nobody knows what to expect, then it must be architect. Yes, you can specialize it by prefixing it with software, as in software architect. And with that, you would be able to determine that he or she is probably designing some kind software ...

As long as I can remember, I've been using an automatic build system to regularly verify the quality of the code based I've been working on. First using Team Foundation Server, but since a year or so, Jetbrains' Team City. In my current project we use continuous integration builds for running the...

I’m a big fan of just-in-time architecture (a.k.a. agile architecture) because it prevents me from trying to predict the future which, frankly, I suck at. So, although I generally start out with a reference architecture, a lot of changes happen after that point, when the functional requirements g...

More or less since the start of my assignment at my current client, four years ago, we have had some form of a cross-team stand-up at 10:00 every day (often named Scrum-of-Scrums). But now that we have around 10 teams, we started to notice some issues lately. People joined too late or didn't even...

Is your inbox also filling up with loads of emails all part of some kind of discussion where each reply contains the entire history again? Do you also get all kinds of notification emails from build servers, source control systems, and other things to which somebody is supposed to react? Do you o...

After six weeks of beta testing, it is time to remove the beta mark from Fluent Assertions 2.0. Since the beta was released, we fixed several little bugs that you won’t notice, but the original release notes still apply. Release 2.0 adds a lot of new features and improvements, most noticeably the...

This week I completed reading a new book titled The Cucumber Book: Behaviour-Driven Development for Testers and Developers by Matt Wynne and Aslak Hellesoy. Aslak is the founder of the Cucumber project (which is what SpecFlow for .NET is based on), and Matt is one of its most active developers. T...

Since I was already collecting the better articles that I read during the month for sharing with my colleagues and client’s coworkers, I might just as well share them here. Have fun reading them. Virtual Panel: Code-to-Test Ratios, TDD and BDD A great discussion by the authorities on TDD, B...

This is the fourth of several posts in which I’d like to share some of the things we learned throughout more than a year of Agile development using Scrum. Some of them might appear as open doors, but I wish I knew or thought about those before I started that project. Just by looking back at the m...

January 11, 2012

Architecture

A couple of months ago I shared some tips & tricks to help you prevent ending up in NuGet dependency hell. As a big fan of the SOLID principles, I've always wondered why nobody thought of applying these principles on the package level. If SOLID can help you to build cohesive, loosely coupled ...

During this year's QCon conference held in New York, I attended a full-day workshop on the scalability challenges a growing organization faces, hosted by Randy Shoup. In my previous two posts I discussed a model to understand the needs of an organization in its different life phases, as well as a...

During this year's QCon conference held in New York, I attended a full-day workshop on the scalability challenges a growing organization faces, hosted by Randy Shoup. In my previous post, I elaborated on Randy's classification system to illustrate the phases of a growing organization and how that...

Welcome to the dependency hell While working on a little open-source demo project, I ran into that well-known challenge of NuGet dependency management again. This little project results in a NuGet package, that on itself also relies on other packages. Now, if I would just add those dependencies ...

For a very VERY long time I've been convinced that aggressively refactoring your code in such a way that every piece of logic is repeated only once is a good thing. This practice, often referred to as DRY, or Don't Repeat Yourself, has been one of the many of my tools of choice and goes hand in h...

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...

In a previous project, I observed a typical communication mismatch. One team was demonstrating the technical details of architecture that, on first glance, was supposed to be a replacement for an existing architecture. The team demonstrated all kinds of technical solutions and showed us how much ...

If there's one term next to agile that's so overloaded nobody knows what to expect, then it must be architect. Yes, you can specialize it by prefixing it with software, as in software architect. And with that, you would be able to determine that he or she is probably designing some kind software ...

I’m a big fan of just-in-time architecture (a.k.a. agile architecture) because it prevents me from trying to predict the future which, frankly, I suck at. So, although I generally start out with a reference architecture, a lot of changes happen after that point, when the functional requirements g...

It has been almost two years since I've last compared NHibernate and Entity Framework, so with the recent alpha version of EF 6, it's about time to look at the current state of affair. I've been using NHibernate for more than 6 years so obviously I'm a bit biased. But I can't ignore that EF's fea...

I'm currently at Microsoft's Build conference and we're all receiving a Surface RT tablet. That means it's a great moment to talk about my plans for the Windows 8 Cookbook. I know, I know, it's a cheesy name so just be aware that I'm open to better suggestions. Since Silverlight is mostly dead, I...

Since I was already collecting the better articles that I read during the month for sharing with my colleagues and client’s coworkers, I might just as well share them here. Have fun reading them. Virtual Panel: Code-to-Test Ratios, TDD and BDD A great discussion by the authorities on TDD, B...

I spend a majority of my private time reading articles and blog posts, having discussions on Twitter, or engaging in conversations on conferences and community events. I'm realistic enough to understand that my opinions are not necessarily the truth, so I use those opportunities to challenge my o...

Since my first blog post on the Silverlight Cookbook in September 2010, I’ve invested a lot of private time in sharing my best practices on building line-of-business application in Silverlight. I shared my code on CodePlex, wrote an entire series of blog posts, and talked about the Cookbook at se...

The Rationale
As long as I have been using the Dependency Inversion Principle, Microsoft Unity has always been my preferred Inversion-of-Control framework. So it’s not strange that the Silverlight Cookbook has been using Unity 2 in both its WCF/REST layer as well as within the Silverlight client....

In the 2nd half of 2010 I was so fortunate to get the chance to build my first enterprise-class line-of-business application written in Silverlight 4. And although I designed my original reference architecture earlier that year, actually building it is a completely different thing. I learned a lo...

Well, QCon 2010 is over, so it is time to travel back to the Netherlands and finally see my wife and daughter again. However, after the previous post, the quotes have been coming in on Twitter space. So, to complete one of the most intense conferences ever, here are some more funny, inspiring and...

One of the funny things of this QCon is the many tweets that the attendees have been throwing into the world wide web. That's great for a speaker because now they get immediate feedback on their performance, both good and bad. These are some of the quotes I found funny, inspiring or refreshing: ...

Updated on March 3rd 2012 with a PDF of Dan North’s mind map
On the first day of the QCon conference in San Francisco, I attended a full-day tutorial titled "Secrets of Agile Architecture" hosted by Dan North. I didn't really know what to expect, but I was hoping for some refreshingly new insight...

This post is part of a series of blog posts detailing various aspects of the Silverlight Cookbook, an initiative to demonstrate proper design choices for building enterprise-class line-of-business applications with Silverlight (and WPF if you will). It currently consists out of the following part...

What is it?
Technical Debt is every change to your code base that does not comply with the usual level of quality your team has agreed upon. Since this level of quality has been introduced to guarantee a healthy code base throughout the life time of the system, introducing technical debt essenti...

The Domain Model is roughly designed according to the DDD principles where cross-aggregate logic is handled by the command handlers instead of the more traditional domain services. One thing that I changed after I attended Greg Young's DDD/CQRS training is that I no longer allow my domain entitie...

After having put the introduction and the commanding part behind us, let me explain how I deal with querying. Consider the following slice of the reference architecture.
My original intention was to use WCF Data Services combined with NHibernate on the query side. For one, because it allo...

<p $1=”$1”></p> <p $1=”$1”>After sharing my thoughts on unit testing in Silverlight and the combination of NHibernate and WCF Data Services, it is time to discuss the updated version of the Silverlight reference architecture from one of my posts of last year. To put the discu...

<p $1=”$1”></p> <p $1=”$1”></p> <p $1=”$1”></p> <p $1=”$1”></p> <p $1=”$1”></p> <p>This post is part of a series of blog posts detailing various aspects of the Silverlight Cookbook, an initiative to demonstrate prope...

Yesterday evening I did a talk on building a .NET-based system using Command Query Responsibility Segregation and Event Sourcing. We had a lot of awesome discussions on its applicability, and as usual, I ran out of time again. I could have easily spend a full day on this subject, but unfortunatel...

Update October 2010: I’ve started a new in-depth series on my current Silverlight 4 Reference Architecture.
Recently I've been catching up on Silverlight by reading Pro Silverlight 2 in C# and the many blogs and articles on Silverlight 3 and I'm seriously impressed. The reason for this sudden in...

July 29, 2009

Book

A while ago, some business man from the US who travels a lot throughout the US as part of his job, was sitting in his airline's business lounge for a drink. Right after finishing his 2nd, an attractive women approached him and offered him a drink in exchange for somebody to talk to. Somewhere hal...

This week I completed reading a new book titled The Cucumber Book: Behaviour-Driven Development for Testers and Developers by Matt Wynne and Aslak Hellesoy. Aslak is the founder of the Cucumber project (which is what SpecFlow for .NET is based on), and Matt is one of its most active developers. T...

July 30, 2012

Build 2012

Here we are at the fourth and last day of Microsoft Build 2012. That so many people showed up at the first session is quite surprising considering the attendee party that went on until midnight in downtown Seattle. It was a typical attendee party; free food and drinks and live music. Since being ...

So at this 3rd day here at Microsoft Build 2012, I'm actually getting lucky. Three great sessions in a row is obviously not something I've seen before. Hey, maybe I'll get to see four great sessions tomorrow. Anyway, with some of the technical debt from last night's Beerfest and a Halloween party...

Because day 2 of the Build conference wasn't any different, it seems that I must learn to accept that a maximum of two good sessions per day is going to be the standard. Fortunately the keynote was top notch with both Scott Hanselman and Scott Guthrie taking stage. They showed some of the power t...

Day 1 of Microsoft Build was in some way disappointing and at the same time exhilarating. To be honest, I was expecting to be updated on the new stuff Microsoft plans for the near future. The fact that the session list was not disclosed until a day ahead also helped reinforce that expectation. Bu...

October 31, 2012

C#

It has been almost two years since I've last compared NHibernate and Entity Framework, so with the recent alpha version of EF 6, it's about time to look at the current state of affair. I've been using NHibernate for more than 6 years so obviously I'm a bit biased. But I can't ignore that EF's fea...

After 50000 downloads and the recent final release of Visual Studio 2012 / C# 5.0 it was about time to do a thorough update of the C# Coding Guidelines. Although most of the guidelines have been preserved, I’ve tried to rewrite several of them using a less formal and less verbose writing style. I...

It has barely been more than two months ago, but the number of downloads through CodePlex and Nuget combined has exceeded 2000. Me and co-author Martin Opdam thought that to be a nice reason for releasing a new version of Fluent Assertions. This isn't a big release, but since we are following sem...

Yesterday I ended up being part of a discussion about using the ‘new’ keyword to hide base-class members. A colleague of mine used it to alter a base-class property in a derived class with the purpose of making it more strongly typed.
I’ve always rationalized guideline AV1010 (Don’t hide inherit...

Indeed it is, in particular within the part of the .NET community that believes test-first development is non-negotiable. We receive more and more suggestions, contributions and questions, and we’ve started to notice some blog posts here and there.
It’s not that it is being downloaded thousands ...

Last updated on September 22nd Unfortunately, the Microsoft Build conference conflicted with our company's 5-year anniversary and the associated sailing trip in Greece. Fortunately, the blogosphere and twitter-space provided plenty of opportunities for trying to grasp what the stuff Sinofsky and...

A few weeks ago I read The value of open-source is the vision not the source code and that made me think about my own reasons for starting Fluent Assertions, now more than a year ago. In the light of that article, lets briefly go over my own goals for Fluent Assertions. The intention of a unit te...

In the last couple of months, me and colleague Martin Opdam have spent a considerable amount of time on both improving the reporting capabilities of Fluent Assertions as well as fixing and incorporating various community contributions. Because of the many changes required, a very busy client proj...

It’s only February, but I’ve received so many requests from the community that another release of Fluent Assertions was easily warranted.
New Features
Somebody working under the name of CtrlAltDel pointed me at the little-known fact that floating point variables are inheritably inaccurate and...

Christmas usually means a week off and a whole lot of free time between the social obligations and spending some quality time with my wife and daughter. That’s why I decided to get rid of some of the backlog items for the next version of Fluent Assertions. And I’m done, version 1.3.0 is a fact. N...

I finally found some time to update the coding guidelines with some feedback I received since it’s original release in June this year. I’ve removed the following guidelines because I found that they were either very exotic or not general enough for most developers:
Avoid side-effects when...

December 23, 2010

CQRS

<p $1=”$1”></p> <p $1=”$1”>After sharing my thoughts on unit testing in Silverlight and the combination of NHibernate and WCF Data Services, it is time to discuss the updated version of the Silverlight reference architecture from one of my posts of last year. To put the discu...

Yesterday evening I did a talk on building a .NET-based system using Command Query Responsibility Segregation and Event Sourcing. We had a lot of awesome discussions on its applicability, and as usual, I ran out of time again. I could have easily spend a full day on this subject, but unfortunatel...

May 28, 2010

Coding Guidelines

After 50000 downloads and the recent final release of Visual Studio 2012 / C# 5.0 it was about time to do a thorough update of the C# Coding Guidelines. Although most of the guidelines have been preserved, I’ve tried to rewrite several of them using a less formal and less verbose writing style. I...

Yesterday I ended up being part of a discussion about using the ‘new’ keyword to hide base-class members. A colleague of mine used it to alter a base-class property in a derived class with the purpose of making it more strongly typed.
I’ve always rationalized guideline AV1010 (Don’t hide inherit...

November 30, 2011

Collaboration

Somebody on Twitter recently posed the question whether innovation in software and agile development can co-exist or not. To remove any misinterpretation - something quite common for Twitter discussion - I asked him to clarify what he meant with the word 'innovation'. In short, any kind of softwa...

Two weeks ago, I talked about Flowdock, an online tool to aggregate multiple sources into a single environment where agile teams can work together. I also promised to look at an alternative service named Slack. When we introduced Flowdock, somewhere in November 2013, Slack was still in its very e...

Is your inbox also filling up with loads of emails all part of some kind of discussion where each reply contains the entire history again? Do you also get all kinds of notification emails from build servers, source control systems, and other things to which somebody is supposed to react? Do you o...

January 11, 2015

Cookbook

I'm currently at Microsoft's Build conference and we're all receiving a Surface RT tablet. That means it's a great moment to talk about my plans for the Windows 8 Cookbook. I know, I know, it's a cheesy name so just be aware that I'm open to better suggestions. Since Silverlight is mostly dead, I...

Since my first blog post on the Silverlight Cookbook in September 2010, I’ve invested a lot of private time in sharing my best practices on building line-of-business application in Silverlight. I shared my code on CodePlex, wrote an entire series of blog posts, and talked about the Cookbook at se...

Why? Because even though think I have a reasonable idea of when a user interface is consistent and user friendly, I suck at the raw design skills. Just check out the current ‘design’ if you don’t believe me.
I’m actually looking for something that resembles the Cosmopolitan theme or MetroTwit:
...

The Rationale
As long as I have been using the Dependency Inversion Principle, Microsoft Unity has always been my preferred Inversion-of-Control framework. So it’s not strange that the Silverlight Cookbook has been using Unity 2 in both its WCF/REST layer as well as within the Silverlight client....

Although it might not seem like that, I am still working on the Silverlight Cookbook. However, I’ve just moved to a new house, so I ran out of time recently. Fortunately, since my colleague Martin Opdam is actively working on Fluent Assertions, so I only have to divide my free time between the co...

In the 2nd half of 2010 I was so fortunate to get the chance to build my first enterprise-class line-of-business application written in Silverlight 4. And although I designed my original reference architecture earlier that year, actually building it is a completely different thing. I learned a lo...

This post is part of a series of blog posts detailing various aspects of the Silverlight Cookbook, an initiative to demonstrate proper design choices for building enterprise-class line-of-business applications with Silverlight (and WPF if you will). It currently consists out of the following part...

<p $1=”$1”></p> <p $1=”$1”></p> <p $1=”$1”></p> <p $1=”$1”></p> <p $1=”$1”></p> <p>This post is part of a series of blog posts detailing various aspects of the Silverlight Cookbook, an initiative to demonstrate prope...

September 20, 2010

DevDays09

Many attempts have been made to improve the overal quality of our software development efforts, but if there’s one I’d like to put some attention on, it’s Test Driven Development. It’s design-first, test-first approach has proved significant increases in overal quality. However, TDD is not easy a...

Patterns & Practices has just finished compiling a list of candidate features and improvements for the next installment of the Enterprise Library. Grigori Melnik, the Enterprise Library’s product manager has opened an online survey and invites the .NET community to share their priorities and,...

April 1, 2009

DevDays10

This morning, on the Developer Days 2010, I did a talk on the current state of affairs of the 4.0 version of the Entity Framework, including a rough comparison with NHibernate 2.1. Apparently this is something that’s on the mind of many people. The room was supposed to accommodate a maximum of 80...

Some of you who have been visiting the Dutch Developer Days 2010 in The Hague today may have noticed the flyers and banners for promoting the new online version of the .NET Magazine. Those who already know me may have noticed that it’s me on those banners.
Since the photographer spe...

March 30, 2010

Events

Let's be honest here. Since Microsoft has been shipping technical previews of Windows 10, I've been repaving my laptop a couple of times and then reverted to Windows 8.1. I didn't like the intermediate touch experience and stability was also not its greatest strengths. In fact, I reverted to 8.1 ...

That was the weirdest conference party ever. No music, no dancing, just free food and beer. Well, our of me, two Austrian guys and a fellow from Dakota had plenty of great stories to share. And did I mention the free beer? Freeing people and optimizing the tools As any good professional would do...

So here I am in New York, all alone and looking for something fun to do during a rainy day preceding QCon New York. The Empire State Building was covered in clouds so what can you do? Well, you go to meetup.com and browse the many events that happen in a big city like this. Country dancing and ro...

Sometimes you run into a workshop that you didn't have any particular expectations for and then your mind is completely blown. That happened to me on the first day of tutorials here at QCon San Francisco. "By whom?" I hear you asking. Well, by Steve Peha and Amr Elssamadisy and heavily supported ...

As with any conference, speakers and attendees tend to make a lot of interesting, inspiring or funny statements. QCon 2013 was no different. Some key takeaways:
“Can't tune until you have real users.” (Stephen Rylander) "If someone comes in suggesting that we move a release date… we mock t...

Man, it really feels like we've been around for ages, but this is just the 3rd day of QCon San Francisco. After a quick breakfast at the local Starbucks we dropped in on another keynote, right after the daily introduction by all track owners. The keynote was done by Brendan Eich, the inventor of ...

Although I did get the feeling that QCon isn't at the same quality level as the last time I was here, I did manage to pick up a considerable amount of new ideas and insights on the first day. Not anything mind blowing, but still worth the trip. So let's see what the 2nd day did bring us. The day...

So after all that fun during the first weekend (and about which I’ll blog separately), now it's the time to finally shift our attention to the reason for which we're in San Francisco in the first place; InfoQ's highly rated internal software conference QCon. Since my previous visit to QCon was su...

A question which was asked many times during the week was whether or not this trip to Build 2012 in Redmond was worth the time and money. Even after four days of raw content, there is no short answer here. As Dennis Vroegop clearly illustrated, the organization was definitely not up to the task...

Here we are at the fourth and last day of Microsoft Build 2012. That so many people showed up at the first session is quite surprising considering the attendee party that went on until midnight in downtown Seattle. It was a typical attendee party; free food and drinks and live music. Since being ...

So at this 3rd day here at Microsoft Build 2012, I'm actually getting lucky. Three great sessions in a row is obviously not something I've seen before. Hey, maybe I'll get to see four great sessions tomorrow. Anyway, with some of the technical debt from last night's Beerfest and a Halloween party...

Because day 2 of the Build conference wasn't any different, it seems that I must learn to accept that a maximum of two good sessions per day is going to be the standard. Fortunately the keynote was top notch with both Scott Hanselman and Scott Guthrie taking stage. They showed some of the power t...

Day 1 of Microsoft Build was in some way disappointing and at the same time exhilarating. To be honest, I was expecting to be updated on the new stuff Microsoft plans for the near future. The fact that the session list was not disclosed until a day ahead also helped reinforce that expectation. Bu...

This week is Microsoft Build 2012. For those who don’t know what that is, it’s Microsoft largest and most important annual event for sharing the future of the company’s plans around Windows, Windows Phone and their development platforms. Since with most trips to the US, it’s usually cheaper to ta...

Yesterday I did a 2-hour talk on getting the most out of UI automation, particularly using SpecFlow and WaTiN. You can find the slides down here and the demo code at GitHub.<iframe allowfullscreen="" frameborder="0" height="356" marginheight="0" marginwidth="0" scrolling="no" src="http://www.s...

Just to be clear, I didn’t actually attend QCon New York this year. But after the experience of attending QCon San Francisco in 2010, I never forget the many great quotes you’ll find on Twitter. This time was no different.
"Distributed objects failed; for very good reasons. Values rule on the w...

Last updated on September 22nd Unfortunately, the Microsoft Build conference conflicted with our company's 5-year anniversary and the associated sailing trip in Greece. Fortunately, the blogosphere and twitter-space provided plenty of opportunities for trying to grasp what the stuff Sinofsky and...

I’m honored to have been selected to speak at my first event in the United Kingdom, Developer Developer Developer North, hosted at the University of Sunderland, near New Castle.
Our job as a software developer seems to revolve mostly around programming languages, frameworks and Visual Studio. And...

Somebody recently asked me what sessions I was planning to attend at the upcoming 2011 edition of the Microsoft Developer Days in The Hague. To be honest, my primary reason for going to a Dutch conference is to chat with fellow .NET enthusiasts, and attending sessions is usually a side-effect of ...

I’m very happy that I’ll be speaking at a number of very nice local and international conferences.
On Saturday March 26th, I’ll be joining the Dutch Code Camp event where I’ll be doing a chalk’n’talk on my Silverlight Cookbook initiative.
<ul> <li>On Wednesday, April 27th, I will t...

Although the Dutch Microsoft Developer Days is mostly about foreign speakers, the organization has a recurring event called the wildcard sessions. This allowed me to speak at the biggest Dutch conference of the year for two years in a row. Unfortunately, the number of proposals has exploded this ...

Last Thursday, me and my employer Aviva Solutions hosted the December edition of the DotNED user group in Leiden. And yesterday a shared my Silverlight reference architecture on this year’s last SDN Event. I gave two talks that evening and one last night and wanted to share my slides and example ...

Well, QCon 2010 is over, so it is time to travel back to the Netherlands and finally see my wife and daughter again. However, after the previous post, the quotes have been coming in on Twitter space. So, to complete one of the most intense conferences ever, here are some more funny, inspiring and...

The 2nd day of QCon was not one where I chose wisely. My focus for this conference was everything Agile and anything from the well-known speakers. So I ignored most sessions that had words like REST, SQL or Java in it. How wrong I was…. But I did not discover that until I heard and read about all...

The compression ratio of the content versus the timing available is quite high here at QCon. Already at the first official day, I attended 7 (!) talks. That's quite a lot of information to process. Unfortunately, the difference in quality is really noticeable. Some talks were absolutely awesome a...

One of the funny things of this QCon is the many tweets that the attendees have been throwing into the world wide web. That's great for a speaker because now they get immediate feedback on their performance, both good and bad. These are some of the quotes I found funny, inspiring or refreshing: ...

Updated on March 3rd 2012 with a PDF of Dan North’s mind map
On the first day of the QCon conference in San Francisco, I attended a full-day tutorial titled "Secrets of Agile Architecture" hosted by Dan North. I didn't really know what to expect, but I was hoping for some refreshingly new insight...

This week I'll be attending QCON, an international conference on architecture and Agile held in San Francisco. Because a flight on Sunday was 400 euros more expensive than a flight on Saturday, I decided to rent a nice convertible and use the day off to take a nice road trip through the area to t...

Most of us will be familiar with the standard 3- or 4-layer architecture you often see in larger enterprise systems. Some are already practicing Domain Driven Design and work together with the business to clarify the domain concepts. Perhaps you’ve noticed that is difficult to get the intention o...

This morning, on the Developer Days 2010, I did a talk on the current state of affairs of the 4.0 version of the Entity Framework, including a rough comparison with NHibernate 2.1. Apparently this is something that’s on the mind of many people. The room was supposed to accommodate a maximum of 80...

Some of you who have been visiting the Dutch Developer Days 2010 in The Hague today may have noticed the flyers and banners for promoting the new online version of the .NET Magazine. Those who already know me may have noticed that it’s me on those banners.
Since the photographer spe...

March 30, 2010

Fluent Assertions

Some background In my recent post about the responsibilities of an open-source developer I said that the author of an open-source project is fully entitled to reject a contribution. In the case of Fluent Assertions, this is no different. Some things just aren't a good fit for a general purpose a...

The proudest moment anybody initiating an open-source project can experience is when that project finally gains the momentum to make a difference within the community it targets. When my colleague Martin and I published the first release of Fluent Assertions on CodePlex in 2011 (yeah, those were ...

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...

With all credits going to Oren Novotny, Tommy Long, Stuart Blackler and some of the Microsoft folks behind the .NET Core projects, Fluent Assertions 4.0 introduces support for the new platforms .NET 4.6, CoreCLR and .NET Native. Since Fluent Assertions has adopted the Semantic Versioning scheme...

As part of stabilizing an upcoming release, I always dog food a beta package against the 12000 unit tests in one of our bigger projects. In the early days, that would surface all kinds of edge cases I never thought of. In every single case, the first thing I would do is to add a new unit test to ...

Just a quick post to let you all know that I’ve just published a new version of Fluent Assertions with a load of little improvements that will improve your life as a unit test developer a little bit.
New features Added CompareEnumsAsString and CompareEnumsAsValue to the options taken byShouldBe...

Yesterday, much later than planned, Fluent Assertions 3.1 as well as its companion project Fluent Assertions for Xamarin were released on Github and NuGet. As is becoming quite common this year, the honors for most active contributors once again go to Adam Voss and Oren Novotny. Next to being the...

Boy do I love the .NET community. Since I moved Fluent Assertions to Github, people have been creating 32 forks and provided me with 37 pull requests. In fact, release 3.0 has been made possible by the likes of Adam Voss (who provided a lot of those pull requests), Maarten Balliauw (for setting u...

It has been way too long since I last released a new version of Fluent Assertions, but somehow my intention to deliver at least every three months has once again failed by the obligations a working husband and father of two has. Nonetheless, Fluent Assertions 2.1 is a fact. And although it isn't ...

I'm currently at Microsoft's Build conference and we're all receiving a Surface RT tablet. That means it's a great moment to talk about my plans for the Windows 8 Cookbook. I know, I know, it's a cheesy name so just be aware that I'm open to better suggestions. Since Silverlight is mostly dead, I...

After six weeks of beta testing, it is time to remove the beta mark from Fluent Assertions 2.0. Since the beta was released, we fixed several little bugs that you won’t notice, but the original release notes still apply. Release 2.0 adds a lot of new features and improvements, most noticeably the...

After many months of development, in particular during in evenings after work and in the weekends, we’re proud to present the first (and hopefully the only) beta of Fluent Assertions 2.0. Together with my good friend and coworker Martin Opdam, and supported by noticeable contributors like Oren No...

While we are working on the next major version of Fluent Assertions, we received several smaller bug reports that we bundled in release 1.7.1.
Fixed a bug that occurs when two collections are compared for equality but the collection contains null. Fixed a stack overflow while formatting an obje...

It has barely been more than two months ago, but the number of downloads through CodePlex and Nuget combined has exceeded 2000. Me and co-author Martin Opdam thought that to be a nice reason for releasing a new version of Fluent Assertions. This isn't a big release, but since we are following sem...

Indeed it is, in particular within the part of the .NET community that believes test-first development is non-negotiable. We receive more and more suggestions, contributions and questions, and we’ve started to notice some blog posts here and there.
It’s not that it is being downloaded thousands ...

A few weeks ago I read The value of open-source is the vision not the source code and that made me think about my own reasons for starting Fluent Assertions, now more than a year ago. In the light of that article, lets briefly go over my own goals for Fluent Assertions. The intention of a unit te...

In the last couple of months, me and colleague Martin Opdam have spent a considerable amount of time on both improving the reporting capabilities of Fluent Assertions as well as fixing and incorporating various community contributions. Because of the many changes required, a very busy client proj...

As of now you can download the latest version of Fluent Assertions directly from within Visual Studio 2010. Just install the NuGet package manager, select Add Library Package Reference from the project context menu and search for FluentAssertions.

Yesterday, I blogged about the newest release of Fluent Assertions for .NET and Silverlight and promised to demonstrate the new event monitoring syntax. Since I’m a Silverlight addict, I decided to show you an example of a MVVM unit test when using the traditional Assert class and the same exampl...

Christmas usually means a week off and a whole lot of free time between the social obligations and spending some quality time with my wife and daughter. That’s why I decided to get rid of some of the backlog items for the next version of Fluent Assertions. And I’m done, version 1.3.0 is a fact. N...

January 3, 2011

InRetrospect

This is the fourth of several posts in which I’d like to share some of the things we learned throughout more than a year of Agile development using Scrum. Some of them might appear as open doors, but I wish I knew or thought about those before I started that project. Just by looking back at the m...

This is the third of several posts in which I’d like to share some of the things we learned throughout more than 14 sprints of Agile development using Scrum. Some of them might appear as open doors, but I wish I knew or thought about those before I started that project. Just by looking back at th...

This is the second of several posts in which I’d like to share some of the things we learned throughout more than 14 sprints of Agile development using Scrum. Some of them might appear as open doors, but I wish I knew or thought about those before I started that project. Just by looking back at t...

This is the first of several posts in which I’d like to share some of the things we decided throughout 14 sprint retrospective. Some of them might appear as open doors, but I wish I knew or thought about those before I started that project. Just by looking back at the mistakes a team of 9 develop...

September 26, 2011

Metro

Since my first blog post on the Silverlight Cookbook in September 2010, I’ve invested a lot of private time in sharing my best practices on building line-of-business application in Silverlight. I shared my code on CodePlex, wrote an entire series of blog posts, and talked about the Cookbook at se...

March 13, 2012

OWIN Recipes

In the sixth post of this series I talked about how you can use Swagger to create real useful documentation for your API. In this seventh and probably last post, I'd like to present some spices to make that OWIN middleware component extra special.
Spice 1: Automate your entire bu...

In the fifth post of this series I talked about some PowerShell tips to align the versions of all NuGet packages. In this sixth post, I'd like to show you how you can make your HTTP API much easier to use.
Ingredient 7: Swagger-enabled documentation
If your component exposes an HTTP API based o...

In the fourth installment of this series I proposed a pattern for postponing expensive operations from inside your middleware component until the OWIN pipeline has been constructed. In this post, I'm going to talk about aligning package dependency versions. Why? Well, in my experience a well-desi...

In my last post I talked about unit testing your OWIN pipeline and briefly mentioned that you shouldn't do any heavy lifting from inside your UseWhatever method. Examples of that include starting background tasks or connecting to other services (through that HttpMessageHandler). If you're lucky, ...

In my last post, I talked about decoupling the construction of the OWIN pipeline from the definition of the OWIN middleware component. In this post, I’m going to talk about the next ingredient, the testing story.Ingredient 4: Testing your entire HTTP pipelineIn most projects that are building ASP...

In my last post, I talked about naming conventions and reducing the number of public dependencies, the first two ingredients of a recipe for well-designed OWIN middleware components. In this post, I'm going to talk about separating the OWIN pipeline construction from the middleware defi...

My main focus the last couple of months has been on building components that offer HTTP-based services. This whole component-oriented focus is something we've been focusing on the last year or so because we wanted to actively trying move away from building monolithic systems. Tools like OWIN, NuG...

July 16, 2015

Quality

At Aviva Solutions, we’ve been using Git for a little of over two years now and I can wholeheartedly say that after having worked with TFS for years, we'll never go back… ever. But with any new technology, practice or methodology, you need to go through several cycles before you find a way that w...

Somebody on Twitter recently posed the question whether innovation in software and agile development can co-exist or not. To remove any misinterpretation - something quite common for Twitter discussion - I asked him to clarify what he meant with the word 'innovation'. In short, any kind of softwa...

The proudest moment anybody initiating an open-source project can experience is when that project finally gains the momentum to make a difference within the community it targets. When my colleague Martin and I published the first release of Fluent Assertions on CodePlex in 2011 (yeah, those were ...

Suppose you're in the following situation.You and your team are supposed to start working on some important architectural changes that were long due.Your team is then asked by your manager to help build an important feature that requires the unique skills of your team, and ...

After 50000 downloads and the recent final release of Visual Studio 2012 / C# 5.0 it was about time to do a thorough update of the C# Coding Guidelines. Although most of the guidelines have been preserved, I’ve tried to rewrite several of them using a less formal and less verbose writing style. I...

This week I completed reading a new book titled The Cucumber Book: Behaviour-Driven Development for Testers and Developers by Matt Wynne and Aslak Hellesoy. Aslak is the founder of the Cucumber project (which is what SpecFlow for .NET is based on), and Matt is one of its most active developers. T...

This is the third of several posts in which I’d like to share some of the things we learned throughout more than 14 sprints of Agile development using Scrum. Some of them might appear as open doors, but I wish I knew or thought about those before I started that project. Just by looking back at th...

It’s only February, but I’ve received so many requests from the community that another release of Fluent Assertions was easily warranted.
New Features
Somebody working under the name of CtrlAltDel pointed me at the little-known fact that floating point variables are inheritably inaccurate and...

I finally found some time to update the coding guidelines with some feedback I received since it’s original release in June this year. I’ve removed the following guidelines because I found that they were either very exotic or not general enough for most developers:
Avoid side-effects when...

Last Thursday, me and my employer Aviva Solutions hosted the December edition of the DotNED user group in Leiden. And yesterday a shared my Silverlight reference architecture on this year’s last SDN Event. I gave two talks that evening and one last night and wanted to share my slides and example ...

What is it?
Technical Debt is every change to your code base that does not comply with the usual level of quality your team has agreed upon. Since this level of quality has been introduced to guarantee a healthy code base throughout the life time of the system, introducing technical debt essenti...

A few weeks ago I had a chat with Paul Jansen, CEO of a small Eindhoven-based company named Tiobe. You might indirectly know Tiobe for its programming language index and their commercial code checker ClockSharp. But they have also been hosting a C# Coding Standard I co-wrote for Philips Medical S...

What is it? A domain model is typically depicted by a UML class diagram in which the classes and associations represent the business concepts and the relationships between them. Although you can use a piece of paper to draw up a domain model, in most cases a UML case tool is better suited for t...

What is it?
The Ubiquitous Language is a unified language consisting of verbs and nouns from the business domain of an enterprise system and should be used by all team members, stakeholders and other involved persons.
Why would you do it?
Because it creates a bridge of understanding between th...

What is it?
A mindset and practice that requires you to continuously reevaluate a region of code each time you make a change. In essence, you need to look at the code related to your changes and reconsider whether the original solution is still the best solution accounting for the information you...

As promised earlier, you can now download the concept version of my new Coding Guidelines for C# 3.0 and C# 4.0 from a dedicated CodePlex site at www.csharpcodinguidelines.com. The list of changes is quite big, and includes new guidelines covering object-oriented design, design principles, C# 4.0...

What is it? Coding guidelines, or coding standards if you will, are documents consisting of rules and recommendations on the use of C# in enterprise systems. They deal with code layout, naming guidelines, the proper use of the .NET Framework, tips on writing useful comments and XML documentat...

It has been only 6 weeks since I first released Fluent Assertions to the public, followed by version 1.1 a week later. In the weeks thereafter, I received some nice ideas from the community which caused me to start working on the next version.
But it was not easy. I found that designing a small f...

As part of my effort to improve the type-safety of Fluent Assertions, I’ve been investigating the possibility to use C# extension methods all the way. Unfortunately I think I’ve ran into the limitations of C# 3.0 (and C# 4.0 since it doesn’t add anything useful for this). Essentially, I’d like to...

What is it?
A collection of rules stating what a block of code should look like. These may include rules on where line breaks are required, how to place parentheses, how much whitespace to put before and after those parentheses, how many spaces to use when indenting and where to insert empty line...

March 15, 2010

Silverlight

Since my first blog post on the Silverlight Cookbook in September 2010, I’ve invested a lot of private time in sharing my best practices on building line-of-business application in Silverlight. I shared my code on CodePlex, wrote an entire series of blog posts, and talked about the Cookbook at se...

Why? Because even though think I have a reasonable idea of when a user interface is consistent and user friendly, I suck at the raw design skills. Just check out the current ‘design’ if you don’t believe me.
I’m actually looking for something that resembles the Cosmopolitan theme or MetroTwit:
...

The Rationale
As long as I have been using the Dependency Inversion Principle, Microsoft Unity has always been my preferred Inversion-of-Control framework. So it’s not strange that the Silverlight Cookbook has been using Unity 2 in both its WCF/REST layer as well as within the Silverlight client....

Last updated on September 22nd Unfortunately, the Microsoft Build conference conflicted with our company's 5-year anniversary and the associated sailing trip in Greece. Fortunately, the blogosphere and twitter-space provided plenty of opportunities for trying to grasp what the stuff Sinofsky and...

Although it might not seem like that, I am still working on the Silverlight Cookbook. However, I’ve just moved to a new house, so I ran out of time recently. Fortunately, since my colleague Martin Opdam is actively working on Fluent Assertions, so I only have to divide my free time between the co...

Before I continue with the rest of this post, I first need to make a disclaimer. I'm in no way an expert on all things Microsoft has to offer in the web realm and have yet to complete a full-fledged ASP.NET MVC & JQuery project.
However, I see myself as someone who quickly grasps the potenti...

Somebody recently asked me what sessions I was planning to attend at the upcoming 2011 edition of the Microsoft Developer Days in The Hague. To be honest, my primary reason for going to a Dutch conference is to chat with fellow .NET enthusiasts, and attending sessions is usually a side-effect of ...

In the 2nd half of 2010 I was so fortunate to get the chance to build my first enterprise-class line-of-business application written in Silverlight 4. And although I designed my original reference architecture earlier that year, actually building it is a completely different thing. I learned a lo...

It’s only February, but I’ve received so many requests from the community that another release of Fluent Assertions was easily warranted.
New Features
Somebody working under the name of CtrlAltDel pointed me at the little-known fact that floating point variables are inheritably inaccurate and...

Although the Dutch Microsoft Developer Days is mostly about foreign speakers, the organization has a recurring event called the wildcard sessions. This allowed me to speak at the biggest Dutch conference of the year for two years in a row. Unfortunately, the number of proposals has exploded this ...

Yesterday, I blogged about the newest release of Fluent Assertions for .NET and Silverlight and promised to demonstrate the new event monitoring syntax. Since I’m a Silverlight addict, I decided to show you an example of a MVVM unit test when using the traditional Assert class and the same exampl...

Last Thursday, me and my employer Aviva Solutions hosted the December edition of the DotNED user group in Leiden. And yesterday a shared my Silverlight reference architecture on this year’s last SDN Event. I gave two talks that evening and one last night and wanted to share my slides and example ...

Last week we put our first full-blown Silverlight 4 line-of-business application into production, and just yesterday, we’ve run into our first production issue. Consider the width specifications of the DataGrid columns in this XAML fragment:
This XAML file was generated by Expression Blend and h...

This post is part of a series of blog posts detailing various aspects of the Silverlight Cookbook, an initiative to demonstrate proper design choices for building enterprise-class line-of-business applications with Silverlight (and WPF if you will). It currently consists out of the following part...

The Domain Model is roughly designed according to the DDD principles where cross-aggregate logic is handled by the command handlers instead of the more traditional domain services. One thing that I changed after I attended Greg Young's DDD/CQRS training is that I no longer allow my domain entitie...

After having put the introduction and the commanding part behind us, let me explain how I deal with querying. Consider the following slice of the reference architecture.
My original intention was to use WCF Data Services combined with NHibernate on the query side. For one, because it allo...

<p $1=”$1”></p> <p $1=”$1”>After sharing my thoughts on unit testing in Silverlight and the combination of NHibernate and WCF Data Services, it is time to discuss the updated version of the Silverlight reference architecture from one of my posts of last year. To put the discu...

As I already mentioned in my previous post, we're building a line-of-business app using Silverlight 4 and WCF Data Services. I really think Silverlight is great for those kind of systems, but since it is based on a different run-time as the full .NET framework, you may wonder what you'll run into...

<p $1=”$1”></p> <p $1=”$1”></p> <p $1=”$1”></p> <p $1=”$1”></p> <p $1=”$1”></p> <p>This post is part of a series of blog posts detailing various aspects of the Silverlight Cookbook, an initiative to demonstrate prope...

While working on my demo code for my full-day talk on Software Development Practices in Practice I was a bit ambitious and introduced both Silverlight 4 and WCF RIA Services. Apart from the fact that the preparation caused a bit too much of my social live, I ran in some things I don’t really like...

Update October 2010: I’ve started a new in-depth series on my current Silverlight 4 Reference Architecture.
In July I posted about my considerations for a Silverlight Reference Architecture, and in December I talked about it in my chalk’n’talk session on architecture, WCF RIA Services and Silver...

Update October 2010: I’ve started a new in-depth series on my current Silverlight 4 Reference Architecture.
Recently I've been catching up on Silverlight by reading Pro Silverlight 2 in C# and the many blogs and articles on Silverlight 3 and I'm seriously impressed. The reason for this sudden in...

July 29, 2009

TFS

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 ...

Almost every time I do some kind of talk somewhere, people ask me for advice on how to convince their management that they should drop Microsoft Team Foundation Server's source control system and move over to Git. In this post, I'll be talking about the source control system only. Both Visual Stu...

What is it?
Using Team Foundation Server’s User Story, Task and Bug work item types as the central unit of work for all the activities done within a project.
Why would you do it?
Because it adds traceability between the functional requirements and the way these requirements have been realized ...

What is it? An automatic build is a fully automated compilation of a specific version of your source code repository and which runs at regular intervals. More often than not, such a build includes additional steps such as running a static code analysis and code coverage, executing all automat...

What is it? Coding guidelines, or coding standards if you will, are documents consisting of rules and recommendations on the use of C# in enterprise systems. They deal with code layout, naming guidelines, the proper use of the .NET Framework, tips on writing useful comments and XML documentat...

What is it? An (online) list of verification tasks to sign off as part of the delivery process of a newly delivered unit of work. Usually these include things that are often forgotten, or aspects that require explicit verification. See an example of such a list here. Why would you do it? Becau...

In response to my posts on Peer Reviews, Unit Testing & TDD, and Common Code Layout, someone noticed that all these posts were part of my Team Foundation Server Development Practices series, but not every post actually mentioned TFS. Obviously, he was right. The reason for using the TFS prefi...

Yesterday, a colleague of mine asked for some guidance on how to partition a Visual Studio solution into individual projects. Instead of simply answering his email I thought that blogging about it may be useful for others as well, so here are my rules:
In general, have as few projects as possi...

What is it?
A formal review of all code and artifacts related to a requirement or task by another person than the original developer. Rework because of review comments must be revalidated afterwards.
Why would you do that?
Because the average developer introduces 10-50 bugs per 10...

Storyotypes are stereotypes for user stories that can help to define the right scope for your user stories. You can read more about these in the article Using Storyotypes to Split Bloated XP Stories and these slides. Team Foundation Server 2010 includes a new VSTS for Agile process template close...

As part of my many assignments, I’m compiling a bunch of Application Lifecycle Management practices into a set of development guidelines for bootstrapping our internal projects using Team Foundation Server. I’ve decided to share these with the community so that others may benefit from it as well....

January 4, 2010

Testing

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...

After six weeks of beta testing, it is time to remove the beta mark from Fluent Assertions 2.0. Since the beta was released, we fixed several little bugs that you won’t notice, but the original release notes still apply. Release 2.0 adds a lot of new features and improvements, most noticeably the...

Yesterday I did a 2-hour talk on getting the most out of UI automation, particularly using SpecFlow and WaTiN. You can find the slides down here and the demo code at GitHub.<iframe allowfullscreen="" frameborder="0" height="356" marginheight="0" marginwidth="0" scrolling="no" src="http://www.s...

I spend a majority of my private time reading articles and blog posts, having discussions on Twitter, or engaging in conversations on conferences and community events. I'm realistic enough to understand that my opinions are not necessarily the truth, so I use those opportunities to challenge my o...

While we are working on the next major version of Fluent Assertions, we received several smaller bug reports that we bundled in release 1.7.1.
Fixed a bug that occurs when two collections are compared for equality but the collection contains null. Fixed a stack overflow while formatting an obje...

It has barely been more than two months ago, but the number of downloads through CodePlex and Nuget combined has exceeded 2000. Me and co-author Martin Opdam thought that to be a nice reason for releasing a new version of Fluent Assertions. This isn't a big release, but since we are following sem...

Indeed it is, in particular within the part of the .NET community that believes test-first development is non-negotiable. We receive more and more suggestions, contributions and questions, and we’ve started to notice some blog posts here and there.
It’s not that it is being downloaded thousands ...

A few weeks ago I read The value of open-source is the vision not the source code and that made me think about my own reasons for starting Fluent Assertions, now more than a year ago. In the light of that article, lets briefly go over my own goals for Fluent Assertions. The intention of a unit te...

In the last couple of months, me and colleague Martin Opdam have spent a considerable amount of time on both improving the reporting capabilities of Fluent Assertions as well as fixing and incorporating various community contributions. Because of the many changes required, a very busy client proj...

It’s only February, but I’ve received so many requests from the community that another release of Fluent Assertions was easily warranted.
New Features
Somebody working under the name of CtrlAltDel pointed me at the little-known fact that floating point variables are inheritably inaccurate and...

As of now you can download the latest version of Fluent Assertions directly from within Visual Studio 2010. Just install the NuGet package manager, select Add Library Package Reference from the project context menu and search for FluentAssertions.

Yesterday, I blogged about the newest release of Fluent Assertions for .NET and Silverlight and promised to demonstrate the new event monitoring syntax. Since I’m a Silverlight addict, I decided to show you an example of a MVVM unit test when using the traditional Assert class and the same exampl...

Christmas usually means a week off and a whole lot of free time between the social obligations and spending some quality time with my wife and daughter. That’s why I decided to get rid of some of the backlog items for the next version of Fluent Assertions. And I’m done, version 1.3.0 is a fact. N...

Last Thursday, me and my employer Aviva Solutions hosted the December edition of the DotNED user group in Leiden. And yesterday a shared my Silverlight reference architecture on this year’s last SDN Event. I gave two talks that evening and one last night and wanted to share my slides and example ...

As I already mentioned in my previous post, we're building a line-of-business app using Silverlight 4 and WCF Data Services. I really think Silverlight is great for those kind of systems, but since it is based on a different run-time as the full .NET framework, you may wonder what you'll run into...

It has been only 6 weeks since I first released Fluent Assertions to the public, followed by version 1.1 a week later. In the weeks thereafter, I received some nice ideas from the community which caused me to start working on the next version.
But it was not easy. I found that designing a small f...

As part of my effort to improve the type-safety of Fluent Assertions, I’ve been investigating the possibility to use C# extension methods all the way. Unfortunately I think I’ve ran into the limitations of C# 3.0 (and C# 4.0 since it doesn’t add anything useful for this). Essentially, I’d like to...

What is it? An (online) list of verification tasks to sign off as part of the delivery process of a newly delivered unit of work. Usually these include things that are often forgotten, or aspects that require explicit verification. See an example of such a list here. Why would you do it? Becau...

About a year ago, me and some other colleagues started to create a simple framework for verifying the outcome of unit tests in a more natural way. Martin Opdam already blogged about this in June and since then we have been adding some minor features.
A few weeks ago I discovered the much more po...

Many attempts have been made to improve the overal quality of our software development efforts, but if there’s one I’d like to put some attention on, it’s Test Driven Development. It’s design-first, test-first approach has proved significant increases in overal quality. However, TDD is not easy a...

April 9, 2009

Visual Studio

It has been almost two years since I've last compared NHibernate and Entity Framework, so with the recent alpha version of EF 6, it's about time to look at the current state of affair. I've been using NHibernate for more than 6 years so obviously I'm a bit biased. But I can't ignore that EF's fea...

After 50000 downloads and the recent final release of Visual Studio 2012 / C# 5.0 it was about time to do a thorough update of the C# Coding Guidelines. Although most of the guidelines have been preserved, I’ve tried to rewrite several of them using a less formal and less verbose writing style. I...

Although it might not seem like that, I am still working on the Silverlight Cookbook. However, I’ve just moved to a new house, so I ran out of time recently. Fortunately, since my colleague Martin Opdam is actively working on Fluent Assertions, so I only have to divide my free time between the co...

Before I continue with the rest of this post, I first need to make a disclaimer. I'm in no way an expert on all things Microsoft has to offer in the web realm and have yet to complete a full-fledged ASP.NET MVC & JQuery project.
However, I see myself as someone who quickly grasps the potenti...

Somebody recently asked me what sessions I was planning to attend at the upcoming 2011 edition of the Microsoft Developer Days in The Hague. To be honest, my primary reason for going to a Dutch conference is to chat with fellow .NET enthusiasts, and attending sessions is usually a side-effect of ...

In the 2nd half of 2010 I was so fortunate to get the chance to build my first enterprise-class line-of-business application written in Silverlight 4. And although I designed my original reference architecture earlier that year, actually building it is a completely different thing. I learned a lo...

As of now you can download the latest version of Fluent Assertions directly from within Visual Studio 2010. Just install the NuGet package manager, select Add Library Package Reference from the project context menu and search for FluentAssertions.

I've been a very long-time and very happy user of ReSharper, and I’ve become very dependent of it. I wouldn't know what to do with a plain Visual Studio 2010 installation. However, I also heard many great things about the combination of DevExpress's CodeRush and their Refactor! Pro products. Appa...

It has been only 6 weeks since I first released Fluent Assertions to the public, followed by version 1.1 a week later. In the weeks thereafter, I received some nice ideas from the community which caused me to start working on the next version.
But it was not easy. I found that designing a small f...

This morning, on the Developer Days 2010, I did a talk on the current state of affairs of the 4.0 version of the Entity Framework, including a rough comparison with NHibernate 2.1. Apparently this is something that’s on the mind of many people. The room was supposed to accommodate a maximum of 80...

What is it?
A collection of rules stating what a block of code should look like. These may include rules on where line breaks are required, how to place parentheses, how much whitespace to put before and after those parentheses, how many spaces to use when indenting and where to insert empty line...

Yesterday, a colleague of mine asked for some guidance on how to partition a Visual Studio solution into individual projects. Instead of simply answering his email I thought that blogging about it may be useful for others as well, so here are my rules:
In general, have as few projects as possi...

During this week’s PDC 2008, I’ve been spending particular attention to sessions related to the new features of Visual Studio 2010 Team System and Team Foundation Server 2010. The one statement almost every session started with was that this release is huge, and I totally agree! I’ve not seen so ...

November 2, 2008

WCF

After having put the introduction and the commanding part behind us, let me explain how I deal with querying. Consider the following slice of the reference architecture.
My original intention was to use WCF Data Services combined with NHibernate on the query side. For one, because it allo...

<p $1=”$1”></p> <p $1=”$1”></p> <p $1=”$1”></p> <p $1=”$1”></p> <p $1=”$1”></p> <p>This post is part of a series of blog posts detailing various aspects of the Silverlight Cookbook, an initiative to demonstrate prope...

September 20, 2010

WCF RIA Services

While working on my demo code for my full-day talk on Software Development Practices in Practice I was a bit ambitious and introduced both Silverlight 4 and WCF RIA Services. Apart from the fact that the preparation caused a bit too much of my social live, I ran in some things I don’t really like...

February 26, 2010

Windows

Let's be honest here. Since Microsoft has been shipping technical previews of Windows 10, I've been repaving my laptop a couple of times and then reverted to Windows 8.1. I didn't like the intermediate touch experience and stability was also not its greatest strengths. In fact, I reverted to 8.1 ...

May 1, 2015

Windows8

A question which was asked many times during the week was whether or not this trip to Build 2012 in Redmond was worth the time and money. Even after four days of raw content, there is no short answer here. As Dennis Vroegop clearly illustrated, the organization was definitely not up to the task...

Here we are at the fourth and last day of Microsoft Build 2012. That so many people showed up at the first session is quite surprising considering the attendee party that went on until midnight in downtown Seattle. It was a typical attendee party; free food and drinks and live music. Since being ...

So at this 3rd day here at Microsoft Build 2012, I'm actually getting lucky. Three great sessions in a row is obviously not something I've seen before. Hey, maybe I'll get to see four great sessions tomorrow. Anyway, with some of the technical debt from last night's Beerfest and a Halloween party...

Because day 2 of the Build conference wasn't any different, it seems that I must learn to accept that a maximum of two good sessions per day is going to be the standard. Fortunately the keynote was top notch with both Scott Hanselman and Scott Guthrie taking stage. They showed some of the power t...

Day 1 of Microsoft Build was in some way disappointing and at the same time exhilarating. To be honest, I was expecting to be updated on the new stuff Microsoft plans for the near future. The fact that the session list was not disclosed until a day ahead also helped reinforce that expectation. Bu...

I'm currently at Microsoft's Build conference and we're all receiving a Surface RT tablet. That means it's a great moment to talk about my plans for the Windows 8 Cookbook. I know, I know, it's a cheesy name so just be aware that I'm open to better suggestions. Since Silverlight is mostly dead, I...

October 30, 2012

a

Welcome to the dependency hell While working on a little open-source demo project, I ran into that well-known challenge of NuGet dependency management again. This little project results in a NuGet package, that on itself also relies on other packages. Now, if I would just add those dependencies ...

May 24, 2016

agile

When your project, product or component gets sufficiently big that it has a large impact on the rest of the organization, you’ll automatically get faced with lots of internal and external distractions. Other teams might want to get that pull request merged as soon as possible, all kinds of questi...

March 23, 2018

archit

For a very VERY long time I've been convinced that aggressively refactoring your code in such a way that every piece of logic is repeated only once is a good thing. This practice, often referred to as DRY, or Don't Repeat Yourself, has been one of the many of my tools of choice and goes hand in h...

April 13, 2016

autofac

It has been more than two years since we switched from Microsoft Unity to Autofac and we haven't regretted this a single day. Not only is the resolution performance much better than Unity, but it’s the feature set, in particular the relation types, that makes a world of difference. In terms of co...

January 14, 2015

build2015

Here we are again. After a little detour to QCon San Francisco and New Yorkin 2013 and 2014, we thought it to be about time to rejoin our fellow Microsoft developers here at Microsoft Build 2015 at the Moscone Center in San Francisco. Since we couldn't get a direct flight from Amsterdam to San Fr...

April 30, 2015

caching

Use the right tool for the right problem A very common sentiment I'm getting from the .NET community is the aversion against object-relational mappers like NHibernate and Entity Framework. Granted, if I could, I would use an (embeddable) NoSQL solution like RavenDB myself. They remove the object-...

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

collaboration

When your project, product or component gets sufficiently big that it has a large impact on the rest of the organization, you’ll automatically get faced with lots of internal and external distractions. Other teams might want to get that pull request merged as soon as possible, all kinds of questi...

March 23, 2018

components

A couple of months ago I shared some tips & tricks to help you prevent ending up in NuGet dependency hell. As a big fan of the SOLID principles, I've always wondered why nobody thought of applying these principles on the package level. If SOLID can help you to build cohesive, loosely coupled ...

Welcome to the dependency hell While working on a little open-source demo project, I ran into that well-known challenge of NuGet dependency management again. This little project results in a NuGet package, that on itself also relies on other packages. Now, if I would just add those dependencies ...

May 24, 2016

cqrs

Transient vs non-transient exceptions
If I have to name the single biggest flaw in adopting Event Sourcing, it must be our decision to rely on the synchronous dispatching pipeline of NEventStore. It is based on the idea that every event will be processed by all projectors in a synchronous manner....

The characteristics of a great projection implementation
Over the course of the last two years I’ve written numerous articles on the good, the bad and the ugly of Event Sourcing as well as on our experiences building and maintaining a distributed enterprise-class based on this increasingly popula...

May 18, 2018

csharp coding guidelines

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

culture

As I work as a consultant for Aviva Solutions, and the nature of my job is to be involved in moderately long-running client projects, I don't get to come to the office that often. And if I do, it's on different days of the week. Over the last year so, our locations in Koudekerk aan de Rijn and Ei...

At the first day of QCon New York, I attended several talks and open-spaces that had some relation with culture, be it about improving the efficiency of developers, handling disagreement in respectful way, and creating an environment that embraces the learning experience. For instance, one of th...

June 14, 2016

dependency injection

Over the last couple of months I’ve heard and read quite a few statements that say that Dependency Injection frameworks are bad things that you should avoid like the plague. In my opinion that’s just a result of rejecting something because it has been misused too long. Don’t get me wrong. I’ve be...

May 2, 2018

dependency inversion principle

Over the last couple of months I’ve heard and read quite a few statements that say that Dependency Injection frameworks are bad things that you should avoid like the plague. In my opinion that’s just a result of rejecting something because it has been misused too long. Don’t get me wrong. I’ve be...

May 2, 2018

dependency management

Over the last couple of months I’ve heard and read quite a few statements that say that Dependency Injection frameworks are bad things that you should avoid like the plague. In my opinion that’s just a result of rejecting something because it has been misused too long. Don’t get me wrong. I’ve be...

May 2, 2018

development

When your project, product or component gets sufficiently big that it has a large impact on the rest of the organization, you’ll automatically get faced with lots of internal and external distractions. Other teams might want to get that pull request merged as soon as possible, all kinds of questi...

March 23, 2018

documentation

A recurring topic in every software project I've been involved with is what to document, when to do that, and where to store it. So it wasn't a big surprise that at a recent event, somebody asked me how we track and communicate design decisions. I initially pointed him to an article I wrote in Fe...

June 21, 2015

domain driven design

Event Sourcing is a beautiful solution for high-performance or complex business systems, but you need to be aware that this also introduces challenges most people don’t tell you about. After having dedicated a post on the challenges of dealing with projection migrations and how to optimize that, ...

While visiting QCon New York this year, I realized that a lot of the architectural problems that were discussed there could benefit from the Event Sourcing architecture style. Since I've been in charge of architecting such a system for several years now, I started to reflect on the work we've don...

While visiting QCon New York this year, I realized that a lot of the architectural problems that were discussed there could benefit from the Event Sourcing architecture style. Since I've been in charge of architecting such a system for several years now, I started to reflect on the work we've don...

While visiting QCon New York this year, I realized that a lot of the architectural problems that were discussed there, could benefit from the Event Sourcing architecture style. Since I've been in charge of architecting such a system for several years now, I started to reflect on the work we've do...

While visiting QCon New York this year, I realized that a lot of the architectural problems that were discussed there could benefit from the Event Sourcing architecture style. Since I've been in charge of architecting such a system for several years now, I started to reflect on the work we've don...

June 16, 2016

dotnetmag

A while ago, some business man from the US who travels a lot throughout the US as part of his job, was sitting in his airline's business lounge for a drink. Right after finishing his 2nd, an attractive women approached him and offered him a drink in exchange for somebody to talk to. Somewhere hal...

After 50000 downloads and the recent final release of Visual Studio 2012 / C# 5.0 it was about time to do a thorough update of the C# Coding Guidelines. Although most of the guidelines have been preserved, I’ve tried to rewrite several of them using a less formal and less verbose writing style. I...

A question which was asked many times during the week was whether or not this trip to Build 2012 in Redmond was worth the time and money. Even after four days of raw content, there is no short answer here. As Dennis Vroegop clearly illustrated, the organization was definitely not up to the task...

Here we are at the fourth and last day of Microsoft Build 2012. That so many people showed up at the first session is quite surprising considering the attendee party that went on until midnight in downtown Seattle. It was a typical attendee party; free food and drinks and live music. Since being ...

So at this 3rd day here at Microsoft Build 2012, I'm actually getting lucky. Three great sessions in a row is obviously not something I've seen before. Hey, maybe I'll get to see four great sessions tomorrow. Anyway, with some of the technical debt from last night's Beerfest and a Halloween party...

Because day 2 of the Build conference wasn't any different, it seems that I must learn to accept that a maximum of two good sessions per day is going to be the standard. Fortunately the keynote was top notch with both Scott Hanselman and Scott Guthrie taking stage. They showed some of the power t...

Day 1 of Microsoft Build was in some way disappointing and at the same time exhilarating. To be honest, I was expecting to be updated on the new stuff Microsoft plans for the near future. The fact that the session list was not disclosed until a day ahead also helped reinforce that expectation. Bu...

After six weeks of beta testing, it is time to remove the beta mark from Fluent Assertions 2.0. Since the beta was released, we fixed several little bugs that you won’t notice, but the original release notes still apply. Release 2.0 adds a lot of new features and improvements, most noticeably the...

Here are some of the highlights of the blog posts, articles and whitepapers I’ve read this month.
In two short blog posts, Jimmy Bogard explains seven misconceptions of CQRS and Event Sourcing, and also warns us of the impact of eventual consistency on the user experience. Read about the many ...

This week I completed reading a new book titled The Cucumber Book: Behaviour-Driven Development for Testers and Developers by Matt Wynne and Aslak Hellesoy. Aslak is the founder of the Cucumber project (which is what SpecFlow for .NET is based on), and Matt is one of its most active developers. T...

Just to be clear, I didn’t actually attend QCon New York this year. But after the experience of attending QCon San Francisco in 2010, I never forget the many great quotes you’ll find on Twitter. This time was no different.
"Distributed objects failed; for very good reasons. Values rule on the w...

I spend a majority of my private time reading articles and blog posts, having discussions on Twitter, or engaging in conversations on conferences and community events. I'm realistic enough to understand that my opinions are not necessarily the truth, so I use those opportunities to challenge my o...

While we are working on the next major version of Fluent Assertions, we received several smaller bug reports that we bundled in release 1.7.1.
Fixed a bug that occurs when two collections are compared for equality but the collection contains null. Fixed a stack overflow while formatting an obje...

Yesterday I ended up being part of a discussion about using the ‘new’ keyword to hide base-class members. A colleague of mine used it to alter a base-class property in a derived class with the purpose of making it more strongly typed.
I’ve always rationalized guideline AV1010 (Don’t hide inherit...

I know, I know, I’m still 3 months away from it. But without doubt, on the 1st of February, I will be celebrating my first 5-year anniversary in the 15 years of my professional career. That might sound silly, but I’ve always had a problem of getting restless after a few years . It never was a pro...

This is the third of several posts in which I’d like to share some of the things we learned throughout more than 14 sprints of Agile development using Scrum. Some of them might appear as open doors, but I wish I knew or thought about those before I started that project. Just by looking back at th...

This is the second of several posts in which I’d like to share some of the things we learned throughout more than 14 sprints of Agile development using Scrum. Some of them might appear as open doors, but I wish I knew or thought about those before I started that project. Just by looking back at t...

The Rationale
As long as I have been using the Dependency Inversion Principle, Microsoft Unity has always been my preferred Inversion-of-Control framework. So it’s not strange that the Silverlight Cookbook has been using Unity 2 in both its WCF/REST layer as well as within the Silverlight client....

This is the first of several posts in which I’d like to share some of the things we decided throughout 14 sprint retrospective. Some of them might appear as open doors, but I wish I knew or thought about those before I started that project. Just by looking back at the mistakes a team of 9 develop...

Last updated on September 22nd Unfortunately, the Microsoft Build conference conflicted with our company's 5-year anniversary and the associated sailing trip in Greece. Fortunately, the blogosphere and twitter-space provided plenty of opportunities for trying to grasp what the stuff Sinofsky and...

Although it might not seem like that, I am still working on the Silverlight Cookbook. However, I’ve just moved to a new house, so I ran out of time recently. Fortunately, since my colleague Martin Opdam is actively working on Fluent Assertions, so I only have to divide my free time between the co...

I’m honored to have been selected to speak at my first event in the United Kingdom, Developer Developer Developer North, hosted at the University of Sunderland, near New Castle.
Our job as a software developer seems to revolve mostly around programming languages, frameworks and Visual Studio. And...

A few weeks ago I read The value of open-source is the vision not the source code and that made me think about my own reasons for starting Fluent Assertions, now more than a year ago. In the light of that article, lets briefly go over my own goals for Fluent Assertions. The intention of a unit te...

In the last couple of months, me and colleague Martin Opdam have spent a considerable amount of time on both improving the reporting capabilities of Fluent Assertions as well as fixing and incorporating various community contributions. Because of the many changes required, a very busy client proj...

Before I continue with the rest of this post, I first need to make a disclaimer. I'm in no way an expert on all things Microsoft has to offer in the web realm and have yet to complete a full-fledged ASP.NET MVC & JQuery project.
However, I see myself as someone who quickly grasps the potenti...

Somebody recently asked me what sessions I was planning to attend at the upcoming 2011 edition of the Microsoft Developer Days in The Hague. To be honest, my primary reason for going to a Dutch conference is to chat with fellow .NET enthusiasts, and attending sessions is usually a side-effect of ...

In the 2nd half of 2010 I was so fortunate to get the chance to build my first enterprise-class line-of-business application written in Silverlight 4. And although I designed my original reference architecture earlier that year, actually building it is a completely different thing. I learned a lo...

It’s only February, but I’ve received so many requests from the community that another release of Fluent Assertions was easily warranted.
New Features
Somebody working under the name of CtrlAltDel pointed me at the little-known fact that floating point variables are inheritably inaccurate and...

So now that I’ve finished my multi-part post on getting the most out of user stories, it is time to provide a nice convenient overview of some essential practices that I’ve blogged about. I don’t have any additional parts planned, but if I come up with something new, I’ll make sure this list is u...

In this multi-part post, I’m going to share my personal experiences while working with user stories for gathering, tracking and planning requirements. <ul><li>What are they and why do you need them? </li><li>Who writes them and how do you control scope? </li><li...

In this multi-part post, I’m going to share my personal experiences while working with user stories for gathering, tracking and planning requirements. It currently consists out of three parts:<ul><li>What are they and why do you need them? </li><li>Who writes them and how...

In this multi-part post, I’m going to share my personal experiences while working with user stories for gathering, tracking and planning requirements. <ul><li>What are they and why do you need them? </li><li>Who writes them and how do you control scope? </li><li&...

As of now you can download the latest version of Fluent Assertions directly from within Visual Studio 2010. Just install the NuGet package manager, select Add Library Package Reference from the project context menu and search for FluentAssertions.

Yesterday, I blogged about the newest release of Fluent Assertions for .NET and Silverlight and promised to demonstrate the new event monitoring syntax. Since I’m a Silverlight addict, I decided to show you an example of a MVVM unit test when using the traditional Assert class and the same exampl...

Christmas usually means a week off and a whole lot of free time between the social obligations and spending some quality time with my wife and daughter. That’s why I decided to get rid of some of the backlog items for the next version of Fluent Assertions. And I’m done, version 1.3.0 is a fact. N...

I finally found some time to update the coding guidelines with some feedback I received since it’s original release in June this year. I’ve removed the following guidelines because I found that they were either very exotic or not general enough for most developers:
Avoid side-effects when...

Last Thursday, me and my employer Aviva Solutions hosted the December edition of the DotNED user group in Leiden. And yesterday a shared my Silverlight reference architecture on this year’s last SDN Event. I gave two talks that evening and one last night and wanted to share my slides and example ...

I've been a very long-time and very happy user of ReSharper, and I’ve become very dependent of it. I wouldn't know what to do with a plain Visual Studio 2010 installation. However, I also heard many great things about the combination of DevExpress's CodeRush and their Refactor! Pro products. Appa...

Last week we put our first full-blown Silverlight 4 line-of-business application into production, and just yesterday, we’ve run into our first production issue. Consider the width specifications of the DataGrid columns in this XAML fragment:
This XAML file was generated by Expression Blend and h...

The 2nd day of QCon was not one where I chose wisely. My focus for this conference was everything Agile and anything from the well-known speakers. So I ignored most sessions that had words like REST, SQL or Java in it. How wrong I was…. But I did not discover that until I heard and read about all...

The compression ratio of the content versus the timing available is quite high here at QCon. Already at the first official day, I attended 7 (!) talks. That's quite a lot of information to process. Unfortunately, the difference in quality is really noticeable. Some talks were absolutely awesome a...

One of the funny things of this QCon is the many tweets that the attendees have been throwing into the world wide web. That's great for a speaker because now they get immediate feedback on their performance, both good and bad. These are some of the quotes I found funny, inspiring or refreshing: ...

Updated on March 3rd 2012 with a PDF of Dan North’s mind map
On the first day of the QCon conference in San Francisco, I attended a full-day tutorial titled "Secrets of Agile Architecture" hosted by Dan North. I didn't really know what to expect, but I was hoping for some refreshingly new insight...

This post is part of a series of blog posts detailing various aspects of the Silverlight Cookbook, an initiative to demonstrate proper design choices for building enterprise-class line-of-business applications with Silverlight (and WPF if you will). It currently consists out of the following part...

What is it?
Technical Debt is every change to your code base that does not comply with the usual level of quality your team has agreed upon. Since this level of quality has been introduced to guarantee a healthy code base throughout the life time of the system, introducing technical debt essenti...

The Domain Model is roughly designed according to the DDD principles where cross-aggregate logic is handled by the command handlers instead of the more traditional domain services. One thing that I changed after I attended Greg Young's DDD/CQRS training is that I no longer allow my domain entitie...

After having put the introduction and the commanding part behind us, let me explain how I deal with querying. Consider the following slice of the reference architecture.
My original intention was to use WCF Data Services combined with NHibernate on the query side. For one, because it allo...

<p $1=”$1”></p> <p $1=”$1”>After sharing my thoughts on unit testing in Silverlight and the combination of NHibernate and WCF Data Services, it is time to discuss the updated version of the Silverlight reference architecture from one of my posts of last year. To put the discu...

What is it? A domain model is typically depicted by a UML class diagram in which the classes and associations represent the business concepts and the relationships between them. Although you can use a piece of paper to draw up a domain model, in most cases a UML case tool is better suited for t...

As promised earlier, you can now download the concept version of my new Coding Guidelines for C# 3.0 and C# 4.0 from a dedicated CodePlex site at www.csharpcodinguidelines.com. The list of changes is quite big, and includes new guidelines covering object-oriented design, design principles, C# 4.0...

Now that my CQRS/Event Sourcing talk for DotNED is done, the pressure on the free hours between work and family has been reduced significantly. That doesn’t mean I’m going to sit back and relax. Oh no, I’m full of ideas. so let’s see some of my plans.
I’m still going to continue developing The...

Yesterday evening I did a talk on building a .NET-based system using Command Query Responsibility Segregation and Event Sourcing. We had a lot of awesome discussions on its applicability, and as usual, I ran out of time again. I could have easily spend a full day on this subject, but unfortunatel...

Most of us will be familiar with the standard 3- or 4-layer architecture you often see in larger enterprise systems. Some are already practicing Domain Driven Design and work together with the business to clarify the domain concepts. Perhaps you’ve noticed that is difficult to get the intention o...

What is it? Coding guidelines, or coding standards if you will, are documents consisting of rules and recommendations on the use of C# in enterprise systems. They deal with code layout, naming guidelines, the proper use of the .NET Framework, tips on writing useful comments and XML documentat...

I've recently finished the book The Inmates Are Running The Asylum by Alan Cooper, a well known proponent for interaction design. To be honest, I never really saw the purpose of interaction design in our projects. But after reading this book, I now know I didn't really understand what it was abou...

It has been only 6 weeks since I first released Fluent Assertions to the public, followed by version 1.1 a week later. In the weeks thereafter, I received some nice ideas from the community which caused me to start working on the next version.
But it was not easy. I found that designing a small f...

This morning, on the Developer Days 2010, I did a talk on the current state of affairs of the 4.0 version of the Entity Framework, including a rough comparison with NHibernate 2.1. Apparently this is something that’s on the mind of many people. The room was supposed to accommodate a maximum of 80...

Some of you who have been visiting the Dutch Developer Days 2010 in The Hague today may have noticed the flyers and banners for promoting the new online version of the .NET Magazine. Those who already know me may have noticed that it’s me on those banners.
Since the photographer spe...

As part of my effort to improve the type-safety of Fluent Assertions, I’ve been investigating the possibility to use C# extension methods all the way. Unfortunately I think I’ve ran into the limitations of C# 3.0 (and C# 4.0 since it doesn’t add anything useful for this). Essentially, I’d like to...

What is it? An (online) list of verification tasks to sign off as part of the delivery process of a newly delivered unit of work. Usually these include things that are often forgotten, or aspects that require explicit verification. See an example of such a list here. Why would you do it? Becau...

In response to my posts on Peer Reviews, Unit Testing & TDD, and Common Code Layout, someone noticed that all these posts were part of my Team Foundation Server Development Practices series, but not every post actually mentioned TFS. Obviously, he was right. The reason for using the TFS prefi...

What is it?
A collection of rules stating what a block of code should look like. These may include rules on where line breaks are required, how to place parentheses, how much whitespace to put before and after those parentheses, how many spaces to use when indenting and where to insert empty line...

Thanks to all the voters who voted for my wildcard proposal on Entity Framework 4.0, I will be speaking at the Microsoft Developer Days 2010, again. Last year, the whole wildcard thingy was a bit fuzzy, but this year, the organization has gone through great lengths to seriously include us wildcar...

It’s only a few days ago since we released the first version of Fluent Assertions, and we already have a new release. The reason for this is that the first release was just the public release of an internal set of classes that we’ve been using for a year or so. But this week, we've worked hard t...

During this week’s PDC 2008, I’ve been spending particular attention to sessions related to the new features of Visual Studio 2010 Team System and Team Foundation Server 2010. The one statement almost every session started with was that this release is huge, and I totally agree! I’ve not seen so ...

November 2, 2008

event sourcing

Transient vs non-transient exceptions
If I have to name the single biggest flaw in adopting Event Sourcing, it must be our decision to rely on the synchronous dispatching pipeline of NEventStore. It is based on the idea that every event will be processed by all projectors in a synchronous manner....

I thought we didn’t need OR/Ms anymore?
A common advantage of adopting Event Sourcing is that it solves the impedance mismatch between object oriented code and the relation database model. And because of that, Object/Relational Mappers (OR/Ms) have become obsolete. While I agree with the first st...

The characteristics of a great projection implementation
Over the course of the last two years I’ve written numerous articles on the good, the bad and the ugly of Event Sourcing as well as on our experiences building and maintaining a distributed enterprise-class based on this increasingly popula...

Event Sourcing is a beautiful solution for high-performance or complex business systems, but you need to be aware that this also introduces challenges most people don’t tell you about. After having dedicated a post on the challenges of dealing with projection migrations and how to optimize that, ...

Event Sourcing is a beautiful solution for high-performance or complex business systems, but you need to be aware that this also introduces challenges most people don't tell you about. Last year, I already blogged about the things I would do differently next time. But after attending another intr...

Event Sourcing is a brilliant solution for high-performance or complex business systems, but you need to be aware that this also introduces challenges most people don't tell you about. In June, I already blogged about the things I would do differently next time. But after attending another introd...

Event Sourcing is a brilliant solution for high-performance or complex business systems, but you need to be aware that this also introduces challenges most people don't tell you about. In @June, I already blogged about the things I would do differently next time. But after attending another intro...

It was in 2009 in Utrecht, The Netherlands, when I first learned about Event Sourcing and the Command Query Responsibility Segregation (CQRS) patterns at a training Greg Young gave there. I remembered to be awed by the scalability and architectural simplicity those styles provided. However, I als...

While visiting QCon New York this year, I realized that a lot of the architectural problems that were discussed there could benefit from the Event Sourcing architecture style. Since I've been in charge of architecting such a system for several years now, I started to reflect on the work we've don...

While visiting QCon New York this year, I realized that a lot of the architectural problems that were discussed there could benefit from the Event Sourcing architecture style. Since I've been in charge of architecting such a system for several years now, I started to reflect on the work we've don...

While visiting QCon New York this year, I realized that a lot of the architectural problems that were discussed there, could benefit from the Event Sourcing architecture style. Since I've been in charge of architecting such a system for several years now, I started to reflect on the work we've do...

While visiting QCon New York this year, I realized that a lot of the architectural problems that were discussed there could benefit from the Event Sourcing architecture style. Since I've been in charge of architecting such a system for several years now, I started to reflect on the work we've don...

June 16, 2016

fluentassertions

It has been almost a year since version 4.19, the last functional release of Fluent Assertions was shipped. Not because of a lack of feature requests, but simply because this new version has cost me all the private time I had. My main goal of this release was to repair some of the design mistakes...

February 4, 2018

fluid-caching

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...

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

git

At Aviva Solutions, we’ve been using Git for a little of over two years now and I can wholeheartedly say that after having worked with TFS for years, we'll never go back… ever. But with any new technology, practice or methodology, you need to go through several cycles before you find a way that w...

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 ...

Almost every time I do some kind of talk somewhere, people ask me for advice on how to convince their management that they should drop Microsoft Team Foundation Server's source control system and move over to Git. In this post, I'll be talking about the source control system only. Both Visual Stu...

Solving the versioning problemIf you're building libraries, products or any other software system, versioning is usually a pretty big deal. It's the only way to determine what version of that library, product or system you're looking at. Before an organization settles on a versioning strategy, ma...

April 23, 2015

github

At Aviva Solutions, we’ve been using Git for a little of over two years now and I can wholeheartedly say that after having worked with TFS for years, we'll never go back… ever. But with any new technology, practice or methodology, you need to go through several cycles before you find a way that w...

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 ...

inversion of control

Over the last couple of months I’ve heard and read quite a few statements that say that Dependency Injection frameworks are bad things that you should avoid like the plague. In my opinion that’s just a result of rejecting something because it has been misused too long. Don’t get me wrong. I’ve be...

May 2, 2018

liquidprojections

Transient vs non-transient exceptions
If I have to name the single biggest flaw in adopting Event Sourcing, it must be our decision to rely on the synchronous dispatching pipeline of NEventStore. It is based on the idea that every event will be processed by all projectors in a synchronous manner....

I thought we didn’t need OR/Ms anymore?
A common advantage of adopting Event Sourcing is that it solves the impedance mismatch between object oriented code and the relation database model. And because of that, Object/Relational Mappers (OR/Ms) have become obsolete. While I agree with the first st...

The characteristics of a great projection implementation
Over the course of the last two years I’ve written numerous articles on the good, the bad and the ugly of Event Sourcing as well as on our experiences building and maintaining a distributed enterprise-class based on this increasingly popula...

May 18, 2018

microservices

During this year's QCon conference held in New York, I attended a full-day workshop on the scalability challenges a growing organization faces, hosted by Randy Shoup. In my previous post, I elaborated on Randy's classification system to illustrate the phases of a growing organization and how that...

After attending a full-day track with multiple sessions and open-spaces on microservices at QCon New York, it is clear that this technique took flight since I first heard about that at the same conference in 2014. A lot of companies made the jump to solve their technical and organizational scalin...

June 23, 2016

nhiberate

Use the right tool for the right problem A very common sentiment I'm getting from the .NET community is the aversion against object-relational mappers like NHibernate and Entity Framework. Granted, if I could, I would use an (embeddable) NoSQL solution like RavenDB myself. They remove the object-...

June 9, 2016

nhibernate

Transient vs non-transient exceptions
If I have to name the single biggest flaw in adopting Event Sourcing, it must be our decision to rely on the synchronous dispatching pipeline of NEventStore. It is based on the idea that every event will be processed by all projectors in a synchronous manner....

I thought we didn’t need OR/Ms anymore?
A common advantage of adopting Event Sourcing is that it solves the impedance mismatch between object oriented code and the relation database model. And because of that, Object/Relational Mappers (OR/Ms) have become obsolete. While I agree with the first st...

July 15, 2018

nuget

Welcome to the dependency hell While working on a little open-source demo project, I ran into that well-known challenge of NuGet dependency management again. This little project results in a NuGet package, that on itself also relies on other packages. Now, if I would just add those dependencies ...

May 24, 2016

object-relational mapper

I thought we didn’t need OR/Ms anymore?
A common advantage of adopting Event Sourcing is that it solves the impedance mismatch between object oriented code and the relation database model. And because of that, Object/Relational Mappers (OR/Ms) have become obsolete. While I agree with the first st...

July 15, 2018

open-source

The proudest moment anybody initiating an open-source project can experience is when that project finally gains the momentum to make a difference within the community it targets. When my colleague Martin and I published the first release of Fluent Assertions on CodePlex in 2011 (yeah, those were ...

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

people

This year, for the third time since I joined Aviva Solutions, I attended the New York edition of the famous QCon conference organized by InfoQ. As always, this was a very inspiring week with topics on large-scale distributed architecture, microservices, security, APIs, organizational culture and ...

July 18, 2017

performance

Use the right tool for the right problem A very common sentiment I'm getting from the .NET community is the aversion against object-relational mappers like NHibernate and Entity Framework. Granted, if I could, I would use an (embeddable) NoSQL solution like RavenDB myself. They remove the object-...

June 9, 2016

powershell

Solving the versioning problemIf you're building libraries, products or any other software system, versioning is usually a pretty big deal. It's the only way to determine what version of that library, product or system you're looking at. Before an organization settles on a versioning strategy, ma...

If you look back at the last couple of years, you’ll notice an increasing attention for best practices that should make us more professional software developers. We design our classes using Test Driven Development, we review our code in pairs, and we apply all kinds of architectural principles su...

March 22, 2015

projections

Transient vs non-transient exceptions
If I have to name the single biggest flaw in adopting Event Sourcing, it must be our decision to rely on the synchronous dispatching pipeline of NEventStore. It is based on the idea that every event will be processed by all projectors in a synchronous manner....

I thought we didn’t need OR/Ms anymore?
A common advantage of adopting Event Sourcing is that it solves the impedance mismatch between object oriented code and the relation database model. And because of that, Object/Relational Mappers (OR/Ms) have become obsolete. While I agree with the first st...

The characteristics of a great projection implementation
Over the course of the last two years I’ve written numerous articles on the good, the bad and the ugly of Event Sourcing as well as on our experiences building and maintaining a distributed enterprise-class based on this increasingly popula...

May 18, 2018

psake

If you look back at the last couple of years, you’ll notice an increasing attention for best practices that should make us more professional software developers. We design our classes using Test Driven Development, we review our code in pairs, and we apply all kinds of architectural principles su...

March 22, 2015

qcon

This year, for the third time since I joined Aviva Solutions, I attended the New York edition of the famous QCon conference organized by InfoQ. As always, this was a very inspiring week with topics on large-scale distributed architecture, microservices, security, APIs, organizational culture and ...

This year, for the third time since I joined Aviva Solutions, I attended the New York edition of the famous QCon conference organized by InfoQ. As always, this was a very inspiring week with topics on large-scale distributed architecture, microservices, security, APIs, organizational culture and ...

During this year's QCon conference held in New York, I attended a full-day workshop on the scalability challenges a growing organization faces, hosted by Randy Shoup. In my previous two posts I discussed a model to understand the needs of an organization in its different life phases, as well as a...

During this year's QCon conference held in New York, I attended a full-day workshop on the scalability challenges a growing organization faces, hosted by Randy Shoup. In my previous post, I elaborated on Randy's classification system to illustrate the phases of a growing organization and how that...

The characteristics of a growing organizationDuring this year's QCon conference held in New York, I attended a full-day workshop on the scalability challenges a growing organization faces, hosted by Randy Shoup. Randy explained us how every start-up goes through several phases, each with a differ...

After attending a full-day track with multiple sessions and open-spaces on microservices at QCon New York, it is clear that this technique took flight since I first heard about that at the same conference in 2014. A lot of companies made the jump to solve their technical and organizational scalin...

At the first day of QCon New York, I attended several talks and open-spaces that had some relation with culture, be it about improving the efficiency of developers, handling disagreement in respectful way, and creating an environment that embraces the learning experience. For instance, one of th...

June 14, 2016

ravendb

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

retrospective

It was in 2009 in Utrecht, The Netherlands, when I first learned about Event Sourcing and the Command Query Responsibility Segregation (CQRS) patterns at a training Greg Young gave there. I remembered to be awed by the scalability and architectural simplicity those styles provided. However, I als...

February 11, 2017

scalability

During this year's QCon conference held in New York, I attended a full-day workshop on the scalability challenges a growing organization faces, hosted by Randy Shoup. In my previous two posts I discussed a model to understand the needs of an organization in its different life phases, as well as a...

During this year's QCon conference held in New York, I attended a full-day workshop on the scalability challenges a growing organization faces, hosted by Randy Shoup. In my previous post, I elaborated on Randy's classification system to illustrate the phases of a growing organization and how that...

The characteristics of a growing organizationDuring this year's QCon conference held in New York, I attended a full-day workshop on the scalability challenges a growing organization faces, hosted by Randy Shoup. Randy explained us how every start-up goes through several phases, each with a differ...

July 11, 2016

semantic versioning

As part of stabilizing an upcoming release, I always dog food a beta package against the 12000 unit tests in one of our bigger projects. In the early days, that would surface all kinds of edge cases I never thought of. In every single case, the first thing I would do is to add a new unit test to ...

June 24, 2015

team

When your project, product or component gets sufficiently big that it has a large impact on the rest of the organization, you’ll automatically get faced with lots of internal and external distractions. Other teams might want to get that pull request merged as soon as possible, all kinds of questi...

This year, for the third time since I joined Aviva Solutions, I attended the New York edition of the famous QCon conference organized by InfoQ. As always, this was a very inspiring week with topics on large-scale distributed architecture, microservices, security, APIs, organizational culture and ...

During this year's QCon conference held in New York, I attended a full-day workshop on the scalability challenges a growing organization faces, hosted by Randy Shoup. In my previous two posts I discussed a model to understand the needs of an organization in its different life phases, as well as a...

At the first day of QCon New York, I attended several talks and open-spaces that had some relation with culture, be it about improving the efficiency of developers, handling disagreement in respectful way, and creating an environment that embraces the learning experience. For instance, one of th...

At Aviva Solutions, we’ve been using Git for a little of over two years now and I can wholeheartedly say that after having worked with TFS for years, we'll never go back… ever. But with any new technology, practice or methodology, you need to go through several cycles before you find a way that w...

Somebody on Twitter recently posed the question whether innovation in software and agile development can co-exist or not. To remove any misinterpretation - something quite common for Twitter discussion - I asked him to clarify what he meant with the word 'innovation'. In short, any kind of softwa...

A recurring topic in every software project I've been involved with is what to document, when to do that, and where to store it. So it wasn't a big surprise that at a recent event, somebody asked me how we track and communicate design decisions. I initially pointed him to an article I wrote in Fe...

I think that the gist of this post should be pretty clear. Unfortunately I've fallen in that same trap myself many times. So often, I had to refrain myself from pulling somebody's keyboard from under their hands, just because I thought I could fix the problem at hand myself much faster. But with ...

In a recent post, I concluded that I have a strong tendency towards tactical architecture. From that perspective, I try to avoid big-design-upfront. I have a built-in allergy for rebuilding stuff that is already out there. I would never consider building my own message bus or event sourcing frame...

Lets be honest here. For a very long time, if I had to choose between an averagely skilled but well-spoken developer and a very skilled and experienced introvert, I would probably choose the first. And yes, I do realize that these are two extremes and that most people have characteristics of both...

Two weeks ago, I talked about Flowdock, an online tool to aggregate multiple sources into a single environment where agile teams can work together. I also promised to look at an alternative service named Slack. When we introduced Flowdock, somewhere in November 2013, Slack was still in its very e...

More or less since the start of my assignment at my current client, four years ago, we have had some form of a cross-team stand-up at 10:00 every day (often named Scrum-of-Scrums). But now that we have around 10 teams, we started to notice some issues lately. People joined too late or didn't even...

January 18, 2015

teamcity

As long as I can remember, I've been using an automatic build system to regularly verify the quality of the code based I've been working on. First using Team Foundation Server, but since a year or so, Jetbrains' Team City. In my current project we use continuous integration builds for running the...

February 26, 2015

test driven development

The other day, while pairing up on some unit test, I started to realize that I generally have three modes of looking at my unit tests. The Writing Mode While writing, I mostly focus on the mechanics of getting the test to pass. By then, I usually have a mental model and a particular scenario in ...

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.

November 11, 2015

threading

It has been more than two years since we switched from Microsoft Unity to Autofac and we haven't regretted this a single day. Not only is the resolution performance much better than Unity, but it’s the feature set, in particular the relation types, that makes a world of difference. In terms of co...

January 14, 2015

unit testing

The other day, while pairing up on some unit test, I started to realize that I generally have three modes of looking at my unit tests. The Writing Mode While writing, I mostly focus on the mechanics of getting the test to pass. By then, I usually have a mental model and a particular scenario in ...

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.

user stories

Somebody on Twitter recently posed the question whether innovation in software and agile development can co-exist or not. To remove any misinterpretation - something quite common for Twitter discussion - I asked him to clarify what he meant with the word 'innovation'. In short, any kind of softwa...

In this multi-part post, I’m going to share my personal experiences while working with user stories for gathering, tracking and planning requirements. <ul><li>What are they and why do you need them? </li><li>Who writes them and how do you control scope? </li><li...

In this multi-part post, I’m going to share my personal experiences while working with user stories for gathering, tracking and planning requirements. It currently consists out of three parts:<ul><li>What are they and why do you need them? </li><li>Who writes them and how...

In this multi-part post, I’m going to share my personal experiences while working with user stories for gathering, tracking and planning requirements. <ul><li>What are they and why do you need them? </li><li>Who writes them and how do you control scope? </li><li&...

January 18, 2011

versioning

As part of stabilizing an upcoming release, I always dog food a beta package against the 12000 unit tests in one of our bigger projects. In the early days, that would surface all kinds of edge cases I never thought of. In every single case, the first thing I would do is to add a new unit test to ...