AWS Elastic Block Storage Scares Me

Comments

Take a look at the last half-dozen or so publicized outages at Amazon. Every single time it was a failure in EBS—including the multi-day EBS outage in April 2011. I still love AWS. If your have an elastic (scaling) workload, it's awesome. Normally I have a hard time taking…

Golang Has Generics—Why I Don't Miss Generics Anymore

Comments

There's a lot of discussion about generics in Go. In fact, it's one of the most-requested features in the language discussion groups. The language designers aren't against generics, but they have not found or seen a good proposal that allows generics in the language without significantly complicating the language and…

I Was On Page One of Hacker News—Here's What I Learned

Comments

Hacker News is awesome. I browse the site every day because love the continual stream of relevant stories and articles for tech-savvy people. Stories there are sorted by using an algorithm based upon time and community up-votes, among other things. This means that the first page of results is an…

Celebrating the Death of Comcast: The Case for Net Neutrality

Comments

Comcast's Evil Twin We love our movies and our television. After a hard day at work, many Americans like to enjoy some downtime with a good TV show or movie. When technology advanced in the 1980s in the form of video cassette tapes, this gave us a new choice for…

Why I Left the .NET Framework

Comments

The .NET Framework was good. Really good. Until it wasn't. Why did I leave .NET? In short, it constrained our ability to choose (which is a huge deal for me) and turned our focus inward toward the perceived safety of the nest instead of the helping us experience all of…

Why I Left Windows

Comments

As a development environment and a server environment Windows makes less and less sense. It's not that I don't like Windows. It's actually really good operating system for a lot of people and is getting arguably more secure from attacks. My problem is that it continues to get in my…

Why I Love Go

Comments

I have been in the process of migrating off of Windows and the .NET Framework for a little while now. The process is still underway, but is going very smoothly. To understand the need for a platform migration, there are two things to understand: First, why change the development environments…

Hello, World! (again)

Comments

Hello, World! I'm still here. It's been a good, long while since I last posted. So where have I been? And what have I been up to? Well, a lot has changed since my last post, but one thing remains the same: messaging. In fact, messaging is now more ubiquitous…

NuGet File Locks

Comments

Since leveraging some of the capabilities of NuGet v1.6, such as "package restore", our build server has been giving us random fits about various file locks.  Sometimes it was just a matter of re-executing the build and sometimes we had to clear the temporary build workspace and then re-execute…

Hamachi Goodness

Comments

Hamachi is my new best friend.  My company recently expanded into a 3rd data center to have even more redundancy and fault tolerance. One issue that we had as we approached the rollout was how to best create a secure communication channel over the web for this purpose. …

Utah .NET User Group Meeting

Comments

Tonight at 6:00 PM at Neumont University (room 300) in Sandy, Utah--the same place where the Utah Code Camp is held. I'll be giving a presentation on my EventStore project and going into a little bit of detail regarding the advantages of event sourcing--specifically idempotent messaging and rebuilding view…

Crime Scene Event Sourcing

Comments

To use event sourcing or not is an interesting question and one that should not be taken lightly. The two main camps in the debate contend on several key points among which include business necessity, architectural gold plating, educational overhead, and tool support. For a moment, let's consider the argument…

CQRS EventStore - Europe Virtual ALT.NET Presentation

Comments

The video for my Europe Virtual ALT.NET Presentation for the CQRS EventStore is now live (as of a week ago)  I have also just posted the slides for the presentation to SlideShare.…

EventStore v3.0 Release

Comments

It’s been a little while in coming, but nonetheless, I’m pleased to release the latest version of the CQRS EventStore  As always, you can find the source code on GitHub as well as the official pre-built binaries.  You can also find the EventStore package on the…

EventStore EVAN Presentation

Comments

Just in case you missed the announcement, I will be presenting today at 7:00 PM UTC on the EventStore project for the Europe Virtual ALT.NET conference.  The event will be recorded and available for later viewing if you can't make it.…

CQRS EventStore v3.0

Comments

The official release for EventStore 3.0 is just around the corner.  Following SemVer semantics, this is now version 3.0 instead of 2.1 or whatever.  his post is to highlight the differences between 2.0 and 3.0.  First and foremost, the packages are available…

My New Best Friend: “git merge --no-ff”

Comments

I’ve been using Git now for several years.  Over a year ago I bumped into a great article about A Successful Git Branching Model.  It’s a great article in its own right and deserves your attention if you’re using Git.  If you’re not…

Browser-side View Model Templates

Comments

Years ago I considered Javascript to be more or less of a joke as a language.  At the time browser implementations made creating a consistent implementation both dangerous and time consuming.  Time passed and several very significant things happened: FireFox 1.0 and the modern browser. Google Maps…

Transcending the POST, Validate, Redirect Pattern

Comments

Jimmy Bogard’s recent blog post entitled Cleaning up POSTs in ASP.NET MVC was a great read.  But I wanted to share another method that I have used with great success in recent months.  One of the primary issues that Jimmy is trying to solve in his…

NServiceBus and Guaranteed Delivery

Comments

As a committer on NServiceBus, I’m typically running the code from the master branch head in production.  Crazy, huh?  I commit made against the master branch not too long ago affected my application code in its ability to properly handle a message.  But it didn’t…

CQRS EventStore v2.0 Release

Comments

I have just released v2.0 of my CQRS EventStore project.  I have been amazed at and delighted by the number of contributors the project.  Interest continues to grow and implementations for various storage engines continues as well as other serialization strategies. Download Download the .NET 4.0…

Why I Still Love CQRS (and Messaging and Event Sourcing)

Comments

Let’s rewind several years.  At the time I was struggling through a large project with ever increasing complexity in my “domain model” (if you could really call it that) along with an explosion of dependencies—from NHibernate (including Fluent NHibernate, NHibernate.LINQ), log4net, unit tests, and web services…

ASP.NET MVC and IIS7 404 Pages

Comments

Note to self (and to anyone else who cares): If IIS7 is giving back 404 pages and it's pointing to the proper directory and configured with Integrated Mode, and the MVC routes appear to be correct, it might be that there are no controllers registered with the container. This one…

A Simple Reminder of Event Sourcing Benefits

Comments

I was working with some legacy data the other day when all of a sudden I realized that I needed to know exactly how old the data was.  The problem?  I had no way to get that information precisely.  The specific scenario was I was working with…

CQRS: Out of Sequence Messages and Read Models

Comments

One of the tricks to message-based solutions is handling messages that come out of order.  In some instances the application code must be made resilient to this situation.  In other cases, it can be easier to re-sequence the messages and then apply each messages in sequence.  In…

How I Avoid Two-Phase Commit

Comments

In my last blog post I ranted about two-phase commit (2PC) and MSDTC.  This is going to be a quick post about a few techniques that I use.  The basic premise is that I break a two-phase commit apart into multiple transactions such that each is handled independently…

My Beef with MSDTC and Two-Phase Commits

Comments

I’m just not a fan of the Microsoft Distributed Transaction Coordinator.  I’ve tweeted and blogged a few times about it, but I’ve never really gone into why.  I should preface my remarks by saying that MSDTC does work—it will facilitate and coordinate distributed transactions…

ILMerge Gotcha

Comments

Just remember that when two assemblies have internalized a reference to another assembly using ILMerge, each gets their own “copy” of static variables.  That is to say, that the class MyClass1.SomeStaticInstance is no longer the same between the two assemblies.  I was kicking against this one for…

Removing 2PC (Two Phase Commit)

Comments

I received the following email today and I thought I’d answer it as a blog post so that all can benefit: If you remove the 2PC from the system, how do you deal with ensuring that published events are: * truly published, * not lost, * that there is confidence that the…

CQRS: Event Sourcing and Immutable Data

Comments

There are a number of interesting and unique advantages offered by event sourcing as well as messaging in general.  Some of these advantages include the ability to perform merge-based, business-level concurrency—as compared to simple optimistic or pessimistic concurrency.  Further, the ability to replay all stored messages into…

IIS 7 "500" Errors

Comments

I paid my "Windows tithing" recently and did a complete reinstall. Fortunately Windows is now a guest VM inside of a Linux host. A settings change I had made a long time ago but forgot to reapply during my reinstall was for IIS. Whenever I was developing--even locally--I would get…

New NServiceBus Feature: 32-bit (x86) Host Process

Comments

NServiceBus is an “Any CPU” framework.  It doesn’t have an 32-bit or 64-bit specific code.  This makes it very easy to transition between 32-bit and 64-bit operating systems.  Unfortunately, not all assemblies are or even can be compiled using the default “Any CPU” architecture. In many…