Three years ago, when Github was bought, I and many others decided to take their Open Source projects elsewhere and headed over to Gitlab Inc. However, I was never really completely happy about this move as I was just moving from one closed source platform to a (somewhat less) closed source platform with my code. What I really wanted, however, was make my code and projects available on a community driven platform. Three years later, I have found what I was looking for: Codeberg.
Continue reading Moving from Gitlab to CodebergAuthor: Martin
USB-C Charger Cable With a Power Display

A quick blog entry today about a nice tool I recently stumbled upon: A USB power delivery cable with a tiny built-in display that shows the power that is currently flowing through the cable. Ideal to see if a USB PD charger keeps what it promises and to get an idea how much energy goes into a battery. There don’t seem to be many manufacturers and I just stumbled over it by accident so I’ll make an exception and link to it on Amazon.de. Also interesting: I couldn’t find the product on Amazon.com. The image above shows the cable in action with a 65W USB PD charger connected to my notebook. Also, I tried the cable with a mobile phone with the same PD charger that requires 5V or 9V. It works as well and properly shows 15 Watts, the maximum the phone would charge with.
Fighting Buffer Bloat With OpenWrt and Traffic Shaping
Earlier this year, I discovered ‘wondershaper‘ a great Linux tool that configures traffic shaping on my notebook to fight buffer bloat on an upstream router. Without it, video calls and other interactive Internet use become impossible to use on some connections when sending large amounts of data in the uplink direction. This works on a device basis, so several devices in the local network, all sending data to the Internet at the same time, can still cause buffers to bloat in unsophisticated access routers. The solution: Apply traffic shaping on a local Wi-Fi access point that is inserted before the router where the bloat happens. It turned out that configuring traffic shaping on OpenWrt is a piece of cake!
Continue reading Fighting Buffer Bloat With OpenWrt and Traffic ShapingMy Codium Weekend

Apart from having fun and providing useful software for researchers, my quality time software project I’ve been working on for almost a decade, is to stay up to date with the latest software development methods and tools. Earlier this year, I’ve switched my development environment and deployment method to Docker containers. Once set up, this made my software development routine much easier and users of my Document Research Database software can swiftly install an instance from Gitlab on a server of their choice. While the software is in constant evolution, one thing however has remained the same throughout: The development environment. So far, I’ve been using Eclipse, as once upon a time, that was the standard development environment for PHP. But things have changed over the years and VSCode now seems to be the preferred editor for software developers. And indeed, it looks very nice. Unfortunately, it has one major flaw: It’s maintained by a company that, like no other, stood for fighting against Linux and open source.
Continue reading My Codium WeekendWireguard, OpenWrt and a Linksys Router

One VPN technology I wanted to try out for quite some time now is Wireguard. Everybody I talk to about the topic speaks very highly of it but unfortunately, the stable version was just released a bit too late for proper NetworkManager support to be included in Ubuntu 20.04 last year. While I could live with a couple of scripts to establish and tear down a tunnel to my home network, that’s unfortunately not an option for others I work with. But then I remembered that OpenWrt, the open source Linux operating system for embedded network devices such as Wi-Fi access points, has support for the protocol. And as I just needed to update a Linksys WRT-1200 AC Wi-Fi Router to the latest OpenWrt version anyway, I used the opportunity to gain some experience with the protocol along the way.
Continue reading Wireguard, OpenWrt and a Linksys RouterMy New Thinkpad X13 with 16 CPU Threads – First Impressions

O.k. I admit it, the sheer performance of video calls on current notebook processors made me go for a new instead of a used notebook, as incidentally, a couple of other unforeseen developments required the move anyway. So instead of buying a used Lenovo X270 with a 7th generation Intel processor from 2017 with 2 cores and 4 CPU threads, I went for a new Thinkpad X13 Gen 1 from 2020 with an AMD Ryzen 7 4750U CPU with 8 cores and 16 CPU threads. So here’s the story of how that went.
Continue reading My New Thinkpad X13 with 16 CPU Threads – First ImpressionsBooting From /dev/sdb

When installing a new OS, I am quite used to booting a computer from a USB drive. However, from way back in the days I faintly remember that connecting a drive with an installed Linux system with a SATA to USB adapter to a notebook / server would not work. Particularly so when the notebook / server already contains a disk drive that uses the default SATA port (/dev/sda). But I recently discovered that things have become way better these days!
Continue reading Booting From /dev/sdbRouting it Your Way Part 3: Socat for OpenVPN Forwarding
O.k., I’m going deeper and deeper down the layer 7 routing rabbit hole. As I like to have a plan B when it comes to my infrastructure at home, I have backup Internet connectivity over a separate Internet connection and a separate router. When main connectivity fails, a script detects that my services are no longer reachable. It then changes the DynDNS entries of all domains I use at home to point to the IP address of the backup connectivity. So far, so good.
But here is the catch: Backup connectivity is routed through a VM on the Internet that terminates ssh reverse port mapping tunnels from my VMs at home. These tunnels do not use the main Internet link so they don’t break when connectivity is lost. Instead, the VMs at home have an entry in the routing table for the IP address of the cloud VM that points to the backup connectivity router. This works great but has one major shortcoming: ssh can only tunnel TCP ports. Unfortunately, OpenVPN and similar products use UDP as transport protocol, and hence, ssh tunneling doesn’t work. But there’s another way!
Continue reading Routing it Your Way Part 3: Socat for OpenVPN ForwardingM.2 Slots – SATA and NVME SSDs

A quick hardware episode today because every now and then I was puzzled about how to identify if an M.2 SSD is a SATA drive or if it supports the faster and today’s more common NVME interface. The same goes for the M.2 connector on the notebook side. Turns out it is quite simple.
Continue reading M.2 Slots – SATA and NVME SSDsVideo Calling Performance On New Notebooks
By and large, I am pretty happy with my approach of using a refurbished notebook as my main device for my daily work. Currently, I use a Lenovo X250 from 2015, i.e. it’s around 6 years old. It runs fast enough and I don’t perceive a significant difference when I sit in front of a newer notebook that also runs Linux. Until recently.
Continue reading Video Calling Performance On New Notebooks