Articoli per settembre 2020

Alla terza settimana

Uno dei miei principi durante la ricerca del nuovo posto di lavoro, questa primavera, è stato quello di trovare una ditta dove avrei voluto restare per un periodo più lungo. Una durata imprecisa, ma superiore all'anno-e-mezzo per cui ho sopportato gli ultimi due lavori. Tre settimane in una ditta non sono di certo abbastanza a misurarne lati positivi e negativi, ma farò questa dichiarazione ottimista: il nuovo lavoro mi sembra un posto in cui vorrò restare per parecchio tempo. Persino dopo che mi hanno rifilato un Mac.

Il primo motivo che mi spinge ad una simile profezia è il fatto che ci siano più di cento sviluppatori, divisi in numerosi gruppi. Se anche mi stufassi della mia posizione corrente, potrei spostarmi internamente: front-end, infrastruttura, software interno, supporto dello sviluppo, supporto del supporto! Ci sono gruppi specializzati in ogni area, invece di spingere singole persone a coprirle tutte, spesso malamente. Approvo l'idea di lavorare su una cosa alla volta, sicuri di avere le spalle coperte per quanto riguarda il resto del sistema.

L'altra ragione, una cosa che mi ha sorpreso in queste primi giorni, è il chiaro ed evidente interesse nello sviluppare gli sviluppatori. Come in altri posti, ci sono numerose risorse disponibili: libri, corsi, gruppi di interesse. Ma qua c'è anche tempo dedicato e struttura. Dietro c'è la consapevolezza che uno sviluppatore felice ed interessato è più efficiente, ed è meno probabile che se ne voglia andare. E la felicità non è [solo] il calcetto in cucina, ma anche imparare cose nuove, trovarsi in buona compagnia, non essere stressati. Tre settimane sono poche, ripeto, ma gli indizi sono chiari.

Il Mac però richiede pazienza, e milioni di settaggi e programmini per farlo funzionare in modo accettabile. Serve un programma per ridimensionare le finestre, uno per controllare il volume degli altoparlanti nello schermo, uno per passare da una finestra all'altra, uno per la rotella del mouse. C'è voluta un'ora, due software, ed un sito per creare un file di configurazione con cui ho ingrandito i caratteri sullo schermo esterno, altrimenti microscopici. VSCode funziona, Vim funziona, Tmux funziona, Docker funziona. Ma da questo elenco è chiaro che non c'è nulla di utile su un Mac per uno sviluppatore, che non si possa avere su Linux o Windows, con meno soldi e meno dolore.

Il Tesoro del Bigatto

Giuseppe Pederiali, 1980

Non so quanto Il Tesoro del Bigatto sia stato famoso, quando io ero piccino piccino. A quanto pare abbastanza per meritare, decenni più avanti, una seconda edizione. Uno di questi nuovi volumi è finito sullo scaffale di me, che ignoravo persino l'esistenza di Giuseppe Pederiali.

Ho scoperto a posteriori che il libro è uno dei primi fantasy italiani. È parte (centrale) di una trilogia di racconti incentrati su una Pianura Padana in cui, nell'anno mille, abbondano creature fantastiche. Il territorio attorno al Po, attorno alle misteriose paludi della Bassa, è suddiviso in feudi frattali, e persino Brescello ha un re ed una piccola flotta. Cavalieri inseguono draghi nei boschi—o viceversa?—ma c'è un filo di incertezza se qualcosa sia solo suggestione.

Il santo bagnò il dito indice nell'acqua. Poi se lo leccò.
— Dolce?
— Insipido.
— Allora è il Po.

La storia segue il viaggio di Sant'Anselmo verso l'Adriatico, in missione segreta per conto del Papa. Lungo il tragitto si accompagna a personaggi svariati, inclusi mendicanti, maghi, e topi molto istruiti. È un susseguirsi di stranezze, side-quest, e versioni fantastiche di luoghi dell'Emilia e dintorni.

È un libro breve e leggero, che scorre veloce senza perdersi in grandi costruzioni, o descrizioni. Ma ogni pagina ha trovato un modo di farmi sorridere, e pensare al grande fiume che ogni tanto ho attraversato su un ponte. È facile immaginare gli argini più bassi, l'acqua placida che riempie le risaie, ed i campi. E nella nebbia, chissà cosa si nasconde.

Se passando in libreria capitate davanti al volumetto, ed avete spazio nella vostra vista per un originale libro fantasy, portatevelo a casa.

Backup e tranquillità

Sin da un drammatico giorno nel 2006, quando ho perso un hard disc per colpa di un adattatore difettoso, il mio livello di attenzione ai backup è superiore alla media. I miei dati casalinghi vivono su almeno tre dischi: File History prende snapshot ogni tre ore, ed un piccolo NAS li archivia in mirroring. Nulla di inaffondabile, ma abbastanza da farmi sentire tranquillo.

Settimana scorsa, ho raggiunto una situazione accettabile per un'altra classe di dati: quelli sparsi su server vari: VPS, FTP, database. Dati che cambiano senza che tocchi i file direttamente, come le foto o i testi che carico su questo sito. Dati di cui ho sempre fatto saltuarie copie manuali, ma con gli ultimi accorgimenti ho automatizzato il tutto.

Rclone

Diversi host permettono l'accesso solo via FTP. Scaricare file via FTP non è difficile. Per l'occasione uso Rclone, che fornisce un'interfaccia uniforme per copiare file da e verso una marea di protocolli e servizi. Fra le varie cose, l'ho configurato per accedere al server di Minecraft e fare una copia del mondo:

rclone sync shockbyte:/ var/minecraft/server --exclude logs

Con sync il saggio strumento copia solo i file modificati, un'opzione essenziale con un mondo sempre più grande.

Chiavi SSH per un singolo comando

Ho un database su un host che mi mette a disposizione sia SSH che Cron, quindi posso spedire backup del database da un server all'altro. Per minimizzare i permessi, uso una feature abbastanza oscura di OpenSSH: le chiavi limitate ad un singolo comando. È un effetto che si ottiene aggiungendo un prefisso alle chiavi private in authorized_keys:

command="~/bin/backup-db.sh",no-pty ecdsa-sha2-nistp521 AAAA...

L'host del database si collega al server per il backup, e l'unica cosa che gli è permesso fare è eseguire lo script indicato nella configurazione. La colla è una pipe.

mysqldump --all-databases | ssh -i ~/.ssh/backup-key backup-server

Restic

Una volta che ho tutti i file in un solo posto, è il momento di salvarne una versione. Per questo uso Restic, uno strumento per backup crittati ed incrementali: salva solo i dati che cambiano, ma tiene traccia di molteplici snapshot. L'ho configurato per tenere le due versioni più recenti, più altre per la settimana, il mese, e gli anni precedenti. Prima si inizializza una destinazione per i dati, poi basta una riga:

restic --repo $REPO backup tutti-i-dati/ --exclude tmp

Una volta salvato il backup, si possono ripristinare interi snapshot, singoli file, oppure—lusso spropositato—montare l'intero repository via FUSE, per esplorarlo nella maniera preferita.

$ restic --repo $REPO mount tmp/
[...]
$ ls tmp/snapshots -1
2020-09-20T07:15:01+02:00
2020-09-24T07:15:01+02:00
2020-09-25T07:15:01+02:00
latest

Backblaze B2

Dove finiscono tutte questi file? Lo spazio che ho scelto dopo una lunga investigazione è Backblaze B2. La ditta fornisce prodotti per backup online, ed è nota per le dettagliate statistiche sulla durata dei dischi che pubblica più volte all'anno. Il servizio è supportato sia da Rclone che Restic, ed il piano base offre 10GB di spazio a costo zero. Mi spiace per il loro business, ma dubito li riempirò a breve. Ma se anche dovesse succedere, sono comunque più economici di S3, e li preferisco ad Amazon. E se un giorno devo recuperare giga e giga di blocchi di Minecraft, sono pronti a spedirmi una chiavetta USB od un disco a casa.

Ho mischiato questi ingredienti con un paio di script, ed aggiunto un po' di crontab per tenere tutto assieme. Così durante la notte tutti i bit si muovo da soli, in file ben ordinate, e viaggiano da un server all'altro. Si duplicano ed archiviano, mentre io dormo sereno.