Sure, there are many expensive tools out there to track the competition of your website. But maybe you just want a quick idea of the amount of traffic competing sites get and don’t care too much about the details yet. That was me, so I built a Google Sheets dashboard that scrapes Alexa rankings.

Getting a list of competitors

You may already know who your main competitors are, but there are probably more than you’re aware of. Luckily, it’s quite simple to find them. …


A widespread fallacy among IT professionals is that DNS propagates through some network. So widespread in fact, that there are a couple of sites dedicated to visualizing the geographic propagation of DNS records. But DNS propagation does not exist.

Sites that capitalize on a common misconception

So how _does_ it work?

When you request DNS records from the server that is authoritative for that domain (i.e. who “owns” it), it will accompany those records with a TTL (time to live). This indicates how long you can keep using those values before you should request a fresh copy. The records are stored in a cache on your device. …


Orthogonal composable components (by Jasmin)

In functional programming, a domain specific language (DSL) is a set of functions that can be composed to solve a specific problem. They are often found in libraries, but you can also write your own DSL that is specific to your business domain. This can be beneficial for several reasons:

  • Testable — Each independent component is small and isolated;
  • Understandable — Composed solutions are easy to read;
  • Expressive — Solve an entire class of problems with a small set of primitives.

In this post we’ll build a DSL for filtering emails in Scala. …


When writing tests, it can be useful to take data files from external systems and use those in your tests. These files can be quite large, so it makes sense to trim them down to a single record before checking them into git. This is simple to do by hand for human readable file formats like csv and json, but not for binary file formats like Parquet. To my knowledge, there are no pre-built CLI’s that do this.

In this post, we’ll install a command line tool and register it to your shell. …


Getting machine learning off the ground requires many skills and capabilities. Some of these skills are related, some are not. For example, knowledge of math and knowing when to use which machine learning (ML) algorithm share many commonalities, but they are largely unrelated to building infrastructure. That’s why people with ML skills tend to also be competent in math, but not in building infra. Skills cluster, and it’s useful to give these clusters names.


Thanks to Tom de Ruijter, Steven Reitsma and Laurens Koppenol for proof reading this post.

While playing Factorio the other day, I was struck by the many similarities with Apache Kafka. If you aren’t familiar with them: Factorio is an open-world RTS where you build and optimize supply chains in order to launch a satellite and restore communications with your home planet, and Kafka is a distributed streaming platform, which handles asynchronous communication in a durable way.

I wonder how far we can take the analogy between Factorio and Kafka before it starts to break down. Let’s start from scratch…


Cells in Google Sheets can have multiple lines of text, and sometimes you need to match an expression over these lines. REGEXEXTRACT, REGEXMATCH, and REGEXREPLACE don’t match new line characters with .-expressions by default:

You can add the s flag to match multiple lines in the same cell:


I recently came across 3Blue1Brown’s “Essence of linear algebra” YouTube playlist. As the title implies, it covers the basics of linear algebra. Instead of focusing on the math though, it lays down a foundation that gives you a visual intuition that helps you reason about it. I would highly recommend this if you’ve never really grasped linear algebra that you’ve been taught in university, or if you’ve never gotten around learning about linear algebra at all.

3Blue1Brown’s Essence of linear algebra intro

While watching the first video, I decided to code it all out in Scala to let it materialize…


Windows 10 activation error

The other day I had some issues activating my Windows 10 product key in VirtualBox, so I hopped on a support chat with a Microsoft agent. When she was unable to view my activation key in my system settings, she pasted this script on my machine and executed it. It shows the product name, product id and installation key of the machine it’s executed on. I thought I’d share it as it might be useful for more Windows users.

Script for retrieving the windows product key

Save this as get-windows-product-key.vbs, right click it and select Open with Command Prompt. It will show your Windows product key and store it as Windows Key.txt in the same directory as where you’ve saved the script.


There’s no Scala Days conference without a keynote of Martin Odersky himself. This year he spoke about his current work: Dotty. Dotty is the new Scala compiler that will be part of Scala 3. The first release candidate was released just hours before the keynote and comes with the compiler itself (dotc), a repl (doti), a doc tool (dotd) and an IDE. It implements the MS language server protocol, enabling it to serve several front ends: VS-Code and Emacs (IntelliJ support is in the works). With Dotty, IDE’s can use the regular compiler as the presentation compiler.

Scala/Dotty's road map from 2016 - 2019
Scala/Dotty's road map from 2016 - 2019

Dotty is…

Ruurtjan Pul

Data engineer at BigData Republic

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store