Mar 312012

While working with logging of an application I found that the thing I wanted to test was the actual output from a logger. After digging around a bit I found a neat thing in log4j called AppenderSkeleton. It’s pretty straight forward, extend AppenderSkeleton to keep track of log events and add your new appender to the RootLogger.

Continue reading »

Mar 302012

We often talk, within the world of system development, about the “prioritization triangle” where the work to be done should be prioritized in respect to the three aspects time, quality and cost. If ambition is changed within one of these areas it will have an impact on the other two. I buy in to this way of reasoning. It’s a relevant and useful tool in situations where a stakeholder is demanding that all areas should receive the highest level of priority and you need to explain that there are consequences in the choices made.

Continue reading »

Mar 222012

What we usually do when we have a problem is to scratch our head for a few seconds, some idea pops up and we’re happy that the problem is solved and that we now can move on to implement it. Since we are experienced programmers with a lot of experience, we are convinced that the solution is a good one.

It is possible that it is a brilliant solution, even the best possible one, but probably not. A far better way, if you are interested in finding a really good solution, is to come up with five different ways of solving the problem and then pick the best one. My experience is that it is not the first one that you end up using.

This is a very simple method to use with low cost that improves the quality of your ideas.

Mar 152012

A common problem I have seen when companies try to switch to scrum, is that there are no clear goals for the team. The team members are experts on converting a story to functionality but they need to know what the goal is, where they are going. It is hard (or impossible?) for a team to get anywhere if they don’t have a clear and common goal. The goal is set by the product owner and the tools are the stories and the backlog.

It is very important that the product owner makes good use of the sprint planing meeting by setting goals, motivating and engaging. Bad sprint planning ==> very likely that the sprint fails. A good team may help the situation, but the product owner is important. If You are a product owner and usually arrives at the sprint planning meeting with a bunch of poorly prepared stories from a chaotic backlog, You should probably sit down and reflect over what this behavior leads to in the team.

Mar 062012

Backbone in baby steps, Part 1

Topic: Backbone, Underscore, jQuery
Language: JavaScript
Difficulty: Medium
Pre requisites: Moderate JavaScript knowledge. Basic jQuery knowledge.

In this tutorial  we will be building a library application for managing digital books using Backbone. We will also have a glimpse at Underscore and jQuery since they are the default requirements of Backbone.

Continue reading »

Mar 022012

The builder pattern is great, isn’t it? It lets you create nice immutable classes without the need for multiple constructors and it gives the API users freedom in choosing which arguments they want to use when creating the instance. But what happens when you want to tell the user that she must call one builder method or the other, since it is crucial for the class you’re trying to build? The builder pattern simply doesn’t have such a feature. This post will try to give an alternative solution to this problem.

Continue reading »