I am a pragmatist. Whether semi-automatic rifles should be banned in your country or not depends, I think, on how frequent mass shootings and terrorist attacks happen and how important a role semi-automatic rifles play.
However, if you look at the US, they have been involved in pretty much every mass shooting in the US in the last years. One of the most favored semi-automatic rifles is the AR-15.

To get a sense of how dangerous these guns are, consider this: In 2011 the right-wing terrorist Anders Behring Breivik blew up the government building in downtown Oslo, Norway where I…
One of the things I do in my writing is exploring different technologies and programming languages. I write about a lot of things I am not an expert in. I write about colonizing Venus.
Read more: Why Colonize Venus Instead of Mars
Does anyone seriously think I am a trained space engineer? I write about microprocessors architecture, stuff like pipelining, branch prediction, instruction decoding, you name it. Yet I am not a trained chip designer.
Read more: Why Pipeline a Microprocessor?
I am not your expert advisor on technical matters. I am a popularizer. I am a tourist in the…

Scott Meyers is a well known guy in the C++ developer community. He wrote a book called Effective C++, which is composed of items, which give specific advice on best practices in C++. Most of these I have forgotten and I no longer program in C++. Yet there is one item I believe has relevance to all object-oriented programming:
Effective C++ item 23: Prefer Non-member Non-friend Functions to Member Functions
In this story I want to talk about how this applies to my recent discussions of Java and Go programming. …

In the world of Java, object-oriented programming reigns supreme, and you had better not dare suggest any other programming paradigms. This is not an asset, but a problem.
I am writing this story, because through various conversations with the Java crowd while discussing the merits of Go vs Java, I frequently see Java developers claiming that Java has “proper” object-oriented programming support and hence is superior for large scale development.
Well, I beg to differ. To make it clear, I think object-oriented programming has its place and I used it frequently. However, it is also one of the most overused…

Java has an impressive set of garbage collectors with high performance. However, when discussing alternative programming languages, I see all too often that the Java crowd will claim some sort of superiority because of the Java garbage collectors.
There are major flaws with this argument, which I would like to point out here. What is overlooked among the Java fans is that Java needs a high performance garbage collector, due to the design of the language.
Pointer heavy programming was popular in the 90s when Java was designed and garbage collection was a popular research topic. Thus there was a…
Respect is a two way street. If you want it, you got to show it to others. The point I made, which you have yet to answer is that rather than attacking me as a person, try to counter my arguments.
If you cannot be serious, I will simply delete your post. I will also ask you to write your responses in English as few readers of these stories are native Norwegian. I keep the comment fields here for people to add to the discussion.
As I said, this is an opinion piece, you can agree or disagree with the…
Recently I wrote about how modern programming languages have tried to peel away some of the abstractions of memory built in earlier times. This got me thinking about how we know what the right level of abstraction is.
Let us begin with programming languages. Allocating and freeing memory is a frequent source of bugs. From early on, then, automatic memory management was seen as the silver bullet that would solve a large class of problems.
Yet this created new kinds of problems. For example, garbage collected languages never managed to make much inroads into high performance computing, game engines, kernels…

I am not new to Go, but took a long break from it doing other stuff. Getting back in, I am looking at earlier code I wrote and making mental notes of things that are easy to forget but which are important.
You can compare arrays with the equality operator == but not slices. So this works:
var xs = [3]int{4, 2, 3}
var ys = [3]int{4, 2, 3}
if xs == ys {
fmt.Println("equal")
} else {
fmt.Println("different")
}While this does not work:
var xs = []int{4, 2, 3} var ys = []int{4, 2, 3} if xs ==…
My story on Docker, Java, and Go spurred a number of discussions and there is one in particular that I think is worth elaborating. The software industry is full of different kinds of people with different preferences and that is fine. A large number of developers make their living writing large Java and C# systems. Understandably, many may not be happy about me often being quite negative about Java and C# development and my praise of languages such as Go.
One commenter, John Phillips, remarked that he had trouble understanding my preferences, instead making the following point:
And for programming…
Being in favor of open borders is a classic leftist point of view. In this regard I am the black sheep of the left. I very much believe in strong borders and I believe in the nation-state.
But how can I? Don’t borders divide people instead of uniting them? Don’t borders create wars? Aren’t borders racist? Isn’t it about keeping brown people out? If I support borders, I must hate Mexicans, right? I must be a Trumpist of some sort?
No, no, and more no. However, I will make a point that may come across as prejudiced, namely the belief…

Geek dad, living in Oslo, Norway with passion for UX, Julia programming, science, teaching, reading and writing.