lunedì, ottobre 21, 2019

Presentazioni mortali



Di molte presentazioni si può dire che "fanno morire dalla noia", ma ce ne è stata una che ha, quasi letteralmente, ucciso sette persone. Stiamo parlando della missione NASA STS-107 del gennaio 2003. Al decollo, un pezzo del materiale di isolamento dello Space Shuttle Columbia si staccò e, a una velocità di quasi 29mila km/h, urtò contro l'ala sinistra, proprio nella parte che doveva servire a proteggere il veicolo spaziale dalle alte temperature dovute all'attrito con l'atmosfera nella fase di rientro.

Era difficile stimare il danno provocato dall'urto, ma in una riunione tra ufficiali della NASA e tecnici della Boeing venne mostrata, in una presentazione, una diapositiva che illustrava i potenziali rischi.



La diapositiva aveva però alcuni gravi problemi di impostazione:
  • titolo grande e fuorviante
  • elenco puntato con diversi livelli, da cui si poteva dedurre scarsa importanza delle informazioni di livello più basso
  • grande quantità di testo
  • termini diversi per indicare la stessa cosa
  • termini vaghi e soggetti a interpretazione personale
  • l'informazione più rilevante (le condizioni di volo dello Shuttle erano ben diverse da quelle provate in laboratorio) era messa in coda a tutte le altre
La conseguenza fu tragica: i rischi furono sottovalutati e non fu organizzata nessuna attività che avrebbe potuto evitare il disastro del rientro.

La vicenda è ben raccontata da Jamie Thomas nel suo blog, che a sua volta rimanda all'analisi completa svolta da Edward Tufte.

domenica, luglio 14, 2019

Epoch e il primo passo dell'uomo sulla luna

Epoch è il nome convenzionalmente attribuito all'istante da cui molti sistemi informatici (in pratica, tutti quelli basati o ispirati a UNIX) iniziano a conteggiare il passare del tempo. La data scelta è il primo gennaio 1970 e ad essere conteggiati sono i secondi.

Quando interrogate il sistema per sapere quando è stato modificato un file l'ultima volta, ad esempio con

$ stat -c '%x' testfile 
2019-07-14 09:33:04.977645058 +0200

quello che ottenete in realtà è solo la rappresentazione in formato "umano" del numero memorizzato internamente nel filesystem.

$ stat -c '%X' testfile 
1563089584

Un tempo per la memorizzazione di questo valore si utilizzava una variabile a 32 bit senza segno. Per questo motivo, ancora oggi, la pagina man di stat non indica come ottenere una precisione maggiore. Adesso i bit a disposizione sono molti di più, e consentono la memorizzazione fino al livello dei nanosecondi:

$ stat -c '%.X' testfile 
1563089584,977645058

È interessante notare che nelle primissime versioni di Unix era stato scelto di utilizzare i numeri interi non per contare i secondi, ma i sessantesimi di secondo (questo perché ci si basava su oscilloscopi a 60 Hz). Si era nel 1971, e con 32 bit si potevano in questo modo rappresentare solo 828 giorni e mezzo circa, per cui fu deciso all'epoca (scusate il bisticcio di parole) di impostare epoch al 1 gennaio 1971. Solo successivamente fu cambiata l'impostazione e si passò alla memorizzazione dei secondi utilizzando il 1 gennaio 1970 come riferimento di base.

Capisco i motivi pratici della scelta, ma pensate a quanto sarebbe bello, ancora oggi, se fosse stato scelto come riferimento il primo passo dell'uomo sulla Luna, avvenuto pochi mesi (14.159.025 secondi, per la precisione) prima, alle 2:56:15 UTC del 21 luglio 1969.

$ date -d '@-14159025'
lun 21 lug 1969, 04.56.15, CEST


$ date -u -d '@-14159025'
lun 21 lug 1969, 02.56.15, UTC