week 20, 2022

Dune Messiah: Excellent

In the afternoon I finished Dune Messiah. I liked the book a lot, highly recommended.

Children of Dune

The sand-blasted world of Arrakis has become green, watered, and fertile. Old Paul Atreides, who led the desert Fremen to political and religious domination of the galaxy, is gone. But for the children of Dune, the very blossoming of their land contains the seeds of its own destruction. The altered climate is destroying the giant sandworms, and this in turn is disastrous for the planet's economy. Leto and Ghanima, Paul Atreides's twin children and his heirs, can see possible solutions - but fanatics begin to challenge the rule of the all-powerful Atreides empire, and more than economic disaster threatens.

In the early evening I started in the third book of the Dune Chronicles by Frank Herbert: Children of Dune.

Pterinochilus murinus close up

In the evening I managed to make a close up photo of the Pterinochilus murinus I keep. This spider is very skittish so I had to move its container with great care and remove the lid very slowly.

Pterinochilus murinus close up
Pterinochilus murinus close up.

One common name for this tarantula is Orange baboon tarantula, abbreviated as “OBT”. Which is sometimes expanded to Orange Bitey Thingy because of it often ending up in a threat pose when disturbed.

So far I have only seen this behaviour when I rehoused this tarantula last year.

On using Nix and Docker as deployment automation solutions

In this blog post, I will provide my view on Nix and Docker -- I will elaborate about some of their key concepts, explain in what ways they are different and similar, and I will show some use-cases in which both solutions can be combined to achieve interesting results.

Source: Sander van der Burg's blog: On using Nix and Docker as deployment automation solutions: similarities and differences, an article by Sander van der Burg.

Rust: A Critical Retrospective

Since I was unable to travel for a couple of years during the pandemic, I decided to take my new-found time and really lean into Rust. After writing over 100k lines of Rust code, I think I am starting to get a feel for the language and like every cranky engineer I have developed opinions and because this is the Internet I’m going to share them.

Source: Rust: A Critical Retrospective, an article by Andrew “bunnie” Huang.

A freshly molted Acanthoscurria geniculata

In the early evening I noticed that Adam's female Brazilian whiteknee tarantula, scientific name Acanthoscurria geniculata, had molted. Because I don't check daily it might have happened earlier this week but the tarantula looks really fresh so it might have happened today.

Acanthoscurria geniculata freshly molted
Acanthoscurria geniculata freshly molted.

In the above photo you can see the spider in the bottom right corner and her exuviae, the cast-off exoskeleton, in the top left corner. The tarantula is resting on the web mat she made to molt on top of.

JSON object values into CSV with jq

I wanted to grab a CSV version of a JSON representation of an entityset in the Northwind OData service. Here's how I converted the JSON structure into CSV with jq, and along the way, I talk about arrays, objects, iterators, object indices, variables, identity, array construction and format strings.

Source: JSON object values into CSV with jq, an article by DJ Adams.

Python Standard Library changes in recent years

With each major Python release, all the attention goes to the new language features: the walrus operator, dictionary merging, pattern matching. There is also a lot of writing about asyncio and typing modules — they are developing rapidly and are obviously important for the core team.

The rest of the standard library modules receive undeservedly little attention. I want to fix this and tell you about the novelties introduced in versions 3.8–3.10.

Source: Python Standard Library changes in recent years, an article by Anton Zhiyanov.

Monads for Go Programmers

Monads hide some of the repeated logic of composing functions with embellished types, so that you don’t have to feel like Bart Simpson in detention, but rather like Bart Simpson on his skateboard, bowling a cricket ball, while it is his turn to bat.

Source: Monads for Go Programmers, an article by Walter Schulze.

The SwiftUI render loop

Just like UIKit, SwiftUI is implemented on top of an event loop that dispatches messages to your UI code. The UI code in turn may trigger parts of the screen to be re-rendered. The handling of messages and rendering of graphics on screen form the render loop of an application. All UI frameworks are based on a render loop, in SwiftUI it is hidden particularly well. Most of the time, it works under the hood without us needing to know anything about it. It is amazing how we can write UI code without even needing to understand what an event loop is, and without us needing to worry about how often to render screen content. But in some cases, it is useful to know what is happening behind the scenes.

Source: The SwiftUI render loop, an article by Rens Breur.

We ran every test you could think of on the M1 Ultra

We've now tested every version of Apple's M1 processor, from the first M1 chip in the 13-inch Macbook Pro all the way up to the M1 Ultra in the new Mac Studio, and the chip's ability to scale performance is pretty incredible. The M1 Ultra fuses two M1 Max chips together to get you a processor with 20 CPU cores and 64 GPU cores, along with up to 128GB of RAM, and it's one of the fastest processors we've ever tested.

Source: We ran every test you could think of on the M1 Ultra | Engadget, an article by Christopher Schodt.