Author archives

The Metro is Open!

Right, let me start by apologising for being a bit lax on the blogging front.  To be fair the Wi-Fi connection in Rhodes was a little underwhelming, and although I did pen an article it disappeared into the ether.  However, I’ve not been wasting my time off!  Thanks to everyone who left me so many …

Carmageddon: Reincarnation

OK, call me nostalgic, but I loved this game back in the day, so I decided to become a kickstarter backer, I really hope this sees the light of day, only a little more money to raise! Related Images:

Pressing the reset button on Business

As I’ve mentioned before, I just don’t buy the fallacy that profit is the sole driving force of great businesses.  If you are a business owner (like I am), then it’s easy to understand why profit is such a motivation; profitable companies frequently equate to wealthy owners (though they don’t have to).  In my own case …

Simulating SQL Server (Part 3)

If you haven’t done so so already, start with – Simulating SQL Server (Part 1) Simulating SQL Server (Part 2) In the first two posts, I introduced the SqlTester library, which can be downloaded at the bottom of this post.  I also showed a series of classes that implemented IDataRecord and IDataReade to allow the creation …

Simulating SQL Server (Part 2)

If you haven’t read it already, why not start with Simulating SQL Server (Part 1)? Last time we looked at creating a RecordSetDefinition  as a collection of ColumnDefinition s.  Once we had a way of defining what a recordset looks like, we then were able to create an ObjectRecord . The next step is to collect those …

Assembly versioning

Ever since the release of .NET 1.1, there has existed an AssemblyVersionAttribute.  This attribute determines the version number boiled into all .NET assemblies that is (supposed to) indicate something about when the assembly was built. Whenever you create a new C# project in Visual Studio, it helpfully creates an “AssemblyInfo.cs” file (found in the project’s …

Simulating SQL Server (Part 1)

In my last post, I talked about creating random values for all kinds of interesting types.  One of the biggest complaints I get when encouraging developers to implement unit tests (or dare I say even start thinking about TDD as a development methodology) is that testing code that accesses databases is a huge pain.  For …

Generating Randomness

My new year’s resolution for this year was to not only start blogging more frequently but also to Open Source some of our core libraries that I’ve worked on over the years. In preparation for that though it’s important I cover some of the basics and explain the reasoning behind some of the code we’ll …

The problem with null checking

The .NET framework is littered with the following code (e.g. from the System.Guid class): public static Guid ParseExact(String input, String format) { if (input == null) throw new ArgumentNullException(“input”); if (format == null) throw new ArgumentNullException(“format”); if (format.Length != 1) { // all acceptable format strings are of length 1 throw new FormatException(…); } … …

Real-time site monitoring

CloudFlare has saved my neck, repeatedly.  As regular readers no I have been migrating my domains to a new host, for all the advantages of using a big name like GoDaddy.com, there are an equal number of disadvantages.  However, using CloudFlare has meant that I can use their nameservers, which has allowed me to work …