Alessio Biancalana Grab The Blaster di Alessio Biancalana

2022, eccoci qua

È stato un anno particolare. Finisco a dirlo tutti gli anni, per un motivo o per l’altro, e se da un lato mi ci impegno è anche vero che nell’ultimo paio di post di questo tipo c’era una pandemia a rafforzare il concetto. Tuttavia, nonostante la particolarità diffusa di un anno vissuto ancora sotto il giogo del COVID da parte un po’ di tutti, posso dire che comunque ho trovato il modo di vivere quest’anno al massimo. Purtroppo questo a tratti ha significato mettere un po’ da parte il blog perché semplicemente ero indirizzato altrove. Vorrei che non fosse così, ma la realtà dei fatti è che in questo momento ho meno carburante di quello che vorrei.

È stato un anno in cui, come Andrea, ho scritto meno, e uno dei motivi è che ho letto di più: ho ricominciato a leggere voracemente e con passione, dal fantasy ai manuali tecnici. Ricominciando a leggere in questo modo, insieme a Agnese abbiamo deciso di farci un regalo: cominciare un corso di scrittura creativa, partendo dalle basi, cui poi ha fatto seguito un corso di scrittura avanzata. Ho riscoperto qualcosa su di me all’età di 31 anni, e vi auguro di entrare nel 2022 con questo, la consapevolezza che non importa l’età anagrafica o quanto siate radicati nella situazione attuale: c’è sempre spazio di manovra per nuove avventure.

E parlando di nuove avventure, il secondo motivo per cui quest’anno ho scritto meno è che ho cambiato due lavori: dal comfort di Hootsuite all’esperienza dolceamara di Prima.it, alla grandezza della sfida che mi si è posta con SUSE. Mai più di quest’anno mi è stato chiaro che per scollinare al livello successivo a volte è necessario sparigliare tutte le carte, anche nei modi più impensati. Dice come ti trovi dopo quattro mesi? È presto per dirlo, ma non è nemmeno mai tardi per esporsi troppo: mi sto divertendo tantissimo.

Tornando al leggere di più, è stato un anno in cui mi sono reso conto delle mie mancanze in termini di letteratura tecnica: ho trovato il modo di finire The Pragmatic Programmer, rileggere manuali e storie già passati sotto ai miei occhi a cui non avevo dato la giusta importanza, e perché no, anche qualche bella storia di prodotto, come The Upstarts o Chaos Monkeys (che è più un’autobiografia, ma non ci formalizziamo).

È stato un anno in cui ho smesso di scrivere perché ero soverchiato da chi intorno a me scopriva la penna per la prima volta, reale o virtuale che sia: siamo stati inondati di blog travestiti da newsletter di dubbio gusto, di podcast fatti col microfonaccio, di così tanta informazione frivola a costo zero che ci siamo dimenticati che faccia abbia uno scritto di qualità. E ho imparato da qualcuno molto vicino a me che quando sei circondato da un branco di persone che urlano, la migliore strategia di fuga è il silenzio.

È stato un anno in cui ho scritto poco perché, scusate se è poco, io e Agnese abbiamo comprato la nostra prima casa, e ogni giorno viverci dentro è una sensazione che non credevo di poter provare mai nella vita. Da quando Casa Blaster non è più un posto in affitto, devo ammettere di sentirmi meglio, non riguardo le mie finanze, più riguardo il fatto di avere un posto dove stare, no matter what.

È stato un anno in cui ho scritto di meno, perché a un certo punto ho deciso che forse va bene così, che alla fine prendersi un attimo di respiro ci stava, in modo da tornare con nuovi spunti nèrdici in seguito. Probabilmente sentirete ancora parlare di Elixir (non mollo), ma anche di Rust e di TypeScript.

Buon inizio di 2022 a tutti, amici miei :-)

Happy family

Ho comprato un portatile nuovo, ovvero come ho configurato Arch Linux sul mio Thinkpad X1 Extreme

Il mio MacBook 13 ormai anche per i compiti più banali risultava un po’ lento e bolso, quindi avevo iniziato ad accarezzare da tempo l’idea di cambiare non solo portatile, ma anche direttamente sistema operativo. Visto che l’esperienza del ritorno a Linux è stata più che proficua (e non ho nemmeno raccontato tutto quello che c’è stato nel frattempo) ormai Mac OS era lontanissimo dall’uso anche più banale che potessi fare di un computer1, quindi ho deciso di fare una scelta altrettando costosa (forse?) ma diametralmente opposta rispetto a quello che i Mac sono adesso, almeno fino a quest’ultima generazione.

Dato che avevo avuto un Thinkpad T14 aziendale con cui mi ero trovato da dio, e dato che SUSE mi ha equipaggiato con una workstation serie P che sta veramente facendo il suo, mi sono voluto concedere un altro Thinkpad per allargare la collezione, per soddisfare il mio ego nerdico e semplicemente perché ne volevo uno personale che non pesasse tantissimo.

Facendo qualche compromesso ho trovato su eBay un Thinkpad X1 Extreme di prima generazione, messo all’asta in maniera praticamente fallimentare, tant’è che me lo sono portato a casa per niente, soprattutto considerati i 64GB di RAM che si porta in pancia. Il consiglio di prendere un usato in buono stato su eBay l’ho mutuato da un video di Riccardo Palombo, che ringrazio per la dritta indiretta.

Il setup è veramente impressionante, 64 giga di RAM a parte (che comunque mi serviranno ere geologiche per saturare, nonché svariate macchine virtuali), lo schermo 4K è una goduria, così come tutto il comparto costruttivo della macchina e la CPU a 4GHz e 3, purtroppo Intel. Il trackpad, venendo da anni di Macbook, non è niente di che ma almeno supporta lo scrolling col doppio dito e due differenti tipi di click (destro e sinistro); per tutto il resto in realtà se giochiamo un po’ con la configurazione del sistema operativo possiamo fare anche di meglio.

Dico così perché in realtà rispetto al mio post di tantissimo tempo fa (ormai) sono passato ad una configurazione con i3 come window manager sul mio fisso. Questo permette tantissima flessibilità, specie per gli utenti più smaliziati. Workspace programmabili, shortcut per ogni gusto, il tiling che - devo dire - per un ossessivo compulsivo è “never go back”. E infatti.

Purtroppo i3 però litiga un po’ con i display ad alta risoluzione, quindi con qualche pacca in più sono riuscito ad approntare un setup con Sway come gestore di finestre e Wayland come server grafico. Il motivo è che in questo modo non ho bisogno di configurare il fattore di scaling per le applicazioni, ma ci pensa direttamente Sway configurando il fractional scaling direttamente a livello di server grafico.

Il risultato

Alla fine della fiera il risultato di un paio di giorni di deep dive (tra cui la lettura di pezzi di codice di Sway, poi leggerete perché) è il seguente:

Arch Linux 4k

Arch Linux 4k - floating mode

  • Sistema operativo: Arch Linux (ancora una volta con systemd-boot come bootloader)
  • Login manager: SDDM
  • Window manager: Sway
  • Statusbar: Waybar
  • Terminale: Kitty
  • Demone per le notifiche: Mako
  • Hotkey daemon aggiuntivo: Hawck

Bestemmie varie ed eventuali, ma soprattutto sonore

Due cose mi stanno facendo impazzire di questo laptop:

  • Nel mio viaggio ho incontrato un bug di Sway: il resume dalla sospensione ha qualche imperfezione per cui si incastra il riconoscimento degli input, che si traduce in un più pratico “niente tastiera”. Mi sono promesso di aprire una issue direttamente sul repo di Sway, ma per il momento mi sono scritto una unit systemd che post-sleep fa il restart del demone per gli hotkey che sto usando. Siccome Hawck poi cattura tutti i metodi di input a un livello molto basso, funziona. Non funziona sempre sempre, ma quanto basta per non farmi uscire di testa e per rientrare nei miei criteri di affidabilità.
  • La tastiera ha veramente qualcosa che non va, nel senso che performa molto bene ma il precedente proprietario ha pensato bene di farci qualche rituale satanico per cui ha ricoperto i tasti con dei, boh, sovratasti?2 Fatto sta che la retroilluminazione perde la metà dell’efficacia per via delle nuove lettere che si vanno a sovrapporre a quelle trasparenti soffocando la luce. Probabilmente cambierò la tastiera presto, anche perché mi sembra che la spacebar faccia un po’ fatica.

Escluse queste due piccolezze, in realtà questo è davvero il laptop migliore che abbia mai avuto, sufficientemente bello da poterlo portare in giro come un pezzo d’orgoglio nerd e sufficientemente robusto in termini di specifiche da poterci lavorare dappertutto senza dovermi preoccupare di niente. La batteria non è particolarmente durevole, ma non mi aspettavo altro da un laptop costruito per le performance scevre da qualsiasi compromesso.

E devo dire che, per ora, questo Thinkpad mantiene ogni promessa.

  1. Per una serie di ragioni, la più banale - e sembrerà una cosa da poser, lo so - è che non riesco più a usare un computer che non sia dotato di un tiling window manager, perché ho mappato nella mia testa quei concetti così tanto e così a fondo che non me ne riesco più a liberare. Lo so che per Mac OS esiste Yabai, ma a quel punto che senso ha limitarsi con una macchina Mac OS quando hai la potenza a portata di dito? 

  2. Per cambiare la mappatura della tastiera da una nordic a una roba che sembra US international ma in realtà non lo è. Veramente la cosa peggiore che si possa fare alla tastiera di un Thinkpad. 

SUSE Week #2

SUSE 25th birthday cake

Devo dire che nemmeno io mi aspettavo una reazione del genere da me stesso, ma a due settimane e spicci dalla mia assunzione in SUSE mi sento come uno scolaretto delle medie che esce con quelli del liceo - e devo ammettere che ho non poca difficoltà a commentare questi primi giorni senza scadere nel “sono due settimane e tutto va bene” da una parte, e nel “ommioddio mi hanno regalato un sogno” dall’altra. :-D

Recinti per dinosauri

Non so se è vero gergo informatico, ma da piccolo lessi un bellissimo thriller di Jeffery Deaver intitolato Profondo Blu, in cui ricorreva l’espressione “recinto per dinosauri” che stava a identificare grosse sale piene di mainframe e di server. Questa cosa mi è rimasta impressa a fuoco nel cervello fino a oggi, e devo dire che pur lavorando in larga parte con il cloud o comunque in SSH e quindi non vedendo tanta di questa infrastruttura fisica di persona, lavorare a contatto con dei cluster SAP dà molto l’idea di quel tipo di computing.

Un cluster SAP ha dei requisiti hardware immensi, specialmente in termini di memoria, e se c’è qualcosa di più assurdo e alieno del leggere la documentazione di SAP è sicuramente leggere la nostra documentazione su come far scalare orizzontalmente e verticalmente le istanze. Sarà bizzarro e retrogrado, ma è un mondo nuovo e mi eccita. Sono fatto così.

The real job

In larga parte il mio lavoro consiste nel contribuire a Trento, che è una web application deputata a essere un pannello di controllo omnicomprensivo di nuova generazione per gli operatori SAP. È una sfida diversa da tutte quelle che ho incontrato sinora, innanzi tutto perché non è un software as a service e quindi ha problematiche leggermente diverse, dato che non valgono tutte le solite premesse quando si parla di temi come l’observability (principalmente perché l’infrastruttura dove viene deployato il prodotto non è la tua, quindi non sai niente di cosa ci sia dall’altra parte).

Il progetto è fresco e pieno di sfide, oltre che open source, quindi se avete qualcosa da dirci chiaramente qualsiasi pull request è benvenuta!

Pezzi di storia

Chiaramente per una persona come me, costantemente affascinata dalla storia dell’open source, entrare in un’azienda che ha l’open source nel DNA è un’esperienza estremamente particolare. A tutto ciò aggiungiamoci anche che sono entrato proprio a ridosso del ventinovesimo compleanno di SUSE, e la frittata è fatta :-)

In vari luoghi come Slack o le mailing list interne (di cui alcune piene di nomi giganti dell’open e di contenuti da infarto) hanno cominciato a piovere pezzi di storia come le prime mail dove veniva menzionata la distribuzione che annoverava tra le sue principali caratteristiche il supporto alla traduzione tedesca in tutto il sistema, oppure foto delle varie torte commemorative tra cui quella del venticinquennale a forma di server, che potete vedere in copertina.

Insomma, chiaramente so di sembrare un idiota che si piscia addosso per cose come queste, ma devo dire che è la prima volta che mi capita di essere così dentro uno dei pilastri di Linux per lavoro.

Questo anche per dire che chiaramente di aggiornamenti del genere ve ne beccherete altri, mi dispiace :-D

Hello, SUSE!

SUSE Logo

Quando ero piccolo mi capitava spesso che mi chiedessero che mestiere volessi fare da grande, banalmente perché è una domanda che si fa ai bambini. Non penso che valga la pena di riportare su queste pagine la tracotanza smodata delle mie ambizioni di cinquenne, ma in questi giorni ho ripensato a un’altra occasione di questo tipo molto più recente. Avevo all’incirca sedici anni, e stavo parlando con mio padre in maniera più concreta di quali fossero le mie inclinazioni: mi ricordo che proprio qualche ora prima avevo finito di aggiornare una pagina wiki di qualche software che stavo usando, e gli dissi “guarda papà, se fosse possibile io vorrei lavorare con queste aziende che fanno tutta ‘sta roba di Linux”.

Fast-forward a quasi quindici anni dopo: vedo che SUSE sta aprendo una carrellata di posizioni in Europa piuttosto interessanti, specialmente una in linea con le mie abilità attuali, e mi candido più per gioco che per altro.

Ho iniziato a fare i colloqui senza una reale aspettativa, sapevo che il clima del team e del portfolio erano buoni, avevo un amico che era stato assunto da poco in una posizione simile1, quindi non posso dire di essermi candidato col più vivo dei sentimenti. Il mio morale era a dire il vero piuttosto basso, per tutta una serie di motivi.

Quello che poi è successo però è che ho avuto una chiamata di primo contatto, poi altre call per i colloqui veri e propri, e ogni passo aggiungeva un po’ di fregola e di emozione perché mi sembrava un po’ impossibile. Ad oggi, invece, posso dirlo fieramente.

Il primo settembre ho iniziato il mio viaggio con SUSE come Senior Software Engineer, Web Development, ed è una grossissima emozione per me che in questi giorni mi sento come un bambino in un negozio di caramelle. Probabilmente è stupido da parte mia, me ne rendo conto, ma avendo utilizzato Linux per metà della mia vita e avendone sempre appoggiato soprattutto gli aspetti filosofici chiaramente non posso negare che tutto questo per me abbia un peso enorme.

Avendo già scritto cinque pallosi paragrafi su quanto sia felice di tutto questo, l’unica cosa che posso dire è che non vedo l’ora di “have a lot of fun” :-)

  1. al quale devo un immenso ringraziamento perché in verità mi ha consentito di passare da lui come referral: grazie Fabrizio

Recensione: Domain Modeling Made Functional, di Scott Wlaschin

Domain Modeling Made Functional

Ed eccoci qui con una nuova recensione: in questo periodo oltre a ripassare le basi ho deciso di rendere leggermente più formale la mia preparazione in termini di functional programming, specialmente nei termini di quella zona grigia che è il punto di contatto tra il mondo accademico, come viene tradotta una dimostrazione in codice (che è davvero dove un linguaggio fortemente espressivo dà il suo meglio) e il mondo del business, in particolare delle applicazioni web, dove questi principi di design possono aiutare a far crescere una codebase nella maniera più pulita possibile - soprattutto guardando al codice attraverso la lente del tempo.

Domain Modeling Made Functional viene in nostro soccorso proprio per assisterci durante alcune scelte all’inizio di un nuovo progetto, dotandoci di un po’ di disciplina, insegnandoci un po’ di Domain-Driven Design, e mostrandoci senza troppi giri di parole come il DDD viene espresso al suo meglio attraverso la programmazione funzionale.

Grossomodo il discorso viene portato avanti attraverso vari punti, primo tra cui il type system di un linguaggio funzionale. Nel libro viene usato F#, personalmente ho trovato che tantissimi esempi si adattassero al modo che il manuale e il compilatore di Rust consigliano di trattare il codice, specialmente nella gestione dei side-effect (usando i Result). Dalla descrizione del type system viene poi srotolata un po’ di roba utile, come il fatto di usare le firme delle funzioni non tanto come rete di sicurezza a compile-time quanto come una buona documentazione mantenuta in tempo reale di come funziona il dominio.

A quel punto, avendo un dominio descritto in maniera type-driven e le cui funzioni utilizzano una raccolta di tipi ben definita, si passa ai side effect: validazione, parsing, gestione degli errori attraverso il imodello two-track1, chiamata di API esterne, persistenza.

Tutto questo senza minimamente menzionare2 monadi, funtori, applicativi, o altra roba arcana che il lettore non avrebbe nemmeno la forza di approfondire; il vero valore di questo volume è tenere un approccio estremamente semplice, abbandonando i concetti accademici fuori dalla porta e concentrandosi esclusivamente sui benefici di un approccio di questo tipo, risultando in questo modo un super-pregevole distillato di buonissime pratiche che scorre estremamente veloce nella lettura e soprattutto nell’apprendimento.

Un grazie speciale va a Emanuele De Cupis, che me l’ha consigliato.

Se lo volete comprare, questa è la pagina del libro sulla Pragmatic Bookshelf: non c’è modo migliore di spendere i vostri soldi, e potete stare sicuri del fatto che sia un consiglio sincero perché non ci rimedio una lira :-)

  1. Non sapete cosa sia il modello two-track? Non sapevo neanche io che si chiamasse così, ma se fate JavaScript di mestiere e usate le promise è quello che succede se avete una serie di .then() concatenati e alla fine di tutto un .catch() che gestisce l’errore avvenuto in qualsiasi punto della catena. 

  2. Effettivamente viene fatto una volta sola. Un buon portale per chi è alle prime armi e vuole approfondire anche quegli aspetti più matematici legati a quel tipo di strutture dati. 

Member of

Previous Random Next