A blog post from 2014 explains quite nicely how one can achieve graceful server stops and restarts in Go, that is, how to implement a server process that allows running requests to finish before exiting the application. We will also want to deploy new binaries without interrupting running requests and without any noticeable server downtime.
There are tools for this and in the past, I’ve used a combination of manners and goagain, along with some additional code on my end. Read more...

I recently had to find a way to generate colours for charts. Specifically, the series in a chart — typically visualized using bars, lines, dots, or areas — are often distinguished using different colours which, for the most part, should be generated and assigned automatically. And while d3.js (on which the chart code was based) offers some pre-defined colour schemes which consequently happen to be used in most d3.js-based projects, they were quite limited for what I needed.

The web browser has become our preferred user interface of choice. But even in 2015, I bump into fellow developers who view the web as nothing more than a bunch of companies’ online presences. Surely, a native Windows client or a Java SWT app must be more powerful than your average web browser. I would have agreed in the days of Internet Explorer 6 (which, by the way, already supported AJAX requests) but luckily, we are long past IE6 and there are now so many web technologies available to us it’s even hard to keep up.

I’ve released a Go library Github: Duplo. The library can be used to detect image duplicates or to find similars in a set of images. It is an implementation of Fast Multiresolution Image Querying by Jacobs et al. It works surprisingly well if you want to find duplicate images which may have been modified slightly (e.g. colour correction, different compression / file format, watermarks). Applications may include:
Recognize copyright violations Save disk space by detecting and removing duplicate images Search for images by similarity The images themselves are not stored in the data structure. Read more...

I gave a talk at Berlin’s Golang User Group (which is supposedly the biggest one in Europe at the moment). It was a quick overview of the duplicate image detection software I wrote in Go for Stock Performer. You can find the slides here. I will put the code on my Github profile very soon. There will also be a more extensive blog post about it.

I’ve contributed to Github projects before but I’ve just now uploaded my first own Github repository: The Font Manager. It combines two things I’ve been wanting to do for a quite a while:
Learn to program in Clojure Write a font manager / viewer that can look into ZIP archives There are lots of font viewers out there. But for some reason, I wasn’t able to find one that could search ZIP files. Read more...

Started learning Swift. This seems to be a good moment to finally get into iOS programming. What I’ve seen so far looks ok, although I’ve recently started to really enjoy simpler languages (more on that later). The trend in the last few years seemed to be to add more and more “features” to a language based on whatever the trend is at the time. Generics, closures, features from functional languages. I don’t really think it’s needed — I’d like an OO language to remain OO, I don’t need it to become a functional language. Read more...