Skip to main content


Migrating (and Open-Sourcing) an Historical Codebase: SVN-to-Git

I have a SVN repo on my local machine that I have been shoving stuff into since before I knew how to use revision control systems properly (I still don't). Each of the directories in my repo represents a separate project. Some of my directories have a proper trunk/branches/tags structure, but most don't. I want to migrate each of my SVN repo's directories into it's own new respective git repo, retaining all historical commits.

[My dodgy SVN repo]
The best tool I have found to do this so-far is svn2git:

This tool is a ruby gem that essentially wraps the native git feature for managing svn-to-git migration - git-svn. If you use svn2git's "--verbose" flag, you can see what commands it is issuing to the wrapped tool.

Migrating a dodgy SVN repo to multiple git repos
The reason I decided to blog about my experience was because I had a bit of trouble with the documentation and a bug with the svn2git tool. Mostly the tool is gre…
Recent posts

Should architects write code?

Should architects write code? Much conventional wisdom I'm aware of would suggest that architecture is different from programming, but that architects should definitely write code. For example:

Ward Cunningham's (an original signatory of the Agile Manifesto) wiki: "Architects Dont Code" (as-an Anti Pattern) -

Simon Brown's blog: "Most software developers are not architects" -

I did Toastmasters with an interesting character a few years ago. This person had recently left a very successful career in sports management in the USA; they decided they wanted a change in direction. They had completed an MBA with a reputable university and picked up an Enterprise Architect role (responsible for IT integration) with a large public-sector organisation. This person - who I really liked - had no background whatsoever in programming (or…

The art of the professional apology

In my line of business it's often assumed that it's unwise to apologise. The same probably goes for most businesses. To apologise is to admit liability for at least part of a mistake that has been made. As a provider of a professional service, to apolgise is to reveal a vulnerability in the expertise that your customers have come to you for.

Yet a sincere, unlaboured apology can be an important part of the ongoing development of a business relationship. It can also test a relationship. Is the receiving party going to take advantage of the situation and press for discount, raising a volunteered admission of mistake as justification? And in that case, is this the type of customer you really want to be dealing with (if you have a choice)?

[This joker doesn't look particularly sincere -]

A sincere apology usually takes courage. It can in-fact be viewed as a sign of good judgement. An apology is of…

Microsoft is Going GNUts

Discussion I cut my teeth as a commercial software developer developing line-of-business systems for SMEs in with Microsoft Access in the early 2000s. Although I have subsequently enjoyed working with a range of tools and platforms (wouldn't quite call myself a "polyglot" yet), I generally take a keen interest in how Microsoft's software development surface-area emerges and evolves over time.

The past year-or-two (since Satya Nadella has taken the lead) has been fascinating - very exciting, from my geeky perspective. The Microsoft software development toolkit is basically gone/going open - right down to the nuts-and-bolts that is "Bash on Ubuntu on Windows". This attitude is an about-face - having gone from implicitly exclusive to explicitly inclusive.

Strategically this makes great sense, since for Microsoft it's really mostly about the cloud land-grab (pun intended) now; in effect Microsoft are saying - "Bring all of your systems and platforms t…

Using TestDriven.NET and NCover to benchmark and monitor unit test code coverage

I wrote this blog post about a year ago - have finally got around to putting it online. It uses a "genericised" system called UpdateManager to demonstrate how to set up code coverage analysis for .NET. Hopefully it's not too dated just yet...
What is unit test code coverage benchmarking/analysis? Unit test code coverage analysis essentially tells us "how much of my codebase is covered (or "exercised") by my unit test suite?" When we are writing unit tests, it is necessary to visually scan the codebase and get a feel for what degree of coverage we have and what parts of the codebase are important/relevant for unit test. Setting up a benchmark such as "a standard .NET codebase must have at least 70% unit test coverage" can be useful, as although this is not a fail-safe way to make sure that we are testing the right things, we can at least be certain that if our metrics indicate we meet the benchmark, most of the important stuff will be tested. …

The importance of improvisation

Preamble, background, etcScrum is a process improvement framework that has grown up within the world of software development and/but is increasingly used not only within the world of software, but outside of it also. Scrum in-fact lends itself well to product development in general. This post focuses on Scrum (and frameworks like it); in particular how it copes (or doesn't cope) with significant organisational change and where/when improvisation becomes more important than a framework.

The following links provide some information about Scrum:
A 1986 HBR article that introduces the basic concepts: Wikipedia page on Scrum: acquaintance of mine recently asked an interesting question about Scrum...which was essentially: 

"What do you do when an established Scrum team encounters a serious problem?" 

["What do you do...what do you do...?…

The story of the "My Big Bro" experiment

What is MyBigBro?MyBigBro is a system I have built that tracks a user on their journey through a city and captures and stores imagery of them that has been made available on the city’s CCTV traffic camera network, as they move through the field of vision of each subsequent CCTV traffic camera. Why'd you do that? There is a growing trend among Governments globally to make the data that they collect on their citizens as open and available as possible. The MyBigBro 'experiment' (I'll explain why I call it that later) explores this trend and leverages some of the data that is becoming accessible.
Some examples of open dataset repositories provided by Government are as follows: New Zealand: Kingdom: One of the datasets that I find particularly interesting is CCTV traffic camera imagery. MyBigBro leverages that specifically. How does the MyBigBro experiment work? At the t…