systemd in embedded use: cutting units and dependencies properly, optimising boot time instead of ordering, supervising services with the watchdog, keeping the journal off the flash, and running a read-only root filesystem.
Git in long-lived embedded projects: branches per hardware revision, handling vendor BSPs, binaries and toolchains, reproducible states through tags and manifests – and why a readable history only proves its worth years later.
Before you write a kernel driver: which devices can be driven cleanly from user space, when a kernel driver becomes unavoidable, how a platform driver is structured, and which mistakes cost the most time during bring-up.
From power-on to first frame: how to measure an embedded Linux device's boot time credibly and find the levers in bootloader, kernel and user space that actually save seconds.
How the Qt Virtual Keyboard gets into an embedded HMI: input method integration, layouts and languages, matching your own design – and the licensing question to settle first.
How Qt draws straight to the graphics hardware with EGLFS – backends, KMS configuration, input devices, and the failure patterns that help at the first black screen.
Determinism, not speed: how PREEMPT_RT makes Linux real-time capable, how to measure latency credibly with cyclictest, and which system and application mistakes undo every bit of tuning.
How the device tree really works in embedded Linux projects: compatible matching, pinctrl and clocks, overlays for hardware variants, and the debugging recipes that narrow down bring-up problems.
How to make a Qt 5 to Qt 6 migration predictable in embedded projects: qmake to CMake, Qt5Compat, the new RHI-based graphics stack, and the sequence that keeps risk low.
How the EU Cyber Resilience Act raises the bar for connected embedded Linux devices — and why secure, signed OTA updates are the backbone of compliance.