Skip to content


Semantic versioning and semv

It is somewhat clear that software releases should carry a version like v3 or v1.1 or something. But this often seems more or less arbitrary, and you might feel that just counting git-commits or adding the current date would do equally well. After all, these would be easy to create automatically and once set up, you would never have to think about versioning again.

In fact, I used to think that way. I don't think so anymore though. More yet, I believe that versions are a key ingredient in decoupling different software components. At least if the versions are done right.

Technology lessons for startups

Almost no startup sets out with the right idea from the beginning. It is quite common to change almost everything about what the company's product should do within a few weeks. From a technology perspective, this is quite challenging: We are used to thinking about creating software that is meant to last, but a startup environment likely means that things won't last very long. Yet, adopting careless attitude towards quality software can be equally fatal, often resulting in a gridlock where nothing can move forward nor backward.

Playing with Elm

When it comes to adding dynamic functionality to websites, javascript is the number one technology. And javascript is not as bad as its reputation (or as it used to be). You can do really nice things with javascript—in particular in combination with css. Of course, javascript is not flawless, but it does the job. And after all, when it comes the dynamic functionality in websites, there isn't really that much competition...

About a year and a half ago, I came accross a tweet that said something like "Oh, Elm is so nice". For some reason, I looked it up. "A delightful language ..." is the first thing you see on their website. And oh—you need to compile it? To javascript? Doesn't that more or less defeat the purpose?

Comparing scala, python and c++

In an ancient time, I wrote code in C++ (see here for a now dead project I was involved in). Since then, python has clearly dominated my programming and I came to really love it: Python is concise, readable and easy to learn (and teach). And I really liked python's duck typing approach, which basically meant that you never really had to worry about types. Then, over the past maybe 5 years, a number of different people kept praising the elegance and power of scala and they often highlighted one particular strength of scala: static types. What!? Wasn't that something that I had never liked about C++ and that I was glad to leave behind?

In the past couple of weeks, I made it a point to do a number coding katas in all three of these languages. Not surprisingly, all three of them have their advantages.

Vim vs. Emacs

The other day, I had lunch with my friend Ori Barbut and it turns out, we both seem to have a passion for a fairly mouse-free computer experience. However, the center pieces of our interaction with a computer are quite different; Ori uses emacs and I use vim. Ori is certainly interested in vim and I have quite extensively used emacs in the past, so much of the conversation circled around the why-and-why-not of the editors we are using.

I couldn't imagine writing any text on a computer without vim. Yet, the conversation with Ori made me think. Ori's environment can effortlessly do all kinds of things that sound really interesting.

"What's your favourite machine learning algorithm?"

According to my friend Kyle Becker, this interview question seems to throw off quite a few candidates. Honestly, it threw me off as well: I don't think I have a "favourite machine learning algorithm", I typically feel that the best solution is largely dictated by the problem to be solved. However, when thinking a little more about this question, I must admit that there are some ideas that I find very elegant and that certainly had a big impact on the way I think about data.