How many combinations ?

Combinatorics in .NET – Part I – Permutations, Combinations & Variations

How many combinations?
How many combinations?
[important] This is part 1 of a 2 part post on Combinatorics in .Net

The solution is publicly available on github;

The library can be added to any .NET Soution via Nuget;


Recently while working on a project, I had need to generate combintations and permutations of sets of Inputs. In my search for a decent combinatorics library for .NET, (something which is missing from the BCL), I came across a Codeproject Article from Adrian Akision. The implementation included a C# Generics Collection implementation for creating Combinations, Permutations & Variations from an Input Set. Adrian very graciously allowed that I bundle up the code as a Class Library Solution on Github & then release the library via Nuget.

Read More “Combinatorics in .NET – Part I – Permutations, Combinations & Variations”

Cyclic Reference

Xml & Json Serialization of Object Graphs with Cyclic References in .NET

Cyclic Reference
Cyclic Reference

As a WCF Developer you’ve no doubt run into some issues with object serialization at some point or another during the course of developing your applications. Either during the course of pushing your entities through a WCF Service or by attempting to serialize those object for transit through other media. Recently I ran into some issues around serializing WCF Entities with Circular References (or cyclic relationships) between parent & child Objects.


A large percentage of our company’s software work relies on moving a variety of object graphs around through WCF. These object graphs, often times contain self-references or circular references. The data we deal with is primarily related to the airline industry; specifically crew & flight schedules. It contains complicated tree structures of data with information on the flights crew-member’s fly, the duties (work-shifts) those flights belong to & the pairings, those duties are contained within. (A pairing is airline industry parlance for a collection of Duties organised into a longer 4 or 5 scheduled body of work for a crew member. Confusingly, it is not necessarily a Pair of anything).

In order to allow us to more easily navigate these object graphs, we populate a number of helper properties on the entities to allow us to traverse up and down the graph with ease. The following is an extremely simplified example of what gets populated in our Crew Schedule “Roster” Object Graph and shows the relations ships between the three previously mentioned domain entities.

Of course, this makes for some interesting cyclic situations when both the parent objects & contents of the child collections are cross-wired to one another and we want to serialize those objects for use through a WCF Service.

Read More “Xml & Json Serialization of Object Graphs with Cyclic References in .NET”

Visual Studio 2012

Visual Studio 2012 – First Impressions

Visual Studio 2012
Visual Studio 2012

Last week, I took the leap and upgraded my work machine to Visual Studio 2012 and it’s been very smooth sailing so far. The installation for starters was a breeze and there are a number of improvements & new features that Ive been very impressed by straight out of the gates.

Dark Colour Scheme

I’m a big fan of the Dark Color schemes in the my IDE and a long time user of the Son Of Obsidian style in Visual Studio 2010 so it’s nice to see some first-class support for dark, expression-blend style themes in VS2012. Open the Tools Menu, then Options and the Color Theme is the very first choice on the General Tab.

VS2012 Dark Color Theme
VS2012 Dark Color Theme

Read More “Visual Studio 2012 – First Impressions”

Windows 8 & TrueCrypt Security

Windows 8 In Place Upgrade – Important Lessons

Windows 8 & TrueCrypt Security
Windows 8 & TrueCrypt Security

Windows 8 RTM was released last week and since Rainmaker are MSDN Subscribers, I decided last Friday during a quiet few hours that I’d upgrade my work/development laptop to the new OS. It has not been going smoothly. Here are a few of the problems I’ve run into so far.

  • Make sure the ISO you’re installing from matches the existing installation on your machine. In my case, the in-place edition (Windows 7 Enterprise) was incompatible with the ISO we’d downloaded (Windows 8 Enterprise N). That set me back several hours while pulling down a different ISO.
  • The Installation makes you take a “Leap of Faith”. You need to un-install a number of “Incompatible” pieces of Software. On my Dell Latitude that involved uninstalling the Broadcomm BlueTooth Drivers, the Intel Wireless & Wired Proset Drivers, Magic ISO Reader… pretty much everything that allowed the laptop to communicate with the outside world. Make sure you have the drivers handy on a USB key in case you need to abort the install and get your laptop back to normal. I also had to get rid of the Avast Anti Virus Install for what it’s worth.
  • But the pièce-de-résistance was that when I finally got the installer running, I had completely forgotten that my Laptop Hard-drive is protected by TrueCrypt which requires a password when the machine boots up. Alas, instead of password entry this morning, I was presented with a nasty “Missing Operating System” message. TrueCrypt obviously needs to host OS intact to run, even before the OS loads up.

So right now I’m 5 hours into what will probably end up being an 8-hour full disk decrypt. Fingers are tentatively crossed that once the disk is decrypted the Windows 8 install will happily continue on where it left off. Optimistic?


That went surprisingly smoothly in the end. Once the TrueCrypt Disk Decryption finished and the machine rebooted, the setup processed continued exactly where it had left off and completed without incident. Shiny new Windows 8 Install.

~Eoin C

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”