/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.

25/25 ENTRIES · 2024-2026 Subscribe via RSS · /feed.xml ↗
2026-07-20
Why I Chose External Collaboration Over Full-Time Employment

Why working as an external collaborator lets me stay close to projects, make a useful contribution, and create lasting value.

2 min
2026-07-19
CRC: How It Works, Where It Is Used, and Its Limitations

A practical guide to CRC: what it is, how it works, why it detects accidental errors, where it is used, and what to consider when designing a protocol.

20 min
2026-07-17
How RPC Calls Work: From Distributed Software to PC-MCU Communication

A practical guide to RPC calls between PCs and microcontrollers: contracts, serialization, framing, CRC, USB, UART, timeouts, versioning, and debugging.

30 min
2026-07-15
MAX77972: charger, fuel gauge, and field debugging

A practical MAX77972 guide: buck charger, ModelGauge m5, USB-C, AICL, THM, initialization, wrong SOC, debugging, and firmware workarounds.

30 min
2026-07-13
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.

38 min
2026-07-12
Bluetooth Low Energy on ESP32: GATT, security, privacy, and design parameters

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

40 min
2026-07-10
Scope Guard in C++

Using RAII to keep rollback close to the state it protects.

5 min
2026-07-07
non_null in C++

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

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

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

4 min
2026-07-04
unique_resource in C++: RAII for Handles and Non-Pointer Resources

Applying RAII to file descriptors, sockets, and handles with exclusive ownership.

6 min
2026-07-03
Strong Types in C++23: Making Domain Meaning Explicit

Using distinct types to turn domain mistakes into compile-time errors.

5 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