👾 Game-streaming without the "cloud" 🌩️

15 minute read Published:

With increasing bandwidths, live-streaming of video games is becoming more and more popular – and might further accelerate the demise of the desktop computer. Most options are “cloud-gaming” services based on subscriptions where you don’t own the games and are likely to be tracked and monetised for your data. In this blog post I present the solution I built at home to replace my “living room computer”.

A beginner's guide to C++ Ranges and Views.

9 minute read Published:

C++ Ranges are one of the major new things in C++20 and “views” are a big part of ranges. This article is a short introduction for programmers that are new to C++ Ranges.

A good firewall for a small network

8 minute read Published:

In this article I will outline the setup of my (not so) new firewall at home. I explain how I decided which hardware to get and which software to choose, and I cover the entire process of assembling the machine and installing the operating system. Hopefully this will be helpful to poeple in similar situations.

Tutorial: Writing your first view from scratch (C++20 / P0789)

16 minute read Published:

C++17 was officially released last year and the work on C++20 quickly took off. A subset of the Concepts TS was merged and the first part of the Ranges TS has been accepted, too. Currently the next part of the Ranges TS is under review: “Range Adaptors and Utilities”. It brings the much-hyped “Views” to C++, but maybe you have been using them already via the Range-V3 library? In any case you might have wondered what you need to do to actually write your own view. This is the first in a series of blog posts describing complete view implementations (not just adaptations of existing ones).

The - surprisingly limited - usefulness of function multiversioning in GCC

12 minute read Published:

Modern CPUs have quite a few features that generic amd64/intel64 code cannot make use of, simply because they are not available everywhere and including them would break the code on unsupporting platforms. The solution is to not use these features, or ship different specialised binaries for different target CPUs. The problem with the first approach is that you miss out on possible optimisations and the problem with the second approach is that most users don’t know which features their CPUs support, possibly picking a wrong executable (which won’t run → bad user experience) or a less optimised one (which is again problem 1). But there is an elegant GCC-specific alternative: Function multiversioning!

Using Gitea and/or Github to host blog comments

3 minute read Published:

After having moved from FSFE’s wordpress instance I thought long about whether I still want to have comments on the new blog. And how I would be able to do it with a statically generated site. I think I have found/created a pretty good solution that I document below.

New blog

1 minute read Published:

I have moved my blog from to my own web-space. On the way I have switched from Wordpress to GoHugo. I hope to publish more often and will increasingly cover programming topics.

Retroactively replacing git subtree with git submodule

13 minute read Published:

Combining multiple git repositories today is rather common, although the means of doing so are far from perfect. Usually people use git submodule or git subtree. If you have used neither or are happy with either method this post is completely irrelevant to you. But maybe you decided to use git subtree and like me are rather unhappy with the choice. I will not discuss the upsides and downsides of either approach, I assume you want to change this, and you wish you could go back in time and make it right for all subsequent development.

Why Privacy is more than Crypto

19 minute read Published:

During the last year hell seems to have frozen over: our corporate overlords neighbours at Apple, Google and Facebook have all pushed for crypto in one way or another. For Facebook (WhatsApp) and Google (Allo) the messenger crypto has even been implemented by none less than the famous, endorsed-by-Edward-Snowden anarchist and hacker Moxie Marlinspike! So all is well on the privacy front! … but is it really? EDIT: A French version of this post is available here.

OpenBSD on the Thinkpad X250

5 minute read Published:

Since posts like these often helped me setup some device, I thought I’d write one as well this time. Also it is advertising for a good free operating system. TL;DR Everything works almost perfectly, good hardware, good software! You should give it a try :) Hardware I have got a fairly high-end config: Intel® Core™ i7-5600U 16GB RAM 1920x1080 Display, non-glare, non-touch 512GB Samsung SSD