No, questo Paese non può funzionare (così)

Foto di Viktor Talashuk su Unsplash

Foto di Viktor Talashuk su Unsplash

English version available here

Lunedì scorso mi sono recato in ospedale per una visita di controllo, pianificata e prenotata da mesi direttamente dal medico che mi aveva visitato precedentemente. Tutto bene, la visita finisce in pochi minuti. Il medico compila a mano un foglio, aggancia l'impegnativa, scrive alcuni appunti (crocette su una griglia) sulla prestazione erogata.

“Bene, con questo foglio può recarsi al CIP (Centro interno di prenotazione, da non confondersi col CUP, Centro unico di prenotazione) per farsi fare il foglio per il pagamento”. Vado dunque in questo ufficio. Una macchina che distribuisce i numeri (ma nessuno in coda), due addetti pronti ad accogliermi. Consegno il foglio, inseriscono i dati, gettano via il foglio precedentemente compilato dal medico, stampano dei fogli, me ne consegnano uno e tengono gli altri per loro. “Adesso può andare a pagare, ma poiché le hanno prescritto anche un'altra prestazione, deve andare al CUP a prenotarla. Dall'altra parte dell'ospedale.

Vado dall'altra parte dell'ospedale a prenotare. L'ospedale è grande, ci metto circa dieci minuti. Non c'era nessuno in coda. Altri fogli ritirati, altri stampati. “Posso pagare qui?”. “No, deve andare al totem automatico, ma quello vicino è guasto. Provi in giro, ce ne sono vari”.

Per farla breve, a fronte di una visita di dieci minuti, ho girato due sportelli e ho dovuto cercare un totem per pagare. Dieci minuti di visita, oltre mezz'ora di burocrazia.

Perché il medico non ha potuto fare subito il foglio per il pagamento - come invece avviene quando si effettuano visite in ospedale, ma in libera professione? Perché tenere aperti due uffici (vuoti), due macchine per i numeri, riscaldamento, computer, stampanti, ecc. (e relative manutenzioni) per una procedura burocratica del genere? Perché non unire CIP e CUP, al massimo aggiungendo uno sportello al secondo, visto che ce ne sono molti chiusi in una stanza decisamente sovradimensionata?

Sono queste le domande che, quotidianamente, molti di noi si pongono quando hanno a che fare con la gestione pubblica.

Manca qualsiasi tipo di ottimizzazione. Ogni volta che si parla di semplificazione, di dematerializzazione, di riforma, io tremo. Perché so che per farlo verranno create commissioni e pool di esperti (a caro prezzo), spesso composte da persone abituate a gestire la burocrazia delle procedure, non il vero e proprio funzionamento del servizio. Persone abituate a inventare e approvare passaggi e archiviazioni di fogli. Cosa ci sia poi dietro quei fogli è puramente secondario.

C'è distanza abissale tra chi definisce le procedure, chi muove le carte e il vero e proprio funzionamento di un servizio pubblico. E chi decide non ha spesso la minima idea di cosa accada davvero nel “mondo reale”.

È necessario un cambiamento radicale nella gestione della burocrazia e dei servizi pubblici. Occorre eliminare gli ostacoli inutili, ridurre la quantità di passaggi e snellire le procedure. Ma come fare? La soluzione potrebbe essere coinvolgere direttamente coloro che lavorano sul campo e che conoscono la realtà quotidiana dei servizi. Solo con il loro contributo e la loro esperienza sarà possibile individuare le inefficienze e lavorare per migliorare il sistema. Anche, e in special modo, gli stessi addetti dei servizi pubblici. Quelli che fanno poi il lavoro, non quelli che lo decidono "dall'alto".

È giunto il momento di mettere in discussione i vecchi metodi e di trovare soluzioni innovative per rendere il nostro Paese più efficiente e funzionale. Per fare ciò, è indispensabile una maggiore collaborazione tra le diverse parti coinvolte e la volontà di ascoltare e imparare da chi vive quotidianamente le difficoltà del sistema pubblico.

La burocrazia non deve essere un ostacolo, ma uno strumento per migliorare la qualità dei servizi offerti ai cittadini. Per raggiungere questo obiettivo, dobbiamo essere pronti a cambiare e a mettere in discussione le vecchie abitudini. Solo così potremo trasformare il nostro Paese e renderlo un luogo in cui la pubblica amministrazione funzioni al meglio, per il bene di tutti.

Persone, non numeri

Foto di Robin Worrall su Unsplash

Foto di Robin Worrall su Unsplash

English version here

All'inizio dell'era dei social media, le interazioni avvenivano principalmente tra persone che si conoscevano già nella "vita reale". Ci si comportava con gentilezza e si cercava di mantenere un rapporto simile a quello che si aveva di persona, sapendo che dall'altra parte c'era un individuo reale, appartenente al mondo reale.

Con l'evoluzione dei social media, le persone hanno iniziato a connettersi con sconosciuti, accomunati solo dall'utilizzo della stessa piattaforma o dagli stessi interessi. Questo fenomeno esisteva già in sistemi pre-social come FidoNet e Usenet, ma era limitato principalmente agli esperti del settore.

Oggi, per molti, i contatti sui social media sono diventati numeri stampati su uno schermo, meri simboli del nostro successo sociale, della nostra popolarità mediatica e dell'interesse che le nostre idee o azioni suscitano.

In questo processo, spesso dimentichiamo che dietro a ogni numero (escludendo i bot) c'è una persona con le sue sfide, qualità e difetti - una persona come noi.

Dobbiamo impegnarci a non ridurre gli altri a semplici numeri su uno schermo e a ricordare che ognuno di noi porta con sé un insieme di problemi, preoccupazioni, gioie e dolori.

I social media sono strumenti di comunicazione tra persone; dobbiamo ricordarci di trattarci come tali.

L'urgenza della transizione a IPV6

English version here

IPv6 (Internet Protocol version 6) è la versione più recente del protocollo di comunicazione che gestisce il traffico Internet. La sua principale differenza rispetto alla versione precedente, IPv4, è l'uso di un indirizzo IP a 128 bit, rispetto ai 32 bit di IPv4. Ciò significa che IPv6 può supportare un numero molto maggiore di indirizzi IP rispetto a IPv4, che si è dimostrato insufficiente per soddisfare la crescente domanda di connessione a Internet. Inoltre, IPv6 include anche nuove funzionalità di sicurezza e di gestione del traffico che non erano presenti in IPv4. Tuttavia, la transizione da IPv4 a IPv6 è stata lenta e graduale a causa della compatibilità con il vecchio protocollo e della necessità di aggiornare l'infrastruttura di rete esistente.

Da oltre 20 anni, l'adozione di IPv6 è un tema caldo nel mondo delle reti. Pur essendoci una crescita costante, siamo ancora ben lontani dal supporto completo di questa nuova generazione di indirizzi IP. L'IPv6 promette maggiore efficienza, scalabilità e sicurezza, ma la sua adozione è frenata da una serie di sfide e resistenze.

Una delle principali difficoltà nell'adozione dell'IPv6 è il cambiamento, almeno in parte, della concezione della rete. Questo richiede una comprensione più approfondita delle dinamiche di funzionamento, ma una volta compreso il meccanismo, risulta più logico e pratico di IPv4.

Inoltre, l'IPv6 mette in discussione le certezze di molti "tecnici" che per anni hanno considerato il NAT come una protezione per la rete locale (non lo è). La sicurezza della LAN non è garantita dal semplice fatto di "essere dietro NAT". Molti "tecnici" disabilitano l'IPv6 come prima operazione perché ritengono che possa causare solo problemi, mentre in realtà ciò che manca è una conoscenza adeguata della gestione dell'IPv6.

Nel frattempo, gli indirizzi IPv4 sono ormai esauriti e i pochi disponibili sul mercato vengono venduti a prezzi elevati. Anche provider come Hetzner e OVH hanno aumentato i loro prezzi per gli indirizzi IP, influenzando le dinamiche di gestione. L'IPv6, invece, è più efficiente e adatto al moderno mondo interconnesso, offrendo una quantità pressoché illimitata di indirizzi.

Tuttavia, l'IPv6 introduce nuove problematiche, come la raggiungibilità diretta di tutti i dispositivi attraverso il routing diretto (senza NAT), rendendo il firewall ancor più importante nella gestione della sicurezza di rete. È necessario comprendere meglio le dinamiche delle reti e sottoreti e, dato il numero di cifre degli indirizzi IPv6, è quasi impossibile ricordarli a memoria.

Oggi, tutti i miei dispositivi sono connessi tramite IPv6. Quando non dispongo di supporto diretto (come nelle connessioni mobili), utilizzo un tunnel Hurricane Electric o, se impossibile (a causa della mancanza di un IPv4 pubblico), una connessione WireGuard verso un VPS esterno in grado di fare Nat66. Ho creato un ULA per permettermi comunque il collegamento diretto ad indirizzi pubblici IPv6.

Purtroppo, molti gestori non comprendono ancora appieno il funzionamento di IPv6 e la quantità di indirizzi disponibili. Assegnando "solo" una /64, limitano le possibilità di utilizzo, mentre una /48 o una /56 permetterebbero la creazione di numerosissime /64, facilitando l'utilizzo dello SLAAC per i dispositivi collegati. Probabilmente, i gestori temono di ripetere gli errori commessi con l'IPv4, quando venivano assegnate grandi quantità di indirizzi, portando poi alla scarsità attuale. Fortunatamente, l'IPv6 dispone di un numero così elevato di indirizzi che non dovremmo preoccuparci di problemi simili, nemmeno in caso di spreco massiccio.

Per accelerare l'adozione dell'IPv6 e trarre vantaggio dai suoi benefici, dobbiamo spingere affinché venga implementato in maniera capillare e il più rapidamente possibile. È fondamentale imparare ad utilizzarlo correttamente e abbandonare i vecchi criteri (spesso errati) legati alle limitazioni tecniche di IPv4. In questo modo, la qualità delle reti migliorerà, l'ottimizzazione sarà più efficace e tutti ne beneficeremo.

È dunque essenziale superare le resistenze e le paure associate all'IPv6, formare adeguatamente i tecnici e aggiornarsi costantemente sulle novità. Solo così potremo garantire un futuro più efficiente, sicuro e sostenibile per le nostre reti e i dispositivi connessi.

No, in informatica il “si deve fare così” non dovrebbe esistere

Photo by Eric Prouzet on UnsplashPhoto by Eric Prouzet on Unsplash

English version available here

L’esperienza insegna, l’esperienza forma. Probabilmente, se sei giovane, starai pensando “ok, boomer” e sarai pronto a chiudere questo articolo, passando oltre. Se sei meno giovane, invece, potresti pensare che sia il solito articolo “rivoluzionario”, contro il sistema e contro le big corporation.

Non è così.

Circa 20 anni fa tutti gli utenti di sistemi operativi alternativi (ovvero non Windows) venivano visti come degli alieni in quanto “tutto il mondo usa Windows”. Si sognava “l’anno della svolta di Linux (o FreeBSD) su Desktop, argomento su cui si scherza ancora oggi. Di fatto questi sistemi operativi sono arrivati davvero ovunque (sotto forma di Android, Smart Home, Playstation, in parte MacOS, ecc.), in maniera ovviamente diversa rispetto a come avremmo sognato.

Già allora mi adiravo e rispondevo “per quale ragione dovrei usare Windows? Solo perché lo usano tutti?”. La risposta, di solito, era questa: “Nel mondo reale e lavorativo tutti usano Windows”.

Per quanto in un certo senso potessero avere una parte di ragione, non mi sembrava un motivo valido per costringermi ad usare un sistema operativo inadatto o, quantomeno, meno efficace per il mio lavoro.

Il tempo mi ha dato ragione. Internet ha visto prevalere i server basati su sistemi Unix o Unix-like, i datacenter sono diventati principalmente basati su Linux (grazie, Amazon, per aver spinto ancora di più questo trend!), è nato il concetto di “cloud” e tutto ciò che ne deriva. Router e firewall hanno iniziato ad essere basati su Linux o sistemi *BSD e lo sviluppo è andato avanti non più solo sul mantenere in piedi un packet filter ma sulle funzionalità aggiuntive che oggi abbiamo a disposizione.

I big player sono entrati in gioco, Microsoft stessa ha iniziato ad amare Linux, FreeBSD e, con il WSL, ha definitivamente dimostrato che non si può ignorare “l’altro”.

Ad oggi, dire di essere un sistemista Linux genera ammirazione e rispetto, mentre meno di venti anni fa mi sentivo rispondere “Linux è un giocattolo che si usa nelle università, il mondo utilizza Windows”. Essere sistemisti esperti in sistemi *BSD, invece, genera ancora strani pensieri nell’interlocutore.

L’esperienza mi ha dunque insegnato che non esiste (e non deve esistere!) un solo modo di fare le cose. Nel mondo dell’Open Source, poi, la pluralità di soluzioni agevola uno sviluppo diversificato e che potrebbe, nel tempo, riservare sorprese.

Pochi giorni fa ho pubblicato un articolo su come ho effettuato una migrazione da un server Proxmox a FreeBSD senza particolari problemi e migliorando l’efficienza del sistema. L’articolo ha avuto un successo inaspettato, ha ricevuto in pochi giorni un enorme numero di visite e i commenti sono stati entusiastici. Qualche commento critico, ovviamente, è giunto. Amo i commenti critici in quanto a volte è fondamentale vedere le cose da un altro punto di vista. Quando sono davvero convinto, resto comunque della mia idea mentre se il commento critico dovesse riuscire a suscitare un dubbio, avrei lo spunto di indagare ancor di più. Di fare ricerca. Di sperimentare, che è poi alla base del nostro mestiere.

Ecco perché non ho mai simpatizzato con chi, con arroganza (e l’arroganza, spesso, è sinonimo di ignoranza), chiude a qualunque soluzione che non sia la propria favorita.

Dovremmo ormai aver imparato che quello tecnologico è un mondo pressoché infinito, fatto di strumenti (ovvero mattoni) con cui costruire una soluzione al nostro problema. Vedere persone adulte o anziane arroccate su posizioni chiuse e rigorose è triste, ancor più triste è vedere persone giovani (magari anche competenti) che chiudono le porte a tutto ciò che non sia la soluzione “hype” del momento, magari spinta proprio da tanto marketing di chi, su quelle soluzioni, ha investito molti soldi. Dire “siamo nel 2023 e tutti usano Kubernetes sul cloud, su cluster gestiti”, ad esempio, vuol dire ignorare che non tutti gli strumenti sono adatti per risolvere tutti i problemi. Non utilizzo una bilancia industriale per pesarmi in quanto sarebbe troppo grande o troppo costosa o comunque inadatta allo scopo. Non tutti, dunque, dovrebbero utilizzare bilance industriali per pesarsi.

Lo studio del problema dovrebbe sempre essere il primo passo verso la ricerca degli strumenti più adatti alla soluzione dello stesso. Per fortuna non esiste “una taglia unica”, in informatica. Così come non sempre lo strumento più “moderno e in voga” sarà quello più adatto e longevo sul lungo periodo.

L'abbondanza di risorse hardware: una maledizione per l'ottimizzazione dei software?

English version here

"Il server è pieno, aggiungi spazio!"

Anche se ci sono decine di giga di log inutili. Anche se ci sono decine di giga di roba inutile, lasciata sul server solo per inerzia.

Le recenti innovazioni nel campo delle risorse hardware hanno generato dispositivi con prestazioni sempre più elevate, capacità di memoria superiore e consumi energetici ridotti. Questa tendenza ha permesso lo sviluppo di applicazioni e servizi che fino a poco tempo fa erano impensabili. Tuttavia, un lato oscuro di questo progresso riguarda il peggioramento dell'ottimizzazione del software.

L'ottimizzazione non è più una priorità

Il progresso tecnologico ha portato ad un contesto in cui l'hardware potente e accessibile è diventato la norma. Di conseguenza, gli sviluppatori non sentono più l'urgenza di ottimizzare il loro software. In passato, quando le risorse erano limitate, l'ottimizzazione era una necessità per garantire il corretto funzionamento delle applicazioni e per evitare sprechi di risorse. Oggi, invece, gli sviluppatori tendono a concentrarsi su altre priorità, come l'implementazione di nuove funzionalità o il miglioramento dell'esperienza utente. L'ottimizzazione non conta più. La soluzione, per loro, è sempre ricorrere ad hardware più potente.

Il peggioramento dell'ottimizzazione del software ha diverse conseguenze negative:

  1. Consumo energetico: Applicazioni non ottimizzate consumano più energia rispetto a quelle ottimizzate, contribuendo ad un impatto ambientale maggiore. La crescente preoccupazione per il cambiamento climatico rende questa questione particolarmente rilevante.
  2. Spreco di risorse: Quando gli sviluppatori trascurano l'ottimizzazione, le applicazioni utilizzano risorse hardware in modo inefficiente, sprecando spazio su disco, memoria e potenza di calcolo. Questo spreco si traduce in costi maggiori per gli utenti, che potrebbero essere costretti ad aggiornare il loro hardware più spesso del necessario.
  3. Prestazioni ridotte: Applicazioni non ottimizzate possono causare lentezza, lag e crash, compromettendo l'esperienza utente e la produttività. Inoltre, l'hardware meno recente potrebbe non essere in grado di eseguire correttamente questi programmi, limitando l'accesso ad una porzione di utenti.
  4. Sicurezza e stabilità: Un software non ottimizzato potrebbe presentare falle di sicurezza o bug, esponendo gli utenti a potenziali rischi. Inoltre, le applicazioni instabili possono causare la perdita di dati o compromettere l'integrità del sistema.
  5. Manutenzione e aggiornamenti: La mancata ottimizzazione rende più difficile e costoso mantenere e aggiornare il software, poiché gli sviluppatori devono affrontare un codice più complesso e disorganizzato. Ciò può portare a ritardi nel rilascio di patch e nuove funzionalità.

Per invertire questa tendenza e garantire un futuro più sostenibile ed efficiente per il settore del software, è fondamentale che gli sviluppatori riconoscano l'importanza dell'ottimizzazione. Di seguito alcuni passi che possono essere intrapresi per promuovere un cambiamento positivo:

  • Formazione ed educazione: Insegnare ai programmatori l'importanza dell'ottimizzazione e fornire loro strumenti e tecniche per implementarla sin dall'inizio del processo di sviluppo. Spesso diventa difficile, specialmente per noi sistemisti "adulti", spiegare a chi non è abituato ai limiti fisici dell'hardware ma crede che il cloud sia "a risorse infinite, basta pagare di più". Dobbiamo però farlo, altrimenti saremo poi noi a dover rispondere quando il server sarà lento o, peggio, pieno.
  • Standardizzazione e buone pratiche: Promuovere l'adozione di standard e buone pratiche che guidino gli sviluppatori verso un approccio più efficiente nella creazione del software.
  • Benchmark e metriche: Utilizzare strumenti e metriche per valutare l'efficienza del software e confrontarlo con soluzioni concorrenti, incoraggiando così un continuo miglioramento delle prestazioni.
  • Incentivi e riconoscimenti: Creare premi o incentivi per le aziende e gli sviluppatori che si impegnano a produrre software ottimizzato, riconoscendo pubblicamente i loro sforzi.

L'abbondanza di risorse hardware e a basso costo (almeno in apparenza) ha portato ad un peggioramento dell'ottimizzazione del software, poiché gli sviluppatori non la considerano più una priorità. Tuttavia, è possibile invertire questa tendenza attraverso la formazione, l'adozione di buone pratiche e la promozione di un approccio più sostenibile ed efficiente allo sviluppo del software. Solo così potremo sfruttare appieno le potenzialità offerte dall'innovazione tecnologica, garantendo al contempo un impatto positivo sull'ambiente e sull'esperienza utente.