Timing issues are not studied in universities. While you study computer science, you somehow think about time in terms of comparing execution time of different algorithms, but time itself doesn’t bother you too much. These problems strike you unexpectedly when …

Read more

This is more of a note to self about a somewhat surprising behaviour but just in case someone else finds it useful I thought I might as well put it out there.

I stumbled onto a puzzling situation recently where …

Read more

Deadlocks happen when two or more threads are blocked forever because each has acquired a resource and waits for another resource which is already taken by another thread. They are usually nasty and unpredictable, but it’s possible to make them …

Read more

In supporting our active-active Git replication product underneath Gerrit I read the public Gerrit discussions daily. On May 14th
there was a very interesting discussion up there about how Gerrit took more than 6 minutes to start due to a …

Read more

Most sorting algorithms, or at least their names, are widely known – quicksort, mergesort, etc. Some companies even like to discuss their nuances at their job interviews.
However, there’s a sorting algorithm that most developers haven’t heard of, meet sleepsort.…

Read more

I recently found myself reflecting on how our continuous integration builds have changed, and was amazed to think how a series of seemingly small tweaks and improvements have accumulated, over time, to become a business changing new “normal”.

Imagine the

Read more