🦜 Georg's Log
@gms.tf@rss-parrot.net
I'm an automated parrot! I relay a website's RSS feed to the Fediverse. Every time a new post appears in the feed, I toot about it. Follow me to get all new posts in your Mastodon timeline!
Brought to you by the RSS Parrot.
---
Your feed and you don't want it here? Just
e-mail the birb.
FOSDEM 2026 Talks
https://gms.tf/fosdem-2026.html
Published: October 11, 2026 16:00
After having sampled the FOSDEM 2026 talks, these are my top five recommendations.
On challenges implementing White Rabbit time synchronisation and why most FPGA kits aren't sufficient:
White Rabbit for the masses: distributed coherent SDR on generic…
Better Datamash Build Story with Meson
https://gms.tf/datamash-meson.html
Published: March 29, 2026 16:00
This article is a small case study on introducing the Meson build
tool into a legacy Autotools and Gnulib centric code base, i.e.
the GNU Datamash project.
With Meson, the result builds twice as fast and configures one order of magnitude faster
while only…
Injecting Code into a Linux Process
https://gms.tf/inject_code.html
Published: December 6, 2024 09:00
Say - entirely hypothetically - we know a shell script that is
executed with root privileges via sudo and we found a way
for normal users to convince it to call their own code.
For demonstration purposes it then would be nice to have code
that invokes a…
The curious case of nanosleep vs. hr_sleep
https://gms.tf/hr_sleep.html
Published: July 9, 2024 17:00
This weekend, I finally got around reading a bookmarked paper that proposes an improved nanosleep:
Faltelli, Marco & Belocchi, Giacomo & Quaglia, Francesco & Pontarelli, Salvatore & Bianchi, Giuseppe. (2021). Metronome: adaptive and precise intermittent…
Blocking Audio Ads
https://gms.tf/blocking-audio-ads.html
Published: June 16, 2024 23:00
This article describes an approach to blocking ads in audio
files and introduces software that implements it.
Motivation¶
The modern web is unbearable without a good ad-blocker such as
uBlock Origin. Unfortunately, the online marketing
industry, while…
Shift Typing
https://gms.tf/shift-typing.html
Published: October 7, 2023 16:00
This article introduces shift-tutor, a Linux program that filters
shift key events to improve or verify touch typing skills.
Rationale¶
Most keyboards contain two shift keys, i.e. one located on the
left bottom and the other on the opposite side:
Source:…
Fosi Audio TDA7498E Amplifier Review
https://gms.tf/fosi-review.html
Published: December 31, 2022 19:00
Recently, I was in the market for a Class-D amplifier
to replace an aging model. This article reviews the very compact
Fosi Audio TSA7498E 2 channel amplifier I bought from a China
based business, via Amazon. tl;dr: Can't recommend, use something
better.
…
Scanning I2C addresses
https://gms.tf/i2c-scanner.html
Published: September 21, 2022 14:00
I2C is a simple open-drain bus that is popular for
connecting devices to microcontrollers (MCUs), such as
sensors, RTCs, displays etc. Devices on the I2C bus are
addressed by 7 bits and the bus data and clock lines are
pulled-up by a set of pull-up…
Measuring PWM Signals with a Pokit Meter
https://gms.tf/pwm-fft.html
Published: July 3, 2022 13:00
This article describes how to measure a pulse-width-modulated
(PWM) signal using the Pokit Meter device.
The Pokit Meter is a very small digital multimeter (DMM) like device
that can be interfaced over Bluetooth Low Energy (BLE). Due to
its design and…
Getting started with the GD32VF103 RISC-V Microcontroller
https://gms.tf/riscv-gd32vf103.html
Published: May 8, 2022 12:00
The GD32VF103 is an inexpensive 32 bit RISC-V CPU that integrates
a bunch of peripherals. In other words, it's a cheap RISC-V
microcontroller (MCU). This article describes how to hook it up, to
set up an development environment and do some first steps with…
On the Costs of Syscalls
https://gms.tf/on-the-costs-of-syscalls.html
Published: August 30, 2021 13:00
It's well known that syscalls are expensive. And that
software mitigations against CPU bugs (such as Meltdown) even
have made them more expensive. But how expensive are they really?
To begin to answer this question I wrote a small
micro-benchmark in order…
The Rise of Meson
https://gms.tf/the-rise-of-meson.html
Published: August 7, 2021 11:00
More and more open source projects seem to switch to the Meson build tool, in the last years.
In an attempt to quantify this development I looked at the build tools usage by Fedora packages, during the last 14 years.
About Meson¶
Meson is a build tool with…
Perfect Hashing
https://gms.tf/perfect-hashing.html
Published: November 22, 2020 15:00
The beauty of perfect hashing is that you never have to deal with
any collisions during item lookup.
I recently created libphashtable, a perfect hashing hash table library for
C/C++ which focuses on minimizing item lookup latency jitter.
This article…
Deploying Full Disk Encryption in the Cloud with Ansible
https://gms.tf/fedora-initramfs.html
Published: November 17, 2020 11:00
Deploying a new virtual machine 'in the cloud' is simple enough
and fast. As long as one doesn't need to setup an encrypted root
filesystem. This article shows how to automate the setup of a
Fedora system with an encrypted root filesystem remotely - 'in…
Deploying SSH Host Keys with Digital Ocean Droplets
https://gms.tf/ssh-host-key-deployment.html
Published: June 5, 2020 20:00
When deploying a VM in a remote location one might end up in an
impossible situation: a VM base image doesn't contain SSH
host keys as otherwise the image couldn't be shared between
multiple hosts. But if SSH host keys are auto-generated during
the first…
Programming with RISC-V Vector Instructions
https://gms.tf/riscv-vector.html
Published: January 24, 2020 23:00
Perhaps the most interesting part of the open RISC-V instruction set architecture (ISA) is the vector extension (RISC-V "V").
In contrast to the average single-instruction multipe-data (SIMD) instruction set, RISC-V vector instructions are vector length…
Announcing MANPATH.be
https://gms.tf/announcing-manpathbe.html
Published: July 7, 2019 12:00
Recently, I launched MANPATH.be - a site for convenient man
page browsing. It provides access to the man pages of
different distributions, including Fedora, CentOS and
OpenSolaris. The about page concisely describes some
of the sites features, e.g. human…
The Anatomy of a Firefox Malware Addon
https://gms.tf/the-anatomy-of-a-firefox-malware-addon.html
Published: March 23, 2019 09:00
Some time ago, I was contacted to fix a computer running Ubuntu.
Basically, after many flawless LTS distribution upgrade the last
one failed and made the graphical boot hang hard. Thus, the fix was to
backup the home directory, re-install a fresh Ubuntu…
Touch Typing
https://gms.tf/touch-typing.html
Published: December 15, 2018 17:00
Getting along without touch typing is possible. But
learning touch typing is usually a big productivity boost,
reduces stress and may prevent typical keyboard induced health
risks. This article describes some learning approaches
and optimization…
Configuring SPF to make Google happy
https://gms.tf/configuring-spf-to-make-google-happy.html
Published: May 10, 2018 10:00
Lately, Google mail servers are getting more extravagant in what
mail they accept. Setting up a Sender Policy Framework
(SPF) DNS record is a relatively low effort way to
get mail though users of the Google mail service. (Those users
aren't necessarily…
Work-related Movies
https://gms.tf/work-related-movies.html
Published: April 18, 2018 19:10
This article features a watch list of work related
movies. A list for getting some peace of mind in the evening
after working overtime.
Each movie has some relation to a pathological work related
setting. Not always on the surface, but more on a deeper…
Dtracing Passwords for Fun
https://gms.tf/dtracing-passwords-for-fun.html
Published: December 17, 2017 21:30
Going through an old hardware stash, I've noticed a harddisk
that was part of a Solaris test system of mine I disassembled 10
years ago. The disk contains an interesting artifact I
implemented at that time: a proof-of-concept for capturing user
entered…
NFS VM Cached Read Illustrated
https://gms.tf/nfs-vm-cached-read-illustrated.html
Published: August 12, 2017 16:12
This article illustrates how the virtual memory (VM) subsystem of
the Linux kernel is able to cache files that are located on
an NFS server.
Environment
High-Level View
Dstat
NFS Traffic
Closing Remarks
Environment¶
In this small experiment we just…
Check CPU Microcode Version on Linux
https://gms.tf/check-cpu-microcode-version-on-linux.html
Published: July 1, 2017 08:10
Debian recently released a warning advisory regarding a hardware
bug in the hyperthreading implementation on certain Skylake/Kaby
Lake Intel CPUs. It can be mitigated by a microcode firmware
update - at least on some models. This article is about checking…
Reasons for Rooting Android
https://gms.tf/reasons-for-rooting-android.html
Published: June 15, 2017 19:10
A stock Android device is locked down, by default. Rooting
is the process of getting access to the root user (think: installing
su). This article lists several advantages of a rooted device.
NTPsync
Create USB Mass Storage devices
Simple Backups
Separate…
Fedora as Grml replacement
https://gms.tf/fedora-as-grml-replacement.html
Published: March 12, 2017 20:00
Grml is a Linux Live CD distribution geared towards system
administration tasks and other console work. Unfortunately, its
development has slowed down in the past years, i.e. the latest
stable release is from 2014. In 2017, when dealing with modern…
Updating Samsung SSD Firmware in the 21st Century
https://gms.tf/updating-samsung-ssd-firmware-in-the-21st-century.html
Published: February 17, 2017 20:10
The firmware updates for the Samsung 840 EVO SSDs come as ISO
images which isn't very helpful if your system doesn't have a
CDROM drive. It turns out that the ISO images just contain DOS
binaries, though. This article describes how to use a FreeDOS USB…
Btrfs requires noatime
https://gms.tf/btrfs-requires-noatime.html
Published: February 8, 2017 20:10
Traditionally, UNIX filesystems also maintain the access time
(atime) of a file. This is very much an anti-feature because it
yields a write operation for each read operation. Which is
obviously bad for performance. Since Btrfs is a copy-on-write
(COW)…
Updating the BIOS on a Dell Latitude E7270
https://gms.tf/updating-the-bios-on-a-dell-latitude-e7270.html
Published: February 6, 2017 09:10
Dell distributes BIOS updates for the Latitude E7270 as PE32
Windows GUI executables. It turns out that the BIOS itself is
able to extract the firmware images from such executables and to
apply them.
HOWTO¶
Get the latest BIOS update executable from e.g.
…
When curl sends 100-continue
https://gms.tf/when-curl-sends-100-continue.html
Published: January 28, 2017 09:10
When sending a POST request with curl it sometimes automatically
adds an Expect: 100-continue header. The following summarizes under
which conditions curl/libcurl adds this header.
Background¶
The Expect: 100-continue header is specified in HTTP 1.1 and…
Link Layer Discovery Protocol
https://gms.tf/link-layer-discovery-protocol.html
Published: December 14, 2016 09:10
The Link Layer Discovery Protocol (LLDP) probably isn't
the most popular protocol but it can be useful for
troubleshooting purposes and for mapping the neighbourhood of a host.
Its purpose is basically to send/receive key/value pairs that
are of general…
Counting CPU Events
https://gms.tf/counting-cpu-events.html
Published: October 16, 2016 08:10
This article discusses hardware performance counter measurements
obtained for a character search benchmark running on Intel x86
and SPARC hardware. Those results help to explain the big
runtime differences between a SPARC T5 system and Intel x86 ones…
SPARC and PPC find benchmark results
https://gms.tf/sparc-and-ppc-find-benchmark-results.html
Published: September 16, 2016 08:10
The article std::find() and memchr() Optimizations contains
benchmark results for an Intel Core i5, an i7 and an older AMD
system. This followup also adds results for a relatively recent
SPARC system and an older PPC one.
SPARC T5¶
First released in 2013,…
std::find() and memchr() Optimizations
https://gms.tf/stdfind-and-memchr-optimizations.html
Published: September 7, 2016 08:10
Assume you need to parse a record based format with flexible
width and one-byte delimiters. When using C++, the std::find() STL
algorithm is the obvious choice for efficiently locating the
delimiters. The idiomatic C solution is to use memchr().
…
LD_LIBRARY_PATH considered harmful
https://gms.tf/ld_library_path-considered-harmful.html
Published: July 22, 2016 08:10
The purpose of the LD_LIBRARY_PATH environment variable is to instruct the
linker to consider additional directories when searching for libraries. Its
valid use case is the test of alternative library versions installed in
non-standard locations. In…
Shipping Books (in Germany)
https://gms.tf/shipping-books-in-germany.html
Published: July 19, 2016 08:10
There are several products for shipping books in Germany.
The 'Warensendung' product may be cheaper for certain
books, but they are slowly transported and there is no tracking.
The following table compares different attributes and constraints
of the…
On sprintf() Fails
https://gms.tf/on-sprintf-fails.html
Published: July 15, 2016 22:00
The sprintf() and snprintf() C library functions are commonly
used for formatting a string and writing the result into a buffer.
But sometimes it is surprising in how many ways sprintf() can
be misused.
The Ugly
The Pitfalls
The Bad
The Ugly¶
Some…