news
Programming and Standards
-
Christian Kastner: Easy dynamic dispatch using GLIBC Hardware Capabilities
TL;DR With GLIBC 2.33+, you can build a shared library multiple times targeting various optimization levels, and the dynamic linker/loader will pick the highest version supported by the current CPU. For example, with the layout below, on a Ryzen 9 5900X,
x86-64-v3/libfoo0.so
would be loaded: [...][...]
Note that the lowest-level library, targeting
x86-64-v1
, is not installed to a subdirectory, but to the path where the library would normally have been installed. This has the nice property that on systems not using GLIBC, and thus not having hwcaps available, package installation will still result in a loadable library, albeit the version with the worst performance. And a careful observer might have noticed that in the example above, the library is installed to a privateggml/
directory, so this mechanism also works when usingRUNPATH
orLD_LIBRARY_PATH
.As mentioned above, Debian's ggml package will soon switch to
GGML_CPU_ALL_VARIANTS=ON
, but this was still quite the useful feature to discover. -
Rlang ☛ Standard Deviation vs. Standard Error: Meaning, Misuse, and the Math Behind the Confusion
The left side illustrates standard deviation as the spread of individual data values around the population mean (μ). The right side shows standard error as the variability in sample means (x̄) obtained from repeated sampling.
-
Standards/Consortia
-
Terence Eden ☛ Howto: Connect IKEA’s Trådfri Zigbee Bulbs to a Philips Hue Hub
Written because it pissed me off. I hope this helps you in your hour of need.
-
Daniel Estévez ☛ Galileo OSNMA chain renewal
As shown in the diagram, the chain renewal happens in two steps. During the Step 1, the CPKS (chain and pubkey status) contained in the NMA header of each HKROOT message (which is transmitted every 30 seconds) is EOC (end of chain), indicating receivers that a chain renewal is about to happen. The CID (chain ID) in the NMA header is still the ID of the current chain. During Step 1, alternatively DSMs (digitally signed messages) for the KROOT of the current chain and for the KROOT of the next chain are transmitted. These DSM-KROOT messages contain the KROOT and an ECDSA signature that allows receivers to authenticate the transmitted KROOT against a public key. The goal of transmitting the two KROOTs alternatively is to allow receivers that are just powered on without a valid KROOT to obtain the KROOT for the current chain, while also allowing all receivers that are powered on to obtain the KROOT for the next chain and to store it so that it can be used immediately when the chain change happens (but we will see some pitfalls below).
-