A question came up on StackOverflow today:

What would be the most powerful argument for writing SOLID applications?

One of the comments on this question caused a bit of a stir on Twitter, as it was made by Eric Lippert, who was on the C# team at Microsoft for quite some time. Normally I agree with pretty much everything he writes. But not this time.

The ErgoDox is a custom split-hand ergonomic mechanical keyboard project started by GeekHack forum member Dox, and contributed to and refined by many others. It was offered as a kit on MassDrop starting in early 2013. After demand for a second run increased, MassDrop offered a second group buy, which I jumped on and placed my order. As of this writing, MassDrop is running a third group buy for the ErgoDox.

This is going to be a review of my time with the ErgoDox, from construction to roughly a week of use. My kit arrived on June 5th 2013, but I wasn’t able to construct the board until June 16th, due to the fact that 8 month old babies have an odd temporal vortex around them that somehow sucks in available free time like a black hole sucks in matter.

Yup, I spent my first Father’s Day constructing a keyboard. Nerd achievement unlocked.

As you can probably tell, I love ServiceStack. I also love Elmah, especially the the email notifications that it provides.

However, the two don’t really talk to each other out of the box. Sure, ServiceStack offers a ElmahLogFactory for handling errors and the like, and that works fine. But that only writes to the configured log. Emails are nowhere to be found. At least not in my project.

Sometimes you want to lock down your API to only allow certain clients access. I’d like to share a simple way of doing just that, based on HTTP headers and a simple pre-shared key.

I’m doing a lot of ServiceStack development these days, and loving every minute of it.

One of the things I wanted with my integration tests was a controlled environment. I wanted to be able to set the connection string for the test database, and run full-stack tests on my services using NUnit via ReSharper’s test runner. However, I also wanted to be able to step through (F11) seamlessly from a given test case to the service code without missing a beat. Since my services were configured to run under ASP.NET/IIS, that last part required some thought.