Annunci desueti

Durante il volo e previa approvazione del personale di volo, possono essere utilizzati [...] computer non collegati con stampanti o con lettori di compact disc.

Questo è uno stralcio dell’annuncio che gli assistenti di volo ripetono durante il rullaggio di ogni volo e che quasi nessuno ascolta, almeno sui voli di linea a breve raggio.

Ho un vago ricordo di stampanti a batteria da collegare ai computer portatili o integrate nei portatili stessi (sì, hanno fatto anche quelli). Ogni volta che sento quell’annuncio mi vedo un distinto tizio in giacca e cravatta che estrae dal taschino una stampante laser dipartimentale a colori e una risma di fogli A4 proprio come Larry Laffer riponeva il bicchierone di soda in Larry II. Credo che a bordo l’unica stampante che possano vedere i passeggeri (posto che ne esistano altre) sia quelle dei POS utilizzati dagli stessi assistenti di volo per tentare di vendervi mercanzia a prezzi imbarazzanti, ammesso che lo facciano ancora nei voli internazionali. I POS sono da considerare computer collegati a stampanti? MAH!

Altrettanto anacronistici sono i CD da collegare ai computer. Forse adesso sono tornati in voga assieme ai PC super compatti; anche il mio portatile DELL permette di utilizzare il lettore/masterizzatore sia connesso nell’apposita bay sia connesso via USB nel caso in cui voglia utilizare floppy e CD, ma e’ un’ipotesi remota, specialmente a trentamila piedi d’altezza.

In ogni modo, a scanso equivoci, eviterò di portare in cabina una stampante IBM a nastro con modulo continuo da 132 colonne, un AS/400 e un jukebox esterno da 128 CD.

Aggiornamento gennaio 2009: ho volato con la nuova Alitalia il giorno dopo la “fusione” e l’annuncio è cambiato. Non so se sia per effetto della nuova compagnia o per diverse disposizioni internazionali.

To update or not to update?

Windows Update, yum, WSUS… Il dilemma colpisce sempre il SysAdmin: aggiornare o non aggiornare?

Se non aggiorniamo, non introduciamo nuove variabili incognite nel sistema e continuiamo alla via così, navigando le acque sicure che nascondono però scogli molto insidiosi. Se aggiorniamo, rischiamo di trovarci davanti ad un sistema inattivo al primo reboot.

Va puntualizzato che il buon SysAdmin deve saper affrontare un disaster recovery senza problemi, quindi in caso di errori fatali conseguenti gli aggiornamenti si deve poter tornare alla situazione precedente senza traumi. Se poi stiamo utilizzando vmWare, il tutto si risolve in un paio di click e un reboot della macchina virtuale.

Certo, Redmond non ha una storia di aggiornamenti senza problemi, basti pensare ai service pack pari di Windows 2000 Server, alle conseguenze del Service Pack 2 di XP. Più fortunati sono i SysAdmin Linux (non quelli conservatori che utilizzano ostentatamente sistemi legacy) che possono contare su una maggior apertura delle informazioni.

È indubbio che una macchina non aggiornata collegata in LAN o a Internet sia un rischio non solamente per la macchina stessa, ma anche per tutta la rete, in quanto rappresenta un punto debole della catena. Moltissime macchine ridotte a zombie (ovvero controllate da malintenzionati per distribuire spam o attacchi informatici) subiscono questo triste destino perché non vengono aggiornate, con tanti ringraziamenti da parte dei malfattori. Va inoltre rilevato che molti attacchi (distribuiti o mirati) vanno a buon fine perché il SysAdmin ha avuto paura (o non ha avuto voglia) ad applicare un determinato aggiornamento, credendo erroneamente di trovarsi al sicuro.

Da quel che posso vedere, Microsft SQL Server e Exchange Server sono i software tendenzialmente meno aggiornati vuoi perché le procedure di disaster recovery di quei programmi sono assurdamente lunghe e inutilmente macchinose (grazie, Redmond!), vuoi perché gli aggiornamenti richiedono che il servizio venga disattivato e ultimamente sembra che anche la più piccola delle organizzazioni non riesca («possa» nel linguaggio della Terra degli Utenti) a stare senza posta elettronica per un paio d’ore. Lato client, invece, noto che moltissimi utenti (o SysAdmin) scelgono ti tenere Internet Explorer 6 e non passare alla versione successiva. In questo caso, ogni PC ha una serie di vunerabilità note a tutto il mondo, a cominciare dai malfattori: la zombizzazione di quei PC è solamente questione di tempo.

Quella di non aggiornare, a mio modesto modo di vedere, è una scelta miope che nel breve periodo aumenta la disponibilità apparente del servizio, ma nel medio-lungo periodo riduce notevolmente la stabilità del sistema e incrementa il rischio di fermi macchina prolungati e imprevisti causati da attacchi o da blocchi risolti da aggiornamenti usciti qualche mese prima.

L’aggiornamento va visto come il tagliando dell’automobile, consigliato dal buon senso e dal costruttore, la cui implementazione è lasciata alla discrezione e alla responsabilità dell’autista: probabilmente è una rottura restare per mezza giornata senza automobile, ma almeno sappiamo di poter affrontare la strada con il minimo delle probabilità di guasti.

Messaggi di errore

BSOD durante la cerimonia di apertura delle Olimpiadi (fonte: Gizmodo)Si dice che ogni programma non banale contenga almeno una variabile, una struttura di controllo e un baco. Si dice anche che per i programmi prodotti da una ben nota software house questa affermazione sia più vera che per altre software house.

Nei tempi eroici del Clipper ero membro di un gruppo di sviluppatori che lavorava per un progetto per la pubblica amministrazione. Lo sviluppatore leader del gruppo, da cui ho imparato moltissime cose, aveva creato anche una fantastica routine di gestione degli errori, molto informativa e utile per il programmatore che mostrava una bella schermata rossa con caratteri gialli al manifestarsi dell’errore. Questa funzione manda in visibilio lo sviluppatore perché si accorge all’istante dell’errore anche se è lontano dallo schermo e presenta a schermo una reportistica dettagliata. Tutto bene, finché l’applicativo non entra in contatto con quella particolare zona del Mondo degli Utenti nota come Anteprima Per Il Committente. Murphy, sempre all’erta, ci mette lo zampino e si manifesta un bug durante la demo. Fortunatamente la cosa si risolve con un’abile prestidigitazione sulla tastiera (il Committente manco si accorge di cosa sia successo), ma ci insegna una cosa: gli errori fatali non devono annunciare a oves, boves et universa pecora il fatto che ci sia un baco nel nostro software. Mai.

Peggio ancora quando la grafica della schermata di errore diventa nota tanto quanto il brand del software in oggetto. Ulteriormente peggio quando questa schermata è visibile nel momento culminante della cerimonia di apertura delle Olimpiadi.

Gli errori fatali (o exception, o abend o il nome scelto dalla piattaforma che preferite) non sono mai semplici da gestire perché sono situazioni in cui il processore e/o il sistema operativo si trovano in una condizione tale per cui è impossibile continuare e l’unica soluzione consiste nel riportare la macchina ad uno stato noto (reset, per gli amici). In queste situazioni il sistema operativo non si può permettere molti lussi, quindi bisogna eliminare ogni fronzolo, informare l’utente e dirgli con belle parole «Devi spegnere e riaccendere perché è successo un grosso casino. Ah! Se non hai salvato, hai perso quel che stavi facendo».

La chiosa di questo sproloquio è quindi: possibile che Redmond in 14 anni di commercializzazione del kernel di NT (e discendenti) non abbia pensato a qualcosa di meno riconoscibile per le schermate di errore fatale?

Aggiornamento 25/Set/2008: Technologizer ha pubblicato un articolo sui 13 più famosi messaggi di errore dei computer: vale la pena dare un’occhiata.

Algoritmi e curve temporali

Come programmatore sono sempre stato affascinato dagli algoritmi, specialmente se compatti ed eleganti

Ci sono, però, dei problemi per la cui soluzione non esistono algoritmi efficienti; di contro, per gli stessi problemi, se viene presentata una soluzione, questa è immediatamente e facilmente verificabile come corretta. Prendete, per esempio, una mappa con un sacco di isole e ponti: non esiste un algoritmo efficiente che tracci un percorso per visitare tutte le isole una sola volta, ma se vi viene presentata una soluzione, è facile capire se sia corretta. Un altro problema da un lato più teorico, ma con tremende ripercussioni pratiche è, dato un numero, capire se sia il prodotto di due numeri primi e di quali. Se quest’ultimo problema è semplice con numeri piccoli, non lo è, fortunatamente, per numeri molto grossi. Perché «fortunatamente»? Perché la gran parte di transazioni informatiche crittografate si basa su questo assunto. Se leggete che qualcuno ha trovato un algoritmo per fattorizzare rapidamente numeri di grandi dimensioni, iniziate a preoccuparvi davvero.

Charles Stross, uno dei miei autori di fantascienza preferiti, ha addirittura ipotizzato che la soluzione per via algoritmica di problemi NP-completi porterebbe rapidamente alla creazione di una singolarità tecnologica con conseguente fine della nostra civiltà. Robot 52 ha pubblicato il gustosissimo raccorto Anticorpi ambientato nell’universo della Lavanderia in cui Stross analizza, appunto, questa eventualità.

Per ora non è nemmeno stato dimostrato se esistano soluzioni algoritmiche ai problemi NP-completi. Secondo un articolo di Scott Aaronson pubblicato sull’ultimo numero di Le Scienze (a cui vi rimando per una trattazione più autorevole di questa), anche con i computer quantici non sarebbe possibile risolvere ogni tipo di problema, in particolar modo quelli NP-completi, per un mero fatto di leggi fisiche.

Meglio: di leggi fisiche attuali, perché sarebbe possibile realizzare un computer in grado di risolvere ogni tipo di problema (anche quelli ancora più complessi dei problemi NP-completi) usando leggi della fisica in contrasto con quelle attuali. Mi ha divertito abbastanza il concetto di computer che si basa sulle curve temporali chiuse (il nome scientifico dei viaggi arbitrari nel tempo): si tratta in pratica di un computer che risolve un problema in un tempo lungo a piacere che comunichi, però, la soluzione appena dopo che gli è stata sottoposta.

Forse un computer del genere non verrà mai realizzato, ma se lo fosse mi eviterebbe, finalmente, di sentire lamentele sulla lentezza di Windows. Il vantaggio sarebbe anche che la fine dell’Universo verrebbe prorogata indefinitivamente a causa del tempo necessario per far girare Windows.