Want an iPhone 4G upgraded to 4S? No problem.

October 5th, 2011 No comments


Delete cookies

October 4th, 2011 No comments








My life in a nutshell

October 2nd, 2011 No comments


Clear postfix mailqueues

September 7th, 2011 No comments

sudo postsuper -d ALL


You are NOT a Software Engineer!

June 14th, 2011 No comments
You are not a Software Engineer. You do not build skyscrapers. You do not build bridges.

You grow gardens.

You are a Software Gardener.

Do you try to plan your gardens in such detail that you know where each leaf will be positioned before you plant a single seed? Do people expect estimates (or are they promises in your organisation?) on exactly how many flowers will have bloomed in one years time? Do you have a bonus tied to that? Things that would be perfectly reasonable to plan for a skyscraper seem a little ridiculous when you are talking about a garden.

You probably have a good idea of what your garden should look like a week into the future. You might even have a rough idea of the shape you expect it to be in a year from now. But you have no idea of where each branch, leaf, stem and flower will be a year from now, and if you say you do then you’re really only guessing.

If you were building a bridge or a skyscraper and you told me, before you began, that you knew exactly how it would look when it was finished – I would believe you. If you told me that you knew to some insane degree of accuracy how long it would take to get to ‘finished’ – I would believe you again. That’s how Engineers roll. Tell me the same thing about your garden and I’m gonna call bullshit. Tell me you are going to make it grow faster by hiring more gardeners and I’m gonna laugh at you.

So why do so many gardens fail, yet so many skyscrapers succeed? With a few exceptions, the technique for building a skyscraper is similar whether you are in Europe or you are in Singapore. Gardens do not work that way. Every garden is different because the environment it is in is different. Even gardens that are within throwing distance of each other can have wildly different soil. That is why the lowest bidder can probably build the same bridge as the highest bidder, but your company can’t grow the calibre of gardens that Google can grow.

Remember that time when someone in your company unsuccessfully used an Agile gardening methodology, and then went around saying that it was horse shit that doesn’t work? Well horse shit does grow gardens, it just wasn’t enough to save your garden. Your garden was probably dead before it started – a victim of the climate of your organisation. Were you trying to grow a rainforest in the desert? You can’t just plant the same plants as Facebook, Flickr or Twitter and expect them to take root regardless of the quality of your gardeners or the climate of your organisation.

Unlike a skyscraper, your garden will grow weeds. It will never be ‘finished’. Just because you stop spending money on it doesn’t mean it is finished. If you stop weeding your garden the weeds will eventually smother it, and soon a re-plant will look easier than a pruning. The environment around your garden will also always be changing, and a neglected garden will become harder and harder to keep alive.

In most countries, Engineers need a license to build a bridge. Gardeners have no such government-mandated quality control. Unfortunately, the quality of your gardeners is going to have a bigger influence on your gardens success than any other factor – so you’d better be good at picking the wheat from the chaff. Only an experienced gardener really knows another good gardener when they see them. Someone who has merely managed gardening projects will have no idea what they should be looking for (though they won’t know this). So if you are not a gardener, but need to recruit good gardeners, then quickly find an experienced gardener you trust to vet your candidates. You can’t learn gardening in a classroom, so remember to focus on gardens your candidates have grown before, rather than how much gardening theory they learned at school (which nearly always won’t be applicable to the climate you are growing in anyway).

The engineering metaphor has had its time in the sun, and maybe it even used to be accurate, but now it really only serves to help non-technical people have unrealistic expectations about how software gets built.

I am a Software Gardener.

So are you.

Taken from: http://chrisaitchison.com/2011/05/03/you-are-not-a-software-engineer


SQL Server 2008 Management Studio …

March 13th, 2011 No comments

Warning Message:

Saving changes is not permitted. The changes you have made require the following tables to be dropped and re-created. You have either made changes to a table that can’t be re-created or enabled the option Prevent saving changes that require the table to be re-created.

This is by design and can be quickly fixed in Management Studio by unchecking a property. To fix this in Management Studio, go to Tools -> Options then go to the Designer Page and uncheck “Prevent saving changes that require table re-creation”.

What a crap…


And backing up gitorious

January 31st, 2011 No comments
On Wed, Dec 30, 2009 at 5:09 PM, Benjamin Podszun <
benjamin.pods...@gmail.com> wrote:

> What I want to know: How do you backup the whole stack?
> I could easily drop nightly pulls for each repository on a tape.
> I could easily backup the database the same way.

That should be sufficient, just keep your configuration files too.

> But - is that enough? And how would I reconstruct the environment? The
> repositories have cryptic (hashed) names.

The database contains the hashed paths for the repositories, mapping things
like "gitorious/mainline.git" to the hashed names.

> The database has overlaps with the filesystem (it contains the ssh
> keys, but what happens if the git user's authenticated_keys2 is empty
> because I just set the machine up again?) where I can see potential
> problems.

Extracting the ssh keys from the database to the authorized_keys file is
done by the ssh_key_processor script, which again calls out to the SshKey
class. Provided you have the poller script running, entering something along
the lines of:


would put messages on the message queue that, when processed, would add the
key to the authorized_keys file.

> I wouldn't know how to import source and wiki content back into
> gitorious, without a lot of struggle and cursing. Did anyone something
> like that before? Is there a guide out there, that I missed? Any
> scripts, experiences, ideas? I'd hope that the gitorious.org service
> has something like this in place. How is it done?

The wikis are Git repositories too, so restoring the database and
repositories from a backup to the same file system locations as before
should "just work". Just make sure you keep a backup of your configuration
files too, in case you forget...



You received this message because you are subscribed to the Google Groups 
"Gitorious" group.
To post to this group, send email to gitori...@googlegroups.com.
To unsubscribe from this group, send email to 
For more options, visit this group at 


January 31st, 2011 No comments

Having spent some time battling with gitorious found a nice script here, (b)logging for my own reference:

Public Clone URL: git://gist.github.com/716108.git

Nice one – dump part of SVN repo

January 26th, 2011 No comments

Today at work at Fronde I needed to create a dump of a ‘project’ inside a repository. Our SVN setup is to have one repo per team and then within there have a folder for each client/project. In this case I was providing the backup to a client so it was vital that I gave them just their code and not the whole repo.
So my SVN repo was like this:

To dump the clientA history into a portable, re-creatable format, I used svnadmin dump, like this:
svnadmin dump [path to repo] > repo.dump

Which creates a dump of the entire repository into a file called repo.dump. This took about 10 mins with 1000 versions and used 100% CPU so it would be best to perform this outside of normal work hours. You have been warned!
I then used svndumpfilter (tutorial) to filter just for the ClientA folder (see folder tree above):
svndumpfilter include clientA < repo.dump > clientA.dump

If you have nested repositories, then it breaks with a syntax error. To get around this you need to run the dump multiple times using the ‘exclude’ directive until you have what you want:
svndumpfilter exclude clientB < repo.dump >> clientA.dump
svndumpfilter exclude clientC < repo.dump >> clientA.dump

This didn’t take very long and at the end I had a full svn repository that could be re-created anywhere. To prove the point I installed SVN on my mac and created the repository. I then loaded the dump file into it and it worked beautifully
svnadmin create /Users/Dave/ClientA
svnadmin load /Users/Dave/ClientA < ClientA.bak
mkdir /Users/Dave/ClientA-checkout
svn co file:///Users/Dave/ClientA clientA-checkout/

Now that you have checked it, you can delete the whole repo backup file (mine was massive) Repo.svn-dump in my case.
Easy as pie once you know how. The fact that you can’t specify the filter at dump-time is non-intutative, clunky and frankly a waste of space. However if you only need to do it once it works and produces a very nice result. Open Source and Open Standards FTW

Taken from: http://daveharris.wordpress.com/2008/08/05/svn-dump-parts-of-a-repository/

Tags: , ,

Certified Scrum Master

October 18th, 2010 1 comment

As of today I’m officially a Certified Scrum Master. Passed online assessment with a score of 91. So still some points to improve!

Certificate (link)