Posts in learning
SPLED meets Arduino Uno
- 03 October 2025
For our Software Product Line Engineering (SPLE) training we use the SPLED repository, which is a simple software product line for controlling an LED with different variants:
Disco: the LED blinks and one can change the blinking frequency
What you did not want to know about your code
- 26 September 2025
As any other engineer, I also like to hack around in the weekends at six o’clock in the morning when the family is still asleep. This time I wanted to play around with the new Matter smart home connectivity standard and add some temperature and humidity sensors to my smart home setup.
I bought some esp32-h2
development boards (they support WiFi, Thread and BLE), some SHT31-D
sensors and started the old fashioned read the docs to get started.
I must say the espressif docs are well written and the community is very active.

Why unit tests crashed on windows but worked on the microcontroller
- 24 September 2025
When writing cross-platform code, it’s easy to forget that pointers don’t always have the same size. This caused a segmentation fault in one of our unit tests.
On the Aurix MCU, pointers are 32-bit.
In the code a pointer (memory address) was stored in a uint32_t
variable.
That worked fine on the target.
Making Unit Tests Visible in Visual Studio Code with CTest and GoogleTest
- 05 February 2025
Many C/C++ projects rely on CMake, GoogleTest (GTest), and GoogleMock (GMock) for unit testing. Sometimes developers want to see and run/debug these tests directly in their IDE.
In this blog post, I will show how to make the unit tests visible in Visual Studio Code (VS Code) using CTest and GoogleTest. I will start by explaining the standard way to build and run the tests with CMake. Then we will see how CTest can help us discover the tests and how to display them in the VS Code interface.

Allocate Code and Data to Specific Memory Sections
- 07 January 2025
There was a question in our support channel about the memory sections from an external library.
The colleague was trying to understand how the different sections were defined for the library and how they were placed in memory.
When checking the linker configuration file (*.lsl
) the observation was that the memory sections for:
all the objects for our code, the section pattern was .<type>.<filename>.<symbol>
. For example, select .text.component.main
or select .data.component.my_var
.
Optimizing Tool Installation in SPL Build Environments
- 26 October 2024
I assume that the reader is familiar with the concept of software product lines (SPLs) and build environments. If not, as this is a blog post about optimizing tool installation in SPL build environments, I recommend you read up on these topics first.
In software product line (SPL) engineering, efficiently managing tool dependencies is essential for optimizing build environments and enhancing developer productivity. This blog post explores the thought process in addressing the challenge of optimizing tool installations in an SPL. We’ll walk through the problem statement, initial ideas, the evolution of those ideas, and the final approach.
Efficiently Embedding Git Information in C Projects
- 01 October 2024
In software development, embedding Git metadata (like commit IDs, branches, and tags) into your binaries is useful for debugging and traceability. However, how you integrate this information can significantly impact your build times and workflow efficiency. This post explores the challenges of embedding Git information in C projects using CMake and proposes an optimized solution.
In the first project, Git information is passed directly as compiler command-line arguments using add_compile_options
in CMake: