Blog

Technical articles on engineering, research, and leadership.

What I learned getting A/B OTA updates working on real hardware with RAUC and systemd-boot. Covers EFI boot entry failures, custom bootloader handlers, per-slot kernels, atomic ESP writes, and automatic rollback.

YoctoRAUCOTA UpdatesEmbedded LinuxSystemd-BootA/B Updates

What I learned applying CIS Benchmark controls to an embedded Linux device. Covers kernel hardening, SSH configuration, firewall rules, AppArmor, filesystem restrictions, and CVE management — which controls were worth it and which were not.

Embedded LinuxSecurityCIS BenchmarksLinux HardeningAppArmorYocto

Notes from figuring out containerized Yocto builds with KAS. Covers the YAML layering model, commit pinning, sstate-cache economics, and the failures I ran into when builds stopped working.

YoctoKASDockerBitBakeEmbedded LinuxBuild Systems

A running log of Yocto build failures I hit while learning embedded Linux. Each entry: what the error looked like, what caused it, how I fixed it, and what I'd do differently next time.

YoctoBitBakeEmbedded LinuxDebuggingBuild Systems

Twelve lessons from maintaining a Playwright end-to-end test suite against a live production SaaS. This article distills what a team learns over time about auth infrastructure, content-based waiting, locator discipline, page object boundaries, CI whitelisting, trace debugging, and the economics of E2E test coverage.

E2E TestingPlaywrightCI/CDTest ArchitectureQuality Assurance