week 53, 2020

Blood on Snow: A novel

This is the story of Olav: an extremely talented “fixer” for one of Oslo’s most powerful crime bosses. But Olav is also an unusually complicated fixer. He has a capacity for love that is as far-reaching as is his gift for murder. He is our straightforward, calm-in-the-face-of-crisis narrator with a storyteller’s hypnotic knack for fantasy. He has an “innate talent for subordination” but running through his veins is a “virus” born of the power over life and death. And while his latest job puts him at the pinnacle of his trade, it may be mutating into his greatest mistake. . . .

In the evening I started in Blood on Snow: A novel by Jo Nesbø.

Rehousing a Heteroscodra maculata?

In the afternoon I prepared a larger enclosure for a Heteroscodra maculata I keep. When done I took the enclosure and the smaller enclosure with the spider to the bathroom to transfer it to its new home.

Heteroscodra maculata terrarium
Heteroscodra maculata terrarium.

I used the bathroom because this spider is lightning fast. The 5th of November it had even escaped from its small enclosure with me not really noticing it. Only when I couldn't find a trace of the spider and recalled I had something move from the corner of my eye I checked my desk and found the spider resting against a small box on the desk.

So this time I was prepared, or so I thought. While I carefully checked its enclosure I couldn't find a trace of the spider. I checked it above the larger enclosure which I had for additional security placed in a even larger plastic box. But no spider. So in the end I moved all substrate and moss to the new enclosure as well and hope the spider is hidden in all this somewhere. Otherwise it's either dead or now living somewhere in our house...

A half-hour to learn Rust

In order to increase fluency in a programming language, one has to read a lot of it. But how can you read a lot of it if you don't know what it means?

In this article, instead of focusing on one or two concepts, I'll try to go through as many Rust snippets as I can, and explain what the keywords and symbols they contain mean.

Ready? Go!

Source: A half-hour to learn Rust.

Remarkable 2: Thoughts on reinventing paper

Remarkable 2 is a very nice product but its shortcomings are a nice illustration of the hidden complexity that can occurre when trying to replace even simple things like paper.

I initially thought about writing a real world review but I do not write reviews here, it is against my editorial line. I will try to lean more towards what can he learnt about product design and development.

Source: Remarkable 2: Thoughts on reinventing paper, an article by Fräntz Miccoli.

The Claus Family (2020)

After discovering his grandfather is Santa Claus, Jules has to help him deliver his presents all around the world. But Jules' hatred for Christmas might make that more difficult than Santa thought.

In the evening we watched The Claus Family (2020). The movie was a bit boring. I give it a 6 out of 10.

My Python Setup

This is an opinionated summary-guide of my current setup for the future me. Feel free to follow along with me!

Source: My Python Setup, an article by Ayoub Labiad.

The Saints of Salvation: good

Just before 6pm I finished The Saints of Salvation, book 3 in the Salvation Sequence by Peter F. Hamilton. I enjoyed the book a lot, but recall the previous two books as being slightly better. I did like the ending, which either leaves room for more books; three perhaps, or gives readers something to think about. Recommended.

How Python attributes work

What happens when we get or set an attribute of a Python object? This question is not as simple as it may seem at first. It is true that any experienced Python programmer has a good intuitive understanding of how attributes work, and the documentation helps a lot to strengthen the understanding. Yet, when a really non-trivial question regarding attributes comes up, the intuition fails and the documentation can no longer help. To gain a deep understanding and be able to answer such questions, one has to study how attributes are implemented. That's what we're going to do today.

Source: Python behind the scenes #7: how Python attributes work, an article by Victor Skvortsov.

Some Git

In the afternoon I needed to find to which branch a commit belonged to. Since I already had done the same command about 2 weeks ago I still could remember it:

git branch --contains <commit>

A little later I needed to find the commit that had deleted a few lines of code in a given file. Since one line contained a unique string I could use:

git log -S <string> path/to/file

Later on I needed to revert a commit, so I used:

git revert <commit>

NumPy Illustrated: The Visual Guide to NumPy

NumPy is a fundamental library that most of the widely used Python data processing libraries are built upon (pandas, OpenCV), inspired by (PyTorch), or can efficiently share data with (TensorFlow, Keras, etc). Understanding how NumPy works gives a boost to your skills in those libraries as well. It is also possible to run NumPy code with no or minimal changes on GPU.

The central concept of NumPy is an n-dimensional array. The beauty of it is that most operations look just the same, no matter how many dimensions an array has. But 1D and 2D cases are a bit special.

Source: NumPy Illustrated: The Visual Guide to NumPy, an article by Lev Maximov.

Computer Science textbooks that are freely available online

Below is a loosely-categorized collection of links to CS textbooks in a variety of areas that are freely available online, usually because they are one of the following:

  • An open textbook (such as PLAI, SF, or the HoTT book)
  • An older book that is out of print, for which the copyright has returned to the original author(s) (such as TTFP)
  • An author’s own preprint or draft of a textbook. This includes cases where the author has made special arrangements with a publisher to host an electronic copy of a published text on their homepage while it remains in print.

Most of these I’ve only used for brief personal reference, and have not read in depth. The exceptions, those books I’ve spent considerable time with and highly recommend, are marked with asterisks.

I also include below a list of papers I consider good stand-alone introductions to certain topics, and a list of links to thorough special topics courses.

Source: Electronic References, an article by Colin Stebbins Gordon.


There are a lot of tools that diff json, but only json-diff makes it easy to write programs to process the diff output. In this post, we’ll explore json-diff, how to use it and how to write programs that use its output.

Source: json-diff, an article by Tyler Adams.

The Performance Overhead of JavaScript Promises and Async Await

JavaScript as a language is heavily asynchronous, with promises being deeply integrated. The inclusion of async/await syntax has massively improved this, making asynchronous code much more readable. Being able to mark methods as async makes it much easier to integrate into existing parts of code, sometimes causing large chains of method calls to become async for a single deep method call. While this is sometimes the best solution, can the overhead of promises pose a problem for hot code?

Source: The Performance Overhead of JavaScript Promises and Async Await, an article by Matthew Miller.

6 Small Unit Testing Tips

Choosing test values when writing unit tests is mostly guided by the need to cover all cases of the program logic. However, some values are better than others. Here are a few tips on how to pick values that make mistakes easy to spot and the tests easy to read. Plus a bonus tip on a quick way to double check your tests.

Source: 6 Small Unit Testing Tips, an article by Henrik Warne.