Automated tests are strange creatures, they are code that validates code, written by fallible beings. The messier the system under test, the messier the code required to test it. I have grown increasingly fond of property-based testing as a better technique of automated verification of software and in the following paragraphs I am going to... Continue Reading →
The Extremely Negative Senior Engineer
A cliche of technology projects is the presence of an overly negative senior engineer who will not hesitate to communicate their disapproval, often accompanied by an extremely negative opinion on the realisability of a given project. I have seen managers finding it difficult to deal with such a situation. In this article, I want to... Continue Reading →
Meetings: A Curious Status Symbol
The fact that individuals that are considered high status in an organization often spend a frightening amount of time in meetings has apparently caused some people to draw the opposite conclusion: In some circles, having a lot of meetings seems to have become a status symbol, a sign that one’s input is valued. This observation... Continue Reading →
On Myths and Superstition in Business
Those who are on the quest for wisdom and enlightenment about business life have an enormous array of best-selling books to pick from. Even better, you need to look no further than your LinkedIn timeline, a place full of advice on leadership, management, and decision making. The only catch: Nobody seems to care if these... Continue Reading →
“What does this thing do?”
There are many principles and rules out there that offer guidance about good code design. I am generally skeptical about dogmas. Nevertheless, sometimes when I am deep in the trenches I do find it useful to have a rule of thumb to apply to quickly assess whether I'm on the right track. Such a rule... Continue Reading →
Artificial Scarcity Is Not The Solution
In the digital space, putting a price on non-physical goods has been a challenge at least since the rise of the internet. The market mechanisms of the physical world do not translate well because of one simple missing ingredient: Scarcity. A craftsman creating a table can easily put a price tag on that table because... Continue Reading →
Map Data V: False Assumptions Programmers Make
Famously, engineers tend to make wrong assumptions about a lot of things: Names and time are two well-known examples. Maps are a rich source of edge cases. Especially when you start dealing with global maps, be prepared: That weird situation you assume does not exist? Somewhere in the world, it does. This article is part... Continue Reading →
Map Data IV: Tracking Changes
In this article, I want to argue that the unique properties of map data make it a particularly interesting target for techniques such as change data capture in which not only the data itself but also the changes to the data become a first-class citizen. This article is part of a series about the specific... Continue Reading →
Map Data III: Editing and Processing
Like with any kind of data, to fully understand the map data design space, we need to understand both the way it is used from a consumer perspective and the way that it is produced. Understanding the different requirements of producers and consumers leads to a better understanding of the solution space and the design... Continue Reading →
Map Data II: The Role Of Geopolitics
It is well known that countries have diverging views on what their borders ought to look like. However, while working on digital maps, it was surprising to me to see just how much of a global map is up to interpretation. In the following, let us look at some examples of maps that are drawn... Continue Reading →