Metaphors in Software are Heuristics, not Algorithms

A software system should be based around a model, a metaphor that helps the developers how to think about the systems functionality and how to construct its features. However, it is important to realize that the metaphor is not an algorithm that can predict exactly how the system should be constructed. It gives hints, it […]

Continuous Integration: A Mindset

I attended a round-table discussion on CI (Continuous Integration) the other day – and it prompted me to write this post. There seem to be some confusion about CI. Some have chosen to let  integration mean the interaction of two or more software components. Hence, making the conclusion, that integration is only taking place during […]

The When, What and How of Code

When partitioning your code it is important to consider the when, the what and the how. It can decide if your program will be well structured or become a tangled mess. These three aspects should be separated whenever possible. It is a strategy for thinking about dependencies and separation of concerns. The When An action […]

Why Using Stdin and Stdout is Not Enough!

I’m constantly amazed at how bad programmers are when it comes to designing good logging and reporting utilities. Hopefully your tool support input from stdin and allows for writing logs or interactions to stdout. If you haven’t gotten that right, I’m not sure what you are doing. But when it comes to report- and logging-formats […]

Remembering the Basics

Whenever I find myself with a code design that doesn’t work for me; it might be that the code is hard to test; or it require large rewrites for small changes in functionality; or it simple doesn’t feel right; I most often find that I have deviated from the fundamentals of good code design. As […]