Completely off topic but it explains the shameful lack of posts recently:

I finally got my Orc Shaman ‘Urki‘ in World of Warcraft to level eighty! I only started levelling him in January so I’ve been pretty slow (restrained) but now I can finally start playing in the arena (PvP).

I also managed to get the artisan riding skill so I can use epic flying mounts. Having an epic speed flying mount (this is my current) makes a huge difference to travel times, which I hadn’t fully appreciated before.
The more experienced I become the more aware I become of what I don’t know and the more I come to terms with the fact that I make mistakes.
The awareness of what I don’t know helps keep me humble, humility makes working as part of a team easier: as there is no pressure to have to know everything or not make mistakes. In fact I tend to expect to make mistakes more now than when I first started programming. Perhaps it is the years I have spent shipping games that finally proved to me that I too write software that contains bugs (the horror!).
I remember a professor at university telling me that the main difference between a professor and a first year student working on a programming task is that the student will start working immediately and also start making mistakes immediately, the professor will think for a while then start work and start making mistakes as well. I have found this observation to have a surprising amount of truth in it,:whether it is at university, work or even sports.
Mistakes are healthy: without mistakes we would have not reason to every really think about what we are doing e.g. why didn’t that work? By continually pushing (or stretching) ourselves to failure we discover our boundaries, once we know where are our boundaries are we can then start to work on pushing them further. However if we always play it safe and never push ourselves (which can be scary) we will never discover our boundaries which makes improvement much harder and also makes approaching those boundaries harder due to fear (typically of loss of control).
An excellent example of this is people learning to ice skate: young children will tend to fling themselves around the rink with wild abandon falling all over the place (as failure is expected but irrelevant due to lack of social stigma), yet adult beginners typically skate in a much more conservative fashion taking less risks (as there is social stigma against falling as an adult: falling is seen as failure). Interestingly when observing ice hockey players, it is noticeable that those with the best skating technique are typically falling more than the other the non-beginner players on the ice, as they do not fear falling.
As most of us are not engaged in high risk activities on a daily basis we can easily begin to revise how we think about failure and to learn to embrace it as a powerful tool for self improvement.
You may have noticed that the layout of this blog has changed and a few new features have appeared. I have implemented a couple of things I have had on my to-do list for a while now.
Three Column layout
I have been finding that a two column layout does not have sufficient space for all the widgets I would like to have, without having to resort to a really long second column. So after a bit of thinking and some research I converted my current theme into a three column layout.
I found the following two posts very helpful when converting my theme into a three column layout: Adding Extra Sidebar to your Wordpress Theme and How to Create Multiple Dynamic Sidebars for Wordpress Widgets. I also found the CSS Edit application by MacRabbit to be an essential tool for easy CSS tweaking, its so good I actually bought a licence.
Most Popular Posts Widget
It is important to be able to point visitors to the most popular content to keep them interested. The ‘Most discussed posts’ widget provides a customisable list of the most commented on posts on your blog. There are other widgets that can list the most popular posts by visits (page views) but they require extra database activity to record the visits which I’d rather not have to use on my hosting plan.
Google Reader Widget
This widget interacts with Google’s Reader service to provide a list of your recently shared items in Google Reader. This is a great widget for sharing the posts or articles you have found most interesting with your readers, you can even add comments to each item. This won’t completely replace my Friday linkage posts as there are sites I find without going through an RSS feed but it is something I have wanted on my blog from its conception.
Twitter for Wordpress Widget
I have been using this Widget to display my latest tweets for a while now. However due to not having enough space in the second column I’ve never been able to have more than my last tweet visible. Now I am using a three column layout I can now have my last few tweets displayed which I think makes them a bit more coherent.
RSS Icon Widget
An RSS feed link and icon is something I have been wanting to add to my template for a while, this handy little widget lets me do just that without any template voodoo. Although it would be nice if it could also give and icon and link for the comments feed too.
The main thing I have left to deal with is some further minor tweaking of the theme and to replace the current banner with something a less geometric and a bit more fluid and interesting. For the new image I had been thinking of something to do with ink in water but so far I’ve not found the sort of horizontal image I’d like.
This weeks interesting pages:
How to broadcast your Google Reader ’starred items’ to an RSS feed or widget on your blog
This post explains how to share your Favorite (starred) items in Google Reader via either an RSS feed or as a widget on your blog. This is something I am interested in, as these weekly linkage posts are essential a summary of my starred items in Google Reader for that week. Although not all my Friday Linkage links come form Google Reader but it would cover most of the interesting blog posts.
Playing in Traffic
David’s well titled post on generating traffic on your website in a classy manner e.g. not through buzz word bingo is well worth a read. Especially if you are interested in increasing your traffic while retaining your credibility. His portfolio of photographs is also well worth a browse.
Unit Testing: One Test, One Assertion – Why It Works
This post makes the case for one assertion per unit test. As relative beginner to unit testing and as someone who tends to have multiple assertions per test I find this an interesting idea which I think I will need to try out.
The Psychology of Passive Barriers: Why Your Friends Don’t Save Money, Eat Healthier, or Clean Their Garages
Ever wondered why people don’t do things that are clearly beneficial for themselves? This post discusses some of the Psychology of this phenomenon. Although this is not specifically about software engineering, it is talking about an important aspect of user interaction: motivating/compelling the user to do something.
Actively Avoid Insights: 4 Useful KPI Measurement Techniques
This article on Web Analytics discusses four commonly used measurement techniques: averages, percentages, ratios and compound metrics and how they can actually hinder your understanding of your progress against your goals unless they are applied with some thought.
The ‘Golden Hammer‘ is a very common anti-pattern, which can be best summed up by the phrase “if all you have is a hammer, everything looks like a nail“. This anti-pattern occurs when the perpetrator has typically learned a particularly powerful technique or design (the hammer), which they then go on to apply blindly to all problems (the nails) they encounter whether it is a suitable solution or not.
This can be especially evident amongst beginner programmers, who are learning new techniques almost constantly, but it only seems to become a dangerous anti-pattern if the individual becomes overly fixated on a particular technique.
Interestingly this anti-pattern can apply to more than just individuals, in my experience it can also apply to teams or even entire organisations. One of the ways I have seen this manifest at a team or organisational level is with attempts to solve social problems with technology solutions. This trait seems to be especially strong in software development organisations: perhaps because technology is their usual solution to problems.
Such social issues faced by development teams and organisations can include things like not breaking the build, lack of communication or lack of testing. These problems really are not technology problems, they are social (people) problems, yet time and again I have witnessed technology solutions to these problems. For example, more elaborate and sophisticated check-in systems being introduced in response to constantly broken builds, where a much simpler social solution such as peer pressure to not break the build would be much more effective.
Avoiding the Golden Hammer when programming is achievable with some self awarness and honesty: are you using your current technique for the right reasons? However, identifying and interveening when a team or organisation is about to use the Golden Hammer is much more challenging as it can involve going against the solution favoured by the majority along with the polical implications that brings…