Welcome to the 38 issue of TMPDIR Weekly, a newsletter covering Embedded Linux, IoT systems, and technology in general. Please pass it on to anyone else you think might be interested and send any tips or feedback to our forum or firstname.lastname@example.org.
The TMPDIR forum now has chat functionality. Check it out!
2022.07 and 2022.08 releases of Yoe came along after some slowdown due to summer holidays and travel. This release has updated Go compiler to 1.19 release and GCC to 12.2 which brings critical bugfixes. There was a boot time regression where rng-tools was taking a long time, but this has been also fixed in 2022.08 release. Systemd 253.4 upgrade regresses when built with clang -- a workaround of using Os instead of O2 optlevel fixes the issue and has been added to 2022.08.
Glibc 2.36 upgrade
Glibc 2.36 upgrade is part of 2022.08 release as well. This initiated several
fixes where kernel UAPI
linux/mount.h started to conflict with
This problem showed up in obscure places where
linux/mount.h was being brought
in indirectly via other kernel UAPIs. This was
and later on there has been patches to Glibc to solve the situation.
Using poky with Yoe
Yoe has switched to using Poky to provide core metadata and Bitbake now. This should improve working closely with the Yocto community and CI integration with Yocto autobuilder. The change is transparent to users and should not cause any changes that users need to make.
We're currently working on switching the SIOT store to SQLite. We're also rolling a number of other architecture changes into this release that should greatly improve the experience of writing new SIOT clients.
Use simple storage and wire data structures
We tend to create too many types which can cause our application to become brittle and inflexible. Types stored on disk (database) are important, but as soon as you go distributed and have communication between systems, types sent over the wire are even more critical. Changing types is no longer a simple DB migration, but now you have to coordinate multiple systems if a data-type sent over the wire changes. Each additional type is a liability – it requires special logic to handle, communicate, store, query, etc. Getting to the correct data structures is one of the hard parts of programming and it sometimes takes a few iterations. If things are getting simpler (at least for your users) as you go along, that is usually a good sign.
Here is an example of the process in the Pocketbase community.
Thoughts? Discuss here.
Trunk Based Development is a good resource for optimizing your Git workflow. This happens to be pretty much how we do things on most projects. An important concept is to make changes on the main branch and cherry-pick them if needed to release branches -- not the other way around.
Several good articles with thoughts about product business models:
Quote for the week
Smart people don't always know everything but often don't realize it. Effective people acknowledge what they don't know and connect with those who do.
Thanks for reading!
Khem and Cliff