43 days ago

A formula for converting pace from min/mile to min/km in Google Spreadsheets

If you are a runner and desperate for a quick-and-dirty formula you can use in a Google Spreadsheet to convert running pace from minutes per mile into minutes per kilometer, this nerdy post will give the formula to you.

More ...

112 days ago

Visualizing Strava activities with BigQuery and Google Data Studio

How to load Strava activities into Google Cloud BigQuery and visualizing the activities with Google Data Studio? This article is for (hobby) athletes interested in taking a walk through the Strava API, Google Cloud Platform and Google Data Studio; showing how to gain the freedom to explore and visualize the data you have been sweating for over years.

More ...

376 days ago

Thoughts on Model Thinking: a smörgåsbord

A review of Scott Page’s Model Thinking course, which has been overall entertaining, inspiring, informative albeit at times a bit repetitive when going through arithmetics. If you are interested in trying to make sense out of the complex world around you, this course might be for you.

More ...

687 days ago

Statistics tell you when to stop practicing

Assume you are practicing for an exam. You could spend all your time left until the exam practicing (possibly too much), or you could spend almost no time practicing (likely too little). So how do you know when enough is enough? When can you stop practicing and yet be confident that you will pass the exam?

More ...

741 days ago

Applying Machine Learning to Strava activities using BigQuery ML

Today, I’ll demo how to train a logistic regression model in BigQuery ML. That is Machine Learning models written in SQL, and executed in BigQuery.

More ...

797 days ago

Inspecting air pollution data from OpenAQ using Colab, Pandas, and BigQuery

OpenAQ is publishing real-time air quality data from around the world to BigQuery. Today, I have poked around in the dataset to inspect air quality from many places of the world.

More ...

923 days ago

What probability theory tells you about starting on time

Whether you are an event organizer waiting for participants to turn up or whether you are a bus driver waiting for passengers running to catch the bus, there is a dilemma: if you are so kind and wait for everyone to arrive, you make everyone else wait. Let’s explain the dilemma with probability theory.

More ...

1017 days ago

Analysing Strava activities using Colab, Pandas & Matplotlib (Part 4)

How do you analyse Strava activities—such as runs or bike rides—with Colab, Python, Pandas, and Matplotlib? In my fourth article on this topic, let’s invite scikit-learn and NLTK to the party, and apply some Machine Learning.

More ...

1036 days ago

Analysing Strava activities using Colab, Pandas & Matplotlib (Part 3)

How do you analyse Strava activities—such as runs or bike rides—with Colab, Python, Pandas, and Matplotlib? In my third article on this topic, I am demonstrating how to visualize the data in different ways.

More ...

1050 days ago

Analysing Strava activities using Colab, Pandas & Matplotlib (Part 2)

How do you analyse Strava activities—such as runs or bike rides—with Colab, Python, Pandas, and Matplotlib? In my second article on this topic, I am demonstrating how to group and aggregate the data in many different ways.

More ...

1054 days ago

Analysing Strava activities using Colab, Pandas & Matplotlib (Part 1)

How do you analyse Strava activities—such as runs or bike rides—with Colab, Python, Pandas, and Matplotlib? In this post, I am demonstrating how to get started, and will give you a taster of what is possible with this state-of-the-art technology for data analysis.

More ...

1105 days ago

Misleading infographics: How Not To Bubble Chart

I discovered a misleading infographic on mortality cause by gender in the OECD report “Health at a Glance 2017” while working on a course assignment. A few notes on how not to do bubble charts.

More ...

1268 days ago

Memories from University: Teaching the Computer to play Connect Four

How do you teach a computer to play games? I took a classic brute-force approach along with some techniques to make the search for a good move faster. Can you beat the machine?

More ...

1523 days ago

Missing Maps: Use Your Phone for the Better

The opportunities created by the advance of technology and the efforts of people are amazing. In this post, I’ll show how to take advantage and use the Mapswipe App as a first step to gain valuable insights for NGOs operating in places of the world for which there is no proper map yet.

More ...

1581 days ago

How data can assist us in forming good habits

Habits are an important key to success. But how do we establish a habit? How do we know whether our perception aligns with reality? How do we decide about the next change to make? Did we succeed? I want to know. A reflection on habits, insights from data using running as an example.

More ...

1605 days ago

Missing Maps: Putting People on the Map

There are places on our planet where people live but there is no map. How are NGOs like Médecins Sans Frontières (MSF) supposed to do field work if they don’t know where people live, how many, how to get there? The Missing Maps project is addressing the issue via crowdsourcing. I gave it a try, and here’s what I think.

More ...

1856 days ago

Energy from Thin Air: Measuring Air Pollution with CleanSpace

Let’s face it. Air quality in London is quite poor. You don’t need technology to notice. As soon as you reach the country side, the difference is usually very apparent. I will soon get hold of an active sensor that transfers carbon monoxide readings to my phone in real-time. Interesting: the sensor is powered only from energy harvested from wireless and broadcast networks. Energy from thin air!

More ...

2386 days ago

Bletchley Park and the rebuilt bombe

A visit to Milton Keynes gave me a brief look into former codebreakers’ life at Bletchley Park during World War II. The exhibition also featured a rebuilt exemplar of the bombe, an electromechanical machine that played a role in breaking the code of the Enigma. I got fascinated for several reasons.

More ...

2492 days ago

Motion Segmentation of RGB-D Videos via Trajectory Clustering

Persistence paid off. The little, remaining work on my Master’s thesis at KTH is finally completed. I can hardly remember touching a subject at university that was as demanding and as satisfying as the research on how to segment moving objects in videos taken by a RGB-D camera. Thanks to everyone who helped me with this mission.

More ...

2533 days ago

Preview: Motion Segmentation of RGB-D Videos via Trajectory Clustering

Humans are quite good at detecting motion. How about machines? Can computers automatically segment objects in videos? I dedicated my Master thesis to a particular variant of this question. Here are a few videos as a preview.

More ...

2552 days ago

Fixing a Shimano EF50-8R bicycle shifter

For some reasons, the front shifter of my bicycle stopped working properly. Time to take a screwdriver and see how the shifter actually works.

More ...

2656 days ago

Programmer-friendly German keyboard layout on GNU/Linux

German keyboards are usually pretty annoying for programming. Mapping the third-level of the buttons D, F, C, V to {, }, [, ] places the curly braces and brackets at more convenient locations without destroying much of the benefits of a German keyboard.

More ...

2704 days ago

Case study: when average speed matters

This case study shows the effects of acceleration, top speed, deceleration on total travel time on short distances at the example of Transrapid in Shanghai. Bottom line: it is the average speed that matters, not the top speed. Groundbreaking result … no! But it is an illustrative example with concrete numbers that shows why reporting top speeds creates illusions.

More ...

2737 days ago

Recursive circle packing with PostScript

Ten lines of PostScript are sufficient to draw a pretty self-similar pattern constructed by packing circles into circles.

More ...

2867 days ago

Managing encrypted devices with LVM on top of LUKS with luksctl

Start small: my first Arch Linux package submitted to the AUR. luksctl manages (portable) LUKS-encrypted devices with a logical volume manager on top of it. Profiles control how the devices are (un)locked, the logical volumes (de)activated, and the filesystems (un)mounted with a single command. Details are found at luksctl on Bitbucket.