week 09, 2021

Why We Switched from Python to Go

Switching to a new language is always a big step, especially when only one of your team members has prior experience with that language. Early this year, we switched Stream’s primary programming language from Python to Go. This post will explain some of the reasons why we decided to leave Python behind and make the switch to Go.

Source: Why We Switched from Python to Go, an article by Thierry Schellenbach.

My Custom Emacs Setup

It seems to be widely accepted that creating a powerful, useful Emacs setup "by hand" is just too much trouble, and you should choose a "distro" like Doom Emacs. But is it really all so bad? If you go the route of "hand-made", will you suffer through endless nights of fixing your setup? The answer is: probably not, but read on for more details!

Source: My Custom Emacs Setup, an article by Hristos N. Triantafillou.


LAPD homicide lieutenant Milo Sturgis is a master detective. He has a near-perfect solve rate and he’s written his own rule book. Some of those successes—the toughest ones—have involved his best friend, the brilliant psychologist Alex Delaware. But Milo doesn’t call Alex in unless cases are “different.” This murder warrants an immediate call. Milo’s independence has been compromised as never before, as the department pressures him to cater to the demands of a mogul: a hard-to-fathom, megarich young woman who is obsessed with reopening the coldest of cases—the decades-old death of the mother she never knew.

The facts describe a likely loser: a mysterious woman found with a bullet in her head in a torched Cadillac that has overturned on infamously treacherous Mulholland Drive. No physical evidence, no witnesses, no apparent motive. And a slew of detectives have already worked the case and failed. But as Delaware and Sturgis begin digging, the mist begins to lift. Too many coincidences. Facts turn out to be anything but. And as they soon discover, very real threats lurking in the present.

In the evening I started in Serpentine by Jonathan Kellerman. This is book 36 in the Alex Delaware series. I have read all previous books, and I highly recommend this series.

Phaedra: Alastor 824 and Evolution Slam Dunk

Today two books arrived: Phaedra: Alastor 824; a science fiction set in Jack Vance's Alastor Cluster, and Evolution Slam Dunk.

Phaedra: Alastor 824
Phaedra: Alastor 824.

As a huge fan of the work of Jack Vance I look forward to Phaedra. I know some of the work of its Dutch author: Tais Teng. A long time ago I read a collection of stories by Tais and I loved it.

Evolution Slam Dunk

I also look forward to Evolution Slam Dunk as I want to know more about macro evolution. And based on what I've read this book is well-researched.

Haskell Executable Sizes

This post is an experiment with reducing Haskell executable sizes. Inspired by

Reading the above post motivated me to investigate its techniques on a real world example. At work, there are some complex services with many transitive dependencies. Since Haskell executables are statically compiled by default, all the transitive dependencies are included in the output.

Source: Haskell Executable Sizes, an article by Dan Fithian.

Arrows Zoo

Don’t know about you, folks, but I had a hard time remembering all the Haskell arrows that you can bump into in all different situations. For example, I guess I will never be able to use ViewPatterns correctly on the first attempt. For me, the digest of every use case of each arrow in Haskell sounds like a handy thing to have, at least this information will be structured somewhere, so here we go.

Source: Arrows Zoo, an article by Veronika Romashkina.

Wholesome curl Calls for Your Blog Posts

An important part of each penetration test is the documentation of all discovered vulnerabilities. The documentation often includes program calls to further demonstrate how a vulnerability was found, tested or exploited. To better visualise these steps in the context of web applications, we often include invocations of the command-line HTTP client curl. In the following, we discuss how program calls can be styled for documentation to appeal to all audiences.

Source: Wholesome curl Calls for Your Blog Posts.

Query Optimization in Postgres with pg_stat_statements

"I want to work on optimizing all my queries all day long because it will definitely be worth the time and effort," is a statement that has hopefully never been said. So when it comes to query optimizing, how should you pick your battles? Luckily, in PostgreSQL we have a way to take a system-wide look at database queries:

  • Which ones have taken up the most amount of time cumulatively to execute
  • Which ones are run the most frequently
  • And how long on average they take to execute

And that's just a few places you can shine a light on, using pg_stat_statements.

Source: Query Optimization in Postgres with pg_stat_statements, an article by Kat Batuigas.

(Dis)Honest Functions

After a recent debugging session, discovering I had once again been the victim of a dishonest function signature, I was... Well, let’s just say I was unimpressed. Two thoughts popped up in my head – the first one was «ahh.. this thing again..», and the second was «wait, why is this still even a thing?». It left me in a state of frustration.

Source: (Dis)Honest Functions, an article by Bendik Solheim.

Elegant bash conditionals

The if-statement is a very basic thing, not just in bash, but in all of programming. I see them used quite a lot in shell scripts, even though in many cases they can be replaced with something much more elegant.

In this rather short article, I'll show how control operators can be used instead. Many probably know about this, but don't realize how to use them nicely. This will help you write cleaner shell scripts in the future.

Source: Elegant bash conditionals, an article by Tim Visée.

First molt of the year: Ephebopus cyanognathus

In the evening I noticed a cast-off exoskeleton next to the burrow of the Ephebopus cyanognathus I keep. In the evening I took some photos of the molt.

Ephebopus cyanognathus molt
Ephebopus cyanognathus molt.

It's burrow is partially in the substrate and partially a tower it made with silk, substrate, and dead leaves.

Ephebopus cyanognathus burrow
Ephebopus cyanognathus burrow.