week 45, 2020

Go for Internal Services

I’ve been working with Go at my day job for internal services for a few years - and have noticed some common themes from various success stories, incident post-mortems, and conversations with other engineers. This post inspired me to write some of these experiences down.

Source: Go for Internal Services, an article by Utsav Shah.

Introduction to Makefiles

I often use Makefiles in some of my projects. I really like the flexibility it gives, and I often find myself writing a Makefile instead of a simple shell script to automatize tasks.

So here's a little crash course. I'll obviously only cover the basics, but I hope this will give you a good idea on how you could improve your workflows using Makefiles.

Source: Introduction to Makefiles, an article by Jean-David Gadina.


Around noon we went by bike to the town of Monster. Close to the beach I led my family on a detour into the dunes; I wanted to show Adam and Alice where as a child I had been looking for fossils together with my brother Marco.

Adam and Alice looking for fossils
Adam and Alice looking for fossils.
Fossilized shell close up
Fossilized shell close up.
Cracked open shell showing halite crystals
Cracked open shell showing halite crystals (rock salt).

As I have found trilobite fossils in those rocks the fossils found must be between 521 and 251.9 millions of years old!

After exploring for a while we went to the beach. But when we arrived we all were hungry and thirsty so we went first for a snack and returned to the beach refreshed a little later.

Compass jellyfish Chrysaora hysoscella
Compass jellyfish Chrysaora hysoscella.
Alice walking on the beach
Alice walking on the beach.
Shells on the beach
Shells on the beach.
Alice about to join Adam exploring a tideway
Alice about to join Adam exploring a tideway.
Tiny skeleton of a sea urchin up close
Tiny skeleton of a sea urchin up close. Echinocyamus pusillus?
Common starfish that Adam found on Alice's hand. Asterias rubens.
Common starfish that Adam found on Alice's hand. Asterias rubens.

Two new tracks by System of a Down

Hear System of a Down’s First New Music in 15 Years, ‘Protect the Land’ and ‘Genocidal Humanoidz’

With Azerbaijan waging war against the homeland of the band members’ ancestors, the group decided to strike back and use its music to raise funds for its countrymen

Source: New System of a Down: 'Protect the Land' and 'Genocidal Humanoidz', an article by Kory Grow.

In the early afternoon I listened to two (!) new tracks by System of a Down: Protect The Land, and Genocidal Humanoidz. Both tracks have a clear System of a Down sound, and I like the first one the most.

Real World Haskell

A lot of people think day-to-day tasks like running a web app are difficult or impossible in Haskell! But of course this isn't true! In our Real World Haskell series, we'll take you through a whole slew of libraries that allow you to write a web backend. These libraries use Haskell's features to approach things like database queries and API building in unique ways.

Source: Real World Haskell.

Arm Looks To Laptops: Cortex-A78C Processor for PCs Announced

Arm has been addressing devices above and beyond portables for a while now. Today the company has offerings for autonomous vehicles, communications, edge computing, and all kinds of smartphones and tablets. Yet, the company left the emerging market of Windows on Arm laptops to Qualcomm's Snapdragon. Not for long though as this week Arm introduced its own processor for laptops, the Cortex-A78C.

Source: Arm Looks To Laptops: Cortex-A78C Processor for PCs Announced, an article by Anton Shilov.

CSVs: The good, the bad, and the ugly

CSVs are a relatively popular data format, it seems particularly common as a format for providing exports of medium-sized datasets. My day job involves processing lots of these types of data sets, and so I’ve developed a set of strong opinions on CSVs, which are documented here.

One feature of CSVs that is often considered a big advantage is that it’s an incredibly simple file format. However, this can be misleading.

Source: CSVs: The good, the bad, and the ugly, an article by Alex Gaynor.

Hubie Halloween (2020)

Despite his devotion to his hometown of Salem (and its Halloween celebration), Hubie Dubois is a figure of mockery for kids and adults alike. But this year, something is going bump in the night, and it's up to Hubie to save Halloween.

In the evening we watched Hubie Halloween on Netflix. I didn't like the movie much. I give it a 5 out of 10.

Poetry vs. Docker caching: Fight!

Docker packaging is an exercise in shoving square pegs into round holes, over and over and over again.

Consider the Poetry packaging tool for Python. One of Poetry’s features can make Docker rebuilds slower, by breaking Docker’s caching.

And it’s not a bad feature, there’s nothing really wrong with it, it just—doesn’t fit.

Let’s see what the problem is, go over some workarounds—which have their own problems, obviously—and then briefly consider why everything about Docker packaging is always slightly broken.

Source: Poetry vs. Docker caching: Fight!, an article by Itamar Turner-Trauring.

How to Set Up an SSH Jump Server

In this blog post we’ll cover how to set up an SSH jump server. We’ll cover two open source projects.

  1. A traditional SSH jump server using OpenSSH. The advantage of this method is that your servers already have OpenSSH pre-installed.
  2. A modern approach using Teleport, a newer open source alternative to OpenSSH.

Both of these servers are easy to install and configure, are free and open-source, and are single-binary Linux daemons.

Source: Tutorial for setting up an SSH Jump Server, an article by Ev Kontsevoy.

HSTS your curl

HTTP Strict Transport Security (HSTS) is a standard HTTP response header for sites to tell the client that for a specified period of time into the future, that host is not to be accessed with plain HTTP but only using HTTPS. Documented in RFC 6797 from 2012.

The idea is of course to reduce the risk for man-in-the-middle attacks when the server resources might be accessible via both HTTP and HTTPS, perhaps due to legacy or just as an upgrade path. Every access to the HTTP version is then a risk that you get back tampered content.

Source: HSTS your curl, an article by Daniel Stenberg.

A Primer on Matrix Calculus, Part 1: Basic review

Consider whether this story applies to you. You went through college and made it past linear algebra and multivariable calculus, and then began your training for deep learning. To your surprise, much of what they taught you in the previous courses is not very useful to the current subject matter.

And this is fine. Mathematics is useful in its own right. You can expect a lot of stuff isn't going to show up on the deep learning final, but it's also quite useful for understanding higher mathematics.

However, what isn't fine is that a lot of important stuff that you do need to know was omitted. In particular, the deep learning course requires you to know matrix calculus, a specialized form of writing multivariable calculus (mostly differential calculus). So now you slog through the notation, getting confused, and only learning as much as you need to know in order to do the backpropagation on the final exam.

This is not how things should work!

Source: A Primer on Matrix Calculus, Part 1: Basic review, an article by Matthew Barnett.

A Practical Introduction to Container Security

Securing containers is a complex task. The problem space is broad, vendors are on fire, there are tons of checklists and best practices and it’s hard to prioritize solutions. So if you had to implement a container security strategy where would you start?

I suggest to start from the basics: understanding what container security is about and build a model to navigate risks.

Source: A Practical Introduction to Container Security, an article by Gianluca Brindisi.

Raspberry Pi 400: the $70 desktop PC

Raspberry Pi has always been a PC company. Inspired by the home computers of the 1980s, our mission is to put affordable, high-performance, programmable computers into the hands of people all over the world. And inspired by these classic PCs, here is Raspberry Pi 400: a complete personal computer, built into a compact keyboard.

Source: Raspberry Pi 400: the $70 desktop PC, an article by Eben Upton.

Names are not type safety

Haskell programmers spend a lot of time talking about type safety. The Haskell school of program construction advocates “capturing invariants in the type system” and “making illegal states unrepresentable,” both of which sound like compelling goals, but are rather vague on the techniques used to achieve them. Almost exactly one year ago, I published Parse, Don’t Validate as an initial stab towards bridging that gap.

Source: Names are not type safety, an article by Alexis King.

Extreme Debugging

There’s debugging and there’s debugging. This is a story of the latter. Before we get into this jaunt I’d like to add that I’ve written this piece to mimic how we actually got to the conclusion. If you’re experienced in strange stuff you might see a faster route or use a different tool. There’s more than one way to do most of this and this was what I had at hand when I needed it.

Source: Extreme Debugging, an article by Chris Chandler.