profile picture

Michael Stapelberg

All Blog Posts

Filter by tag:
Go to page:

2024 › February

  • I maintain two builds of the Linux kernel, a linux/arm64 build for gokrazy, my Go appliance platform, which started out on the Raspberry Pi, and then a linux/amd64 one for router7, which runs on PCs. The update process for both of these builds is entirely automated, meaning new Linux kernel releases are automatically tested and merged, but recently the continuous integration testing failed to automatically merge Linux 6․7 — this article is about tracking down the root cause of that failure. Read more →

2024 › January

  • When a service fails to start up enough times in a row, systemd gives up on it. On servers, this isn’t what I want — in general it’s helpful for automated recovery if daemons are restarted indefinitely. As long as you don’t have circular dependencies between services, all your services will eventually come up after transient failures, without having to specify dependencies. Read more →

2023 › October

  • For over 10 years now, I run two self-built NAS (Network Storage) devices which serve media (currently via Jellyfin) and run daily backups of all my PCs and servers. In this article, I describe my goals, which hardware I picked for my new build (and why) and how I set it up. Read more →

2023 › July

  • For the last 10 years, I have been interested in hi-DPI monitors, and recently I read about an interesting new monitor: Dell’s 32-inch 6K monitor (U3224KBA), a productivity monitor that offers plenty of modern connectivity options like DisplayPort 2, HDMI 2 and Thunderbolt 4. Read more →

2023 › January

  • gokrazy is an appliance platform for Go programs: with just a few commands, you can deploy your Go program(s) on a Raspberry Pi or a (typically small) PC. I’m excited to let you know that gokrazy now comes with a re-designed gok command line tool and gokrazy instance configuration mechanism! Read more →

2022 › October

  • I was pleasantly surprised by how easy it was to make it possible to push a PC’s power button remotely via MQTT by wiring up an ESP32 microcontroller, a MOSFET, a resistor, and a few jumper wires. While a commercial solution like IPMI offers many more features like remote serial, or remote image mounting, this DIY solution feels really magical, and has great price performance if all you need is power management. Read more →

2022 › August

  • For the guest WiFi at an event that eventually fell through, we wanted to tunnel all the traffic through my internet connection via my home router. Because the event is located in another country, many hours of travel away, there are a couple of scenarios where remote control of my home router can be a life-saver. Read more →

2022 › July

  • This post is the third article in a series of blog posts about rsync, see the Series Overview. With rsync up and running, it’s time to take a peek under the hood of rsync to better understand how it works. Read more →

  • This post is the second article in a series of blog posts about rsync, see the Series Overview. Now that we know what to use rsync for, how can we best integrate rsync into monitoring and alerting, and on which operating systems does it work? Read more →

2022 › June

  • This post is the first article in a series of blog posts about rsync, see the Series Overview. To motivate why it makes sense to look at rsync, I present three scenarios for which I have come to appreciate rsync: DokuWiki transfers, Software deployment and Backups. Read more →

  • For many years, I was only a casual user of rsync and used it mostly for one-off file transfers. Over time, I found rsync useful in more and more cases, and would recommend every computer user put this great tool into their toolbox 🛠 🧰 ! Read more →

2022 › May

  • Now that I recently upgraded my internet connection to 25 Gbit/s, I was curious how hard or easy it is to download files via HTTP and HTTPS over a 25 Gbit/s link. I don’t have another 25 Gbit/s connected machine other than my router, so I decided to build a little lab for tests like these 🧑‍🔬 Read more →

2022 › April

  • My favorite internet service provider, init7, is rolling out faster speeds with their infrastructure upgrade. Last week, the point of presence (POP) that my apartment’s fiber connection terminates in was upgraded, so now I am enjoying a 25 Gbit/s fiber internet connection! Read more →

2022 › March

  • I have tried a bunch of different Smart Home products over the last few years and figured I would give an overview of which ones I liked, which ones I disliked, and how I would go about selecting good Smart Home products to buy. Read more →

2022 › January

  • I finally managed to get my hands on some DDR5 RAM to complete my Intel i9-12900 high-end PC build! This article contains the exact component list if you’re interested in doing a similar build. Usually, I try to stay on the latest Intel CPU generation when possible. Read more →

2021 › December

  • The mouse I use daily for many hours is Logitech’s MX Ergo trackball and I generally consider it the best trackball one can currently buy. Unfortunately, after only a year or two of usage, the trackball’s mouse buttons no longer function correctly. Read more →

2021 › November

  • You most likely have heard that Apple switched from Intel CPUs to their own, ARM-based CPUs. Various early reviews touted the new MacBooks, among the first devices with the ARM-based M1 CPU, as the best computer ever. This got me curious: after years of not using any Macs, would an M1 Mac blow my mind? Read more →

2021 › August

  • Since March 2020, I have been using my work computer at home: an HP Z440 workstation. When I originally took the machine home, I immediately noticed that it’s quite a bit louder than my other PCs, but only now did I finally decide to investigate what I could do about it. Read more →

2021 › July

  • init7 recently announced that with their FTTH fiber offering Fiber7, they will now sell and connect you with 25 Gbit/s (Fiber7-X2) or 10 Gbit/s (Fiber7-X) fiber optics, if you want more than 1 Gbit/s. While this offer will only become available at my location late this year (or possibly later due to the supply chain shortage), I already wanted to get the hardware on my end sorted out. Read more →

2021 › June

  • For many of my school and university years, I used and liked my ThinkPad X200 ultraportable laptop. But now that these years are long gone, I realized my use-case for laptops had changed: instead of carrying my laptop with me every day, I am now only bringing it on occasion, for example when I travel to conferences, visit friends, or do volunteer work. Read more →

2021 › May

  • init7 recently announced that with their FTTH fiber offering Fiber7, they will now sell and connect you with 25 Gbit/s (Fiber7-X2) or 10 Gbit/s (Fiber7-X) fiber optics, if you want more than 1 Gbit/s. This is possible thanks to the upgrade of their network infrastructure as part of their “lifecycle management”, meaning the old networking gear was declared as end-of-life. Read more →

  • After adding a fiber link to my home network, I am upgrading that link from 1 Gbit/s to 10 Gbit/s. As a reminder, conceptually the fiber link is built using two media converters from/to ethernet: Schematically, this is what’s connected to both ends: Read more →

  • Over the last few years, I worked on a few projects around keyboard input latency: In 2018, I introduced the kinX keyboard controller with 0.2ms of input latency. In 2020, I introduced the kinT keyboard controller, which works with a wide range of Teensy micro controllers, and both the old KB500 and the newer KB600 Kinesis Advantage models. Read more →

2021 › April

  • During my work on Teensy 4.1 support in ChibiOS for the QMK keyboard firmware, I noticed that ChibiOS’s virtual serial device USB demo would sometimes print garbled output, and that I would never see the ChibiOS shell prompt. This article walks you through diagnosing and working around this issue, in the hope that it helps others who are working with micro controllers and USB virtual serial devices. Read more →

  • I recently learnt about the Emacs package project.el, which is used to figure out which files and directories belong to the same project. This is used under the covers by Eglot, for example. In practice, a project is recognized by looking for Git repositories, which is a decent first approximation that often just works. Read more →

  • NXP’s Eclipse-based MCUXpresso IDE is the easiest way to make full use of the hardware debugging features of modern NXP micro controllers such as the i.MX RT1060 found on the NXP i.MX RT1060 Evaluation Kit (MIMXRT1060-EVK), which I use for Teensy 4 development. Read more →

2021 › March

  • When I bought a Nuki Opener, I had a lot of trouble getting it to work — it turns out the device doesn’t properly decode the SCS bus at all, and only captures and replays the signals with a generic code path. Read more →

  • This post is the third article in a series of blog posts about the Nuki Opener on the SCS bus intercom, see the Series Overview. I bought the cheapest compatible BTicino intercom device (BT 344232 for 32 €) that I could find on eBay, then soldered in 4 wires and added microcontrollers to make it smart. Read more →

  • Debian Code Search now offers an OpenAPI-based API! Various developers have created ad-hoc client libraries based on how the web interface works. The goal of offering an OpenAPI-based API is to provide developers with automatically generated client libraries for a large number of programming languages, that target a stable interface independent of the web interface’s implementation details. Read more →

2021 › January

  • While I had heard the abbreviation MQTT many times, I never had a closer look at what MQTT is. Here are a few quick notes about using MQTT as Pub/Sub bus in a home IOT network. Motivation Once you have a few IOT devices, an obvious question is how to network them. Read more →

Go to page:

I run a blog since 2005, spreading knowledge and experience for almost 20 years! :)

If you want to support my work, you can buy me a coffee.

Thank you for your support! ❤️