Version 1.0

Global Assembly Versioning Strategy & Development Workflows for .NET Assemblies

Version 1.0Over the past few weeks I’ve been working on a new project in our company which involved building a number of inter-dependent assemblies, “strongly naming” them and installing them into the Global Assembly Cache. Over the course of the project, I was forced to look at a number of issues related to assembly versions, solution organisation and the deployment of assesmblies in a developer environment.

So given that it’s been a while since I wrote anything vaguely technical, I thought I’d document some of these issues down.

  • What version numbering strategy should we use?
  • How will we organise our Solution to make this easily manageable?
  • How will we manage these libraries during the deployment phase?
  • How will we circulate stable versions to developers during on-going development of other projects?
  • How will we release these libraries to customers?
[notice]TL;DR – Take a look at the VersioningDemo Solution on GitHub[/notice]

Read More “Global Assembly Versioning Strategy & Development Workflows for .NET Assemblies”

The Joel Test

Is the “Joel Test” still relevant?

The Joel Test
The Joel Test

I ended up having an extremely brief chat with Joel Spolsky recently in one of the Stack Exchange chat rooms. We learned, among other things that he’ll only return to Dublin when “the heroin addicts promise not to yell at him for eating fish and chips in a park near Christchurch” and that he’d like to “sing a duet of ‘Anything You Can Do, I Can Do Better’ from ‘Annie get your gun’ with Jeff Atwood“. But probably of more relevance to technology & programming, I was asking him did he still consider The Joel Test an accurate barometer for grading a software development team.

The joel test is still a pretty good test; there’s not much in there I would change.

–Joel Spolsky, March 2011

Read More “Is the “Joel Test” still relevant?”


System.Threading.Tasks & Parallelism in .NET 4.0


Alas, all my hope & dreams & promises of a regular blog post, dashed… oh well, here’s one now.

I’ve been playing with the System.Threading.Tasks namespace over the last few hours and it’s quite neat.

We’ll be rolling out some new software in the next few months at work which Processes SMS messages from Customers. In the past we had fudged together our own Multi-Threading/Multi-Pipeline code to try and get messages through the system as quickly as possible but it was fairly bloated to say the least. Enter the new Task and Parallel classes in .NET 4.0

Read More “System.Threading.Tasks & Parallelism in .NET 4.0”

Geo IP

Re-purposing SQL Server PARSENAME For Splitting IPv4 Addresses

Geo IP
Geo IP

I stumbled across a very nice repurposing of the PARSENAME function in SQL Server recently while playing around with some GeoIP Data. In SQL Server, the PARSENAME function is used for working with fully qualified server objects. e.g. a table on a linked server (‘LinkedServerName . Databasename . Ownername . TableName’). But PARSENAME can be used to easily split up any 4 token, dot delimited string into its constituent parts.

Read More “Re-purposing SQL Server PARSENAME For Splitting IPv4 Addresses”


Building Lambda Expressions at Runtime


Necessity is the mother of all… reasons to learn something new. So when some project requirements came down to put together a Search UI for an object graph of ~200 different properties in one wide table, we got an opportunity to play with some dynamic LINQ. We needed to come up with a quick way to allow a user to search across all the properties without making the UI unwieldy. What we provided them with was a simple UI allowing the user to apply 0:N conjunctive search filters. For each filter they choose an object property to filter by, the filtering operator (equal, less than, etc…) and the value they were searching for.

By the way, if there’s a nicer way to do this, I’d love to know about it.

Read More “Building Lambda Expressions at Runtime”