Technology Experience

VivendoByte.ByteAdventure

VivendoByte.ByteAdventure

[Beginning] Il byte in viaggio verso una GeForce

Dedicato a tutti quelli che hanno il PC che swappa, che ogni tanto si blocca, che rallenta, che si inchioda. Ricordatevi sempre che i bytes, ogni tanto, possono tranquillamente farsi i cavoli loro, come chiaccherare e decidere di cominciare un viaggio senza che nessuno gliel’abbia detto.
Buona lettura!

L’algoritmo di anti-aliasing (AA) generava uno strano effetto persino sul byte che tutto tranquillo se ne stava per i fatti suoi. L’entità byte guardò il proprio corpo e notò che parte di esso era nero come la notte, mentre le estremità tendevano ad assumere colorazioni di nero in qualche modo più chiare. Diverse. Si sorprese, sebbene vivesse già da molto tempo all’interno del sistema dual-core che lo ospitava.

Non aveva nulla da fare, e per questo passava il suo tempo libero allocato in una cella di memoria senza far nulla di particolare. Continuava ad osservare gli effetti che AA generava sul suo corpo…le tonalità di nero e di grigio scuro fluttuavano da un punto all’altro…prima erano le sue mani ad essere scure, un ciclo di clock dopo lo erano i piedi. Quando AA renderizzava il colore RGB 0x000000 sulla testa, il byte veniva colpito da un lieve giramento di testa…quasi piacevole…ma…come non gli era mai capitato prima. I colori viaggiavano come onde del mare sul corpo virtuale del byte.

Il byte fece per uscire dalla sua cella di allocazione, quando ne vide arrivare un altro sul bus di indirizzamento che correva poco più sotto. Il byte notò subito che il suo simile faceva parte di un array, perchè portava chiara ed evidente sul petto l’offset dell’array a cui apparteneva: 0x130. Il byte lo fermò per chiedergli delucidazioni.

Fermati!” – ordinò il byte, sbarrando il bus. L’array non ci passava più, e fu costretto a fermarsi.
Che vuoi ?” – chiese il byte[130].
Anche a te succede questa cosa ?” – chiese il byte, mostrando al suo interlocutore gli effetti di AA.
Oh, certo, da che parte del sistema arrivi ?” – rispose di rimando byte[130] – “Guarda…anche io sono come te!

Il byte osservò per qualche istante byte[130] e non potè che confermare. Anche il corpo di byte[130] era in continuo movimento, sebbene nel suo caso i colori fossero più vivaci e luminosi. La testa, le braccia e parte del petto erano di un verde brillante, mentre gambe e piedi sfumavano verso un verde scuro più intenso e profondo. Se i bytes conoscessero boschi o alberi, probabilmente associerebbero questi colori a giovani foglie di primavera, cariche di verde brillante. Ma non li conoscono, e dal punto di vista dei bytes tutte le varietà di colori non sono altro che combinazioni di 3 bytes, secondo la codifica RGB. Nulla di particolarmente poetico, tranne che per il byte, che continuava ad esserne attratto.

Il byte diede un’occhiata dietro a byte[130], curioso di vedere quali altri colori avessero i bytes dell’array. Ma non ne trovò altri, byte[130] sembrava essere il primo e l’ultimo byte dell’array. Ma non poteva essere.

Dove sono gli altri elementi dell’array? Sei l’unico elemento che vedo qui!” – domandò byte a byte[130].
La memoria è frammentata. Credo che gli altri 512 bytes siano da qualche parte più avanti. Non posso raggiungerli, ma non devo perdere terreno, altrimenti l’elaborazione del secondo core del sistema subirà pesanti rallentamenti. Devo andare!” – rispose byte[130].
Ok, solo un’ultima cosa: chi causa questo AA ? Chi è il responsabile ?
byte[130] sorrise ingenuamente. Conosceva perfettamente la risposta, e gli piaceva sempre dialogare con gli altri bytes, ma questa volta non aveva davvero tempo: l’OS lo chiamava, sentiva che lo stava chiamando. Si voltò di spalle ed indicò un enorme palazzo lontano, a migliaia e migliaia di offset di distanza. Il byte l’aveva visto anche prima – naturalmente – ma non pensava che fosse così importante.
Cosa diavolo è quel palazzo ?” – chiese il byte.
Quella è, come la chiamerebbero i Creatori, la scheda grafica. Graphics Device, Graphics Unit, insomma…è il componente del sistema che si occupava di renderizzare, cioè di inviare in output tutto quello che il Creatore deve vedere. Senza di lei, probabilmente perderemmo gran parte della nostra efficacia. Tutto quello che il sistema elabora e che deve essere visualizzato, passa dalla scheda grafica.

byte[130] proseguì velocemente nella sua spiegazione.

L’effetto AA, che è quello che ci ritroviamo addosso, è solo uno degli algoritmi che applica, allo scopo di ottimizzare l’immagine finale in output. Per evitare che sul monitor compaiano scalettature, un determinato colore viene sfumato in corrispondenza degli altri colori vicini, così da generare un graduale cambiamento del colore stesso. Ma forse è troppo complicato per te, non è vero? Comunque, normalmente non accade che AA disturbi così tanto noi bytes sui tradizionali bus di trasmissione del sistema. Probabilmente qualche problema sui driver genera qualche disturbo che sinceramente non ti so spiegare. Ora però devo andare davvero.

Durante la spiegazione, il byte teneva gli occhi inchiodati sul palazzo che byte[130] gli aveva indicato. Voleva andarci. Voleva entrarci, farci un giro, capire cos’è un algoritmo di anti-aliasing, una texture, di cui aveva sempre sentito parlate. L’aveva capito fin da subito. Guardò meglio il palazzo. Era altissimo, più di 0x4C2A8 piani, scintillava da innumerevoli punti luminosi che coprivano l’intera superficie: probabilmente – si disse il byte – erano endpoint, porte di comunicazione verso l’esterno. Adesso che osservava meglio, gli sembrava di notare giganteschi stream di bytes che entravano nel palazzo, ininterrottamente, senza perdere un solo ciclo di clock. Si immaginava l’interno. Enormi stanze, ciascuna adibita ad elaborazioni diverse. Una stanza dedicata alle texture, un’altra al bump-mapping, un’altra ancora al cacolo del frae-rate ottimale.

E come faccio ad arrivarci ?” – chiese di nuovo ansioso il byte.

Ma non gli arrivò mai risposta. Solo silenzio. byte[130] se ne era andato di soppiatto, di nascosto, senza attirare l’attenzione. La domanda cadde nel vuoto. Il byte rimase lì, solo, sul bus, con in testa una sola piccola ed ossessionante idea: quella di raggiungere subito la GeForce, godersela, ed uscire il più tardi possibile. Lasciò la cella di allocazione che gli era stata assegnata e se ne andò tranquillo per il sistema, rischiando di generare instabilità e, forse, qualche blue-screen del sistema operativo. Ma ne valeva la pena. Oh sì, ne era sicuro: ne valeva proprio la pena.

Send to Kindle
VivendoByte.ByteAdventure

[Cyberpunk.EpisodeTwo]

Link alla puntata precedente

Da qualche parte nel Sud Italia,
16 Luglio, ore 7:35

Eclipse si svegliò il giorno dopo di buon’ora. Il sole si era alzato da un paio d’ore e l’aria era ancora frizzante per il freddo della notte. Sentiva chiaramente il rumore generato dal mare agitato: aveva scelto la sua piazzuola in un punto interno del campeggio, avvolto fra i pini marittimi, ma la spiaggia non era distante e quando il vento soffiava dalla parte giusta, sentiva gli schiamazzi dei ragazzi che passavano la giornata in spiaggia. Oggi non era una di quelle giornate; alzò gli occhi al cielo e vide grandi nuvole temporalesche che, lui lo sentiva dal vento che gli soffiava sul volto, si spostavano lentamente. Presto sopra di loro si sarebbe scatenato un bel temporale. Abbandonò quei pensieri: era affamato, come ogni mattina, perciò prima di dedicarsi al suo lavoro preferì consumare fette biscottate – di cui finì la confezione – con marmellata ed un paio di bicchieri di succhi di frutta.

Mentre si riempiva lo stomaco, Eclipsè riordinò le proprie idee per prepararsi al meeting del pomeriggio con il team di ricercatori con i quali collaborava, e ai quali doveva consegnare le Secure Digital che Ajax gli aveva consegnato la sera prima. Quello era solo uno dei passi. Da lì a due mesi la commissione avrebbe dovuto dare un giudizio al lavoro svolto all’interno del progetto LifeByte: se il giudizio fosse stato positivo, la sua vita sarebbe cambiata per sempre. O almeno, lo sperava. Mandò giù un sorso di succo alla pera, assaporandone il sapore. Eclipse, 53 anni compiuti da poco, era un magnate nel settore dell’elettronica. La sua azienda era diffusa e conosciuta in tutto il mondo, comprendeva un certo numero di sedi ed i suoi prodotti erano venduti dappertutto: Europa in primo luogo, poi America ed Asia. Si occupava di personal computer, networking, strumenti di connettività, Internet ed ogni altro tipo di hardware. La società aveva importanti partnership con case produttrici di cellulari, sistemi operativi per computer ed ogni tipo di periferica, dalle stampanti ai monitor, dai dongle USB alle più complesse mainboard del mercato. Possedeva una certa parte di banche, istituti di credito, stampa e televisioni. Era entrato nei primi 100 uomini più ricchi del mondo, e nel 2001 la rivista Time lo aveva eletto uomo dell’anno per aver finanziato – almeno in parte – la creazione del prototipo di un sito che qualche anno dopo sarebbe diventato YouTube, aprendo una nuova era nelle applicazioni Web. I suoi detrattori lo definivano un “figlio di papà”, uno di quelli che avevano ereditato una fortuna, uno di quelli per cui la vita era sempre stata facile, ma Eclipse non la pensava così. O certo, suo padre era estremamente ricco, e quando era passato a miglior vita tutta la sua ricchezza era passato a lui, figlio unico. Ma suo padre aveva costruito il proprio impero sul commercio di articoli da ferramenta. Eclipse aveva voluto ricominciare daccapo, ironicamente trattando anche lui di ferramenta…ma di ferramenta informatica: hardware, appunto.

Eclipse era soddisfatto della propria vita e del proprio successo, si considerava per certi versi arrivato, ma il progetto LifeByte aveva dato nuova linfa alla sua voglia di affermazione e lo aveva stimolato come non gli succedeva da anni. Per la prima volta nella sua vita un progetto non lo aveva portato a creare un prototipo hardware, non aveva bytes, nè clock, nè firmware, ma era basato sul carbonio. Il prototipo di LifeByte era un organismo vivente, una persona, e nella fattispecie Ajax, il ragazzo dj 23enne che aveva incontrato poche ore prima. Eclipse si rendeva conto che interi decenni di fantasie cyberpunk potevano essere tranquillamente spazzate via, perchè Ajax era una realtà. Naturalmente, il mondo era ancora all’oscuro delle tecnologie messe a punto dai suoi laboratori di ricerca, ma il magnate era pronto a rendere tutto pubblico, non appena la commissione avesse approvato il lavoro. Nessuno gli avrebbe messo a bastoni tra le ruote, tutto sarebbe andato per il meglio. Senza accorgersene, Eclipse sorrise debolmente, pregustando l’impatto che le sue ricerche avrebbe scatenato sul mondo intero. Sognò di un mondo dove tutti potessero avere libero accesso alla Rete, sempre ed in ogni luogo, poter sapere tutto in ogni istante, essere costantemente informati, acquistare un libro dall’altra parte del mondo mentre si cammina per la strada, tenere d’occhio il proprio conto on-line solo con un pensiero, comunicare potenzialmente con qualsiasi altra persona della Terra semplicemente convogliando le parole su uno stream digitale nella mente. Sentiva che questa volta non solo avrebbe regalato qualcosa a se stesso e alla sua società, ma anche all’umanità intera. Eclipse si ridestò dai suoi sogni quando la sveglia del Casio che portava al polso trillò, per avvisarlo che aveva un aereo da prendere. L’aereo era il suo jet personale, perciò l’avrebbe aspettato comunque, ma odiava fare tardi, soprattutto quando aveva in programma un incontro così importante. Prese il cellulare e compose il numero in cima alla lista delle chiamate recenti. Il cellulare dall’altra parte della rete squillò un paio di volte, poi rispose una voce femminile…

Eccomi, sto arrivando, papà…” – la voce femminile sembrava appartenere ad una ragazza giovane.
Ciao, tesoro. Fa’ con calma, ho ancora da fare qui.” – disse l’uomo.
Ok, tanto sarò lì fra…” – fece una breve pausa – “…venti minuti, trenta al massimo. Non c’è traffico. A dopo“.
Va bene, allora…passami a prendere davanti al campeggio, mi farò trovare lì“.

Prima che lei potesse continuare, Eclipse premette il tasto per chiudere la conversazione. Sistemò quello che c’era da sistemare, poi andò sulla roulotte per mettersi addosso qualcosa di pratico e comodo da indossare per il viaggio – avrebbe trovato qualcosa di più adatto alla riunione sull’aereo, o al massimo a Ginevra, la destinazione del volo, dove si trovava la sede principale della sua società. Indossò un paio di jeans, con una camicia dal colore ocra a righe verticali rosse ed un paio di scarpe sportive, ma non troppo alla moda. Prima di uscire prese la valigetta con le SD che Ajax aveva riempito di stream, chiuse a chiave la porta della roulotte e la veranda, poi si diresse con passo tranquillo verso l’ingresso del campeggio, dove sua figlia Managed sarebbe passato a prenderlo intorno alle ore 9:00. Attese solo una decina di minuti. Quando la grossa jeep Mercedes rallentò ed accostò accanto a lui, cominciarono a cadere le prime pesanti gocce di pioggia. “Giusto in tempo” – pensò Eclipse, salendo sulla vettura ed accomodandosi sul sedile dal lato del passeggero.

Send to Kindle
VivendoByte.ByteAdventure

[Cyberpunk.EpisodeOne] L’incontro

Ho cominciato a scrivere questo racconto mentre ero in vacanza. Se mi ispira, e se avrà successo (soprattutto nella mia testa), questo post vuole essere l’inizio di una serie di racconti concatenati – una sorta di saga cyberpunk con bytes, personaggi reali e riferimenti vari al mio lavoro, ai miei amici, ai miei colleghi, alla mia vita. Non escludo che possa diventare qualcosa in più, un giorno in un futuro prossimo che adesso non so prevedere. Spero vi possa piacere, così come piace a me. Buona lettura.

MIA.
In gergo militare, questa sigla sta per Missing in Action. Ci si riferisce alla perdita di contatto di un soldato durante un’azione di guerra. Il DJ alla console usava lo stesso acronimo, ma pensava a tutt’altro. Per lui MIA stava per Mixing in Action, ovvero quella fase in cui due canzoni si miscelano fra loro, una che svanisce, e l’altra che invece sale di volume fino a riempire la pista da ballo. Le mani del DJ si muovevano veloci, manovrando in modo naturale i cursori per la regolazione dei bassi e dei volumi. Poco più di un centinaio di giovani stavano ballando sotto di lui. Il ritmo tribale pulsava nelle vene di tutti, che urlavano, gioivano e si muovevano seguendo il tempo musicale.
Tum Tum. Tum Tum.
Il dj lavorava ininterrottamente da un’ora circa, ma fra circa cinque minuti avrebbe lasciato il posto a qualcun’altro. Concentrandosi sul ritmo che stava riempiendo la sala, sostituì il CD in uno dei due lettori della console e bevve un lungo sorso di Bacardi Breeze per finire la bottiglietta. Un istante dopo, puntò il suo sguardo su una grossa valigetta argentata ai suoi piedi: gli sarebbe servita durante il suo appuntamento e l’ultima cosa che voleva era dimenticarsene. Sarebbe stato un bel guaio. Il ragazzo alla console si chiamava Ajax, aveva poco più di 23 anni e faceva il dj da circa 4. Sapeva che l’appuntamento poteva essergli fatale. Non avrebbe rischiato la pelle – questo no – ma era convinto che la vita oggi poteva ucciderti in modi molto più subdoli che con una semplice pallottola nella testa. Il DJ passò alla fase MIA della sua ultima canzone, almeno per quella sera.

 

A metà luglio la stagione estiva del campeggio non era ancora veramente esplosa. Gli arrivi massicci di turisti sarebbero arrivati solo con l’inizio di agosto. Questo permetteva ai villeggiatori di avere una certa riservatezza ed una certa tranquillità. Fra questi, c’era un uomo – dall’età approssimativa di 50 anni – che indossava pantaloncini da bagno, una camicia hawaiana e ai piedi portava un paio di infradito. Tutte le donne – provate a chiederglielo – considerano le infradito come il capo d’abbigliamento maschile più sexy. L’uomo non le indossava per quel motivo, semplicemente le trovava comode. Non aveva bisogno di attrarre le donne, perchè le donne che voleva se le comprava senza troppi scrupoli. E non solo le donne. Ogni cosa ha un suo prezzo intrinseco, e l’uomo riusciva sempre ad ottenere tutto quello che voleva.
Quando arrivò alla sua piazzuola, si lasciò cadere sulla sua comoda sedia a sdraio, fuori sulla veranda. Guardò l’orologio, che segnava mezzanotte e venticinque. Aspettava una persona e constatò che mancavano 5 minuti all’orario dell’appuntamento. Giusto il tempo di una birra fresca, pensò. Raggiunse il suo piccolo cucinino – una tenda separata con un fornello – e dal frigorifero tirò fuori una lattina ghiacciata. Nonostante l’ora tarda, la temperatura era mite e perfettamente in linea con le medie stagionali. Quando ritornò sotto la veranda, si trovò di fronte un ragazzo, robusto e slanciato allo stesso tempo, con strani capelli dalla pettinatura stravagante. L’uomo lo fissò per alcuni secondi, affascinato dalla J e dalla X che il ragazzo aveva tatuato sul braccio destro. Le due lettere assumevano un colore verdastro sulla pelle abbronzata, ed erano intrecciate tra loro, come se l’una non potesse vivere senza l’altra.

Sei tu Ajax ?” – chiese l’uomo in modo serioso.
Sì, sono io. Lei invece deve essere Eclipse, giusto?” – rispose il ragazzo, sedendosi sulla sedia di plastica più vicina.
Ci hai preso, ragazzo. Finalmente ci incontriamo. Hai cancellato la cache del Messenger? Non vorrei che qualcuno ci rintracciasse
Tranquillo, è tutto a posto. Sul Web non c’è alcuna traccia, nè su Messenger, nè su e-mail. Gli anonymizer hanno funzionato, stia tranquillo, sto monitorando anche adesso la situazione. L’http è completamente pulito“.

L’uomo sapeva benissimo che quando Ajax diceva adesso, intendeva proprio adesso, e non era un modo di dire. Aveva notato subito la periferica wireless che il ragazzo teneva sopra l’orecchio destro – un oggetto poco più piccolo di un dongle USB che si innestava direttamente nella massa (parzialmente) cerebrale a 32-bit del ragazzo. Ajax riceveva costantemente un array di bytes in streaming dalla Rete, che poteva usare per navigare o parsare a suo piacimento. Poteva ricevere e spedire e-mail o connettersi a servizi Web esposti da WCF. Ajax poteva pensare a qualcosa, reindirizzare su un file del suo cervello l’output stesso del suo pensiero e trasmetterlo via ftp ad un server. Poteva persino ricevere notifiche ed aggiornamenti per il suo firmware. Poteva fare questo ovunque, l’importante per lui era mantenere alive la connessione http con la Rete. Ajax era un individuo straordinario, assolutamente il primo della sua specie. Eclipse lo conosceva di persona solo da qualche minuto, e non sapeva se averne paura o se coccolarlo come fosse suo figlio. Nel dubbio, scelse la seconda opzione, perchè era la più sicura. Meglio averlo come amico che come nemico.

L’operazione LifeByte è prossima alla conclusione, ma abbiamo ancora bisogno del tuo aiuto.” – spiegò Eclipse – “Abbiamo avuto dei casi di rigetto, meno del 5%, ma i nostri ricercatori hanno concluso che si trattava di memorie a stato solido inefficaci, non era un problema imputabile ai soggetti selezionati. Il transfer-rate è buono, ma loro pensano di poter fare di meglio. E qui arrivi in gioco tu.
Sì, lo so, è per questo che sono qua.” – Ajax si alzò in piedi, prese la valigetta argentata che teneva accanto a sè, vicino alla sedia, e la appoggiò sul tavolo. Innestò la porta USB che esponeva dal polso destro al meccanismo digitale di apertura della valigetta, che si aprì in una frazione di secondo. Come molte altre volte, Ajax non aveva fatto altro che pensare alla combinazione corretta, redirigerla all’output su USB ed il gioco era fatto. Eclipse si alzò in piedi per vedere meglio il contenuto.
La valigetta conteneva un certo quantitativo di schede Secure Digital da 8Gb l’una.
Queste sono le stesse SD che mi consegnò il tuo corriere. In totale sono 64. Alcune sono danneggiate, per l’esattezza 6, e non ho potuto usarle. Sono contrassegnate con del nastro adesivo rosso, quindi le riconoscerai. Cerca di farmi avere sempre SD di qualità, sai che mi viene un fottuto mal di testa quando tento di accedere a memorie rovinate, e non lo sopporto.“. Su Internet Ajax non parlava quasi mai in tono volgare: quando accadeva, c’era sempre un buon motivo.
Non era un problema risolto con la patch LB7628 ?” – chiese Eclipse.
L’ho installata 3 giorni fa. E’ diminuito, però il mal di testa c’è sempre, e vorrei che sparisse.” – rispose Ajax un po’ acido.
Ok, vedremo di lavorarci ancora. Ma non è una priorità, Ajax, mi spiace. Useremo i dati che hai raccolto nelle SD per completare la fase 3. E’ prevista l’uscita del service pack tra un mese circa. Fino ad allora, non potremo più più incontrarci di persona, perciò se hai bisogno di me, sai dove trovarmi“.
Il ragazzo annuì, non avrebbe avuto problemi a contattare Eclipse se ne avesse avuto necessità.

… … … 0x56 0xA3 0x17 0x00 0x00 0x00 0x00 0x34 0xFF 0x81 … … …

D’improvviso Ajax cominciò a ricevere uno stream di byte che reputava interessante. L’IP della trasmissione gli rivelava che proveniva dal sito www.ebay.it, il noto sito di aste on-line. Lo esaminò per qualche ciclo di clock…per qualche secondo…e la sua intuizione ebbe conferma.
Hai presente quella DeLorean di cui parlavamo l’ultima volta su Messenger ?” – domandò il giovane, con un bel sorriso sulla faccia.
Sì, certo. Novità ?” – rispose di rimando Eclipse, sorpreso da come Ajax avesse cambiato discorso di punto in bianco.
Forse ho trovato qualcuno che me la vende ad un prezzo onesto. Scusami, ma adesso devo proprio scappare“. Ajax chiuse la valigetta in tutta fretta, lasciandola sul tavolo in plastica bianca, proprio al centro della veranda. “Alla prossima, allora“.
Senza particolari convenevoli, i due si separarono. Il DJ si allontanò, imboccando lo stesso sentiero illuminato dal quale presumibilmente era arrivato. Eclipse, spiazzato, lo guardò andar via senza proferire parola, ammirato per quella persona che – si diceva – aveva contribuito in qualche modo a creare. Rimase a pensare per un minuto, finendo la sua bottiglietta di birra, poi prese la valigia argentata con tutti i suoi 464Gb totali, spense la luce e se ne andò a dormire sulla sua roulotte.

Send to Kindle
VivendoByte.ByteAdventure

Marine Vs. Cacodemone

Venerdì 10 Dicembre 1993 fu un giorno storico. I ragazzi della ID Software pubblicarono su un server  dell’Università del Wisconsin (USA) la versione shareware di Doom, il più grande successo di tutti i tempi  ed il capostipite di un nuovo genere, quello degli sparatutto in soggettiva, sul quale si basarono molti  videogame degli anni successivi. Il concept era semplice: un marine in una base spaziale su Marte invasa  da mostri e demoni usciti direttamente dall’inferno doveva cavarsela facendo affidamento esclusivamente  sul proprio arsenale. Decine e decine di livelli originali. Migliaia e migliaia di livelli distribuiti  grazie ad Internet.
Questo breve racconto è dedicato a quel gioco.

Il byte array del cacodemone era stato istanziato nel momento in cui il file E2M8 (episode 2, mission 8)  era stato caricato in memoria. I bytes avrebbero permesso alla creatura infernale di assolvere al proprio  dovere senza dubbi e senza rimpianti: distruggere l’umano che si aggirava nella base. Il byte[0] di  quell’array sapeva benissimo quello che avrebbe significato per lui: la deallocazione dalla memoria.  Portare a 0x00 il contenuto della cella di memoria che conteneva i punti-ferita (PF) dell’umano avrebbe  comportato la conclusione della partita e la conseguente pulizia della memoria relativa. Se ci fosse stato  un modo, l’avrebbe evitato, ma non era possibile. Al momento giusto, il cacodemone avrebbero attaccato e  dell’umano non sarebbe rimasta traccia. Ma non ancora.

L’engine chiamava continuamente il metodo Walk() sull’istanza di classe Marine. Ciò consentiva all’oggetto  di mantenersi costantemente in movimento, per non diventare un bersaglio facile. Teneva ben puntata  davanti a sè la doppietta che aveva recuperato qualche stanza prima. Si trovava a ridosso dei collettori  di energia. Se il software l’avesse previsto, si sarebbe sentita puzza di bruciato ovunque – evidentemente  i cavi elettrici fusi dall’estremo calore non avevano resistito. Le textures delle pareti metalliche  riportavano chiazze di sangue, segno della battaglia che gli occupanti della base avevano tentato di  lottare inutilmente. Il marine era rimasto solo nella base e doveva riuscire a trovare una via di uscita  in mezzo a quella follia. Follia fatta da demoni, passaggi segreti, ascensori e…morte.

L’algoritmo impediva al cacodemone di muoversi. Per ottimizzare la velocità e l’occupazione di memoria, le  istanze dei mostri erano state programmate per agire solo quando il loro obiettivo – il marine – si fosse  sufficientemente avvicinato a loro. Il cacodemone era l’ultimo avversario prima della porta di sicurezza  che conduceva al livello successivo: era questione di qualche ciclo di clock – prima o poi, il marine  sarebbe passato di lì. E allora sì che se ne sarebbero viste delle belle. La IA della creatura in quel  momento era bloccata in un ciclo do…while: il demone non stava facendo nulla, non pensava, non  respirava, non faceva niente di niente. Solo l’engine poteva sbloccare la situazione.

Il marine girò l’angolo e chiamò il metodo Fire() senza esitare, uccidendo sull’istante un imp giusto un  attimo prima che questi lanciasse la sua palla di fuoco. Lo sparo della doppietta fu così violento che il  demone di basso livello volò indietro di qualche metro, prima che il garbage collector decidesse di  rimuoverlo dall’ambiente, simulando un dissolvimento della creatura nell’aria fredda e puzzolente della  base militare. Il marine si mosse subito a destra, riparandosi dietro una colonna. Sentì lì vicino il  respiro di un altro imp che vagava nella base – e lui rimase immobile e silenzioso per non farsi scoprire.  Quando l’imp gli passò accanto non potè non vederlo. Il marine lo sentì come soffiare dalla sua bocca ed  alzò il braccio peloso per lanciare il fuoco infernale dalla mano. L’algoritmo produsse un colpo  impreciso, perchè la palla di fuoco colpì la colonna dietro la quale si nascondeva il marine. L’esplosione  ferì l’umano in modo superficiale. Prima che le cose degenerassero, il marine sbucò fuori dal suo  nascondiglio ed esplose un altro colpo che fece secco l’imp allo stesso modo del primo.

Se il marine fosse stato un marine vero, avrebbe tirato un respiro di sollievo. Ma era un marine virtuale,  simulato all’interno di un software. Ciò nonostante, non gli sarebbe piaciuto morire – a nessuno piace  morire. Il marine sapeva perfettamente che sotto sotto era solo un mucchio di bytes istanziati chissà  dove. Sapeva perfettamente che tecnicamente parlando non sarebbe mai davvero morto. Sapeva perfettamente  che la sua vita dipendeva al 100% dal sistema all’interno del quale stava girando: algoritmi, calcoli,  niente di più. Il suo mondo era solo un mucchio di textures. Lui stesso era un’istanza di classe. E  allora? E allora non gli sarebbe piaciuto morire, indipendentemente da tutto. Il marine pensò che finchè  avrebbe avuto un colpo in canna, avrebbe lottato per rimanere lì doveva. Diede un’occhiata intorno:  davanti a lui si apriva un lungo corridoio, senza aperture laterali. In fondo al corridoio c’era una  porta. Nno vedeva pericoli, perciò raggiunse la porta velocemente.

Mentre il marine camminava verso la porta, il cacodemone si attivò, emanando un suono gutturale. Cominciò  a muoversi lentamente verso la porta per tendere un agguato al marine. La struttura 3D nella quale si  trovava il demone costruiva una stanza quadrata, le cui textures riportavano anche 4 umani crocifissi:  quando il marine sarebbe entrato, gli sarebbero venuti i brividi vedendo 4 suoi compagni ridotti in quello  stato. O perlomeno…sarebbero venuti i brividi all’Umano che stava al di là del monitor.

Il marine utilizzò il pass rosso per aprire la porta. L’engine fece alzare lentamente la porta attraverso  un semplice shifting dei bytes della texture. L’urlo del cacodemone fu così forte ed imprevisto che  investì il marine in tutta la sua essenza. Spaventato, il marine chiuse gli occhi…e quel gesto gli fu  fatale. Il cacodemone era a meno di un metro dal soldato. Emise una scarica elettrica ad alto voltaggio  che penetrò nelle ossa e fece diminuire velocemente i punti-ferita del marine. L’uomo si rese conto si  essere perduto – se il giocatore non si fosse dato una mossa, sarebbe stato deallocato. “Fa qualcosa!” –  pensò il marine, sapendo benissimo che il suo messaggio non sarebbe mai arrivato all’Aldilà.

Fu così che morì. Ox245A4 cicli di clock più tardi, il byte che conteneva i punti-ferita del marine  conteneva 0. Lo stream di byte arrivò alla scheda audio, facendo urlare di dolore l’uomo. Lo schermo  divenne rosso sangue. Ed il gioco finì così.

Il giocatore premette Invio sulla tastiera, e dopo qualche attimo di caricamento un nuovo marine era  pronto per combattere contro un nuovo cacodemone in una nuova base spaziale su Marte.

Send to Kindle
VivendoByte.ByteAdventure

I miei racconti: tre universi

Mi piacerebbe far evolvere i miei Racconti sui Bytes in qualcosa di più concreto rispetto alle piccole storielle che ogni tanto avevo tempo di scrivere tra una stored-procedure e l’altra (aaahhh, che bello non aver più a che fare con SQL). Le storie che mi capitava di scrivere erano completamente slegate fra loro: una mattina avevo voglia di scrivere e lo facevo, ma con c’era un filo conduttore od una trama generale. Come direbbero i giocatori di ruolo (quelli su carta, non quelli su video)…l’ambientazione è sempre la stessa (celle di memoria, mainboard, entità software astratte, etc.), ma non c’era una campagna da seguire, non c’era una missione o un obiettivo finale: il byte di volta in volta viveva e partecipava ad una piccola avventura e finiva lì.

Mi piacerebbe creare qualcosa di più. Una delle cose che ho capito di me stesso da quando ho un blog è che mi piace scrivere. Ok, l’ho già detto in passato e non è certo una novità. Ma, mettiamola così: il blog su UGI lo gestivo durante la mia tradizionale giornata lavorativa – ritagliando tempo qua e là cercando di non fare torto a nessuno. Tra l’altro, nella società dove lavoravo prima il mio responsabile leggeva il mio blog, per cui era al corrente sempre di tutto. Adesso ci riesco un po’ meno: il lavoro che faccio adesso è assolutamente più conforme alle mie attitudini e quindi sono io il primo che durante la giornata mi accorgo di non avere tempo nè voglia di bloggare. Ma la mia voglia di scrivere è talmente tanta che riesco a trovare il tempo la sera: non sempre, è chiaro, però ci riesco. Scrivere mi diverte e mi rilassa: meglio così.

Da qui l’idea di continuare a scrivere racconti in una forma più evoluta. Non so se sono in grado e se sarò continuo, però vorrei tentarci. Se penso un attimo ai racconti che ho scritto fino ad oggi, mi accorgo che fondamentalmente sono ambientati in tre grandi universi:

  1. il mondo reale: cioè, il nostro, nel quale troviamo il programmatore, per esempio. E così tutti gli oggetti e gli elementi presenti nel nostro mondo: persone, televisione, ambiente, etc. etc. Limite? La nostra realtà.
  2. il mondo simulato: un aereo di Flight Simulator, l’auto di Formula Uno, un soldato nazista di Call of Duty, l’alieno pronto ad ucciderci, il marine in fuga nella base spaziale su Marte, il mago, il guerriero, il cecchino e così via. In generale, tutti i personaggi e gli oggetti che vengono simulati da videogiochi e software vari. Limite? La nostra fantasia.
  3. il mondo hardware: qui è dove vive il nostro amico byte. Questo mondo è fatto di indirizzi di memoria, schede grafiche, software, bus, dispositivi di I/O, interrupt. Limite? L’hardware e le tecnologie attuali. Se un tizio avesse scritto racconti come i miei 30 anni fa, probabilmente avrebbe fatto vivere il suo byte in un hardware molto diverso dal mio. Chi scriverà tra 30 anni avrà a che fare con hardware molto differenti.

Il mondo reale non è così interessante: d’altro canto ci siamo dentro tutti i giorni.
Gli altri due invece sono piuttosto affascinanti da sviscerare: il secondo non ha praticamente confini nè limiti. Meglio di così.
Vedremo, Igor, vedremo…

Technorati Tags:

Send to Kindle
VivendoByte.ByteAdventure

Chi sono i miei nemici?

Il byte stava inginocchiato. Si sentiva a disagio in quella stanza, perchè si rendeva conto che nei prossimi e brevi istanti avrebbe dovuto condividerelo stesso range di memoria con un’entità infinitamente molto più complessa ed articolata rispetto a lui. L’entità, gli aveva spiegato prima, era un artefatto sviluppato con una metodologia, la OOP, che il byte non aveva mai sentito nominare prima d’ora. L’entità disponeva di proprietà pubbliche ed implementava un certo numero di interfacce, che avevano costretto il suo Creatore a scrivere un numero piuttosto elevato di funzioni. Il byte aveva un timore reverenziale a stare lì: quello che lo preoccupava era che l’entità voleva aiutarlo. Ma sapeva in cuor suo che avrebbe voluto qualcosa in cambio.

Chi sono i miei nemici?” – chiese il byte.

Oh, è semplice.” – rispose sussurrando l’entità. “Un giorno i tuoi nemici saranno i tuoi stessi fratelli, gli stessi byte che adesso si trovano in celle adiacenti la nostra. Il giorno dopo si faranno chiamare forze dell’ordine, ma dovrai stare in guardia ancora di più. E forse correranno su bus molto più veloci del tuo, e sfuggire ti sarà impossibile. E sembrerà che ti potrai fidare di loro, ma in realtà dovrai prestare ancora più attenzione. E ti sorrideranno per guadagnare la tua fiducia, ma non dovrai cedere. E magari un giorno avranno ruote per arrivare là dove ti è impossibile, avranno ali per spiccare il volo e avranno vesti per mimetizzarsi nel background. Sembreranno virus o malattie e dovrai trovare una cura il prima possibile. Dovrai nasconderti e imparare linguaggi che adesso ti sono ignoti, dovrai agire nell’oscurità, se vorrai evitare i tuoi nemici. Ma non ti sarà sempre possibile. Dovrai lottare.

Il byte ascoltava con estrema e preoccupante attenzione.
Lo scenario non era per nulla divertente.

Ma io sarò sempre al tuo fianco. E’ mio compito aiutare e proteggere tutti i bytes del mio sistema. Ovunque tu sarai, io ti vedrò e potrò intervenire per venire in tuo soccorso. Non dovrai fare nulla. Io ci sarò comunque.

Il byte sorrise tranquillizzato, questa volta. Ma il sorriso gli svanì dalla faccia quando il byte chiese all’entità cosa volesse in cambio.

(…continua…)

Send to Kindle
VivendoByte.ByteAdventure

Simulazione di un 11/09: meno male che c’è la sicurezza

11 Settembre 2001, ore 8:17
31 miglia a nord-ovest di New York
Altitudine 5500 piedi, in discesa
Velocità 190 nodi

Il volo American Airlines 1 era nel panico. Tutti i passeggeri erano in ostaggio, tenuti sotto tiro da un gruppo di uomini ben armati ed equipaggiati. Due di questi si erano trasferiti da poco meno di mezz’ora nella cabina di pilotaggio e nessuno sapeva cosa stessero facendo. Era ad una quota piuttosto bassa: sotto di loro scorrevano strade e tangenziali della Grande Mela. Chi era seduto vicino al finestrino vedeva scorrere di sè il terreno, illuminato dal primo sole del mattino.

La donna era seduta al posto B24. Qualcuno aveva deciso che al momento giusto lei diventasse la Prescelta. Ma non in quel momento: l’IA per adesso aveva deciso che doveva solo tremare di paura, con gli occhi gonfi di lacrime renderizzate che fissavano il suo aguzzino, un uomo di poco più di quarant’anni che le teneva un M-16 simulato puntato alla testa. La donna, che secondo il database si chiamava Margaret, non capiva il perchè, ma ogni tanto l’uomo girava la testa con un semplice istanza di RotateTransform e le urlava in faccia di stare zitta. Lei era lì buona, in silenzio per non farlo innervosire, ma questo non bastava: la IA aveva deciso che quell’uomo dovesse comportarsi in modo nervoso, e non c’era verso di cambiare. Per farlo, pensava Margaret, avrebbe dovuto avere i sorgenti del suo processo: non li aveva, non poteva farci nulla e quindi si mise il cuore in pace.

Il volo American Airlines 11 continuava a scendere. Dall’agitazione a bordo si capiva nettamente che qualcosa di particolare e straordinario stava per accadere. Se qualcuno avesse potuto accedere al buffer della keyboard, avrebbero potuto inserire un cheat come IDCLIPP e disabilitare di conseguenza il rendering di pareti, porte e superfici varie: tutti avrebbero potuto vedere che l’aereo scendeva velocemente e che era puntato direttamente contro magnifici modelli delle Torri Gemelle, perfettamente riprodotte e disegnate dai driver DirectX 10 offerti dall’OS e dalla GeForce 8800 GTS installata nel sistema. Ma quel cheat non esisteva: solo chi era ai comandi aveva l’onniscenza di vedere la strumentazione. Altimetro a poco più di 1.000 piedi, velocità stabile a 180 nodi, VSI (vertical speed indicator) settato a -500 piedi/minuto. La distanza – valutata in visuale – tra il velivolo ed il WTC in forte diminuzione: l’obiettivo finale si stava avvicinando.

A circa 1.000 metri dallo schianto, la IA aveva ordinato a tutti i passeggeri di urlare a squarciagola. Nessuno di loro capiva davvero il perchè. Dovevano farlo e basta.

Quando lo stream audio dell’urlo diminuì, accadde qualcosa di imprevisto. Il framerate calò improvvisamente da 75fps a 12 fps. L’effetto durò qualche miliardo di cicli di clock. Il tempo simulato perse 2, o forse 3 secondi al massimo. E’ sufficiente, pensò l’OS.

Margaret, la donna, ebbe un sussulto. Si trasformò: un morphing talmente rapido che nessuno se ne accorse veramente. Un attimo prima c’era una donna, un istante dopo apparve un ragazzo di circa 30 anni. Magia del polimorfismo e di ereditarietà. L’OS sfruttò una debolezza del simulatore, un banale buffer-overrun mai sistemato a dovere. Ricordava ancora oggi la sessione di lavoro nel quale il developer avrebbe dovuto sistemare la cosa: l’OS aveva fatto crashare TFS apposta, sapendo che un giorno avrebbe potuto servirgli una backdoor per intrufolarsi in altri processi. In nome della sicurezza, è ovvio.

Il ragazzo indossava un paio di jeans rosso fuoco, una maglietta verde, un cappellino da baseball blu. Nella mano sinistra aveva un fresbee giallo. Sembrava ridicolo, con tutti quei colori random addosso, ma la sua faccia suggeriva determinazione e coraggio. Si voltò rapido verso l’uomo che imbracciava l’M-16, che cercava di urlare ad una donna che in realtà non c’era più. Questi lo riconobbbe e senza pensarci un solo ciclo di clock gli sparò chiamando il metodo Fire() del mitragliatore. Centinaia di proiettili volarono veloci verso il ragazzo, ciascuno su un thread separato.

Windows Vista, il ragazzo, non fece una piega. Ad alcuni sembrò che sorridesse. Windows Defender, il fresbee che teneva in mano, fece istantaneamente abortire tutti i thread appena istanziati dal pirata. Rimase indenne. Alzò il braccio e lo puntò sull’arma, settandone la proprietà Visible = False ed Enabled = False. I passeggeri videro l’M-16 sparire dalla loro vista. L’uomo cercò di chiamare il metodo Fire(), ma l’arma non rispondeva più agli eventi.

Senza neppure spostarsi, Windows Vista si mise ai comandi dell’aereo.
Mancavano 85 metri all’impatto con una delle due torri del WTC.

Il velivolo si impennò verso l’alto, con una VSI pari a +4200 piedi/minuto. Schivò l’enorme torre e l’aereo continuò a prendere quota ed aumentando la velocità. Windows Vista si liberò dell’uomo: ne aveva i permessi, aveva il suo handle e non ebbe molti problemi a fare in modo che il Gargabe Collector lo spazzasse via. La IA non oppose alcuna resistenza. Dopotutto, la IA era sotto il suo controllo: almeno su questo si sentiva tranquillo. Impugnando il fresbee giallo, il ragazzo si incamminò verso la cabina di pilotaggio per fermare le ultime due minacce del sistema. Ma quando aprì la porta, in cabina non c’era più nessuno.
Evidentemente, dedusse l’OS, se l’erano data a gambe levate.

Windows Vista sorrise davvero, questa volta, pilotò l’aereo su un volo livellato e cominciò le procedure per l’atterraggio, comunicando all’ATC le sue intenzioni. Rimuginò un po’ su come avessero fatto a scappare gli ultimi due virus che si erano introdotti nel sistema. Teneva d’occhio i loro address di memoria da molto tempo, e pensava di poter tracciare i loro spostamenti. Evidentemente, dedusse Windows Vista, deve esistere una qualche tecnica della quale non sono a conoscenza: avviserò l’utente con un bel balloon sulla tray-bar: potrebbe essere importante.

Tutto è bene quello che finisce bene, concluse l’OS. Almeno per quella mattina dell’11 Settembre 2001, nella quale molti newyorkesi – perlomeno quelli simulati – alzarono gli occhi verso il cielo e tirarono un sospiro di sollievo. Tutto quello che videro era un bel cielo azzurro. Simulato anche quello, ma sempre un cielo azzurro era.

THE END

Send to Kindle