Welcome to the 38th issue of TMPDIR, a weekly newsletter covering Embedded Linux, IoT systems, and technology in general. Subscribe to future issues at https://tinyletter.com/tmpdir and pass it on to anyone else you think might be interested. Please send any tips or feedback to info@tmpdir.org.

The TMPDIR forum now has chat functionality. Check it out!


Linux

Yoe Releases

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 sys/mount.h. This problem showed up in obscure places where linux/mount.h was being brought in indirectly via other kernel UAPIs. This was documented 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.


IoT

v0.4.3 release of Simple IoT is out with serial MCU client support (see also ref docs). We also added an origin field to the point type so we can track who made changes to a point.

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.


Other

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.


Join our Discourse forum to discuss these or new topics. Find past issues of TMPDIR here. Listen to previous podcasts at https://tmpdir.org/.

Thanks for reading!

Khem and Cliff