Technical notes on software, systems, tools and anything else I find useful.
I write about C++, Linux, Android, open-source tools, software development, embedded problems and more. Notes live in .org or .md and are transformed into static HTML during the build.
A practical guide to CAN networks: physical signals, arbitration, frames, timing, DBC decoding, diagnostics, CAN FD, CAN XL, and security.
A practical guide to BLE on ESP32: roles, advertising, GATT, MTU, throughput, security, privacy, and real-world configuration parameters.
How to use RAII to keep rollback close to the state it protects.
How to distinguish a mandatory pointer from an optional value directly in a function signature.
Use several lambdas as one visitor to make std::visit easier to read.
Apply RAII to handles that are not pointers.
An introduction to strong types in C++, starting from an easy mistake to make.
An example of how C++20 ranges and views make collection algorithms easier to read.
An introduction to C++20 concepts: what they are, when they help and how to use them without making the code heavier.
My experience with openSUSE Tumbleweed: rolling releases, KDE, stability and a few everyday trade-offs.
How I use Obtainium to update open-source Android apps directly from their official sources.
After moving to GrapheneOS, I started replacing my main apps with more privacy-respecting alternatives.
After months of daily use, GrapheneOS became my favorite smartphone operating system.
How I moved kill-switch rules from iptables to nftables inside a wg-quick configuration.
Why nftables makes firewall rules easier to organize than separate iptables and ip6tables configurations.
A comparison between header guards and pragma once, with benefits and limits of both options.
The difference between git revert and git reset when you need to undo the last commit.
A quick way to check an installed package version without running the binary directly.
Starting from Qt's signal/slot model, I build a small modern C++ implementation.
A tidy C++ project structure with separate libraries and applications, and a build that is easier to follow.
The first note on the site: why I decided to start writing publicly.




















