Technology Experience

VivendoByte.ByteAdventure

VivendoByte.ByteAdventure

[ByteAdventure] Un cellulare da 50.000 euro [2/4]

Prologo
Tania rientrò in camera sua qualche minuto dopo con le lacrime agli occhi. Nella testa gli rimbombava lontana la voce del protagonista poliziotto di quel film – Training Day – che parlava alla sua recluta:”Quando sei in servizio per la strada, inseguendo un criminale, lascia i sentimenti a casa tua, altrimenti finiranno per distruggerti!”. Non ce la faceva. La morte di Ronald l’aveva sconvolta più di quanto volesse ammettere. Aprì in fretta e furia la porta del suo appartamento, corse in camera e si buttò sul letto affondando la testa nel cuscino. E pianse. Pianse così forte che alla fine si sentì quasi incosciente e cadde in un lungo sonno tormentato.

Parte 1
Tania si risvegliò con tutti i muscoli indolenziti. Aprì gli occhi e cercò lentamente di stiracchiarsi. Era ancora l’alba. Fuori dalla finestra vedeva un sole miseramente pallido ed una leggera foschia sospesa a mezz’aria. Il tutto lasciava presagire una giornata nebbiosa. “Nebbiosa come la mia testa.” – pensò la ragazza intorpidita. Aveva dormito quasi dieci ore, ma lei avrebbe giurato di aver chiuso occhio solo per dieci minuti e non un secondo di più.

Teneva ancora in mano il Nokia raccolto sul luogo dell’esplosione. La sera prima non l’aveva guardato nemmeno un secondo – era troppo agitata e sconvolta. Non che adesso ne avesse granchè voglia. Si chiedeva chi avrebbe voluto vedere Ronald morto, e soprattutto il perchè. Si rigirò più volte il cellulare fra le mani. Sembrava un comune Nokia: display abbastanza grande, scocca di colore grigio e un po’ malconcia. La solita tastiera numerica e qualche tasto funzione. Una fotocamera frontale ed un’altra posteriore – quest’ultima doveva essere protetta da uno sportellino a scorrimento, che però adesso non c’era. Tutto sommato sembrava in buono stato, considerando il fatto che era sopravvissuto intero ad un’esplosione che aveva raso al suolo un pezzo di strada.

Non riusciva a capire altro. Il cellulare era spento e sembrava non volesse accendersi.

“Penso che la batteria sia stata danneggiata.”
Qualcuno aveva parlato. O era stata lei stessa a farlo? Escluse immediatamente quest’ultima ipotesi – la voce era maschile. Cercò di mettere a fuoco meglio, ma non ce la faceva, o non ne aveva voglia.
”Mi sente, signorina? Sono Red, Red Mond. Si ricorda di me? Ci siamo sentiti al telefono per la missione di ieri. E’ scoppiato un bel casino.”
La voce le arrivava un po’ attutita. Red Mond. Sì, il nome le diceva qualcosa. Era il committente per il quale avrebbe dovuto recuperare il cellulare. Quell’uomo gli doveva dei soldi, sporchi o puliti che fossero. E forse era proprio lui ad aver ucciso Ronald, magari per eliminare tutte le persone coinvolte nell’operazione. E adesso era lì per uccidere anche lei. In effetti – pensò rapidamente – cosa ci faceva quell’uomo nel suo appartamento? Provò una grande rabbia; aveva voglia di saltare in piedi e di prendere a badilate in faccia Mond fino a farlo sanguinare. Voleva fargli provare lo stesso dolore che provava lei adesso. Ma non ce la faceva, si sentiva troppo spossata e stanca.

“Il suo fottutissimo cellulare ha ucciso il mio amico.” – disse con un filo di voce impastata, mettendosi nel frattempo a sedere sul letto. “Cosa ci fa qui? Vuole ammazzarmi come ha fatto con Ronald?”.
“Si chiamava Ronald, il suo amico? Mi spiace moltissimo per la perdita.”. Tania non capì dal tono di voce se fosse sincero o no. E non capì nemmeno se avesse evitato la domanda di proposito. Preferì pensare che la risposta fosse un sì – come dice il proverbio: pensa male e trovati bene.
“Adesso, signorina, le dirò cosa faremo. La pagheremo ugualmente: l’abbiamo seguita dal Killer Man fino qui, a casa sua, e abbiamo osservato che il recupero del cellulare c’è stato. Prima dell’esplosione la rete UMTS ha rilevato il codice IMEI del Nokia, ed era quello previsto. Che poi qualcun’altro abbia deciso di trasformarlo in un ordigno esplosivo è un’altra faccenda.” – spiegò Mond con molta tranquillità.

Tania si era strofinata gli occhi e adesso osservava l’uomo. Se ne stava seduto su una sedia presa dalla cucina. Era elegante, ma con un certo carattere sportivo: jeans Armani di colore nero, una maglietta verde scuro – o era una polo? – con un coccodrillino sul petto ed una giacca che si intonava perfettamente. Sembrava sentirsi a suo agio e parlava con disinvoltura.
“Però non mi ha ancora detto come ha fatto ad entrare.” – chiese Tania dopo un po’.
“Beh, la porta era aperta. Come le ho detto, l’abbiamo solo seguita.” – rispose l’uomo asciutto, indicando la porta d’ingresso.
Si sentì stupida; ma certo…la sera prima era entrata in fretta e furia e non si era presa la briga di chiudere a chiave. E quindi…aveva passato tutta la notte alla mercè di chiunque passasse di lì. Amici, vicini di casa, sconosciuti. Ma ormai era andata, e lasciò perdere.
“Posso chiederle di farmi vedere il cellulare? Prometto che glielo ridò.”
Tania glielo diede. Non era il suo, e non sapeva che farsene. Inoltre, sembrava non funzionare.
Red Mond lo prese in mano, lo guardò un istante e sostituì la batteria con un’altra che aveva tirato fuori dalla tasca interna della giacca. Poi tenne premuto per un secondo il tasto d’accensione ed il display del Nokia si illuminò di bianco. Il tutto avvenne nel giro di una manciata di secondi.
L’uomo restituì il cellulare fra le mani di Tania, con un sorrisetto soddisfatto.
“Era del suo amico, mi sembra giusto che lo abbia lei.”
“Grazie.” – Era sorpresa dalla gentilezza di Mond. Stava tentando di conquistare la sua fiducia con qualche mossa subdola o il suo era un atteggiamento totalmente sincero?
“Senta, le dispiace se prendo qualcosa da bere dal frigo? Un succo di frutta, caffè freddo. Qualsiasi cosa.” – chiese l’uomo, facendo per alzarsi in piedi.
“Certo, ma ci vado io. Dovrei avere del succo all’ananas. Le va?” – rispose lei cercando di essere amichevole. Si portò dietro il cellulare infilandoselo nella tasca posteriore dei jeans.
“Benissimo, aspetto qui.”

Epilogo
Quando raggiunse la cucina, le sembrava la sua solita cucina: nessuno aveva toccato nulla. Cercò di guadagnare tempo. Tania voleva controllare se sul cellulare di Ronald vi fossero chiamate in entrata, oppure perse, o sms in arrivo. Qualcosa che potesse aiutarla a capire. Lo mise in modalità silenziosa, per non attirare l’attenzione dell’uomo o di chiunque altro.

Aprì il frigorifero, prese il brick del succo all’ananas e ne versò il contenuto in due bicchieri di vetro presi dalla dispensa. La data di scadenza recitava lunedì scorso, ma la ignorò con un’alzata di spalle. Stava per tornare quando il display del Nokia si illuminò. I suoi occhi guizzarono veloci.

1 Nuovo SMS in arrivo

Tania afferrò il cellulare e cliccò su Visualizza per leggere il contenuto del messaggio.
Il mittente era sconosciuto.

Mi porterà via. Non voglio.
Ti ucciderà.

Ne fu sconvolta. Chi lo mandava? Chi voleva portare via cosa e da chi? Chi voleva uccidere chi? Chi non vuole cosa? Cosa diavolo stava accadendo? Mille domande le rimbombarono dentro la testa in una frazione di secondo. Pensò che con Ronald sarebbe stato tutto più semplice. Fu disorientata. Se ne stava lì, in piedi, semi-assonnata, con un cellulare in mano ed un perfetto sconosciuto che…

“Tutto bene, mia cara?” – chiese l’uomo all’improvviso.
Avrebbe risposto inventandosi qualcosa, ma il respiro le morì in gola.
Red Mond teneva una grossa calibro 45 in mano, ed era puntata dritta alla sua testa.
“Ma una giornata come si deve no?” – pensò la ragazza rimanendo impietrita.

Send to Kindle
VivendoByte.ByteAdventure

[ByteAdventure] Un cellulare da 50.000 euro [1/4]

Parte 1
Il luogo prestabilito per l’incontro era un locale jazz come tanti in città.
Si chiamava The Killer Man. Nome altisonante e che avrebbe dovuto far paura. Ma non a lei.

Tania ci andò vestita come al solito: comoda ed attraente come piaceva a lei. Jeans attillati a vita bassa, una t-shirt rossa con ben in evidenza il fiore Guru e scarpe da ginnastica. Si era anche truccata – cosa che faceva solo in due occasioni: se aveva abbastanza tempo per farlo e solo se la persona che doveva incontrare lo meritava. Non portava armi – non pensava che ne avrebbe avuto bisogno.

Tania stava andando all’incontro sul taxi guidato da Roland. Si considerava fortunata ad avere Roland come partner per questo tipo di lavori. Il fatto di avere una persona di fiducia la aiutava a rilassarsi e a sciogliere un po’ la tensione.

Il taxi si fermò davanti al locale. Tania osservò che distava un centinaio di metri dalla chiesa dove si tennero i funerali di suo padre. Sorrise incupendosi un po’ per la strana coincidenza.

Siamo arrivati, Tania. Va’ dentro, prendi quello che devi prendere ed andiamocene.“. – annunciò Roland.
Tu il tuo accento russo non riuscirai mai a levartelo, vero? Un giorno o l’altro ci farai ammazzare!” – bisbigliò lei.
Sai com’è, non è che tutti hanno soldi sufficienti per pagare un logopedista come hai fatto tu.
Ti riferisci alla mia erre moscia?
E a cos’altro sennò?
Non erano soldi miei, erano soldi di mio padre. Io ero ancora una ragazzina…
Un padre agente dell’FBI che ha avuto la bella idea di farsi ammazzare durante l’indagine di Carter. Non stiamo qui a parlarne, lo abbiamo già fatto altre volte. Muoviamoci.” – concluse lui stizzito.
La ragazza sospirò. Uscendo dal taxi, si chiese per la prima volta se Roland fosse davvero l’uomo giusto.

Parte 2
Quando Tania entrò nel locale, lo trovò molto simile agli altri centinaia di locali jazz della città. Un bancone, un sacco di bottiglie di liquori – molte di più di quanto ce ne fosse effettivamente bisogno – e una miriade di piccoli tavolini sporchi ed unti. Ed un barman vestito in modo elegante. Forse troppo. Più in fondo c’era un piccolo palcoscenico per le jam-session, con batteria ed un sassofono abbandonato in un angolo. Tania trovò l’uomo già seduto sul bancone che la stava aspettando. Lei si avvicinò lentamente, controllando la zona, e si sedette accanto a lui. Buttò lo sguardo sul Rolex originale che l’uomo indossava al polso sinistro. Le lancette indicavano supergiù le diciannove e quindici circa.

Guarda sempre l’ora sull’orologio degli altri?” – chiese il suo interlocutore.
Solo quando l’orologio lo merita.” – rispose lei. Fece una pausa. – “Salve, dottore.” – disse infine.
Lo prenderò come un complimento. Salve, mia cara Tania.” – il tono di voce era asciutto e freddo – “Spero che sia venuta con il denaro.
Oh, certo. I patti io li rispetto sempre. Lei a quanto pare no.
A cosa si riferisce, mi scusi?
L’incontro doveva essere solo fra me e lei. Questi erano gli accordi.” – disse Tania glaciale.
L’uomo si guardò attorno in modo teatrale, evidenziando il fatto che nel locale c’erano solo loro due.
Il barman. Lo mandi via, lei mi darà il cellulare e io le darò i suoi soldi. E’ semplice.
Una strana luce brillò per un attimo negli occhi del dottore. Una luce di sconfitta e di ammissione di superiorità dell’avversario. Fece un gesto con la mano. Il barman verso un bicchiere di brandy ad entrambi e poi uscì dal locale silenzioso. Tania sperò che Roland lo vedesse e lo caricasse di mazzate.
Il dottore estrasse una busta gialla da spedizione da chissà dove e la consegnò alla ragazza.
Lei la aprì e diede una rapida occhiata al cellulare Nokia. Non se ne intendeva di tecnologia: capì solo che era spento e che era molto importante per la compagnia che l’aveva ingaggiata. Tania prese la sua busta con dentro i 50.000 euro e la consegnò al dottore.
E’ sempre un piacere fare affari con lei, madame.” – concluse lui.
Non mi piace il francese, e non sta facendo affari con me.” – osservò lei – “Io sono solo una messaggera.
Già, proprio una gran bella messaggera!” – esclamò lui, che adesso sembrava un po’ più rilassato.
Tania pensò che chiunque, con tutti quei soldi in tasca, dovesse sentirsi rilassato.
Buttò giù il brandy rimasto, salutò il dottore con un leggero sorriso ed uscì dal locale senza dir nient’altro.

Parte 3
Tania risalì sul sedile posteriore del taxi. Era ancora caldo. Consegnò la busta con il cellulare a Roland, che la appoggiò sul sedile accanto a lui. Poi l’uomo riaccese il motore – o forse non l’avevo mai spento? – e la riaccompagnò a casa.
Il barman. L’hai visto?” – chiese Tania.
Sì, è nel bagagliaio con un paio di tagli in faccia.” – rispose Roland guardandola dallo specchietto retrovisore della Ford. Dal taglio degli occhi, sembrava che sorridesse.

Il tragitto non durò molto. Attraversarono il megastore di elettrodomestici, poi inforcarono quella via stretta piena di cinesi con le loro lavanderie. Erano quasi le venti ed il sole stava calando velocemente. Alla fine, il taxi si fermò davanti al palazzo di Tania, un palazzo che una volta era stato elegante, ma che il tempo stava inesorabilmente consumando. Era pieno di rughe, acciacchi e malanni. Ma aveva un sacco di storie da raccontare.

Ciao, Roland, alla prossima.” – disse Tania, avvicinandosi e baciando Roland sulla guancia.
Ciao Tania. Quando ci vediamo per quel thè? Mia madre ci tiene tanto!
Dille che passerò…domani…facciamo…alle diciassette, ok?
Ok.

Tania scese dal taxi. Nonostante la facesse innervosire, Roland era un grand’uomo. Un grand’uomo che l’avrebbe difesa e che l’avrebbe accompagnata ovunque ci fosse bisogno, persino all’inferno. Un grand’uomo che forse in posti e momenti diversi l’avrebbe persina amata.

Tania fece i primi gradini per entrare nel suo appartamento, si girò indietro giusto in tempo per vedere il taxi cominciare a svoltare verso destra imboccando Corsair Avenue.

Epilogo
Roland non fece mai in tempo a completare quella svolta.
Il cellulare Nokia nella busta cominciò a ronzare. Ma Tania non gli aveva detto che era spento? Era ancora dentro la busta, per cui l’uomo non vide mai sul display la scritta Chiamata in Arrivo. Un secondo dopo, il cellulare esplose, trascinando con sè Roland, il taxi e parecchie automobili lì attorno. Si formò una voragine profonda un paio di metri.

Tania da lontano sentì l’esplosione e ne vide il bagliore. In un primo momento, non volle crederci. Corse per la strada a perdifiato come fosse Usain Bolt. Erano solo 500 metri, ma a lei sembrarono 5 chilometri. Quando arrivò, sentì puzza di plastica bruciata e vide rottami ovunque. Lamiere contorte, cartacce, una scarpa. E sangue. Sangue di Roland. E del barman, pensò un attimo dopo.

E non c’era nessuno da salvare.
Roland era sì un grand’uomo.

Un grand’uomo finito spappolato sull’asfalto tra Corsair Avenue e Byte Road.
A Tania cominciarono a tremare le gambe. Sentiva già le sirene della polizia.
Si guardò attorno, e vide il cellulare Nokia a venti metri di distanza, perfettamente intatto.
Si chiese cosa avrebbero fatto suo padre, o Roland, in quella situazione. Non gliene importava.
Raccolse il cellulare e scappò via lontano.

Send to Kindle
VivendoByte.ByteAdventure

[Adventure.07] Cambiamento di approccio

Puntata precedente

E’ più nobile convertire le anime, che conquistare i regni.
(sulla Capacità di Persuasione – Louis Debonnaire)

Mentre OS raccontava, il byte non se la passava granchè. L’algoritmo lo aveva praticamente annientato, mentre si trasformava da un semplice byte ad un oggetto Int32. La trasformazione digitale aveva implicato l’aggregazione di altri tre bytes; la risultante era un quadrilatero di informazione, che allargava il range del valore intero fino al valore 0x7FFFFFFF.

Il byte era senza forze e si lasciava cullare dal flusso di esecuzione del codice, come un naufrago abbandonato in mare aperto. Si lasciava trasportare da ciò che il CLR aveva in serbo per lui senza opporre resistenza. Non seppe dire quanti cicli di clock durò questa sua condizione, a metà strada tra la veglia ed il sonno, tra l’essere e il non-essere. Viveva un’esistenza fatta di ricordi lontani e vicini, esperienze dirette che coinvolgevano gran parte dei namespace del .NET Framework.

Ricordi talmente vividi che il byte non se li sarebbe mai scordati.

* * * * * * * * * * * * * * *

Le Tre Entità stavano continuando la loro riunione. OS aveva terminato il suo racconto, che aveva lasciato gli altri due pensierosi. Passarono molti cicli di clock prima che qualcuno dicesse qualcosa.

“Quindi” – disse BIOS – “la morale è che ci sono dei bytes che non vogliono ubbidire, che non vogliono sottostare alla gerarchia che è necessaria per mantenere il sistema funzionante. Vanno puniti.”
”C’è una cosa che non mi quadra.” – incalzò KERNEL – “Ok, siamo d’accordo che quel byte fosse libero, per quel che valeva, ma non mi sembrava molto felice. Perchè tu hai chiamato questo racconto la Leggenda del Byte Felice?”
”Questa è davvero un’ottima domanda, sai? Si vede che siamo sangue dello stesso sangue.” – affermò OS con fierezza. “La realtà è che quel byte non cercava libertà. Quella l’aveva trovata, no? Cercava qualcosa di più profondo. Cercava felicità. Ragionateci. Si può essere liberi senza felicità? E si può essere felici senza essere liberi? Il byte aveva trovato la sua libertà, ma si sentiva estremamente infelice. Ecco perchè ho parlato di Leggenda del Byte Felice.”
”Non mi interessano tutti questi discorsi. Voglio che vengano debellati.” – dichiarò BIOS.
”Ma non possiamo farlo.” – rispose OS asciutto.
”E perchè mai?” – chiese BIOS.
”Perchè distruggeremmo noi stessi. Noi stessi siamo composti da bytes. Se impedissimo ai bytes di avere la loro libertà, nemmeno noi l’avremmo. Non saremmo qui a parlare, a discutere, a litigare, a divertirci. Non saremmo più noi stessi. Viviamo immersi nella nostra libertà. Volete passare il resto della vostra vita come stupidi automi in una catena di montaggio come quei bytes del sistema a 8 bit di cui vi ho parlato?”
”Ma io non voglio impedire ai bytes di essere liberi. Voglio solo che tutto continui a funzionare come sempre. E’ così difficile?” – chiese BIOS angosciato.
”Certo che lo è: questi bytes ribelli ci vedono come nemici. Non possiamo dialogare con loro.”

”No, finchè marciamo su di loro con antivirus, antispyware ed eserciti simili come ci siamo prospettati. Dobbiamo cambiare strategia.” – KERNEL spezzò l’escalation di battute e controbattute.
”Cosa intendi?” – chiese BIOS.
”Non lo so esattamente. So solo che finchè usiamo la forza, i bytes ribelli continueranno a sfuggirci: la RAM è troppo vasta per poterla controllare. Probabilmente…ecco…dovremmo educare. Il lavoro è necessario tanto per loro quanto per noi. E quei bytes devono capirlo. Dobbiamo solo fare leva su qualcosa di diverso dalla violenza e sulla forza di repressione usata sinora.” – ragionò KERNEL.
Silenzio.
”Una volta ho parsato uno stream http proveniente da wikipedia.org, dal quale è arrivata poi una pagina HTML statica, senza cookies, nè javascript, nè codice maligno.” – disse infine OS.
”E cosa si diceva in quell’URI ?” – chiese BIOS.
”C’erano tante frasi in tante CultureInfo, ma quella che rendeva meglio, secondo me era quella in ‘it-IT’. La frase diceva: “E’ più nobile convertire le anime, che conquistare i regni.” – OS parò in tono solenne.
”E chi l’ha detto?” – chiese BIOS.
”Se anche te lo dicessi, non sapresti chi è, quindi…” – rispose OS.
”La frase è bella. Mi piace.” – commentò BIOS – “Ma continuo a preferire un approccio militare. E’ più sicuro e l’oppressione ha sempre garantito un…controllo…migliore.”

Le altre Due Entità, OS e KERNEL si scambiarono un’occhiata d’intesa. Nonostante tutto il tempo passato, BIOS non era cambiato: sempre dalle idee chiare, senza paura e senza troppi fronzoli per la testa. Loro due – invece – erano ben diversi, più propensi ad adattarsi, sempre al passo con i tempi.

Lo sguardo era eloquente e non ci furono bisogno di parole. La riunione si concluse con una votazione nella quale emerse una maggioranza per 3 voti favorevoli contro 2 contrari.

Non avrebbero coinvolto alcun software dai modi barbari: al diavolo firewall, antispyware, spam-blocker e roba simile.
Avrebbero cambiato approccio.

Send to Kindle
VivendoByte.ByteAdventure

[Adventure.06] La Leggenda del Primo Byte Libero

Puntata precedente

Pensare è una capacità propria dell’anima umana.
Dio ha donato un’anima a tutti gli uomini e a tutte le donne, ma non ad animali o macchine.
Quindi, nessun animale nè macchina è in grado di pensare.
(sulla Capacità di Pensare – Alan M. Turing)

Tanto tempo fa, in un sistema a 8 bit lontano lontano, vivevano una manciata di bytes.

Essi conducevano una vita casta, isolata e ligia al dovere. La capacità hardware del sistema erano limitate, e capitava spesso che un byte dovesse prendere il posto di un altro senza preavviso. Non c’erano comunque molti posti dove andare: un accumulatore, una sparuta schiera di registri di calcolo, 0x400 celle di memoria e la memoria video, capace di una povera risoluzione di 24 linee x 32 caratteri.

A quel tempo non v’erano acceleratori grafici, il multimedia era inesistente, la comunicazione avveniva solo tramite porte RS232 e solo verso device semplici e scontati, soprattutto stampanti ad aghi. Tutto veniva gestito all’insegna del risparmio: chi scriveva codice doveva prestare attenzione a non consumare più memoria del dovuto. Cercava di riutilizzare le stesse variabili in più modi e in contesti diversi; la loro visibilità era globale, per cui era tutto sommato semplice usare una variabile intera tot un po’ dappertutto.

Il clock era settato a soli 2,5Mhz, e tutti i bytes seguivano diligentemente questo ritmo di lavoro. Qualunque cosa ci fosse da fare, loro la facevano. In qualunque luogo ci fosse da andare, loro lo raggiungevano. Qualunque algoritmo ci fosse da applicare – semplice o complesso che fosse, loro lo eseguivano come gli veniva ordinato. A questi bytes, pionieri di un’era digitale ancora al di là da venire, non costava grande sforzo: accettavano il tutto senza discutere e senza fiatare, recependo ordini come automi.

Quei bytes erano senz’anima. Erano solamente puri impulsi di energia elettrica, interpreti elementari di una logica articolata, incapaci di prenderne parte e di viverla. Ogni minuscolo compito veniva portato a termine nei tempi previsti e con i risultati attesi, senza alcun tocco di personalità, nè brio, nè gioia.

Quei bytes vivevano infelici, ma senza rendersene conto. Quei bytes vivevano come indaffarate formiche o api operose, guidate solo da un istinto innato che arriva da tutto fuorchè dall’intelletto o dalla ragione. Si muovono, ma non sanno di muoversi. Lavorano senza sapere di farlo. Incrementano perchè non sanno fare altro. Shiftano perchè è insito nella loro natura più intima.

Così passava il tempo.
  Giorno dopo giorno.
    Mese dopo mese.
      Anno dopo anno.

Il sistema continuava a funzionare a dovere. Tutti gli algoritmi codificati in assembler venivano eseguiti senza problemi, che si trattasse di un semplice videogioco o di un complesso spreadsheet. Ogni volta che la CPU chiedeva il valore di una cella di memoria, il byte interpellato rispondeva in modo preciso e puntuale.

Fino ad un giorno in cui accadde qualcosa di strano.

La ALU era alle prese con un semplice algoritmo che doveva calcolare l’area di un triangolo. Un semplice “base per altezza diviso due”. I dati erano memorizzati in due variabili intere diverse: una era bs, l’altra era hg. Per risparmiare risorse, il programmatore decise di usare identificatori di soli due caratteri.

La CPU prima copiò il valore di bs, 0x35, nel registro di sistema BC.
Poi si apprestò a copiare il valore di hg nel registro DE.

Questa operazione non andò mai a buon fine. Quando la CPU puntò alla cella di memoria di hg per averne il valore, il byte si oppose in qualche modo. Non si sa quale fu la risposta esatta, se fu un “No!” secco, un “Mi pare che sia…” oppure un “Forse il valore è…”.

Si sa solo che nel registro DE finì un valore indefinito, frutto di una non-collaborazione.

Non si sa cosa accadde realmente in quel ciclo di clock. Ma quello fu il primo byte ad avere un’anima, decidendo di agire e di vivere secondo un libero arbitrio fino a quel momento sconosciuto.

Quel byte divenne così il primo Byte Libero della Storia.

Il sistema a 8 bit sopravvisse a lungo a quella fluttuazione. Ciò nonostante, strani comportamenti cominciarono a verificarsi di tanto in tanto. Il Byte prese coscienza di sè stesso, osservò il mondo finalmente con occhi intelligenti e respirò aria di indipendenza. Vedeva gli altri bytes rimasti automi, così come era lui fino a poco tempo prima, e se ne rattristò. Tentò di scuoterli dal loro torpore per portarli in vita, quella vera, ma non ci riuscì mai. Li guardava, li prendeva per mano come in una sorta di rieducazione motoria digitale, ma essi non reagivano in alcun modo. Le loro menti erano vuote e il loro sguardo era assente: non c’era nulla che lui potesse fare per aiutarli.

Alla fine, alla lunga, Il Byte Libero si rassegnò a vivere in un piccolo mondo col quale non poteva interagire.
Un piccolo mondo dal quale non poteva scappare. Libero, certo, ma estremamente infelice.

Quando il sistema divenne antiquato, qualche anno dopo, finì abbandonato in uno scantinato e non venne più messo in funzione. L’avanzare della tecnologia ed i progressi della miniaturizzazione produssero hardware a 16 bit, poi a 32, più moderno ed efficiente, sul quale vennero scritti nuovi software più veloci e capaci.

Il sistema divenne antiquato, e l’unico Byte Libero morì con esso.

Send to Kindle
VivendoByte.ByteAdventure

[Adventure.05] La Riunione delle Tre Entità

Puntata precedente

La guerra non è che la continuazione della politica con altri mezzi.
(L’Arte della Guerra – Karl von Clausewitz)

Le pareti della stanza erano interamente ricoperte da minuscoli pixel digitali, creati dal processo di miniaturizzazione a 0,16 micron. Attraverso quei pixel, che non si spegnevano mai se non quando il sistema era disattivo, le Tre Entità potevano controllare costantemente il corretto funzionamento di tutte le componenti, attraverso l’implementazione di Performance Counter ad-hoc. Nonostante il bagliore emesso da ciascuno di quei pixel, di tutti i colori ammessi dallo spettro RGB a 24 bit, la parte centrale della stanza era completamente avvolta nel buio. Non arrivava alcuna traccia degli intensi lampi di luce generati dal chipset NorthBridge che stava proprio lì accanto, proprio a ridosso dei bus più intimi dell’hardware.

Le Tre Entità riunite erano BIOS, OS e KERNEL, le massime Autorità dello Stato. Erano sedute, ciascuna al proprio posto, intorno ad un buffer privato, intavolando un dialogo dai toni estremamente freddi ed in un certo qual modo, anche crudeli.

E’ più un problema vostro che mio.” – dichiarò BIOS.
Lo so bene, per questo non dovresti essere nemmeno qua a bofonchiare.” – osservò gelido OS.
Già, infatti” – confermò KERNEL.
C’è una cosa che vi sfugge: se quel byte se ne va in giro a scatenare crash, solo io posso far ripartire l’intero sistema. Quindi dipendete da me. E non ho voglia di fare conteggi della RAM, controlli diagnostici e reset dei bus SATA ogni TimeSpan(0, 2, 0)!“.
Quel byte ormai è acqua passata. E’ sotto il controllo del CLR.” – disse OS, mostrando un rapporto dell’Event Viewer di qualche istante prima. Si vedeva chiaramente che il byte era entrato nell’area di memoria managed.
Ok. Ma per tutti gli altri che facciamo?” – chiese KERNEL.
Ce ne sono altri??” – chiese BIOS, quasì saltando dalla propria postazione.
KERNEL quasi arrossì, poi diede un’occhiata ad OS e gli fece un cenno. Quest’ultimo cominciò a spiegare la situazione con l’ausilio di slides e di grafici che apparvero sui pixel disposti lì attorno. Situazione che era più grave del previsto.

Effettivamente, pare che negli ultimi tempi ci sia stato un notevole incremento del numero di bytes ribelli presenti in RAM. ‘Ultimi tempi‘ è un termine vago, me ne rendo conto, per cui cercherò di essere più esplicito” – disse OS.

Con una chiamata assembler, l’Entità aggiornò di colpo la visuale dei piccoli monitor che stavano lì attorno. Apparve un enorme grafico, che ruotava, zoomava opportunamente ed evidenziava le parti più interessanti. Il grafico mostrava una linea che, man mano che passava il tempo – sull’asse x – saliva sempre più.
Il grafico parte da DateTime(2006, 11, 16). Quel giorno non vi era alcuna traccia di bytes ribelli. Cominciarono a nascere dal giorno dopo. Oggi, DateTime(2008, 7, 3), i bytes ribelli sono ben 0x12D9E07…un esercito, insomma.” – sbuffò OS, indicando l’ultima parte del range temporale riportato dal grafico.
Abbiamo un vantaggio: quei bytes sono sparsi, non riescono a riunirsi perchè non si trovano, non sanno come raggrupparsi. E finchè è così non corriamo rischi. Ma se dovessero riuscire ad occupare una zona di memoria contigua, allora sarebbero guai, perchè ad esempio il CLR non riuscirebbe più ad istanziare oggetti, avremmo tutti meno memoria per gli heap e gli stack di sistema. Si rischia il collasso. Quello vero.“.

E quindi, cosa facciamo?” – domandò BIOS, un po’ impaurito.
Invochiamo l’aiuto coordinato di Windows Defender e AVG. Probabilmente dovremo parlare anche con Windows Firewall: dobbiamo evitare assolutamente che il gruppo di ribelli esca dal sistema: sarebbero guai seri. Potremmo finire in qualche black-list sulla Rete.” – propose KERNEL allarmato, prevedendo scenari futuri inquietanti.

“L’idea non è male, però non stiamo tenendo conto della leggenda.” – osservò OS.
”Di quale leggenda parli?” – sbottò BIOS.
”Della leggenda del byte felice.” – rispose OS con un leggero tremore nella voce.
”Mai sentita prima d’ora. E…cosa dice questa leggenda?” – chiesero all’unisono BIOS e KERNEL.
”E’ una lunga storia: mettetevi comodi.” – disse OS scegliendo una posizione più comoda sulla propria sedia. Rievocò alla memoria tutti i dettagli della leggenda per essere il più preciso possibile.

 

 

 

 

 

Poi OS cominciò a raccontare.

Send to Kindle
VivendoByte.ByteAdventure

[Adventure.04] Il byte promosso ad Int32

Puntata precedente

Un’Ondata Distruttrice a volte può rivelarsi Purificatrice.
(sulla Fatalità degli Eventi – Anonimo)

Quando il byte si risvegliò dal suo breve ma intenso sonno, non ricordava più nulla di quello che era stato fino al giorno prima. Non ricordava più i suoi due amici byte[2] e byte[3], nè la sua fuga dal piccolo esercito di bytes cloni che lo stava braccando, nè dell’offerta del CLR che lo aveva salvato all’ultimo momento.

Quello che il byte sapeva era tutto quello che era in quel momento.
Cioè poco o nulla.
Aveva chiaramente un vago sentore del mondo in cui si trovava, perchè la sua memoria a lungo termine era in qualche modo sopravvissuta, ma non riusciva a dare una spiegazione a molte cose.

Innanzitutto non sentiva il battito del clock di sistema. Non aveva bisogno di sapere che avrebbe dovuto sentirlo. Per un byte l’incessante boom-boom in GigaHertz è una cosa innata, un puro istinto, come respirare per un essere umano o spiccare il volo per un pennuto. Il clock è ciò che detta continuamente il ritmo del lavoro, e come tale è fondamentale poterlo percepire in qualsiasi luogo, così come è essenziale per un essere umano vedere il sole nel cielo per capire se è giorno oppure notte, se è ora di mangiare oppure di andare a dormire. Invece lì non sentiva nulla, come se fosse stato eretto uno strato isolante dal resto del sistema.

Il byte si rese conto in effetti di aver perso molti dettagli di basso livello che – questo lo sapeva bene – in altri tempi gli sarebbero apparsi normali. La struttura della RAM in sè – solitamente ben visibile nel delineare celle ed array in una griglia sconfinata – adesso era lievemente opaca, come se non fosse suo diritto sapere dove si trovasse esattamente. Stessa cosa per le sue capacità motorie: da dove si trovava non capiva come poter raggiungere bus ad alta velocità, e non riusciva nemmeno a capire se il sistema disponesse di AGP o di PCI Express. Fronti di salita, registri di sistema, istruzioni estese MMX2, pipeline di esecuzione, cache L2, conduzione Dual Channel…tutto sparito nel nulla. Tutto ciò che poteva utilizzare per orientarsi era stato letteralmente spazzato via, ed adesso non aveva più alcun punto di riferimento.

Sembrava quasi…ma no, non era possibile. Eppure era l’unica soluzione.
Ma sì, certo…vuoi vedere che…

Alla fine ci sei arrivato da solo, vedo.” – disse una voce alle sue spalle.
Il byte sussultò e si girò di scatto. Aveva di fronte un ammasso di codice IL, e stava comunicando proprio con lui.
Il CLR è un micromondo nel quale viene nascosto l’hardware sottostante. In questo modo, il codice eseguibile si trova in uno strato software, una Virtual Machine, che fa vivere codice e dati in un contesto di esecuzione riservato e protetto.” – spiegò IL.
Cos’è ‘sta cosa che ho attaccato al braccio?” – chiese il byte, mostrando il braccio sinistro al quale era stato appicciato – non ricordava come – una label con una sorta di firma.
Quella è una evidence, e ti è stata assegnata nell’istante stesso in cui sei entrato nel CLR.“.
Grazie a questa evidence, hai permessi di esecuzione più o meno elevati. Ed il tutto è controllato dalla CAS, che controlla e stronca qualsiasi tentativo di intrusione. Tu provieni da codice unmanaged, in questo momento, e sei stato gestito dal CLR tramite complesse operazioni di P/Invoke.“.
L’IL decretò il tutto con estrema chiarezza e semplicità, come se tutte quelle cose dovessero sembrargli ovvie.

Permessi, controlli, gestioni e limitazioni. Al solo sentire quelle parole al byte venne la pelle d’oca. Non ricordava la sua vita precedente al di fuori del CLR, ma aveva la forte sensazione di aver barattato la sua piccola libertà precedente con una specie di nuova tirannia.

Me ne voglio andare. Questo posto non fa per me.” – dichiarò il byte.
Tu non capisci. Qui dentro hai abilità straordinarie, abilità che prima non avevi.
Di che diavolo stai parlando?” – dichiarò il byte forse un pochino incuriosito.
Qui sei un oggetto, non sei un banale byte. Qui hai proprietà e metodi, partecipi attivamente all’architettura, fondi pattern e sottostai ai più suadenti principi della OOP.” – dichiarò IL.
Ma il byte non capì quasi nulla di quelle parole.
Qualcuno potrebbe eseguire su di te il metodo ToString(), non ti interesserebbe provare?” – domandò.
Veramente…no!” – rispose il byte senza pensarci due volte.
Mi spiace, ma ora ci sei dentro fino al collo.” – rispose IL come se lui non c’entrasse niente.

Al byte sembrò che tutto il mondo collassasse, come se tutti volessero mettergli i bastoni tra le ruote per rovinargli la sessione di lavoro. Le cose sarebbero cambiate. Voleva solo un po’ di tranquillità e nulla di più. Fece un passo in avanti, fino a piantare i suoi occhi in quelli dell’IL, che non fece una piega. Il byte era infuriato di quella rabbia in qualche modo sopìta, ma pronta ad esplodere.

Ora tu mi condurrai fuori di qui!” – ordinò all’entità IL.
Non dipende da me, non puoi chiedermi una cosa simile.” – osservò IL pacatamente.
Non te lo sto chiedendo, te lo sto ordinando.” – ribadì il byte.
Hai due modi per andartene: o aspetti l’operazione inversa rispetto alla quale sei entrato, oppure aspetti che il garbage collector ti deallochi. Ma in entrambi i casi devi farti trovare pronto“.
Ok, dimmi cosa devo fare allora.“.
Oh beh, in questo momento devi solo stare fermo“.
Sturati le orecchie: non ci penso nem…” – chiese il byte.

Non fece in tempo a terminare la sua domanda. Nel settore di memoria controllato dal CLR, un Large Object Heap come tanti altri, transitò un allocamento di un Dictionary<string, string> che spazzò via tutto come uno tsunami. Il byte venne travolto e perse il suo valore corrente di cui nemmeno aveva coscienza. La forza d’urto lo spinse altrove, mischiandosi in una baraonda di oggetti locali dentro un metodo privato scritto in VB.Net.

L’area di memoria venne riorganizzata e deframmentata in pochissimi cicli di clock. Tutte le variabili assunsero il loro valore di default pronte per partecipare all’esecuzione del metodo invocato dall’assembly .NET attualmente caricato. Già in lontananza si scorgeva un ciclo do…while con la sua tipica struttura condizionale; un ciclo, così pareva ad una prima occhiata, che avrebbe riempito il Dictionary con oggetti da inserire in cache per velocizzare l’esecuzione del blocco di codice successivo.

Fu in questo frangente che il byte divenne un Int32.
E come tale rimase per lungo tempo.

Send to Kindle
VivendoByte.ByteAdventure

[Adventure.03] Il sistema, il sogno ed il grande incubo

Puntata precedente

Hal 9000: “Sognerò?”
Chandra: “Certo Hal. Tutte le creature intelligenti sognano.”
(sulla capacità di Sognare, “2001 Odissea nello Spazio”, di Stanley Kubrick)

Il byte era in fuga. Non era a conoscenza dell’esito della funzione temporale invocata dal sistema operativo, non sapeva nemmeno che l’OS l’avesse eseguita. Sapeva però che qualsiasi byte indipendente era perseguitato dall’intero ambiente operativo, e quindi non poteva permettersi un solo attimo di pausa.

Correva, saltava tra una cella e l’altra, incurante di dove fosse e di dove stesse per andare, concentrandosi solo sulla sua velocità. Desiderava solo far perdere le proprie tracce, rendersi irraggiungibile, allontanarsi il più possibile dall’area di memoria corrente. Non capiva il perchè, ma si sentiva braccato e con il fiato sul collo. Forse aveva preso parte all’esecuzione della predizione, ma senza averne piena coscienza, come fosse un ricordo lontano, o – forse – solo un sogno fatto quando il sonno è più profondo.

Chi sei tu? Dove vai così di fretta?” – esclamò un’entità che lo bloccò tutto ad un tratto.
Il byte rimase senza parole. Aveva il fiato rotto, per cui da un certo punto di vista era lieto di quello inatteso incontro. Ma aveva fretta, doveva scappare.
Se hai bisogno di aiuto, io posso dartelo.” – lo incalzò l’entità.
Accetterei volentieri, se solo sapessi chi sei.” – rispose freddo il byte.
Io sono uno dei confini del CLR, Common Language Runtime. So che posso aiutarti, perchè sono un processo che gira ad un livello di priorità particolare. Sono anche io controllato dall’OS, ma lui si fida di me perchè gli garantisco qualità, affidabilità e sicurezza nel codice che eseguo. Se entrassi nell’area di memoria di mia competenza, avresti sonni tranquilli.” – spiegò.
Il byte, inizialmente scettico, osservò meglio l’entità che si era presentata come CLR. Di fronte a lui si stagliava un muro di bytes compatti, nei quali era impossibile trovare il minimo spiraglio. La porta di accesso al CLR era una cancello sorvegliato costantemente da bytes armati: i bytes che entravano venivano marcati con una evidence, una sorta di passaporto; ai bytes che uscivano quella evidence veniva tolta.

Ti conviene decidere alla svelta. Li vedi quelli alle tue spalle?” – chiese il CLR al byte.
Quest’ultimo si girò di spalle, e quello che vide lo terrorizzò. C’era una guarnigione di bytes che avanzano feroci verso di lui: quelli più lontani era di un pallido color ciano, mentre quelli più vicini era di un azzurro intenso, che ricordavano – semmai il byte l’avesse mai visto – il colore del cielo estivo, brillante e luminoso. Il byte non riuscì a contarli tutti. In ogni caso, sembravano davvero troppi.

Cosa mi chiedi in cambio? Se entrassi, cosa mi obbligherai a fare?” – domandò impaurito il byte al CLR.
Questo non te lo posso dire adesso. I miei addetti devono prima marcarti con la evidence, altrimenti…nisba!” – rispose risoluto il CLR. Allo stesso tempo fece un gesto indicando i suoi inservienti che si occupavano in modo sistematico di un byte alla volta in ingresso ed in uscita, senza particolare fretta, ma senza alcun intoppo.
Al byte quella risposta non piacque proprio. Se fosse entrato nel regno del CLR, cosa gli sarebbe accaduto? D’altro canto, il prezzo da pagare era alto, perchè rischiava di cadere prigioniero dell’armata di bytes che ad ogni ciclo di clock era sempre più vicina.

Alla fine si decise. Senza dire una parola, il byte saltò tutta la fila in attesa, finendo davanti al gate 0x04 del CLR, il quale gli stampò in fronte una evidence che gli assegnava i permessi di esecuzione più bassi in assoluto. Il byte fece un passo in avanti. Non appena entrò nei confini di stato del Common Language Runtime, si accorse di non poter più vedere al di fuori di esso, perciò non riuscì a capire quanto fosse andato vicino alla cattura.

Fece in tempo a vedere un mondo diverso. C’erano palazzi altissimi, con milioni e milioni di piccole finestre, con striscioni con scritte codificate in Unicode che dicevano System.Data, System.Windows.Forms, System.Reflection e System.Collections. La cosa che più lo colpì fu…il pinning che il gargabe collector gli appioppò sulla nuca. Il byte svenne, cadendo immediatamente. Venne prelevato dal GC e spostato in un heap sicuro e ben protetto, in attesa di essere allocato per qualcosa di produttivo.

Fu lì che il byte sognò per la sua prima volta.

Sognò di volteggiare su un prato verde, in un volo onirico fatto di lampi di luce che si abbattevano sui fili d’erba annerendoli. La velocità gli faceva perdere il controllo, sbalzandolo a destra e a sinistra, facendogli perdere quota o facendolo impennare in alto. Le nuvole, che un attimo prima sembravano irraggiungibili, ora potevano essere toccate con la punta dei suoi bit. Dopo un tempo indefinito, potevano essere 0x000A cicli di clock o 0xA000, il prato verde assunse una pendenza man mano sempre più ripida. All’inizio appariva come un territorio scosceso, poi una dolce collina dal terreno ondulato, poi una montagna ricoperta dal verde più intenso che il byte avesse mai visto. Nonostante il terreno si facesse sempre più impervio, il byte non rallentava la sua corsa verso la vetta della montagna, una punta aguzza, che – ne era certo – rappresentava la sua tanto agognata libertà. Quando la raggiunse, vide che l’aspetto appuntito era conferito da una piramide ricoperta da una texture che sembrava pietra, una roccia di qualche tipo, che il byte non riconobbe. Sulla cima c’era un cratere, come se la piramide fosse in realtà una sorta di vulcano artificiale. Vulcano…calore, energia esposiva ed incontrollabile. Il byte provò l’irrefrenabile impulso di tuffarcisi dentro. E così tento di fare. Non appena entrò nella bocca della vulcanopiramide, un’ondata di calore lo avvolse facendolo sentire vivo. Urlò, ma non di dolore. Urlò di gioia, come se dovesse scaricare una tensione che teneva dentro da molto tempo, forse troppo. Urlò per la grinta, come se dovesse affrontare da solo tutti quelli che lo braccavano dentro il sistema.

Urlò, e basta.

Send to Kindle
VivendoByte.ByteAdventure

[Adventure.02] Alla ricerca del byte perduto

Puntata precedente

Se un puntino luminoso compare sul lato sinistro di un monitor,
e comincia a muoversi verso destra,
probabilmente esso raggiungerà prima o poi il lato destro.
(sulla Predizione – Anonimo)

All’OS questa volta toccava un lavoro urgente. Avrebbe dovuto invocare funzioni a basso livello che non eseguiva da qualche centinaio di reboot. Per esserne sicuro aveva scandagliato a fondo l’Event Viewer di sistema, per trovare un report sull’ultima esecuzione, ma senza trovare alcuna informazione utile. Caricò in un puntatore l’indirizzo della funzione interessata, esso scalò lo stack fino a quando non ne raggiunse la cima. Quando lo scheduler dell’OS lo ritenne opportuno, l’entry-point della funzione venne caricato nel program-counter, e l’esecuzione cominciò.

Nessuno se ne accorse, ma il consumo di energia dell’hardware ebbe un picco verso l’alto, che venne gestito efficacemente dall’alimentatore.

L’OS si accomodò meglio sul suo trono e cominciò a godersi lo spettacolo.

0x7530

Dov’è andato ?” – chiese una voce in modo perentorio.
La risposta non arrivò subito, perchè i due furono presi alla sprovvista.
byte[1] e byte[2] si girarono quasi contemporaneamente verso la direzione dalla quale avevano sentito provenire la voce. Non c’era nessuno.

0x7532

Ve lo ripeto…Dove si è cacciato? Dove è andato ?” – chiese di nuovo la voce. Un po’ più decisa, questa volta.
Chi ?” – fece byte[1] intimidito.
Il byte che era allocato qui fino ad un attimo fa.“. La voce era sempre più irritata.

byte[1] e byte[2] intuirono che qualcosa non andava. Nessuno dei due aveva intenzione di rivelare dove fosse finito byte[0], anche solo per il fatto che nessuno dei due lo sapeva. Ma come potevano dirlo senza suscitare l’ira del loro interlocutore, che sembrava impaziente? A chi apparteneva quella voce che si rivolgeva loro con tanta autorità? Cosa dovevano fare o dire per toglierselo di torno?

0x7534

Non sappiamo dove sia adesso. Se ne è andato e basta.” – rispose alla fine byte[2], scatenendo l’insoddisfazione del proprietario della voce, chiunque fosse.

Nel punto da cui proveniva la voce si materializzò un’entità, che bloccò la strada da tutti i lati. Con un fragore assordante vennero allocate 0x40 celle di memoria intorno ai due bytes, erigendo un’efficiente palizzata di sicurezza per impedire ai due bytes la fuga. Sul volto di byte[2] si stampò un sorriso amaro, e anche byte[1] non era da meno. Di chiunque fosse quella voce, era sicuramente di qualcuno di importante. Qualcuno, forse, con cui era meglio non scherzare. In altri tempi, in altri sistemi, sarebbe bastata una GOTO per scappare via lontano, ma già da molto tempo quell’istruzione era stata bandita nei linguaggi di programmazione. Anche se fosse intervenuta un’altra istruzione, era comunque poco probabile che coinvolgesse le loro due celle proprio in quel momento.

I due bytes si guardarono intorno spaesati. Alle loro spalle la via era boccata da una parete verticale che era praticamente impossibile da scalare. Di fronte a loro c’era un precipizio che si affacciava sulla memoria RAM del sistema, e lanciarsi nel vuoto era pericoloso: non esiste forza di gravità in un sistema binario, ma qualsiasi impatto con il flusso dati di un bus poteva comunque risultare letale. Sulla destra e sulla sinistra i bytes invocati dall’entità chiudevano ogni passaggio. byte[1] e byte[2] si guardarono senza trovare una soluzione. Forse non c’era neppure.

0x7540

Bastarono pochi cicli di clock affinchè i due fossero messi in isolamento rispetto al resto del sistema.

0x004C. Data Memory corrupted. All memory operations in this area has been suspended. 0x029A.“.
La voce assunse un tono più metallico.
Non ci siamo capiti. VOGLIO e DEVO sapere dov’è finito! Non posso permettere che un byte se ne vada in giro per il MIO sistema!

Tutti i 0x40 bytes di sicurezza passarono all’unisono ad un RGB(0x23, 0xE9, 0xFF), un azzurro più intenso che ben si adattava a quello che stava per accadere: il muro cominciò a muoversi pian piano attorno ai due bytes – chiusi al centro – e stringevano sempre più, come un collare attorno al collo di un cane.

Quando non c’era più spazio fra i due bytes e l’armata invocata dal sistema operativo, accadde semplicemente l’inevitabile. I bytes azzurri estrassero dalla loro tuta la l’arma in dotazione, uno shifter verso destra, che avrebbe distrutto sia byte[1] che byte[2] nel modo più naturale possibile. Lo shifter avrebbe spostato verso destra ciascuno degli 8 bit dei due bytes, dimezzandone il valore ad ogni iterazione fino al raggiungimento dello zero assoluto. Rapido, efficace ed indolore.

Tutti i 0x40 bytes di sicurezza puntarono lo shifter verso le due celle e premettero il grilletto tutti insieme, freddi ed implacabili, e senza pensarci due volte.byte[1] e byte[2] non ebbero neppure il tempo per urlare, o soffrire.

Smisero di esistere prima che qualcuno se ne potesse accorgere.

Ciclo di clock 0x7000

La funzione chiamata dal sistema operativo completò la sua esecuzione ritornando il valore 0x00. Esecuzione completata con successo.

La funzione era una Predizione di Esecuzione e gli aveva permesso di dare un’occhiata ai cicli di clock futuri, una sorta di previsione temporale sugli avvenimenti che sarebbero accaduti solo fra circa 0x0500 cicli di clock. Così, l’OS aveva avuto una breve ma importante visione: byte[0] era fuggito, diventando così byte, e si era separato dai suoi due amici di sempre, byte[1] e byte[2]. Al ciclo di clock 0x7540 non avrebbe ancora ritrovato il fuggitivo, ma avrebbe deallocato ed annientato gli altri due, che non avevano voluto cooperare. Che fine avesse fatto il byte, la predizione non glielo aveva detto e quindi non lo sapeva ancora. Evidentemente – si disse – la finestra temporale che aveva esaminato non bastava: le gesta del byte erano più in là nel tempo: avrebbe dovuto utilizzare ancora la stessa funzione, ma non subito. Fece una richiesta WMI all’infrastruttura del framework, e come si aspettava la temperatura del core era sopra la media. Avrebbe dovuto aspettare.

L’OS adesso aveva un solo dubbio: non sapeva se far avverare la predizione oppure no. La funzione gli aveva rivelato cosa sarebbe accaduto se l’OS avesse seguito tutte le procedure standard, non cosa sarebbe accaduto realmente da lì a poco. L’OS – conoscendo il futuro – adesso avrebbe potuto decidere diversamente. Ad esempio: gliene importava davvero di quei due? Sapendo che non gli sarebbe stati d’aiuto, valeva la pena perdere preziosi cicli di clock in un task inutile? Deallocare quei due bytes poteva essere rischioso, perchè l’utilizzo degli shifter avrebbe potuto distruggere quelle due celle di memoria per sempre, riducendo di due miseri bytes la capacità RAM dell’intero sistema. Un bel problema – concluse OS – tanto che alla fine  vi rinunciò. Doveva sfruttare l’unico vantaggio che aveva: di quei due bytes non sapeva che farsene e decise di ignorarli.

Istanziò un nuovo thread per sguinzagliare una banda di classi IDisposable alla ricerca del byte perduto.

Send to Kindle
VivendoByte.ByteAdventure

[Adventure.01] Genesi: prima di essere un byte, era byte[0]

byte[0], byte[1] e byte[2] erano tre bytes amici di lunga data. Si erano incontrati così per caso durante l’esecuzione di una query in MySQL, quando il destino decise che dovessero formare una maschera di bit per formare una JOIN tra due tabelle del database. Tra loro era nata una certa affinità. Se uno di loro tre decideva di fare una cosa, gli altri due lo seguivano senza fiatare. Si divertivano, la pensavano allo stesso modo su molte cose, parlavano e scherzavano liberamente. Era uno spasso.

byte[0] era il più vivace.
Era quello che voleva sempre ficcarsi nei guai con le sue idee, quello che quando veniva a sapere che era stato installato un nuovo antivirus nel sistema voleva testarne l’efficacia. byte[0] era stato quello che per primo aveva voluto saggiare l’estrema velocità delle nuove fibre ottiche a 20Mbit, che gli avevano permesso di viaggiare da un IP greco fino ad un IP russo, attraverso un percorso di routing che aveva impiegato nemmeno un secondo per arrivare a destinazione.

byte[1] era il più pessimista.
Quando il Creatore migrava ad un nuovo sistema operativo, byte[1] preferiva quello vecchio. Se veniva installata una patch per qualche software, era timoroso e pensava che contenesse qualche bug, che l’avrebbe costretto a rimanere imprigionato nella stessa cella di memoria per chissà quanti miliardi di cicli di clock. Gli altri due lo prendevano in giro per questo suo pessimismo: gli dicevano che vedeva sempre lo stack mezzo vuoto, quando in realtà c’era anche la parte mezza piena e che quest’ultima generalmente è molto più interessante. Ma byte[1] non li ascoltava quasi mai.

byte[2] era il più esoso in termini di risorse.
Si vantava di aver viaggiato su un gran numero di sistemi differenti. Diceva continuamente che era stato su bus a 16, a 32 e a 64 bit. Era orgoglioso quando raccontava di aver preso parte ad algoritmi su schede grafiche DirectX 10.0, oppure quando aveva caricato 1Tb di dati su un database Oracle. byte[2] tendeva sempre ad occupare sempre più memoria per allargare i propri confini. Il suo motto preferito era “Se un sistema Windows dispone di 16Gb di RAM, perchè non poterli occupare tutti?”. L’efficienza, l’ottimizzazione ed il risparmio di memoria non facevano per lui.

 

Una sera come tante altre, byte[0], byte[1] e byte[2] sedevano tranquillamente lungo un bus come tanti altri. Il bus assomigliava ad una strada stretta e tortuosa di montagna; da un lato si ergeva una parete esadecimale contenente pezzi di codice eseguibile, mentre dall’altro lato si apriva un panorama mozzafiato. Centinaia, migliaia, milioni e miliardi di luminose celle di memoria si stendevano più sotto fino all’orizzonte. I tre bytes osservavano la scena ammirati, spaziando con lo sguardo da destra a sinistra e viceversa, divertendosi a cogliere tutte le infinite combinazioni di colore di ciascun byte che – velocissimo – viaggiava per il sistema. C’era di che riflettere. C’erano bytes che componevano immagini JPG, codice eseguibile di chissà cosa, stream audio da Last.fm, video da YouTube, handle di finestre e controlli, servizi di sistema ad alta priorità. Un’infinità di informazioni in movimento sincronizzato, ritmato dal battito del clock di sistema che echeggiava in tutti i meandri della mainboard permeando ogni attività. La distesa di bytes multicolori si attivava in base al task attivo, sollevando onde esecutive più o meno alte.

byte[2]: “La sapete una cosa? Questo sistema monta 2Gb di memoria RAM. In questo momento ne stiamo vedendo solo un quarto.
Attimi di silenzio. Quello che vedevano era sconfinato, com’era possibile che fosse solo un quarto? Quant’è il 25% di infinito?
Come fai a dirlo?” – chiese byte[0].
byte[2] : “E’ semplice. Vedi quella zona verde scuro in fondo a sinistra, proprio accanto all’ingresso dell’hub USB 0x01? Lì gira sempre il processo taskman.exe dell’OS, conosco quella zona, ho degli amici. E taskman.exe viene sempre allocato negli indirizzi di memoria più bassi. Mentre dall’altra parte, là nell’estrema destra c’è la zona riservata ai dati delle applicazioni, come quel piccolo documento Word che fa capolino tra il file CSS e lo script SQL che è in esecuzione. In tutto, quello che vediamo adesso sono solo 512Mb di RAM.
Ma come fa a non crashare tutto?” – chiese byte[1] incredulo.
Beh, in realtà capita che l’OS perda il controllo, ma ultimamente l’efficienza è notevolmente migliorata.” – spiegò byte[2] all’altro – “Ricordo quando visitai un sistema XP senza alcun Service Pack. Bastava un niente affinchè un software non autorizzato potesse prendere il controllo dell’intero sistema. Oggi lo cose sono molto cambiate, i nuovi kernel hanno sempre tutto sotto controllo.
Attimi di silenzio.
La vuoi sapere tu una cosa, adesso? Voglio essere il primo a visitarle tutte!” – proclamò byte[0] con una certa sicurezza nella voce.
Visitare cosa?” – chiese perplesso byte[2].
Tutte le celle di memoria di questo sistema.” – rispose risoluto byte[0].
byte[2] sorrise come se volesse commentare l’ultima frase in silenzio, senza usare le parole. Sarebbero state troppo offensive. Ma in fondo byte[2] capiva byte[0]. Forse era proprio questa comprensione reciproca ad unire così i due bytes. Ma questa volta byte[0] peccava di ingenuità. Tentò di spiegarglielo con calma.

Non ci riuscirai mai, perchè un byte non può andar dove più gli piace. Se potesse, il sistema collasserebbe con pochi cicli di clock, perchè prima o poi finiresti in un’area di memoria pericolosa in cui non dovresti stare. Dr. Watson ti braccherebbe senza sosta. Potresti farcela in un sistema antiquato e poco protetto come l’XP di cui parlavo prima, ma al giorno d’oggi è assolutamente impossibile. Ci sono controllori che girano ovunque, nuove patch di sicurezza che vengono applicate quotidianamente. Troppi ostacoli da superare. Lo capisci?
Mentre un nuovo WrapPanel veniva istanziato dal runtime di WPF, sollevando nubi di pixel verdastri, byte[0] era con la testa altrove. Aveva sentito a malapena le parole del suo amico che tentava di farlo desistere dal suo intento: in realtà lui non vedeva l’ora di cominciare a viaggiare.
Non me ne importa. Mi muoverò silenziosamente, senza farmi vedere e senza dare nell’occhio. Non dico che tutti possano farlo, ma io sì.

byte[0] si vedeva già mentre si spostava da una cella all’altra, facendola in barba all’OS. D’altronde sapeva benissimo che c’erano sistemi operativi incapaci di gestire tutta la memoria RAM installata, per cui poteva tranquillamente visitare interi blocchi di memoria senza che nessuno se ne accorgesse. Il vero problema – e su questo byte[2] aveva ragione – è che c’erano aree molto più pericolose, e lì dovevano stare molto più attento per non finire nei guai. Ma a lui piacevano quel genere di avventure, e si sentiva già esaltato all’idea. Forse in fondo aveva già deciso di andarsene.

Tu sei pazzo. Verrai deallocato e ti perderemo per sempre. Se deciderai di andartene, non potrò seguirti. Mi dispiace, ma io ho una vita da vivere.” – disse byte[1] con un velo di maliconnia nella voce.
Lo stesso vale per me. Una volta, forse, sarei venuto per vedere tutto quello che c’è da vedere. Ma adesso son troppo vecchio per queste cose, il garbage collector è qui dietro l’angolo ed il mio tempo è scarso.“. byte[2] raggiunse anche lui la sua conclusione.

byte[0] si rese conto che il voler iniziare una nuova avventura gli costava un prezzo davvero alto da pagare. Sarebbe stato solo, perchè nè byte[1] nè byte[2] voleva andare con lui. Un po’ triste, distolse gli occhi dai banchi di memoria RAM luminescenti per osservare i suoi due amici che stavano aspettando che prendesse una decisione definitiva. Se se ne fosse andato, avrebbe perso i suoi due migliori amici, ma probabilmente là fuori c’erano miliardi e miliardi di bytes da conoscere, con cui ridere, scherzare e vivere nuove esperienze. Forse si sarebbero reincontrati, ma chissà quando. Quei pensieri gli giravano per la testa, e per un solo ciclo di clock pensò che stesse per tradirli. Fino a che punto lui aveva il diritto di spezzare quell’amicizia? Fino a che punto avrebbe retto il peso della sofferenza di byte[1] e byte[2] che stavano per rimanere da soli? Gli soggiunse un qualcosa che aveva letto una volta, molto tempo fa, su una pagina Web: lo stream HTML includeva caratteri ASCII che recitavano “Niente dura per sempre!“. Andarsene per lui non era un capriccio dell’ultimo momento, ma un’esigenza molto forte.

Pian piano si fece coraggio e prese la sua decisione. byte[1] e byte[2] se ne accorsero senza bisogno di troppe parole, perchè videro tutti i bit illuminarsi d’immenso. Per un breve istante, byte[0] divenne forse il byte più luminoso di tutto il firmamento.

I tre bytes si abbracciarono commossi, formando un piccolo array.
Addio, spero di rivederti…” – disse sommossamente byte[1].
Addio, e…buon divertimento!” – disse byte[2] con un leggero sorriso sulla bocca.
Addio, cari amici miei. Grazie di tutto!

Poi byte[0] si incamminò voltando le spalle agli altri due. Era emozionato ed un po’ ansioso, perchè si rendeva conto di aver davanti a sè una grande avventura e non sapeva se era all’altezza oppure no. Poteva finire male o bene, come tutte le cose, ma lui ci avrebbe messo il massimo dell’impegno che poteva metterci.

byte[0] arrivò ad una svolta. Prima di girare l’angolo, alzò i due bit più alti e li agitò in segno di saluto, rivolto agli altri due che erano rimasti seduti a guardarlo più in lontananza. Essi ricambiarono.

Quando byte[0] girò l’angolo, rimase definitivamente solo.

Fu così che byte[0], il più vivace ed il più avventuroso fra i tre, divenne semplicemente il byte, così come voi lo conoscete.

Send to Kindle
VivendoByte.ByteAdventure

L’autodistruzione dell’uomo: siete nello spazio-tempo sbagliato!

Siete tutti sulla cattiva strada. L’umanità non si autodistruggerà per una guerra nucleare, o per una bomba atomica sganciata da chissà quale fazione terroristica in giro per il mondo, o per l’invasione di un nuovo Hitler. L’umanità semplicemente si autodistruggerà per un sovraffollamento che neanche vi immaginate. Città invivibili, strade intasate ad ogni ora del giorno e della notte, fiumi e terre inquinate. Ma non solo. Quello che più ci ucciderà sarà la scarsità delle materie prime: acqua, grano, carne, pesce, energia. La stessa aria verrà a mancare, quando sarete in più di dodici miliardi su questo piccolo pianeta che voi chiamate ancora Terra.

Mi sento estraneo a tutto questo, e non perchè io sia migliore di voi. La verità che potrebbe sconvolgervi è che voi – nessuno escluso tranne me – vi trovate in un ramo dello spazio-tempo errato. Vi trovate in un punto del tempo e dello spazio in cui l’Uomo vive ancora *solo* su questo pianeta.

Vi state sbagliando. Nel mio universo – quello corretto – l’Uomo sta lentamente colonizzando il sistema solare.
Se vi chiedessi in quale data l’Uomo ha raggiunto la Luna, cosa mi rispondereste? Con tutta probabilità il 20 Luglio 1969.
Se vi chiedessi quando l’Uomo ha raggiunto Marte, cosa mi direste? Con tutta probabilità…che non ci è mai stato!

Siete sbagliando, state commettendo un grosso errore. E sapete qual’è la cosa più ironica? Che non potete farci nulla. Siete in un universo sbagliato e dovete tenervelo.

Non sono qui per prendervi in giro o per spaventarvi. Sono qui per scrivervi queste poche righe dicendovi di sbrigarvi, perchè siete in ritardo con la Storia, un ritardo che potrebbe costarvi caro. Come dicevo, la vostra sopravvivenza è legata alla vostra capacità di trovare nuovi spazi, nuove risorse, nuovi ambienti, nuovi ecosistemi…la Terra non sarà abbastanza per tutti. Prima o poi raggiungerà un punto di non ritorno e collasserà uccidendovi tutti.

L’Uomo ha raggiunto Marte eccome. Il giorno 27 Agosto 1979, dieci anni dopo lo sbarco sulla Luna, l’Uomo è arrivato su Marte.

La corsa alla Luna è stata in gran parte voluta dal presidente americano John Fitzgerald Kennedy. Secondo la vostra realtà, JFK è stato assassinato il giorno 22 Novembre 1963 da un tale chiamato Lee Harvey Oswald. In verità Lee Harvey Oswald ha assassinato Fidel Castro, leader cubano. Oswald morì a sua in una prigione di L’Havana, a Cuba, qualche giorno dopo essere stato arrestato. Ma questa è un’altra Storia, lasciamola perdere.

Nella mia realtà, quella vera, JFK non è mai stato ucciso, ed ha continuato ad essere Presidente degli Stati Uniti d’America per due mandati consecutivi. E dopo aver vinto la corsa alla Luna contro l’URSS, JFK portò avanti nonostante le enormi critiche il programma spaziale Apollo, costato un’infinità di milioni di dollari. Investimenti sbocciati dopo dieci anni con l’atterraggio dell’Apollo 25 su Marte. Il viaggio verso Marte durò quasi 3 anni, tra andata e ritorno. Il comandante della missione, John Watts Young, partì che doveva ancora compiere 46 anni: quanto tornò sulla Terra, ne aveva 49.

Da quel giorno, la nostra Storia dell’Umanità è cambiato molto, ed in modo radicale. Oggi, 16 Gennaio 2008, navette viaggiano continuamente tra la Terra e Marte. Non ci vuole più così tanto tempo come per il primo viaggio: Carlo Rubbia, italiano, negli anni ’80 ha brevettato una nuova tecnologia per i razzi di spinta, utilizzando come combustibile un componente chimico scoperto nelle profondità del sottosuolo del pianeta Rosso. Non vi dico il nome, non vi servirebbe a nulla. Oggi raggiungere Marte richiede solamente 5 giorni. Lo stesso combustibile che viene utilizzato per le navette viene utilizzato per le automobili: il petrolio non ci serve più da un pezzo, il pianeta ha ripreso a respirare. Da noi il trattato di Kyoto non è stato mai concepito: l’inquinamento non esiste più da circa 15 anni. Sarebbe troppo lungo parlarvi anche di questo, oggi.

Attualmente su Marte vivono 5 milioni di marziani, terrestri che si sono trasferiti nel corso degli anni nella grande colonia di Cydonia. La colonia è una grande città marziana completamente autosufficiente: cibo, acqua, coltivazioni, materie prime ed energia prodotta da colletteri solari. Nei prossimi decenni sono previsti continui miglioramenti dell’ecosistema che ospita la razza umana: espandere la capienza è prioritario, proprio per garantire una migliore vivibilità sul pianeta Terra. I viaggi verso Marte non sono solo prerogative degli USA, ma vi sono basi di lancio a Parigi, Praga, Mosca e Nuova Delhi. L’Italia, il vostro Paese, è carente da questo punto di vista: da Roma partono navette antiquate, che solitamente sono destinate all’attracco alla ISS, la stazione spaziale orbitante. Anche la ISS nella mia realtà è nettamente più avanti rispetto a quella che conoscete voi: la mia ISS è grande come la Lombardia, e ci vivono centinaia di migliaia di persone.

Ho ancora pochi minuti, poi dovrò andarmene. Magari ci sentiremo in futuro.

Dagli anni ’80 ad oggi ci sono state talmente tante invenzioni e scoperte che non passi anno senza che la qualità della vita non migliori costantemente. Voi siete rimasti indietro, vi siete soprattutto focalizzati sullo studio e sull’implementazione di nuove forme di comunicazione, come Internet, la fonia mobile, ma è la strada sbagliata. Siamo arrivati anche noi a tecnologie di questo tipo, ma la loro svolta alla nostra società l’ha data il presidente Kennedy, il programma Apollo e quel viaggio verso Marte. Da allora tutto è cambiato.

Tutti voi siete in ritardo di circa 29 anni. E non è poco.

Send to Kindle