C# Design Patterns

This is the introduction to a series of 7 blog posts describing and illustrating common design patterns in C#, based on those found in the Gang of Four book.
Posted on Tuesday September 2, 2008

Whois, DNS, CName, MX record lookup in C#

This is the source code from the network tools page that use to exist on the previous domain (when the site was hosted on a dedicated server). A good replacement site is [][6], however the source for the tools is below.
Posted on Monday October 6, 2008


C# MD5 and SHA encryption wrapper class

This is a simple utility class for MD5 (128bit) or SHA-2 (256bit,384bit and 512bit) hash encryption. It outputs the string using 2 byte hex values, e.g. AB12FE. It doesn't include SHA-1 but that's trivial to add.
Posted on Wednesday January 14, 2009

Unix Cheat Sheet

This post is a command reference card for some regularly used unix commands, tested on linux (Redhat 6, a while ago) but should hopefully work on most unix command shells.
Posted on Monday February 2, 2009

Output from the Uri class

This shows the output from all the properties of the URI class for the current request. The Uri has been hardcoded as:

Posted on Friday February 27, 2009

Pronounceable password generator

A c# password generator which creates both random alpha-numeric and the more useful prounceable passwords.
Posted on Sunday March 15, 2009

Your base class: Abstract or Interface?

One thing that is often overlooked by the tutorials and books is deciding when to use an abstract class vs an interface. The fashion for using interfaces for everything often rejects abstract classes outright. This post goes into a bit of detail about it.
Posted on Monday May 18, 2009

.NET XML Comment Cheat Sheet

If you like to give your code meaningful XML comments and want the output to look vaguely like the MSDN documentation, then below are a few templates you can use for consistency. These aren't 'how to write XX method' but just how the textual descriptions appear in most of the .NET framework documentation, for example you'll find 'Raises the ... event' in almost all event descriptions.
Posted on Tuesday May 19, 2009

Dynamically compiling XSL in C#

This post shows an alternative to using XSLTC.exe to compile XSL, when the XSLT you're using is dynamically generated from the database.
Posted on Sunday June 7, 2009

Command line arguments parser

There are already 2 or 3 command line arguments in C#, two of which are found on the website. Both of these didn't match my exact needs so I decided to write my own one.
Posted on Wednesday June 17, 2009

Objective C by example for a C# developer

This is a small set of code snippets that may assist as a quick reference when switching between C# and Objective-C concepts. It's all beginner level and I've skipped some major concepts that a book will explain, as well as any C related tasks.
Posted on Monday June 22, 2009

C# Symmetric encryption wrapper

The original class for this post can be found at This class is a tidied up version (and disposes more aggressively).
Posted on Friday July 24, 2009

Const vs Readonly in C#

The differences between const and readonly, including some ILASM.
Posted on Sunday September 6, 2009

Format XML in C#

Below is a small snippet showing how to format (or re-format) XML so it’s indented. XML isn’t stored in this humanly readable way in databases (or in System.XML’s various writers), so this method makes the XML easier on the eyes.

Posted on Wednesday September 9, 2009

A Look At .NET ORMs - Part 1

Part one of look at .NET ORMs, including examples of using db4o, Linq to Entities, Sooda,
Posted on Wednesday September 9, 2009

A look at .NET Object Relational Mappers (ORM)s

This post looks at the many different ORM (object relational mappers) that exist for C#/.NET. These Object Relational Mappers aim to bridge the gap that exists between database servers and their native SQL, and the object-oriented world of non-tabular data. My main source for the ORMs I chose to look at were from csharp source and wikipedia along with a codeplex search, and just general knowledge of the products out there. I've excluded dead links from wikipedia, commercial ORMs (of which lots also exist) and narrowed it down the ones that seemed fairly mature and easy to assess from available walkthroughs.
Posted on Wednesday September 9, 2009

Export to Excel in C#

This is a very simple snippet showing how to use the Microsoft.Office.Interop.Excel assembly (version 12 for this example).

Posted on Monday October 12, 2009

Abstract methods vs Virtual methods

Many moons I was curious about the difference in IL that is produced between abstract and virtual methods. This post gives the details.
Posted on Tuesday October 20, 2009

Embedded resources example

This is a small example showing the discover and reading of all embedded resources in your assembly.

Posted on Sunday November 15, 2009

Using JQuery with ASP.NET

This post is all about calling and parsing data from an ASP.NET web service using jQuery.
Posted on Friday January 1, 2010

IConfigurationSectionHandler example

This is a small snippet for the basics of writing a ConfigurationHandler to read a configuration section from your web.config or app.config.
Posted on Friday January 1, 2010


UML cheat sheet

This is a small reference sheet for UML class diagrams
Posted on Monday January 4, 2010

Other Design Patterns

Here's a few more design patterns I left out from my design patterns series.
Posted on Monday February 8, 2010

.NET Formatting Strings Reference

This post is aimed at being a reference and a code-by-example guide to format strings in C# (and .NET), plus delving a little deeper into custom formatting strings and what goes on internally
Posted on Wednesday February 17, 2010

Printing all tables in a database with Management.Smo

The Microsoft.SqlServer.Management.Smo namespace and assembly is used by Management Studio for its interogation of the database. If you have Management Studio installed you can use this in your own applications, a simple example of which is shown below.

Posted on Thursday February 18, 2010

Using Google maps with C#

How to parse a website and then plot a set of addresses onto an embedded google map using C#.
Posted on Tuesday March 16, 2010

ApplicationException versus Exception

The two often repeated phrases about Exceptions in .NET is they should be used for 'exceptional behaviour' and sparingly; they are a performance hit on your application and aren't a replacement for logging. This post goes into some details about Exceptions and ApplicationExceptions.
Posted on Monday April 5, 2010

Syntax highlighter for C#

This is small class for color coding, syntax highlighting, pretty printing, prettifying (any of the above) C# source code. It produces HTML with span tags and a css class. It's not perfect and undoubtedly has bugs in it, but on the whole works
Posted on Wednesday April 7, 2010

Delegates, Funcs and Actions by example

This is a small set of reference examples of the various ways of declaring delegates, funcs and actions across the different versions of the framework and C#
Posted on Monday May 3, 2010

Umbraco hacks for developers

A lot of the tips below are relevant for Umbraco 3.0, issues such as the debug builds have been resolved in 4.0
Posted on Wednesday May 5, 2010

Online Javascript Minifier

This is a slightly modified Silverlight based version of Douglas Crockford's JSMIN Javascript minifier.
Posted on Wednesday May 12, 2010

Silverlight JSON WebClient wrapper/helper

This is a small class that uses the NewtonSoft JSON.NET library to make JSON requests to a URL. It handles both requests that require parameters, and those that just return results.
Posted on Sunday June 6, 2010

Online XPath Tester

This is basic tool for testing a xpath query on your XML you can paste into a second text box. Its powered by Silverlight.
Posted on Monday June 7, 2010

Inside .NET assemblies (part 1)

The first of a set of reference blog posts covering .NET assemblies + modules, structure of a .NET assembly and metadata tables.
Posted on Monday July 12, 2010

Silverlight snippets

This is a collection of mostly simple/beginner level Silverlight snippets that will slowly build up over time. A lot of the answers here come thanks to the Silverlight tag on Stackoverflow and the Microsoft silverlight forums.
Posted on Monday July 26, 2010

Inside .NET Assemblies (part 2)

The second of a set of reference blog posts covering .NET assemblies + modules, structure of a .NET assembly and metadata tables.
Posted on Thursday July 29, 2010

Extracting all links from a HTML page

The code below is a small class that extracts all links from a HTML page using a regular expression. The method returns a list of URLs, which can include formats such as “#” and “javascript:;”.

Posted on Friday July 30, 2010

CommandOptions - interactive console application command parser

This is a class based on the Novell Options class for easily parsing commands and their arguments for console applications that sit and wait for input. I've tried to keep it as elegant the Novel Options class, which is aimed at console applications that exit immediately. My adaption is for interactive apps, and restricts you to two types of handler methods - no arguments, and an array of strings as params.
Posted on Sunday August 8, 2010

Password Generator

This Silverlight-based tool produces either prounceable or alphanumeric passwords of the length you want, and quantity.
Posted on Monday August 16, 2010

Multi Line Search and Replace Tool

This tool was created because of the gap in text editors for multi-line search and replace. The only one I've found that can do it is/was Dreamweaver 4. Its powered by Silverlight
Posted on Tuesday August 17, 2010

A Look At .NET ORMs - Part 3

The final part of .NET orm series, looking at ODX, NHibernate, CoolStorage and Lightspeed.
Posted on Thursday September 9, 2010

Monotouch tips and snippets

This page is full of discoveries and snippets I'm accruing as I slowly learn my way around Monotouch. Originally my plan was to write objective-C, but just as I had finished my first Objective-C book I heard Monotouch presentation at a Devdays conference...
Posted on Sunday October 10, 2010

UITableViewController by example

This article focuses on XIB-free UITableViewControllers. The entire article focuses on adding controllers and views programatically and is completely Interface Builder free
Posted on Monday October 18, 2010

A new web front end for Team Foundation Server

Team Foundation Server has had some great improvements since the 2005 and 2008 versions, including a plethora of new link types for workitems, an API that is a lot more dev friendly and some improvements to the Visual Studio UI. It is, however, still not really close to the easy of use and user experience you get from competitor bug tracking software...
Posted on Wednesday November 3, 2010

Some base principles for Spruce

Here's 7 guiding principles I'm sticking to with the development of the Spruce front end for TFS.
Posted on Thursday November 4, 2010

Templates in TFS 2010

One of the things I wanted to establish early on with Spruce was whether it was feasible to build an editor for TFS that could handle work items, without the software needing too many variations for each template type...
Posted on Friday November 5, 2010

WorkItems that spruce supports: tasks, bugs, issues

The flexibility and arguably the over complexity of TFS versus other online bug tracking software is its ability to create custom work item types that cover anything you like. For the Scrum template this includes a Sprint workitem, a product backlog item as well as the standard bug and task items.

Posted on Tuesday November 9, 2010

Creating a custom silverlight installation the jQuery way

The default Silverlight installation and upgrade experience is fairly jarring compared to its counter-part Flash. If you target version 4.0 of Silverlight and the user has 3.0 installed, they will receive an ugly and annoying modal dialog forcing them to upgrade...
Posted on Thursday November 11, 2010

TFS Caching work items

A few days ago I bulk inserted 1000 work items for one iteration and area. The performance of the main bug list after this wasn’t too bad considering there’s no cache in place in Spruce right now. I’m not planning on putting one in until version 1, unless there is a real need for it. I’m guessing most people will be using it on a local network so the latency shouldn’t be too bad, the TFS api also does a good job caching items itself.

Posted on Tuesday November 16, 2010

Spruce screenshots

Nothing says progress like screenshots, so here’s 6 that give a general flavour of Spruce. It’s currently making heavy use of jQuery including the following plugins...
Posted on Monday November 29, 2010

Visual Studio 2010 plugin and tools

A long list of Visual Studio 2008/2010 plugins and productivity tools. Since the extension manager arrived in 2010, the plugins on the list are a bit redundant.
Posted on Tuesday December 7, 2010

Installing the Spruce alpha

The installation of (the current version of Spruce when this post was written) is very straightforward:

Posted on Wednesday December 8, 2010

SQL create table reference

Here’s a quick reference for scripting table creation in SQL server by hand, where the text is readable and pretty rather than an autogenerated mess.

Posted on Monday December 20, 2010

Spruce features from 0.1 to 0.9

The following list is the features I’m aiming to implement between version 0.1 and 0.9. Search is a fairly critical one so this will be top of the list, once I’ve finished polishing the UI.

Posted on Wednesday January 5, 2011


A UI redesign for Spruce

After spending a week with the existing design, and having a sniff around the web at project management sites I began to realise the original design was in a nutshell, crap and ugly. It was too designery and not functional enough, and most importantly contained far too much complication in the form of jQuery dialogs, fancy tooltips and pointless fluff.
Posted on Thursday January 27, 2011

Starting on Spruce's irony-powered search parser

After a few months off to eat a lot of food, I’m returning to do more dev work on Spruce. Picking up where I left off, the first “subsystem” I’m focusing on is the search. The UI and search I have in mind is fairly simple, but also powerful. I’m aiming to keep it google-esque in its search results and allow you to search the important fields of a work item, plus its core fields.
Posted on Monday February 14, 2011

Spruce: From Irony.NET to GoldParser

In the last post I was all geared up and ready to write my search engine parser with the Irony framework. As has happened a fews times to me in with searching out solutions with development, shortly after writing the post I stumbled upon Gold Parser and Calitha. I'm not usually that fickle with frameworks that I’ll ditch one straight away, however Gold Parser was exactly what I was looking for originally, that ANTLR failed to provide.
Posted on Monday February 21, 2011

Genetic Algorithms in C#

A .NET 3.5 upgrade to Barry Lapthorn's original C# example found on codeproject.
Posted on Monday February 21, 2011

Supported search syntax in Spruce

For anyone reading the blog you may be wondering and be slightly bemused as to why there’s so many blog posts and yet such a painstaking pace to the source code checkins. The main reason for this is I want to save myself the slightly boring documenting task (that many open source projects neglect) that will come later by doing it in small chunks now. The plan is to to use these blog posts as the core material for the documentation and also explain some of the design decisions.
Posted on Monday February 28, 2011

The new Spruce solution structure

I’m quite anally retentive when it comes to folder structure in Visual Studio projects: I like to keep all C# source and site assets in a structured way that will avoid me having to spend (accumulated) hours doing pointless searches and treasure hunts through the solution explorer...
Posted on Wednesday March 2, 2011

Three months later in Spruce…

Not much has changed on this blog since March, no new posts have appeared. The main reason for this has been, amongst other things, my focus being shifted towards another FOSS project I’ve been doing called Roadkill Wiki. It’s a .NET wiki engine which I wrote to take the place of Screwturn. The primary motivator for this was that Screwturn had fairly poor Windows auth support, and used its own Wiki syntax. Roadkill addresses both of these, supporting Markdown, Media Wiki and Creole syntaxes and allows you to import from a Screwturn database.
Posted on Wednesday June 1, 2011

A brand new Spruce filter UI (that I then made redundant)

After feedback from both developers and non-developers in my company about the current filter UI in Spruce, it was obviously time to ditch it. It was failure #2 in my attempt at creating a simpler way of showing TFS's vast set of work item options.
Posted on Sunday June 5, 2011

TFS Template types

One of the main features of using TFS for bug and backlog tracking is the power it gives you to edit work item templates. A work item is simply a bag of properties/fields grouped together, like a class in C#/Java/every other OO language. You can customise these fields, and you also get a set of core fields, but you also get to choose the workflow of each field. For example you can’t set a bug to closed, before it’s been resolved.
Posted on Thursday October 13, 2011

Using Spruce on a different web server from TFS

One of the big issues I’ve come up against when developing Spruce has been using the website on a different web server from the one TFS runs as. By default TFS creates itself as ‘Team Foundation Server’ as a separate site inside IIS. As its API is entirely web services based, this is where your calls are made to, the .NET assemblies simply wrap these HTTP calls up in an easy to use package.
Posted on Sunday October 16, 2011

A new Spruce UI, a big refactor and a release candidate!

It’s been roughly a year since I started the Spruce project, back in November 2010. Over the course of a year it’s had a lot of hold-ups and could be mistaken for yet another open source project where the author excitedly starts the project and then ditches it after about 3 beta releases. It’s also understandably not had much interest – I would guess that small .NET/C++ teams generally use Fogbugz, JIRA and other web-based bug and task tracking tools, while larger teams will either use TFS with the CMMI project type or the Scrum dashboards via tools like Urban Turtle and the Scrum Dashboard, or just Visual Studio.
Posted on Saturday October 22, 2011

To and Beyond!

As you’ve probably noticed if you’re one of the 10 people who don’t browse the site for less than 40 seconds (that’s 99% of the traffic), the URL has changed and the design too. I’ve moved all my content over from the dedicated Win 2008 server running N2 to, saving me about £25 a month.

Posted on Sunday November 20, 2011

403 Forbidden errors with ASP.NET MVC 3

Have you just created an ASP.NET MVC 3 site on your local/developer box to use Windows authentication, mapped it correctly and then continually got an authentication box appearing even though you’re typing the username/password correctly? And the permissions on disk are fine, you even have everyone mapped to the root folder.

Posted on Sunday November 20, 2011

Spruce 1.1 released

I’ve just released a new minor version of Spruce - my open source ASP.NET MVC project for Team Foundation Server. The minor increment fixes a few issues, but also (barring bug fixes) ends the development cycle of the project. I’m not planning on adding any new features or support for new work items to Spruce in the future. It’s now got support for MS Agile’s Bugs, Tasks, Issue work items and doesn’t support the other three work items.

Posted on Monday December 12, 2011


Parsing XFDF (PDF annotations) in C#

I’m in the middle of doing the final two modules of the 3rd year of my part-time Computer Science degree, which means going back to the books. I’ve gone through virtually every note taking technique possible for the reading over the years - textbook + pencil on the tube, Pulse pen, converting PDFs by hand for the Kindle and netbook. This year I’ve decided to try something different, and use the annotations functionality built into the PDF 9+ format. Fortunately the Open University provides most of the course reading in PDF format (except this book, the main course text of one module). There’s no lectures and occasional seminars so the majority of your time is spent reading the course texts and doing the activities for each assignment.

Posted on Tuesday February 7, 2012

Filtering System.Diagnostics Trace messages

One of the biggest points earners for me on Stackoverflow has been this question about Error logging in C#/.NET. Having been fairly experienced with the setup of Log4net, I’ve seen firsthand how much over kill it generally is for logging (unless you like to use your live servers for debugging), and also how it just isn’t needed as .NET has its own in built and comprehensive logging framework built in.

Posted on Monday February 13, 2012

Using Team City for staging and test builds with ASP.NET and Selenium

I've been meaning to write this up for a while, to share my ongoing experience with using Team City for our build, test and staging server, but I've only finally got round to writing something up. I stumbled upon Team City in 2011, after looking around for an alternative to Team Foundation Server's Build server, which wasn't working well with Selenium tests. It's amazing that the product is free for up to 20 or so projects given how polished it is. My workplace doesn't have a huge test coverage setup, mostly down to time constraints (if you want an example of huge test coverage, check out the Team City build server, with over 5000 CI tests running), but the prime motive for using Team City is to automate the following...
Posted on Tuesday March 6, 2012

Serializing an object to XML snippet

I’ve written this same snippet so many times I’ve decided to shove it here to save my fingers a few calories in future. It’s nothing special, just a way of serializing an object to XML.

Posted on Wednesday March 14, 2012

Powershell snippet: running your own Powershell scripts

If you try to run your own powershell scripts via the console, they won’t be allowed by Powershell by default due to its paranoid security policy. To get around this, open a powershell console as an administrator and type:

Posted on Friday March 30, 2012

Razor: Defining a section inside a HTML helper extension method

If you need to inject a generic section of code to your view you’d typically write an extension method for the HtmlHelper class and return an MVCHtmlString. You can also create an extension method that will add a @section Name to the view, using something like the snippet below:

Posted on Wednesday April 4, 2012

From Squarespace to WordPress

The site is now powered by WordPress, having tried it out a few years ago and rejected it, I’ve come to like it and its plugin architecture - it’s fairly slick now and supports everything I needed. It has a wealth of themes which Squarespace doesn’t have, far more flexible and about the same price.

Posted on Saturday February 23, 2013


Moqs versus Stubs (2013 edition)

This is an age old debate which I’ll chirp in with my opinion. According to Gojko Adzic there’s two types of TDD people in the world: classic stubbers and the new(ish)-school Moqers (or Mockito in the Java world). MOQ is an amazing tool, but consider the following test code:

Posted on Monday February 25, 2013

Creating an instance from a string or type name in StructureMap

As part of the refactor I’m doing for Roadkill, I’m loading custom types from the config file as default instances, via StructureMap. The types are defined as strings in the config file, and in future more plugins will be loaded this way.

Posted on Wednesday March 6, 2013

Moving away from NHibernate in Roadkill

In the next version of Roadkill (1.6) I’ve moved away from NHibernate, the ORM that has been powering it for two years since version 1 and to a commercially supported ORM called Lightspeed.

Posted on Monday March 25, 2013

Installing MVC3 on Mono with Ubuntu

I managed to get the wiki engine I spend a lot of more spare time writing, Roadkill working on Ubuntu with Mono this weekend. Unfortunately for me, a lot of the documentation is patchy which meant it took a few hours to get it up and running by scouring Stackoverflow, blogs and news groups. It is infact very simple to get MVC3 working with Apache on Linux, provided you have the right Apache config settings and are willing to add a few hacks into your code to cater for the gaps (NotImplementedExceptions) in the Mono framework.

Posted on Monday April 22, 2013

Syncing Github with Codeplex

Assuming you have used the Github Windows gui (or the console) to clone a Github repository, you can push it up to Codeplex in the console by using something like this:

Posted on Sunday June 30, 2013

Measuring the quality of code in Roadkill

One of the subjects I recently studied in my part time university course was how to measure a software system’s complexity, including quality measures for your code. These are statistical ways of measuring code or system complexity date back to before the SOLID principles became popular and with a little bit of insight give a fairly good marker of how complicated or clean your code is.

Posted on Wednesday July 31, 2013

Anti-XSS .NET libraries in 2013

One of the more important parts in Roadkill Wiki is removing malicious HTML from the markup that’s entered, even when the markup (Creole and Markdown) is controlled.

Posted on Friday October 11, 2013

Using the this keyword with Typescript and a jQuery function

When you write Typescript, you’re forced by the compiler to use the “this” keyword when you want to access member variables or methods. If they’re static, you’re forced to use the name of the class (as you usually would in C#, although it’s syntactical).

Posted on Saturday November 23, 2013


A C# UK bank holiday calculator

In the UK we’re fortunate enough to get 5 free holidays a year, under the guise of “Bank Holidays”. These are mostly on Mondays and come in January, March/April, May, August and December.

Posted on Wednesday May 21, 2014

Using Appveyor as Roadkill's CI to run acceptance tests

A while ago Roadkill’s CI solution was hosted on Appharbor, which was a great solution (and free for a single project), but the configuration hacking and I problems with the hosted environment with the unit tests meant it wasn’t a viable solution for Roadkill’s requirements.

Posted on Wednesday June 11, 2014

.NET logging libraries compared

This is a short presentation I created for the company I work for, and gives my thoughts on the state of .NET logging libraries in 2014. My knowledge comes from day-to-day use of MSEntLib and log4net and moving from TraceListener to NLog in Roadkill. The presentation comes from a web and windows service perspective.

Posted on Friday August 8, 2014

Configuring WCF in code

One of the main issues I have with WCF, compared to say a WebApi or a NancyFX based API, are the ridiculously large configuration options you have available. The ABC approach it uses (addresses, bindings, contracts) can adds a lot of confusion when you’re creating a service and also connecting with a client.

Posted on Wednesday May 6, 2015


From Wordpress to Wyam

Converting this blog from Wordpress to the Jekyll-like .NET tool, Wyam.
Posted on Sunday November 1, 2015

From Wyam to Jekyll

Converting the blog over to Jekyll for free Github hosting.
Posted on Monday November 9, 2015

Upgrading an MVC StructureMap 2 app to StructureMap 4

A well-known scientist (some say it was Bertrand Russell) once gave a public lecture on astronomy. He described how the earth orbits around the sun and how the sun, in turn, orbits around the center of a vast collection of stars called our galaxy. At the end of the lecture, a little old lady at the back of the room got up and said...
Posted on Tuesday December 1, 2015


Shorter blog posts

I listen to a lot of podcasts from a small clique of online “life hackers” (a cringey term), most of which I’ve discovered via Joe Rogan.

Posted on Sunday February 14, 2016

Powershell - the good parts

I’ve been using Powershell on a daily basis for about 2 years now, mostly with Chocolatey and provisioning servers (the devops movement). Whilst it’s a huge improvement over batch files (anything is) and VBS, it is has foibles.

Posted on Monday February 15, 2016

Podcast of the week - April 2016

My podcast recommendation for this week comes from Sam Harris’s discussion with David Chalmers about consciousness.

Posted on Saturday April 23, 2016

Podcast of the week - April 2016

My podcast recommendation for this week comes from Sam Harris’s discussion with David Chalmers about consciousness.

Posted on Saturday April 23, 2016

C# Unit test generator

This small Javascript pen generates a C# file for an object you want to test, using a list of test cases you specify in the textbox in this format:

Posted on Sunday April 24, 2016

Do you write unit tests before code, or after?

One of the biggest omissions in the TDD literature is the concept of code first vs test first. The discussion doesn’t seem to surface very often, possibly because it’s a more advanced topic.

Posted on Thursday May 5, 2016

Podcast of the week - May 2016

Not really a podcast, more of a vodcast, the discussion talks about fasting (Ray Cronise had just been on a 30 day water fast), hot/cold therapy and the Vim Hoff method and the concept of being satiated.

Posted on Sunday May 8, 2016

.NET Core and .NET Standard simplified and explained by Scott Hunter

With all the changes to .NET that have happened this year, and the constantly evolving .NET core/standard (and the bombshell that project.json is going), it’s quite hard to decipher what Microsoft are doing to the frameworks besides the main marketing features of it running on Linux/MacOS with NPM style packages and ASP.NET getting Kestrel.

Posted on Monday July 18, 2016

Continuous Integration cloud services

I’ve probably missed a couple, but this is a list I’ve compiled of all the CI services I know about, geared towards cheapo devs on a budget. My area of expertise is Teamcity, Octopus, Bamboo, Gitlab and a bit of Jenkins and Travis, and limited to dot net core.

Posted on Friday August 26, 2016

Fixing .NET Core package restore problems

I had this problem today where a dotnet restore was failing on a Linux CI server, but working on my Windows 10 dev machine. The error was:

Posted on Monday August 29, 2016

Updated Unix Cheat Sheet

My career as a web-centric software dev started with Unix (Linux and some Solaris/BSD) and thanks to .NET Core I’m now back in that world for some of my web development. I much prefer Unix for the server, particularly as it’s far cheaper than Windows to tinker with as a developer but also its simplicity. It is made for automation - something Windows is slowly catching up with but still performs in a clunky way.

Posted on Monday September 5, 2016

Running cron jobs inside a Docker container

Probably the most basic use of a Docker image is to run it, and let it exist - like docker run hello-world. If you want to do this on a regular schedule, you have several options but the cron one is narrowed down to running cron on the Docker host or in the container.

Posted on Wednesday September 7, 2016

Podcast of the month - Sept 2016

A weekly favourite podcast doesn’t really work on this site, as I only end up adding them every month or two. So I’m switching to a monthly format to share my discoveries in the Podcast world.

Posted on Friday September 9, 2016

Podcast of the Month Oct 2016

The first 30 minutes of this podcast are worth a listen alone, Chris Kresser discusses how your stomach biome is linked to depression, your brain and cravings. After that they discuss the role of meat in providing nutrition to humans, and how we don’t consider ourselves animals anymore.

Posted on Sunday October 16, 2016

.NET Core continous integration and deployment with Gitlab, Docker, Kubernetes and Google Cloud

Over the past few months I’ve put Roadkill on hold in my free time, to get some .NET core projects working inside Docker. They’re mostly sandbox websites for exploring the tech stack, and are hosted privately in Gitlab. Gitlab gives you a decent CI server for free, which works really well with CI and deployment of .NET core apps (both websites and console apps).

Posted on Wednesday February 1, 2017


A list of my wacky diets

Over the past three or four years I’ve tried a number of different diets, mostly to aid my running: this is my experience with all of them:

Posted on Saturday July 28, 2018


Photo of the month

It’s been a long time, but here’s a nice photo of Valencia Opera House from, on my list of places to visit.

Posted on Saturday July 28, 2018

High performance and scaling ASP.NET Core and Docker

For a recent project I was part of, we were given the NFR (non-functional requirement) of having a cluster of ASP.NET Core Docker containers able to scale up to ~100,000 requests per minute.

Posted on Friday August 17, 2018