/blog · appunti tecnici

Appunti tecnici su software, sistemi, strumenti e tutto ciò che trovo utile.

Scrivo di C++, Linux, Android, strumenti open source, sviluppo software, sistemi embedded e altro. I contenuti sono scritti in .org o .md e trasformati in HTML statico durante la build.

29/29 ARTICOLI · 2026-2026 Iscriviti via RSS · /feed.xml ↗
2026-07-27
USB host o caricatore? VBUS, enumerazione e routing nei dispositivi embedded

Come distinguere un host USB da un caricatore usando VBUS, enumerazione, TinyUSB e una policy probe-then-commit.

40 min
2026-07-14
Che cos'è OpenGL davvero?

Chiarimento su OpenGL come API e specifica, non come motore grafico o GPU, con contesto, stato, driver, GLSL, buffer, VAO e draw call.

29 min
2026-07-07
Punti, linee, triangoli e mesh

Introduzione a punti, linee, triangoli, vertici, indici, mesh, winding order e primitive OpenGL nella grafica rasterizzata.

29 min
2026-06-30
Pixel, colori e immagini digitali

Guida introduttiva a pixel, risoluzione, canali RGB, alpha, profondità in bit, texture e framebuffer in OpenGL.

24 min
2026-06-23
Che cos’è la computer graphics?

Introduzione alla computer graphics: come dati, rendering, pipeline, CPU, GPU e OpenGL diventano immagini digitali.

19 min
2026-06-16
CRC: funzionamento, utilizzi e limiti

Guida pratica al CRC: che cos'è, come funziona, perché rileva gli errori accidentali, dove viene usato e quali aspetti considerare quando si progetta un protocollo.

20 min
2026-06-09
Come funzionano le chiamate RPC: dal software distribuito alla comunicazione tra PC e microcontrollore

Guida pratica alle chiamate RPC tra PC e microcontrollore: contratto, serializzazione, framing, CRC, USB, UART, timeout, versionamento e debug.

30 min
2026-06-02
MAX77972: charger, fuel gauge e debugging sul campo

Guida pratica al MAX77972: buck charger, ModelGauge m5, USB-C, AICL, THM, inizializzazione, SOC errato, debug e workaround firmware.

30 min
2026-05-26
Protocollo CAN: come funziona davvero una rete CAN, dai segnali fisici alla diagnostica

Guida pratica al protocollo CAN: segnali fisici, arbitraggio, frame, timing, DBC, diagnostica, CAN FD, CAN XL e sicurezza.

37 min
2026-05-19
Bluetooth Low Energy su ESP32: GATT, sicurezza, privacy e parametri di progetto

Guida pratica al BLE su ESP32: ruoli, advertising, GATT, MTU, throughput, sicurezza, privacy e parametri di configurazione.

40 min
2026-05-12
Scope guard in C++

Usare RAII per tenere il rollback vicino allo stato da proteggere.

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

Distinguere un puntatore obbligatorio da un valore opzionale già nella firma di una funzione.

4 min
2026-04-28
overloaded in C++

Usare più lambda come un unico visitor per rendere std::visit più leggibile.

4 min
2026-04-21
unique_resource in C++: RAII per handle e risorse non rappresentate da puntatori

Applicare RAII a file descriptor, socket e handle con ownership esclusiva.

6 min
2026-04-14
Strong type in C++23: rendere esplicita la semantica

Usare tipi distinti per trasformare errori di dominio in errori di compilazione.

5 min
2026-04-07
C++20 Ranges and Views

Un esempio per vedere come ranges e views di C++20 rendono più leggibili gli algoritmi sulle collezioni.

4 min
2026-03-31
C++20 Concepts

Una spiegazione dei concept di C++20: cosa sono, quando servono e come usarli senza appesantire il codice.

4 min
2026-03-24
Recensione di openSUSE Tumbleweed

La mia esperienza con openSUSE Tumbleweed tra rolling release, KDE, stabilità e piccoli compromessi quotidiani.

6 min
2026-03-17
Aggiornamenti automatici direttamente dalla fonte

Come uso Obtainium per aggiornare app Android open source direttamente dalle fonti ufficiali.

5 min
2026-03-10
Migrare verso applicazioni open source su smartphone

Dopo il passaggio a GrapheneOS ho iniziato a sostituire le app principali con alternative più rispettose della privacy.

5 min
2026-03-03
GrapheneOS, il mio sistema operativo per smartphone preferito

Dopo mesi di utilizzo quotidiano, GrapheneOS è diventato il mio sistema operativo preferito per smartphone.

6 min
2026-02-24
Kill switch per wg-quick e nftables

Come ho portato le regole di kill switch da iptables a nftables dentro una configurazione wg-quick.

1 min
2026-02-17
iptables vs nftables

Perché nftables rende più ordinata la gestione delle regole firewall rispetto a iptables e ip6tables.

2 min
2026-02-10
Header guards vs pragma once

Confronto tra header guards e pragma once, con vantaggi e limiti di entrambe le soluzioni.

4 min
2026-02-03
Annullare l'ultimo commit Git

Differenze tra git revert e git reset quando bisogna annullare l'ultimo commit.

1 min
2026-01-27
Come verificare la versione di un pacchetto su GNU/Linux

Un modo rapido per controllare la versione di un pacchetto installato senza eseguire direttamente il binario.

1 min
2026-01-20
Signals and Slots

Partendo dal modello signal/slot di Qt, costruisco una piccola implementazione moderna in C++.

4 min
2026-01-13
Come strutturare un progetto C++

Una struttura C++ ordinata, con librerie e applicazioni separate e una build più semplice da seguire.

6 min
2026-01-06
Preludio

Il primo appunto del sito: perché ho deciso di iniziare a scrivere pubblicamente.

1 min