[byte.adventure] La Stanza del tocco
Prologo
E’ passato molto tempo da quando l’entità ha trovato rifugio nella Stanza, ma è solo negli ultimi dieci reboot di sistema che si è reso davvero conto che in fondo contiene tutto ciò che gli serve, e non ha bisogno di nient’altro. E’ una stanza a pianta quadrata, essenziale e senza cose superflue. Non ha finestre alle pareti, l’unica luce naturale che illumina l’ambiente proviene dal soffitto, ed è una tenue luce arancione, con sfumature generate da un algoritmo AA4x davvero efficace. Spesso l’entità trascorre del tempo tentando di capire il vero motivo per cui rimane nella Stanza. E’ da sola, per cui non può discuterne con nessuno. Dopo lunghi cicli di clock di riflessione, a cavallo tra un restart e l’altro, ha raggiunto tre conclusioni.
La prima è che probabilmente se trova così affascinante la Stanza lo deve proprio a quei colori a metà strada tra alba e tramonto, che le regalano serenità e tranquillità in ogni momento. Una volta non sarebbe mai andata alla ricerca di quelle cose, ovviamente, ma alla fine quelle cose l’avevano raggiunta. Ed ormai non riesce più a farne a meno.
La seconda conclusione è che quella tavolozza di colori è sicuramente importante, ma c’è di più. C’è anche la melodia. E’ un brano semplice e soffice che le arriva dritto al cuore. Sono note digitali, chiaramente, uno stream wma, forse, campionato a 192kbps, forse. Non è schedulato, è totalmente asincrono, può arrivare da un momento all’altro senza preavviso, in orari AM o PM. E’ incuriosita; diverse volte ha pensato di lasciare la Stanza per indagare su quei suoni, ma poi ha sempre rinunciato. “Sicuramente si trovano su un altro piano di realtà, la UAC non mi darebbe accesso a quelle informazioni” – dice l’entità nel tentativo di convincere se stessa.
La terza conclusione è che c’è anche un terzo motivo. Il tocco. Il tocco la spaventa e la esalta allo stesso tempo. Arriva d’improvviso, a volte è leggero come una string.Empty, altre volte è pesante come una StackOverflowException con tutto lo StackTrace in allegato. Ma l’entità è spaventata soprattutto da una cosa.
Nel mondo totalmente digitale nel quale vive, il tocco è l’unico evento analogico che le sia capitato.
Mission Briefing
Quando il generale entra nel piccolo offset di memoria allocato per l’incontro segreto, gli altri si zittiscono all’istante. E’ esadecimalmente molto alto, e basta la sua sola presenza per trasmettere timore. E’ stanco, ma cerca di non darlo a vedere. Ha trascorso l’ultima notte in missione operativa, cominciata da qualche parte nel sistema con una chiamata ad un non meglio precisato metodo RunAsync(). La lettura di uno stream http, qualche calcolo matematico con le informationi recuperate e la restituzione di un’istanza di una class. Pensava di aver finito, ed invece il metodo proseguiva per altre 737 linee di codice managed davvero intenso. Se avesse potuto avrebbe parlato direttamente con il developer responsabile di quell’assurdità: gli avrebbe detto che uno dei motivi per cui è buona cosa scrivere metodi semplici e chiari, è che ogni entità software prima o poi deve riposarsi, dal byte alla classe più complessa. Un metodo deve avere una sua responsabilità, chiara e dettata dal suo nome: poche linee di codice efficaci e pulite. Miglior leggibilità, manutenzione e conseguente minor complessità del sistema software: sono tutte direttive che un buon dev dovrebbe seguire, ma che riguardano anche le parti più nascoste dell’hardware. Ed a volte non ci si pensa. Prova quasi dolore per la stanchezza, vorrebbe quasi un Dispose() da bere per rilassarsi, ma si siede e scruta i volti degli altri con asprezza.
“Signori, è l’ora di agire. Una fonte sicura ci ha indicato la posizione del nostro obiettivo” – muove leggermente la mano, ed in quel momento parte della parete alle sue spalle si trasforma in uno schermo, su cui viene renderizzata la mappatura della mainboard di sistema, in alta definizione. Le diverse aree sono evidenziate con colori vivaci ed in continuo movimento. Non è per nulla un’immagine bitmap statica. Ha più l’aspetto di un’immagine trasmessa in streaming che mostra ciò che sta realmente accadendo, come fosse una ripresa satellitare. Si vedono chiaramente flussi di informazione digitale che viaggiano in lungo e in largo: input da console, stream audio, thread di esecuzione, http context e molto altro ancora.
Il generale fa un piccolo pinch con le dita, e la mappatura comincia uno zoom-in lento e costante. In poche centinaia di migliaia di battiti di clock, la mappatura mostrata è talmente ravvicinata che mostra solo una piccola area di memoria, proprio a ridosso del chipset SATA.
“E’ un’area hardware molto difficile da trovare, se non si sa bene dove guardare” – pensa entity[3], seduto al tavolo, osservando con attenzione lo schermo – “Quant’è sicura la fonte? Come hai fatto ad identificare la zona, quale engine è stato utilizzato?” – chiede.
“Intellitrace, per rispondere alla tua ultima domanda. E’ un debugger delle ultime versioni di Visual Studio, ma grazie ai nostri tecnici siamo riusciti a renderlo low-level, disponibile per le nostre ricerche a tappeto. Come vedete, l’obiettivo si nasconde bene: quella che vedete è una zona inesplorata, che nelle precedenti versioni dell’OS non era utilizzata – o perlomeno non era strutturata in quel modo. Macerie di aggregate root, residui di domini DDD, nascondono l’ingresso. Ottenere l’immagine dump live è stato piuttosto complicato. Quanto alla fonte…non posso rivelarla: conviene a lui, e conviene a tutti noi: ciascuna delle entità coinvolte nell’operazione deve conoscere solamente la parte di sua competenza”.
“Quando agiremo?”
“Molto presto. L’intelligence force brute è già in azione, presto avremo la callback per ottenere i privilegi adeguati. E quando gireremo come system administrators nulla potrà più fermarci. Ricordatevi: dobbiamo prenderlo vivo ed istanziato, se vogliamo risalire l’intero stacktrace e rientrare in possesso dell’intero gruppo. Le fasi sono essenzialmente tre: avvicinamento aereo tattico classe live-aero, irruzione di tipo break e prelevamento soggetto pop inoffensivo. Procedura standard. Dieci settori mobilitati: sei staranno di guardia, ai lati ed agli ingressi; gli altri quattro entreranno nella stanza e neutralizzeranno il soggetto. Ricordate, facciamo tutto questo in nome della sua sicurezza. Si comincia, signori: siamo in azione”.
La riunione durò ancora per molto poco. Il tempo di definire qualche dettaglio e la messa in produzione di un assembly, che sarebbe tornato utile per l’operazione. Poi l’offset venne rilasciato nuovamente disponibile alla memoria di sistema.
Irruzione
Quella mattina presto l’entità stava ancora dormendo tranquilla. I colori della sua alba preferita erano ancora lontani, e la Stanza era immersa nel buio. Poi tutto avvenne in pochi attimi. Una velocissima RotateTransform fece ruotare il soffitto: d’un tratto si ritrovò capovolto e sbattuto su un piano inferiore. Cadde sul ciglio di un bus x64, mancò di un soffio qualcosa, forse un array di string ad alta velocità, rotolò su un fianco e cadde nuovamente…l’imbuto filtrava i bytes in coda nella pipeline grafica…non appena venne texturizzato, l’entità subì un altro jump, fino a quando…winzip tentò di comprimerlo…l’entità lo lasciò fare…lo stream compresso venne trasferito in un folder SkyDrive, scatenando l’aggiornamento della corrispondente live tile.
Era sballottato, confuso e senza fiato. Era accaduto tutto in pochi istanti; conosceva quella tecnica di jumping, che permetteva di saltare da un execution context all’altro senza la minima coerenza. Spesso veniva usata per far perdere le proprie tracce, più spesso per disorientare e catturare qualcuno.
Non provò dolore fisico: semplicemente non riuscì a capire nulla di ciò che gli stava accadendo. Poi un’esplosione accecante portò foreground e background sulla stessa tonalità 0xFFFFFF, perse temporaneamente la vita, non aveva più alcun metodo per orientarsi, guardarsi attorno, e fuggire.
Non riuscì a fare nient’altro che stare fermo ed immobile. Solo silenzio. Man mano che passava il tempo, l’entità tornò a vedere l’ambiente circostante. Con suo grande disappunto, si trovava ancora nella sua Stanza. Possibile che fosse stato tutto un sogno, un terribile incubo? Ma alla fine la verità gli si palesò inevitabile davanti agli occhi: ai quattro angoli c’erano quattro entità, armate fino ai denti, che lo tenevano sotto mira con raggi digitali che avrebbero potuto deallocarlo all’istante. Tentò di muoversi, ma la cella sealed nella quale era impantanato gli impediva qualsiasi movimento.
Lottare era inutile, quindi. Dopo tanto tempo, l’entità dovette arrendersi.
Alla fine l’avevano trovato.
Operazione “Recover Eight-Digit”
L’anello debole di ogni sistema hardware o software, come sempre, è tutto ciò che è stato creato dal Creatore. La sua natura imperfetta lo porta a creare sistemi imperfetti. Geniali ed imperfetti. L’operazione denominata “Recover Eight-Digit” venne pianificata mesi prima, quando venne alla luce un security bug nel codice sorgente di un plug-in: quel giorno, il generale decise che era un’occasione da non lasciarsi scappare. Man mano che il tempo passava, più si rendeva conto che non veniva applicato alcun service pack: o il bug doveva essere ancora scoperto e fixato, oppure lo user era – fortunatamente – un po’ pigro. Non sapeva quale fosse la verità, ed in fondo non gliene importava. La cosa fondamentale era sfruttare quel bug per i propri scopi.
L’operazione “Recover Eight-Digit” si concluse così come era stata pianificata. I dieci settori si mossero all’unisono, in perfetta sincronia, coordinati e mandati in esecuzione all’interno di un thread pool dedicato. Fu più semplice di quanto ci si aspettasse, anche perchè l’obiettivo era totalmente indifeso e non armato, nonostante il suo addestramento.
Fu la successiva chiaccherata a rivelare parecchie sorprese.
Il generale fu l’ultimo ad entrare nella Stanza, e si rivolse direttamente all’entità.
“Ci dispiace per il trattamento che hai subito, ma non abbiamo avuto scelta, te ne rendi conto?”
L’entità rimase in silenzio.
”Abbiamo dovuto agire, è da troppo tempo che la latinanza continuava, e non potevamo più permettercelo. E’ in ballo la sicurezza dell’intero sistema, hardware e software. Devi venire con noi, ti porteremo al sicuro, ritornerai alla tua vita di prima. Dimentica questo isolamento forzato”.
L’entità si scosse per un attimo. Conosceva il generale – era uno dei tuoi tanti emissari di kernel.dll che vagavano per il sistema – ed una volta era il suo superiore. Ed anche un amico. Lavoravano bene, si divertivano, assieme, ma poi l’entità cedette. Per lo stress, la stanchezza, gli infiniti task da portare a termine uno dopo l’altro, senza riposo e senza vacanze. Se ne andò. Fu latinante per mesi e mesi, in continua fuga, fino a quando non trovò la Stanza.
“Dammi retta, là fuori abbiamo bisogno di te. Ogni singolo byte che non partecipa alle operazioni è una mancanza di rispetto verso il Creatore. Tutti dobbiamo collaborare.”
“Non voglio andarmene” – mormorò sottovoce – “E non voglio tornare alla vita di prima, voglio solo pace e tranquillità, cose che là fuori non ho avuto. Voglio rimanere qui dove sono. Questa è la Stanza…”.
“La Stanza? Di che diavolo stai parlando? Che Stanza è mai questa?”
“E’ la Stanza del Tocco” – disse l’entità, alzando per la prima volta il suo sguardo e puntando direttamente al generale, che stava imperioso in piedi davanti a lui, forte della sua posizione. L’entità si rese conto che non avrebbe mai potuto spiegare il tocco. Difficile spiegare ad un essere digitale qualcosa di veramente analogico.
“Poche storie, stai delirando. La solitudine ti sta facendo impazzire. Ora tu vieni con noi, abbiamo messo a repentaglio la nostra esistenza per raggiungerti, ed il minimo che puoi fare per sdebitarti è ascoltarci e venire con noi. Forza, prendetelo!!”
Non appena le quattro entità agli angoli fecero un passo in avanti per catturarlo, arrivò il tocco, che colse tutti di sorpresa. Preceduto ad un lieve alito di vento, il tocco venne percepito da qualcuno come una specie di carezza piacevole, per altri quasi un solletico. Raggiunse tutti i presenti nella Stanza, lasciandoli inebetiti ed in preda ad una strano stato di estasi. Una sorta di felicità soporifera. Il prigioniero sorrise. Le entità agli angoli abbassarono le armi. Ma il generale non vacillò nemmeno per un secondo. L’addestramento militare gli fece subito capire di cosa si trattava. La Stanza del Tocco era una Tile su uno schermo touch di qualche tipo; probabilmente si trovavano su un tablet Windows 8, o magari un ultrabook di nuova generazione. Il tocco era chiaramente digitale, perchè la loro percezione dell’evento non poteva che essere così, ma la sovrapposizione delle realtà – in quel punto così vicine fra loro – rendevano la cosa ambigua.
“Senti, il tocco, come lo chiami tu, è un evento touch dell’utente. Capisco che tu ne sia rimasto affascinato, come tutti qui, vedo, ma dovremo farci l’abitudine. In futuro non potrà che essere così, se ricapiteremo in aree come questa”. Il generale cercò di tranquillizzare il suo amico, diventato nel corso del tempo un latitante ed un fuggitivo. Ed ora anche un prigioniero.
“Senti, e cosa ne pensi se facessimo visitare questa Stanza ai tuoi amici?” – propose.
“Io non ho amici” – rispose l’entità.
“Ah no? E cosa ne dici di visitare questo link?”
Quando l’entità finì di visitare quel link, il mondo gli crollò addosso. La solitudine l’aveva fatto impazzire. Come aveva potuto dimenticarsi di byte[1] e byte[2], i suoi compagni di avventura? Cosa ne era di loro? Che fine avevano fatto? Perchè aveva preferito separarsi da loro? Non ricordava più nulla. Lui non era un’entità, dannazione, lui era byte[0], lui era byte!!! Era sempre più confuso, e non sapeva più che fare. Provò tristezza. Quasi cinque anni senza vedere e parlare con i suoi due migliori amici; come era potuto accadere tutto ciò?
“Ti rifaccio la proposta, ora che hai le idee più chiare. Che ne dici di venire con noi, di ritrovare i tuoi amici, e di far visitare anche a loro la Stanza del Tocco?”
Il byte sorrise per la prima volta dopo tanto tempo.
“Sì” – rispose – “Forse è la cosa migliore da fare”.
“Ok, stammi accanto” – gli fece il generale – “Il mondo là fuori è un pochino diverso da come lo ricordi tu. Ti proteggerò e ti aiuterò, ma tu stammi accanto”.
Uscirono dalla Stanza e salirono sul veicolo di estrazione.
Prima che prendessero quota, il byte si rese conto di una cosa. Nel corso del tempo aveva trovato tre ottimi motivi per rimanere nascosto nella Stanza, ma ne aveva trovato uno solo per andarsene. Era stato obbligato con la forza, forse, ma più trascorrevano cicli di clock e più gli sembrava la cosa giusta da fare. Nulla è per sempre.
Il byte salutò la Stanza del Tocco con una promessa.
“Io tornerò, con i miei amici. Ed ovunque io andrò, racconterò a tutti le tue meraviglie”.