Latest article

Tech infra at home / 2023 edition

It’s time for the yearly “Tech Infra at home” update. Feel free to take a look at the last posts from 2022 and 2020 on that topic. This one is reasonably short, let’s start with having a look at the device diagram: There are a number of important changes present: First and foremost, I got rid of the EdgeRouter-X. Ubiquiti stopped updating it and it couldn’t handle 700 Mbps routing anyway. Now I’m back to using the ISP-provided modem box. It works reasonably well, at least it can handle my upstream/downstream speeds. My building uses G.fast to provide Gigabit access through old phones lines up until the signal reaches the ONT in the cellar. I was quite sceptical of the technology initially, but so far I’m really quite happy with the connectivity and reliability of the uplink. ...

September 30, 2023 · 6 min · Lennart

Your Let's Encrypt certificate may slow you down, but you can fix that!

First, a bit of context: I run a side-project called Valar, which is kind of a cluster-scale systemd-socket-activation container engine. I’m currently focusing on performance improvements and one of my targets was the proxy component. It terminates TLS connections and hands the HTTP requests off to the respective handler. As I did some load testing, I ran into the fact that my proxy spend about 70% of its CPU time multiplying some big.Int for the TLS handshake, which seemed kind of excessive. I published a little demo repository where you can try it yourself. ...

February 10, 2022 · 3 min · Lennart

Tech infra at home / 2022 edition

This is an update on a previous post on the technical infrastructure I run at home. This post will be similarly structured to its predecessor. I will start with giving a detailed description of the base network, continue with my storage setup and finish with compute. Tier I: Physical layout & network Router: Two years after my initial post I’m still happily using my EdgeRouter-X. It works fine for my needs, although I’m probably gonna switch to a self-built router at some point due to upgrading to 10G/25G Ethernet. Running 10G at home was quite pricey just a couple years ago, but these days you can find older 10GBit cards like the Mellanox ConnectX-3 cards for less than 50€. ...

February 8, 2022 · 6 min · Lennart

Technical infrastructure at home

Today I wondered what makes a good computing infrastructure setup? Of course, the context matters here. Does one measure good infrastructure in terms of “enterprise-grade” or prefer just a well working home setup? Or can one actually transfer ideas from enterprises to its smaller scale sister? Just to clarify: I will focus on the environment at home, since these kind of fast-moving thought experiments don’t go well with enterprises. What does one require? I had to think about what kind of requirements do I have? Which kind of infrastructure do I use at home? ...

February 3, 2020 · 5 min · Lennart

Playing around with Kotlin

A small disclaimer at the beginning: while I have some background in Java, I would never consider myself a superb Java developer. In the recent years I mainly opted for Go to get stuff done, maybe missing out on some of the more interesting programming language trends. This is the main reason I decided to learn Kotlin: dipping around in new concepts. I chose Kotlin because of the recent 2019 Stack Overflow survey. By developers Kotlin is ranked at the 4th rank of most loved programming languages. Since I know Python (mainly for ML use), have learned a bit of Rust (but I found it way to verbose) and written quite a bit of TypeScript in combination with Vue.js web framework; I decided to investigate why exactly Kotlin is so popular. ...

April 28, 2019 · 3 min · Lennart

Exposing services on Kubernetes using Ingress

In my last blog post I talked about setting up your own Kubernetes cluster at home. Since we don’t run our cluster on a big cloud platform, we have no access to comfortable tools like a built-in load balancer. Time to go ashore But, don’t despair! We can deploy our own load balancer using the Kubernetes Ingress object. It allows us to define routing rules and use a backend of our choice that uses these rules to route traffic to our cluster. And the most exiting thing: to build an Ingress controller is really simple. ...

August 11, 2018 · 4 min · Lennart

Setting up a Kubernetes cluster on bare-metal

You may find yourself sitting at home, thinking about software and stuff and what to do with that spare PC of yours. I’ve got an idea: set up a single-node run-at-home Kubernetes cluster! We need a ship (or a whale) A little disclaimer to start with: the configuration here provides no recovery mechanisms since it is based on a single master node. If you want to set up a high availability cluster, I recommend you consult the excellent Kubernetes documentation. ...

May 11, 2018 · 6 min · Lennart

Building APIs in Go: Business logic

In this post I will explain how to build a nice and working RESTful API for our weather service using only the Go standard library. If you missed the first part of this series, I recommend reading it before continuing here. You can find the codebase of this introductory series on GitHub. Extending the blueprint Well, we have a nice blueprint of the handlers we want, but shoving around global variables is neither fun nor good style. So we will extend each of our handlers to use Go’s support of higher-order functions, that allows us to use functions as values. We will do this for each of our handlers. Our final result should look something like this. Notice the changes in the main method when registering the handlers. ...

November 9, 2017 · 5 min · Lennart

Building APIs in Go: A quick sketch

First of all, welcome to my first blog post. Today I want to help you build your first RESTful API in Golang! The first two sections will help you getting started with Go, you may be able to skip these steps. Installing the go command line tool Before you can start writing Go code, you need the go command line tool that bundles the compiler and a bunch of other development tools for you. Just visit golang.org/dl/ to fetch the latest version and install it on your workstation. Be sure to yet your $GOPATH correctly! ...

August 11, 2017 · 7 min · Lennart