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.
How to use RAII for local rollback, early exits and conditional cleanup.
How to distinguish a mandatory pointer from an optional value directly in a function signature.
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.
















