Blog

Articles about software engineering, agile practices, and modern development.

Making Releases a Non-Issue: Speeding Up Delivery for Embedded Devices

Making Releases a Non-Issue: Speeding Up Delivery for Embedded Devices

embeddedOTACI/CDagilesoftware-delivery
Encryption at Rest for a Raspberry Pi using Yocto

Encryption at Rest for a Raspberry Pi using Yocto

Implement LUKS encryption at rest on Raspberry Pi CM4 with yocto. Complete guide covering initramfs, cryptsetup, OTP keys, and self-provisioning setup.

secure-bootyoctoembedded-linux
Bringing Secure Boot to Embedded Linux with Yocto

Bringing Secure Boot to Embedded Linux with Yocto

Secure boot for an embedded Linux devices based on raspberry pi CM4 using the yocto project

secure-bootyoctoembedded-linux
Demystifying the Cyber Resilience Act: A pragmatic starting point

Demystifying the Cyber Resilience Act: A pragmatic starting point

A practical guide to the EU Cyber Resilience Act: key requirements, security-by-design, vulnerability management, incident response, SBOM & incremental compliance.

cyber-resilience-act
Cyber Resilience Act verstehen: Praktische Umsetzung statt Mythos

Cyber Resilience Act verstehen: Praktische Umsetzung statt Mythos

Praktischer Leitfaden zum EU Cyber Resilience Act: zentrale Anforderungen, Security-by-Design, Vulnerability Management, Incident Response, SBOM & inkrementelle Compliance.

cyber-resilience-act
std::expected in C++23: A Better Way to Handle Errors

std::expected in C++23: A Better Way to Handle Errors

Practical introduction to std::expected: intent-revealing, structured error handling for recoverable failure paths in modern C++.

cpp
Building a local AI agent with Llama.cpp and C++

Building a local AI agent with Llama.cpp and C++

Learn how to build a local AI agent using llama.cpp and C++. This article covers setting up your project with CMake, obtaining a suitable LLM model, and implementing basic model loading, prompt tokenization, and text generation. Ideal for those interested in running AI models on their own hardware without relying on cloud services.

cppaicmake
Faster build times with artifact based CI

Faster build times with artifact based CI

Artifact-based CI can optimize your CI/CD pipelines by reducing build times, improving reliability, and streamlining workflows. Discover strategies for efficient artifact storage, versioning, and retrieval, and explore best practices for implementing artifact-based continuous integration in modern software development.

devopsci/cd
The 7 CMake anti-patterns that eat your time and energy

The 7 CMake anti-patterns that eat your time and energy

CMake is powerful, but often blamed for bad build experiences. Most of the frustration, though, comes from avoidable mistakes. Here are 7 common CMake anti-patterns that waste your time - and how to fix them.

cmake
Optimize your code for reduced cost of change

Optimize your code for reduced cost of change

Software products might live for a long time. After the initial cost, the cost of change is the major cost driver. Optimizing your code for reduced cost of change is paramount.

software-deliveryagile
Using Conan as a CMake Dependency Provider

Using Conan as a CMake Dependency Provider

With the addition of dependency providers in CMake 3.24 using Conan to manage dependencies becomes easier and more integrated. This post shows a step-by-step guide on how to use Conan as a CMake dependency provider.

cmake
Preventive vs. Corrective Planning in Software Development: Striking the Balance

Preventive vs. Corrective Planning in Software Development: Striking the Balance

Striking the balance between preventive & corrective planning in software development is helps navigating critical decisions and uncertainties effectively.

software-deliveryagile
CMake line by line - Creating a library

CMake line by line - Creating a library

How to set up a library with CMake, including proper symbol visibility and installation

cmake
LLMs and AI make software development harder

LLMs and AI make software development harder

AI code assistants like copilot or chatgpt are a great help for developers, but they also make our job harder by stripping away the easy parts of our job.

ai
The four core powers for empowered agile teams

The four core powers for empowered agile teams

The term empowered teams is often used in the context of agile software development. But what does it mean? There are many variations of this but there is a definitive set of 'minimum powers' that a team needs to be able to be agile.

software-deliveryagile
Testing strategies for software that interacts with hardware

Testing strategies for software that interacts with hardware

Whenever software that interacts closely with hardware is developed, testing becomes more complicated. This article discusses some strategies to make testing easier and more effective.

software-testingcicdsoftware-delivery
Organizing CMake presets

Organizing CMake presets

CMake presets are a big help in how to configure CMake. This article shows how to set up and organize them.

cmake
CMake line by line - Building and Android APK with Qt5

CMake line by line - Building and Android APK with Qt5

A line by line explanation of how to build an Android APK with CMake for a Qt5/QML application using the Android NDK and SDK.

cmake
Bringing software quality into roadmaps

Bringing software quality into roadmaps

Bringing engineering and quality topics into a development roadmap for software can be tough, especially when the pressure to put out more and more features are high. Leveraging the ISO 25010 standard for software quality there are a few relatively simple methods to bring the topic to the table.

software-deliveryagile,software-quality
Writing "CMake Best Practices" - A writing journey

Writing "CMake Best Practices" - A writing journey

From August 2021 to May 2022 I spent quite some time writing the Book CMake Best Practices with Packt Publishing. This article contains a highly subjective and opinionated story of the writing journey.

cmake
The Mountain Mind - Mountain climbing and software development are the same

The Mountain Mind - Mountain climbing and software development are the same

Taking and assessing risks, commitment, and focus on the task play an important role when climbing as well as when writing software. A few thoughts on how being a successful mountaineer influences my work as a software engineer and what can be learned from being in the great outdoors.

agilesoftware-development
Reproducible build environments for C++ using docker and vscode

Reproducible build environments for C++ using docker and vscode

How to set up a build environment for building C++ applications with docker and visual studio codes remote container environment (devcontainer)

cppdockervscodecmakesoftware-delivery
kickstarting agile product development

kickstarting agile product development

Agile software development is the way to go when developing a project. But how does one get started with a project or a product? What is needed to get an initial backlog up and running and how much information should one collect to enable all people involved to act empowered?

agilesoftware-developmentsoftware-delivery
Why software engineering is different

Why software engineering is different

Why running software projects is different than other engineering disciplines from the MINT field and why agile software development is needed to leverage the full potential of software in a product.

software-developmentagile
Frequent vertical integration for the win

Frequent vertical integration for the win

How early and frequent vertical integration will increase the quality of embedded products and help projects running on schedule

software-deliverysoftware-qualitydevopscicd
Lean backlog handling

Lean backlog handling

software-deliveryagile
Agile software development in a regulatory environment

Agile software development in a regulatory environment

how to benefit from apply agile software development in a regulatory environment such as ISO 13485 or IEC 62304

regulatoryagilesoftware-developmentsoftware-delivery
CMake line by line - using a non-CMake library

CMake line by line - using a non-CMake library

how to use the find.cmake mechanism to include library into your CMake project, even if it is not built with CMake itself. By combining find_package with a custom .cmake file we can migrate any library to be usable with a CMake project.

cmake
Ditch the estimates and start forecasting

Ditch the estimates and start forecasting

agile
Robust code with design by contract

Robust code with design by contract

software-quality
The art of slicing stories

The art of slicing stories

agilesoftware-delivery
Making remote teamwork work

Making remote teamwork work

agilesoftware-development
7 factors for successful change

7 factors for successful change

teamworkchange-managementagile
Leading across the golden circle

Leading across the golden circle

leadershipteamworkmanagement
The joy of failure

The joy of failure

software-developmentagile
The currency of getting things done

The currency of getting things done

software-deliveryagile
CMake line by line - creating a header-only library

CMake line by line - creating a header-only library

cmake
On leadership debt

On leadership debt

leadershipmanagementteamworkagile
Scaled Single Sprint Scrum<sup>TM</sup>

Scaled Single Sprint Scrum<sup>TM</sup>

april-foolsagile
Help! I'm getting SAFed!

Help! I'm getting SAFed!

agile
A practical guide to tangible product visions

A practical guide to tangible product visions

agile
A commit a day keeps the boredom away

A commit a day keeps the boredom away

Decide to decide better

Decide to decide better

agileteamworkleadership
Chase the dopamine and get motivated

Chase the dopamine and get motivated

How to iterate fast when developing software and hardware together

How to iterate fast when developing software and hardware together

agilesoftware-delivery
Quick and easy unpacking in C++ with structured bindings

Quick and easy unpacking in C++ with structured bindings

cpp
Don't fear large scale agile frameworks

Don't fear large scale agile frameworks

agile
Better estimates by using applied linguistics

Better estimates by using applied linguistics

april-foolsagile
Do not leave your innovation to the engineers

Do not leave your innovation to the engineers

agileinnovationbusiness
Standard Attributes - CleanCode for C++17

Standard Attributes - CleanCode for C++17

cpp
initializers in selection statements - smarter coding in C++17

initializers in selection statements - smarter coding in C++17

cpp
Stop calling it agile

Stop calling it agile

agile
C++17 - What's in it?

C++17 - What's in it?

cpp
Planning ahead the agile way

Planning ahead the agile way

agilesoftware-deliveryproduct-management
Five and a half steps to efficient meetings

Five and a half steps to efficient meetings

The Seven Must Reads For The Aspiring Agilist

Get Professional - A professional skillset for software developers

Get Professional - A professional skillset for software developers

Don't fear large scale agile frameworks

Don't fear large scale agile frameworks

agile