/blog · technical notes

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.

21/21 ENTRIES · 2024-2026 Subscribe via RSS · /feed.xml ↗
2026-07-06
CAN Protocol: How a CAN Network Really Works, from Physical Signals to Diagnostics

A practical guide to CAN networks: physical signals, arbitration, frames, timing, DBC decoding, diagnostics, CAN FD, CAN XL, and security.

34 min
2026-07-03
Bluetooth Low Energy on ESP32: operation, GATT, security, privacy, and real-world parameters

A practical guide to BLE on ESP32: roles, advertising, GATT, MTU, throughput, security, privacy, and real-world configuration parameters.

36 min
2026-06-27
Scope guard in C++

How to use RAII to keep rollback close to the state it protects.

4 min
2026-06-23
non_null in C++

How to distinguish a mandatory pointer from an optional value directly in a function signature.

4 min
2026-06-19
overloaded in C++

Use several lambdas as one visitor to make std::visit easier to read.

4 min
2026-06-15
unique_resource in C++

Apply RAII to handles that are not pointers.

5 min
2025-07-18
C++23 Strong Type

An introduction to strong types in C++, starting from an easy mistake to make.

3 min
2024-09-11
C++20 Ranges and Views

An example of how C++20 ranges and views make collection algorithms easier to read.

4 min
2024-08-25
C++20 Concepts

An introduction to C++20 concepts: what they are, when they help and how to use them without making the code heavier.

4 min
2024-08-01
openSUSE Tumbleweed review

My experience with openSUSE Tumbleweed: rolling releases, KDE, stability and a few everyday trade-offs.

6 min
2024-07-13
Auto-updates straight from the source

How I use Obtainium to update open-source Android apps directly from their official sources.

5 min
2024-06-29
Migrating to open-source apps on your phone

After moving to GrapheneOS, I started replacing my main apps with more privacy-respecting alternatives.

5 min
2024-06-07
GrapheneOS: my favorite smartphone operating system

After months of daily use, GrapheneOS became my favorite smartphone operating system.

6 min
2024-05-20
Kill switch for wg-quick and nftables

How I moved kill-switch rules from iptables to nftables inside a wg-quick configuration.

1 min
2024-05-10
iptables vs nftables

Why nftables makes firewall rules easier to organize than separate iptables and ip6tables configurations.

2 min
2024-04-24
Header guards vs pragma once

A comparison between header guards and pragma once, with benefits and limits of both options.

4 min
2024-04-15
Undoing the last Git commit

The difference between git revert and git reset when you need to undo the last commit.

1 min
2024-04-09
How to check a package version on GNU/Linux

A quick way to check an installed package version without running the binary directly.

1 min
2024-04-01
Signals and Slots

Starting from Qt's signal/slot model, I build a small modern C++ implementation.

4 min
2024-03-28
How to structure a C++ project

A tidy C++ project structure with separate libraries and applications, and a build that is easier to follow.

6 min
2024-03-26
Prelude

The first note on the site: why I decided to start writing publicly.

1 min