About 1 minute remaining…

Photo by Marcelo Leal on Unsplash

Questa mattina, prima di iniziare a lavorare, ho deciso di aggiornare il sistema operativo del mio MacBook Pro all’ultima versione disponibile. Come tutti gli aggiornamenti vengono promesse nuove strabilianti funzionalità e la correzione di una lista di vulnerabilità che ha la lunghezza di un sermone di un prete di campagna.


Clicco quindi il bottone per procedere all’aggiornamento e mi rendo conto che devo scaricare quasi cinque gigabyte di dati prima di procedere all’aggiornamento. Purtroppo poco posso fare su questo punto. Nonostante viva in una rinomata località sul lago di Como la massima velocità che mi viene concessa in download è di 100 mbit/sec e della fibra non c’è nemmeno l’ombra. Intendo la fibra quella vera, non FTTC come in realtà è disponibile qui.


Finalmente arriva il momento di iniziare l’installazione e qui si manifesta il più grande problema della informatica moderna. Problema che è conosciuto a tutti e che per anni ha funestato l’uso dei nostri personal computer. Un problema di computer science che nessuno, dico nessuno, è mai stato in grado di risolvere in decenni di continua evoluzione su tutti gli altri fronti.


Da un lato posso scrivere programmi che fanno grande uso di intelligenza artificiale per risolvere i più disparati problemi dell’umanità, posso scrivere codice che mi permette di gestire ed automatizzare la mia azienda. Posso anche mandare un razzo sulla luna usando un computer.


Eppure non siamo ancora in grado di stimare con precisione il tempo che manca al termine della installazione di una nuova versione di un sistema operativo.


Non appena clicchi sul bottone “Riavvia” entri in un continuum spazio temporale che contraddice tutte le leggi della fisica. Il tempo non è più costante ma si dilata e si restringe secondo regole che sono impossibili da determinare.


Il messaggio “20 minuti al termine della installazione” può scomparire in pochi secondi del mondo reale con un improvviso balzo in avanti della barra di avanzamento. Allo stesso modo il messaggio “About a minute remaining…” può rimanere impresso sullo schermo sino a danneggiare per sempre i pixel che lo rendono leggibile.


Bisogna necessariamente piegarsi al fatto che l’installazione di un nuovo sistema operativo è una operazione non deterministica della quale è impossibile stimare a priori la durata. E’ un salto nel buio, che più buio non si può.


Stai con gli occhi davanti all’orologio perché sai che tra sette minuti hai una conference call ed in quel momento maledici il momento in cui hai deciso di cliccare su quel bottone.


Tutto questo è spesso reso ancora peggiore dal fatto che questi aggiornamenti avvengono senza una precisa decisione dell’utente. Spegni il PC perché devi correre dalla tua fidanzata, sapendo di essere già in ritardo, ed il tuo computer ti dice che devi aspettare il completamento dell’aggiornamento.

Le macchine hanno già preso il sopravvento sulla nostra esistenza.

Risposte vecchie

Photo by Luca Bravo on Unsplash

Nel mio tempo libero sto scrivendo un po’ di codice in C# ed in particolare su Unity dove mi sto intrattenendo con lo sviluppo su Oculus Quest 2.

Ogni tanto mi viene qualche dubbio che la documentazione di Unity non riesce a fugare e per questo mi rivolgo immediatamente al buon vecchio Google che ne sa una più del diavolo.

Molto spesso molte delle risposte che appartengono all’universo della programmazione vengono da Stack Overflow.

Ora, va sottolineato il fatto che Unity cambia molto velocemente. In poco più di un mese che lo ho avuto sotto le mani ho visto passare almeno due release. Sto ovviamente evitando di parlare delle release LTS che sarebbe comunque buona norma imparare ad usare, sopratutto per un completo neofita.

Quello che noto è che le risposte su Stack Overflow hanno la naturale tendenza a non essere fresche. Guadagnano ranking su Google e sul motore stesso di Stack Overflow per la loro stessa anzianità ma, spesso, non sono più le risposte corrette in relazione alla versione del software che si sta utilizzando.

La cosa è perfettamente naturale. I contributi su Stack Overflow sono del tutto gratuiti ed è piuttosto difficile che la risposta ad un problema venga aggiornata dall’autore dopo averla scritta la prima volta. La cortesia è già la prima risposta in sé e per sé.

Questo giusto per dire che se state lavorando con del software che cambia molto velocemente, o che è appena nato, potreste non trovare le risposte che cercate così semplicemente.

Alla fine ho smesso

Photo by Justin Morgan on Unsplash

Pur essendo un utente di Gmail, sia per lavorativamente che personalmente, ho sempre preferito fare uso di un client di posta elettronica sul mio personal computer.

Questo significa che nel corso degli anni li ho provati tutti, o quasi. Nominatene uno ed è molto probabile che per qualche tempo essi siano vissuti sul mio hard disk.

Spark, Tempo, Apple Mail e non mi ricordo più quali altri. Tutto sommato non ne avevo davvero necessità. La gestione della mia posta elettronica è molto semplice. Non c’è nessuna tassonomia. Tutto sta nella mia posta in entrata o in un archivio. Per le mie necessità faccio sempre riferimento alla funzione di ricerca da un lato, ed alla possibilità di contrassegnare i messaggi dall’altro.

Per questo alla fine ho deciso che la pagina web che Google mi mette a disposizione va più che bene per me.

Questa mattina ho disinstallato il mio client di posta elettronica attuale dalla mia macchina. Non lo uso mai e la posta occupa un casino di spazio.

Le ricette semplici

Photo by Kara Eads on Unsplash

A me piace molto cucinare e negli anni sono diventato anche bravino. Mi piace spendere tempo tra i fornelli provando nuove ricette e facendo esperimenti.

Per questa ragione mi capita di guardare, in realtà piuttosto raramente, dei programmi di cucina che mi servono per farmi venire qualche idea o per imparare qualcosa di nuovo.

E’ una cosa che oramai faccio da anni e nel corso di questi anni mi pare di avere notato una certa evoluzione nelle ricette dei programmi di cucina.

Ho come l’impressione che le ricette presentate nei programmi siano diventate sempre più semplici ed alla portata di tutti. E’ molto raro vedere ricette complesse o che richiedono un numero di passaggi elevato.

E’ molto probabile che ci siano due fattori che hanno influenzato questo cambiamento.

Il primo è la durata dei programmi di intrattenimento che si è andata via via riducendo. Certo non è un trend globale ma piuttosto diffuso, almeno per quanto riguarda la mia esperienza personale. E’ quindi abbastanza evidente che non si possa condensare una ricetta complessa in un programma che deve durare trenta minuti e contenere almeno tre ricette diverse.

Il secondo credo che sia il fatto che non tutti siamo Cracco quando ci troviamo tra i fornelli e dopo avere provato un paio di ricette impossibili realizzando qualcosa di non edibile ci stufiamo e molliamo il colpo. Le ricette che vengono quindi presentate ora sono accessibili a chiunque sia in grado di fare un uovo al tegamino (che, per inciso, non è poi così banale).

Io trovo questi cambiamenti interessanti perché in un certo quale modo riflettono una attitudine e consegnano agli spettatori una esperienza che si aspettano e che possono replicare nelle mura di casa.

Una sorta di democratizzazione della cucina.

Usabilità…

Photo by Franck on Unsplash

Dopo quasi due anni di completo inutilizzo ieri mi sono trovato nella situazione di dovermi collegare al portale corporate banking di Unicredit per approvare un pagamento che superava i limiti di approvazione delle persone che normalmente se ne occupano.

Credo che proprio per il fatto che non mi ero collegato al portale da un paio di anni la banca abbia ritenuto che io fossi morto e che quindi non avessi più i diritti di accesso al portale. Infatti sono stato accolto dal piacevole messaggio “User blocked”, errore nemmeno riportato in lingua Italiana, perché tanto noi siamo internescional.

Tutto questo senza contare che l’accesso lo devi fare tramite codice OTP che viene fornito da uno di quei malefici oggetti di RSA che hanno la grande peculiarità di nascondersi come i calzini spaiati.

La prima considerazione da fare è se sia proprio necessario avere ancora questo oggetto visto che esistono infiniti modi altrettanto sicuri e molto più pratici di generare codici OTP. Per via di questo ho dovuto perdere quasi un’ora rovistando per casa alla affannosa ricerca dell’oggetto in questione. Alla fine lo ne ho ritrovato uno dei due che posseggo, esattamente come i calzini di cui sopra.

Naturalmente il portale si limita a comunicarmi che per il mio pagamento mi devo arrangiare. Non sei autorizzato all’accesso e cerca altrove il modo di metterti in contatto con noi per risolvere il problema.

Abbandono quindi la pagina di login e mi metto alla ricerca del modo attraverso il quale contattare l’assistenza clienti. Giro un pochino per il portale ed alla fine arrivo alla pagina dei contatti.

La pagina dei contatti mi evidenzia almeno quattro numeri di telefono. Due di quelli li elimino subito perché rivolti alla clientela privati. Gli altri due contengono delle sigle per me del tutto inintelligibili che fanno riferimento al tipo di rapporto che intrattengo con l’istituto di credito.

Ovviamente non ho alcuna idea di quale sia il genere di rapporto in essere e quindi, per non sapere né leggere né scrivere, parto chiamando il primo. Naturalmente sbaglio e la signorina con fare molto accondiscendente, ed anche un pochino paternalistico, mi dice di chiamare l’altro numero.

Chiamo l’altro numero e mi risponde Augusto dalla Romania. Ragazzo gentilissimo e molto preparato che mi spiega come fare per il risolvere il mio problema. Con grande rammarico mi dice che lui non ha possibilità di intervenire direttamente.

Va sottolineato che la prima cosa che mi chiede è quale browser io stia usando per effettuare l’accesso al portale. Evidentemente nel 2022 è ancora troppo presto per pretendere che un portale di banking sia in grado di funzionare con qualsiasi browser esistente sul globo terraqueo. Lasciamo stare. Augusto, perdonami, non è colpa tua ma a me stanno già girando le palle.

La procedura sembra essere la seguente:

  • Prendere contatto telefonico con il nostro referente aziendale perché sblocchi la mia utenza a livello di sistema.
  • A questo punto devo collegarmi nuovamente al portale, ma stando bene attento ad usare un personal computer diverso da quello che ho utilizzato per accedere in precedenza.
  • Dopo essermi collegato al portale devo fare finta di avere dimenticato il mio PIN di accesso per crearne uno nuovo. Ma, attenzione, devo stare attento come se camminassi in un campo minato perché se sbaglio devo ripassare dal VIA! e ricominciare da capo.

Chiedo ad una delle persone che lavorano con me di darmi il nome ed il contatto del nostro referente e faccio la figura del vecchio rincoglionito che si è dimenticato le credenziali di accesso.

Prova a chiamare il numero di cellulare indicato ma è staccato. Ci provo un’altra volta ancora senza successo. A quel punto riparte il vortice di call e videocall della giornata e ti saluto Mariuccia. Se ne parlerà lunedì.

Ripenso alla questo di dovere cambiare il personal computer dal quale effettuerò l’accesso e mi viene da piangere. Davvero? Devo cambiare personal computer, non solo il browser o, che so, svuotare cache e cancellare cookies sul mio browser attuale o, santo cielo, usare una finestra in incongnito? A questo punto mi stupisco che non mi abbia chiesto di cambiare regione per impostare un nuovo PIN di accesso.

Mah, hai voglia a parlare di trasformazione digitale…

Metaverso e superpoteri

Photo by Mehdi MeSSrro on Unsplash

Coloro che mi hanno letto in queste ultime settimane sanno che sto facendo qualche sperimento con Unity e Oculus Quest 2. Mi piace avere contezza degli argomenti di cui parliamo con i nostri clienti e per questo desidero sporcarmi le mani per comprendere le potenzialità della tecnologia utilizzate e la relativa complessità.

Come esercizio ho deciso di riprodurre in tre dimensioni la mia casa e popolarla di oggetti con i quali posso interagire.

Niente di particolarmente eccitante o complesso. Solo un esperimento.

Qualche giorno fa stavo provando l’applicazione che ho scritto ed in particolare stavo provando l’interazione con degli oggetti. Nella fattispecie l’utilizzo di un interruttore per accendere e spegnere le luci della stanza e la possibilità di prendere in mano una palla di gomma per poterla lanciare nella stanza.

Mentre stavo provando l’applicazione ho fatto una considerazione. Ma quale è il senso di riprodurre un ambiente reale su Oculus? Alla fine non basta levarsi il visore dagli occhi e vivere direttamente l’ambiente che stai cercando di replicare?

Inevitabilmente la risposta a questa domanda è sì. Non c’è nessun bisogno di farlo. E’ solo un esercizio divertente.

In realtà la risposta è anche no. Pensiamo semplicemente al fatto che potrei essere lontano da casa e potrei provare il desiderio di farmi un giro dentro le mura di casa ed interagire con degli oggetti che sono legati al mondo reale.

Dalla mia applicazione Oculus potrei interagire con l’interruttore di cui sopra e fare davvero accendere una luce nel mondo reale. Potrei toccare una delle telecamere di sicurezza installate nel mio appartamento e guardare in tempo reale cosa succede in casa. Potrei avere accesso al computer nel mio studio come se fossi fisicamente presente davanti alla scrivania.

In questo senso la realtà virtuale assume un certo senso.

Un’altra considerazione nasce dal codice che stavo scrivendo per prendere e lanciare la palla di gomma. La mia idea era di verificare il funzionamento della fisica all’interno del motore di Unity. Prendere in mano, virtualmente, la palla di gomma ha una rappresentazione “reale” del gesto? Come sono posizionate le mi dita intorno alla palla? Quando la lancio si comporta davvero come una palla di gomma e rimbalza sugli oggetti in un modo che posso considerare verosimile?

In effetti tutto mi è sembrato abbastanza reale.

Nel codice che ho scritto ho commesso un errore. Sostanzialmente ho permesso al mio io virtuale di prendere la palla anche quando la mano non è a contatto con la palla. Per un semplice errore potevo prendere in mano la palla da qualsiasi posizione semplicemente puntandola con il mio indice e premendo un bottone. Senza volerlo mi sono dotato del potere della telecinesi.

Ovviamente questo nel mondo reale non è possibile. Vederlo all’interno del mondo virtuale è stata, per me, una sorta di epifania. Grande scoperta, Alessandro. E’ ovvio che in un mondo virtuale questo è possibile.

Confesso che per me è stata una sorta di epifania. Potevo aumentare il mio io virtuale con dei superpoteri che non posseggo nella vita reale. Posso teletrasportare gli oggetti, posso passare attraverso i muri casa, posso guardare in tutta la casa senza spostarmi dalla poltrona, posso volare.

Alla fine mi sono convinto che il valore di una esperienza virtuale sia da un lato la sua capacità di rappresentare un mondo reale con efficacia e, contemporaneamente, aumentare l’esperienza del mondo virtuale con elementi e interazione che nel mondo reale non sono possibili.

In questo senso le possibilità sono infinite.

Evidentemente sono dotato di scarsa fantasia perché non ci avevo mai riflettuto prima.

Meglio tardi che mai.

Chi sono su LinkedIn

Photo by Towfiqu barbhuiya on Unsplash

Confesso che trascuro grandemente il mio profilo su LinkedIn. Credo che siano anni che non ci metto mano in maniera consistente.

Lui non se ne cura e continua a starsene lì tranquillo mentre si fa leggere da chi, mi domando per quale motivo, ricerca il mio nome tra una pagina e l’altra.

Sono perfettamente consapevole di essere contro tendenza. LinkedIn è professionalmente importante, ci puoi fare il “business”, ti serve per il tuo personal branding, ti aiuta a fare carriera e via lungo l’interminabile lista di vantaggi che potrei trarne.

La verità è che non mi interessa nulla di tutto questo. Attenzione, non si tratta di alterigia o di superiorità.

La verità è che si sta avvicinando il mio compleanno e ogni volta che questo accade mi volto indietro per riflettere su quello che è successo e guardo avanti per capire cosa voglio fare.

Vivo una situazione professionale decisamente stimolante, pure troppo. Sono veramente innamorato della azienda per la quale lavoro e per la quale, sono convinto, ho dato tanto nel corso degli ultimi due lustri. Prova ne è che in nessuna altra azienda sono durato più di cinque anni. Io sono irrequieto di natura e mi annoio in fretta. In Sketchin questo non è successo, sebbene non si possa mai dire mai.

Non ho grande interesse a fare personal branding. Negli anni le dimensioni del mio ego si sono molto ridotte e dato che non devo necessariamente vendere qualcosa a qualcuno non ne sento il bisogno. Ritengo sufficiente dimostrare che non sono un “coglione totale” e tanto mi basta. (Per la definizione di “coglione totale” fate una ricerca sul mio blog che c’è un bel post dedicato a questa categoria di persone)

Non nemmeno bisogno di fare carriera. Sto bene dove sto e, a meno che non venga cacciato per qualche motivo, intendo rimanerci. Per farmi smuovere da lì dovete usare i cannoni di Navarone o propormi una cosa che davvero mi intrippa oltre ogni misura.

Di LinkedIn mi piace il fatto che offre la possibilità di incontrare delle persone con un discreto volume di materia grigia. Persone che sono disposte ad un confronto ed ad un dialogo che non è disturbato da dinamiche economiche. Scambio di idee e di opinioni. Mi capita molto più spesso con ragazzi giovani che con coetanei.

Molte volte si stupiscono del fatto che io sia disposto a dedicargli del tempo ma non sanno che quelli sono i minuti più stimolanti di tutta la mia giornata lavorativa e non.

Alla fine LinkedIn non racconta che una infinitesima parte di quello che sono, di quello che faccio e di quello che voglio. E’ una rappresentazione fittizia che non riesce nemmeno a rappresentare bene il mio lavoro.Io sono molto di più di quelle poche decine di righe che sono a disposizione di tutti.

Ripeto, non mi interessa più di tanto.

Quindi, alla fine, su LinkedIn altro non sono che una decina di record in una tabella su un database. Nella realtà sono tutt’altra cosa. Più vera e tangibile.

Chi vuole approfondire sa dove trovarmi, persino i “coglioni totali”.

Buon compleanno, Buzz

Buzz!

Oggi Buzz, il mio labrador retriever, compie un anno di vita.

Quando è arrivato a casa pesava poco più di tre chili lo si poteva tranquillamente tenere in braccio, anche se non ha mai gradito molto questo genere di attenzioni. Oggi pesa circa quaranta chili e possiede la delicatezza di un elefante in un negozio di cristallerie.

Diciamo che la grazia non è la sua caratteristica principale, e questo nonostante la naturale eleganza della sua razza. Lui non si rende conto della sua mole e non ha nemmeno contezza di quando potrebbe fare male a qualcuno se solo lo volesse.

Buzz of San Nicolo’s End è il suo nome all’anagrafe. Nonostante questo nome altisonante è un cane che non se la tira più di tanto. I suoi unici interessi sono fare concorrenza alla mia ombra, masticare qualsiasi cosa possa essere raggiunta dalle sue mandibole, mangiare a quattro palmenti e dormire nelle pose più astruse che un cane possa assumere.

Per addormentarsi Buzz ha un suo rito. Comincia a compiere brevi cerchi su stesso e poi, di colpo, si lascia stramazzare al suolo facendo tintinnare tutti i cristalli di casa. Se hai la fortuna di essere ancora sveglio quando decide di dormire ti limiti a fare un sorriso. Se stai già dormendo fai un salto sul letto e ti svegli di soprassalto come se ci fosse stata una scossa del quinto grado della scala Richter.

Buzz russa come un taglialegna canadese e non sembra farci nemmeno troppo casa. Capita che si svegli per il suo stesso russare ma è raro.

Nel corso di quest’anno Buzz è riuscito a rosicchiare un iPhone, un Kindle, una quantità imprecisata di asciugamani, tovaglioli e strofinacci, due cuscini, due coperte e un numero imprecisato di libri, giornali e penne. Per contro non sembra particolarmente interessato a scarpe e pantofole che disdegna grandemente.

Allo stesso tempo è affascinato dagli odori dell’orto e dalle piante che lo popolano. Purtroppo il risultato è che, praticamente, non ho più un orto. Poco male. Diciamo che è una cosa in meno di cui devo occuparmi. In sostituzione c’è lui, comunque.

Buzz mangia circa 400 grammi di cibo al giorno e se fate il conto di quanto mangi in un mese vi renderete conto del fatto che la tappa per comprare quanto necessario è molto frequente.

Infatti, va detto, mantenere un cane è piuttosto impegnativo dal punto di vista economico. Cibo, veterinario, medicine, dog sitter quando serve e non se ne può fare a meno, accessori vari per la casa e per l’auto. Non dico che è come avere un figlio ma poco ci manca. Diciamo che si risparmia sui vestiti ché di quelli se ne occupa madre natura per lui.

Buzz non resiste all’acqua. Ogni occasione è buona per farsi un bagno. Questo ovviamente prevedere ingressi non autorizzati nel box doccia mentre tu stai facendo la doccia. Molto più spesso approfitta del fatto che viviamo di fronte al lago di Como e basta attraversare la strada per farsi una nuotata nelle acque del lago.

E’ un cane pigro e capita che quando si rientri da una passeggiata, a metà della via del ritorno, si metta seduto e non ne voglia sapere di muoversi. A questo punto basta pronunciare la magica parola “biscotto” perché si alzi e si incammini verso casa.

Buzz abbaia molto raramente ma ogni volta rimango stupito dalla profondità della sua voce.

Fin dai primi giorni di vita è stato educato a comportarsi bene in casa e fuori. Da questo punto di vista devo ammettere che le storie dell’orrore che ho sentito prima che arrivasse non si sono mai verificate. Cammina di fianco a me quando passeggiamo, aspetta seduto il suo cibo e non si muove prima che io gli abbia fatto il cenno di rito, quando siamo a tavola si siede di fianco a noi e non reclama nulla dalla tavola. E’ certo un cane irruente ma, tutto sommato, è ancora un cucciolo. Non riesce a contenersi quando incontra altri cani ed è sempre molto vivace quando incontra qualcuno che gli si avvicina.

Gli è concesso salire sul divano. La concessione deriva dal fatto che spesso mi ritrovo a lavora io stesso sul divano, ed averlo sdraiato di fianco a me mi piace da morire. Salire sul letto non è concesso. Questo a meno che io non desideri trascorrere qualche tempo in più sotto le coperte e non decida quindi di portarlo fuori. In quel caso lascio che si accoccoli in fondo al letto in attesa che il suo padrone si risvegli dal letargo.

E’ un cane impegnativo. In questo anno ho dovuto tarare tutti i miei comportamenti in funzione del cane ma, allo stesso tempo, gli ho insegnato ad essere un bravo compagno. Fin dai primi giorni è stato abituato a rimanere da solo per brevi periodi e non ha mai combinato alcun disastro in casa.

E’ diventato in quest’anno presenza fissa nelle mie conference call. Fa capolino con il suo capoccione quando pensa che sia stato davanti ad una webcam per troppo tempo e che sia arrivato il momento di mollare il colpo e giocare.

Sì, perché adora giocare. Potrebbe passare una intera giornata a rincorrere la sua palla o a tirare il giocattolo di corda. Non si fermerebbe mai. Fortunatamente anche in questo caso siamo riusciti ad insegnargli che anche il gioco ha un termine. Ubbidisce sempre anche se il suo sguardo mostra un certo disappunto.

Certo che muoversi con lui è come muoversi con un bimbo. Devi portarti appresso tutte le sue cose, cibo incluso. Devi chiamare i posti dove intendi recarti e verificare che i cani siano bene accetti. Quando vai al ristorante con lui devi prenotare un tavolo che sia defilato in modo da non infastidire gli altri ospiti anche se in quel ristorante il cane è benvenuto.

Richiede attenzioni, molte. E’ esigente. Ha un carattere determinato ma si riesce a dissuaderlo dalle peggiori intenzioni con semplicità.

No, avere un cane non è facile, per niente.

Eppure quando la mattina mi sveglio, ed il suo è il primo saluto che ricevo, sono felice come una pasqua. Mi piace quando si sdraia ai miei piedi quando lavoro. Adoro il suo sguardo triste, ma tipico della sua razza, quando mi vede al telefono per troppo tempo senza che gli conceda una carezza. Il suo sguardo è sempre intenso ed in quegli occhi scuri ti ci puoi perdere. Non puoi sfuggire alla sua zampa quando lo ignori per quello che lui ritiene essere un tempo troppo lungo. In quei casi ti viene a cercare ed è difficile riuscire ad ignorarlo.

E’ un cane affettuoso anche se desidera i suoi spazi e la sua solitudine. Un pochino deve avere preso dal suo padrone in questo senso.

In quest’anno ha combinato la sua buona dose di disastri ma la decisione di avere un cane a casa è stata una delle migliori decisioni della mia vita.

Se potete, fatelo. Non ve ne pentirete.

Parlare da soli fa male!

Photo by Matthew Ball on Unsplash

Questa mattina mi sono alzato presto e, senza un preciso motivo, avevo deciso di parlare di Alexa e di quanto ancora si sia lontani da un modello di interazione con l’utente che sia veramente efficace.

Mi sono reso conto di avere bisogno di una ulteriore dose di caffeina e mi sono diretto in cucina a farmi un caffè. Quando mi sono rimesso alla scrivania ho dato una occhiata alle notizie selezionate per me da Feedly, ed una in particolare ha attirato la mia attenzione.

Si tratta di un articolo di Ars Technica che potete trovare qui: Attackers can force Amazon Echos to hack themselves with self-issued commands

L’articolo parla di una pubblicazione scritta da tre autori Italiani che ha scoperto una falla nel sistema di sicurezza di Amazon Echo. Sostanzialmente quello che avviene è che Echo può rispondere a comandi che vengono impartiti da sé stesso.

Io ho sempre dubitato di coloro che parlano da soli. In primo luogo le persone in carne ed ossa, ma ancora di più gli oggetti ripieni di silicio.

Nell’articolo c’è un link alla pubblicazione vera e propria che potete trovare qui e si tratta di una lettura interessante.

In alcuni momenti provo davvero il desiderio di fare il ricercatore universatario, magari non in Italia. Questi mi sa che si divertono un sacco.

La lettura è interessante perché al di là dell’aspetto tecnico che è interessante c’è l’evidenza di un compromesso tra usabilità e sicurezza che è stato scelto durante la progettazione di Amazon Echo.

Il paper riporta questa frase:

If the attacker is near the target Echo, they can exploit the self- issue via a Bluetooth device, e.g. their smartphone: note that this operation does not require any PIN (hence, no bruteforce or other similar attacks are required), and the pairing requires approximately 25 seconds. Additionally, once paired, the Bluetooth device can connect and disconnect from Echo without any need to perform the pairing process again. Therefore, the actual attack may happen several days after the pairing (assuming the attacker uses the same paired Bluetooth device).

E’ chiarissimo che questa è una scelta fatta per non fare impazzire l’utente nell’associazione del suo device bluetooth con Amazon Echo ma è evidente che questo genera, di per sé, un problema di sicurezza.

Interessante la lista di cose che puoi far fare ad Amazon Echo sfruttando questo sistema:

  • Control Other Smart Appliances
  • Call Any Phone Number of Attacker’s Choice.
  • Buying Unwanted Items on Amazon Using the Victim’s Account.
  • Tampering the User’s Linked Calendar.
  • Impersonate Other Skills and the VPA.
  • Retrieve User Utterances.

Insomma, una discreta quantità di cosucce interessanti.

La pubblicazione è una lettura piacevole e, sebbene piuttosto tecnica, credo sia alla portata della vasta maggioranza dei miei undici lettori.

La mia ipotesi che parlare da soli faccia male è decisamente confermata, sopratutto se sei fatto di silicio e funzioni con la corrente elettrica.

Risalita

Photo by Emanuel Kionke on Unsplash

In queste ultime settimane guardavo con una certa soddisfazione la curva dei contagi giornalieri e mi compiacevo del fatto che tutto sommato la curva stava scendendo in maniera piuttosto imperiosa.

Il mio cervello si era convinto che, forse, dopo due anni di crisi si potesse arrivare alla fine di questa pandemia.

Ho il sospetto che il mio cervello sia stato troppo ottimista perché osservando il comportamento della curva nell’ultima settimana, la sua derivata prima ha cominciato a comportarsi molto male.

Ora devo cercare di convincerlo che, ancora forse, non è affatto finita e ce ne sarà ancora per un pò.

La pandemia continua, a due passi da casa c’è una guerra, ho fatto benzina come se fossi entrato da Cartier, la bolletta della luce e del gas sono impazzite. Adesso mi domando: what’s next? Già, non dimentichiamo il cambio Euro/Franco Svizzero che ci alza, in maniera del tutto gratuita, il budget di un bel sette per cento senza avere fatto una mossa.

Strumenti

Photo by Arthur Franklin on Unsplash

Questo pomeriggio ho speso un pochino del mio tempo libero per proseguire nel mio esperimento di sviluppo con Oculus Quest 2.

Mentre stavo scrivendo del codice ho compilato la mia applicazione e la ho scaricata sull’Oculus Quest 2 per fare un paio di test prima di scegliere una direzione da prendere per una funzionalità che volevo introdurre nel mio progetto.

L’applicazione è partita e mi sono trovato immerso nella rappresentazione in tre dimensioni del mio salotto. Parte dell’arredamento, il legno del parquet, le luci della stanza, le ombre.

Mi sono fermato un attimo colto dallo stupore, quasi lo stupore di un ragazzino che vede per la prima volta un treno.

Lo stupore era dovuto al fatto che ho potuto fare tutto questo senza, sostanzialmente spendere un solo euro se non quanto ho speso per l’Oculus Quest2.

In realtà se togliamo dalla equazione l’Oculus Quest e pensiamo ai nostri personal computer, questi sono diventati delle macchine per la creazione di una potenza inimmaginabile rispetto al passato.

La maggior parte degli strumenti di sviluppo sono assolutamente gratuiti. Ci sono una infinità di linguaggi che è possibile scaricare da internet senza spendere un quattrino così come ci sono una miriade di IDE che ti possono aiutare nello sviluppo. Migliaia di librerie ti permettono di fare cose impensabili. Pensiamo alla Intelligenza Artificiale od al Machine Learning tanto per citarne un paio. Anche in questo caso tutto gratuito.

Posso creare modelli in tre dimensioni grazie ad applicazioni gratuite come Blender. Blender mi permette di creare delle animazioni e, se lo volessi, dei veri e propri film animati. E’ a portata di un paio di click.

Qualsiasi computer mi permette di scrivere non appena lo tiro fuori dalla sua scatola. Quei programmi non costano nulla. Se desidero qualcosa di più evoluto ci sono decine di applicazioni per la scrittura a disposizione di tutti.

Se voglio produrre musica posso farlo senza grande sforzo. Centinaia di effetti speciali e strumenti sono di libero uso.

Sinceramente non mi ero mai soffermato più di tanto a riflettere su questa cosa.

Penso a qualche decina di anni fa quando fui costretto a contrabbandare un compilatore C per il mio Commodore Amiga 1000 per scrivere le mie prime righe di codice dopo avere passato mesi consumando le pagine del Kernighan e Ritchie.

Io la trovo una cosa incredibile.

Doom!

Doom!

Ma voi ve lo ricordate Doom?

E’ un gioco che fu pubblicato nel 1993 e che ebbe un enorme successo. Non riesco nemmeno a ricordare quanto tempo spesi davanti al monitor del computer per giocarci e giocarci ancora.

Secondo fu un titolo rivoluzionario. A quei tempi il termine FPS nemmeno esisteva e Doom arrivò subito dopo un altro titolo incredibile di ID Software, Wolfenstein 3D.

Doom è un prodigio dal punto di vista della programmazione. Ci sono incredibili leggende metropolitane che sono nate riguardo lo sviluppo del gioco.

Se ne volete ripercorrere la storia ecco un video di John Romero che parla della genesi e dello sviluppo del gioco. Da vedere!

Ci sono degli aneddoti incredibili in questo video. Chi si ricorda del formato di file .WAD che descriveva l’ambiente di gioco, conteneva gli asset, la musica, gli effetti speciali e via discorrendo? John Romero dice che deriva da “Where’s All the Data?”. Fantastico. Si vede quando qualcuno si diverte a fare il lavoro che fa.

Pensare che questo genere di gioco girasse su una delle macchine di quei tempi è incredibile. Programmatori con i fiocchi.

Piuttosto famoso è il tema della funzione custom che calcola la radice quadrata di un numero. Operazione molto onerosa dal punto di vista della sua implementazione standard. Per questo motivo ID Software scrisse una funzione custom per calcolare in maniera molto veloce una approssimazione della radice quadrata di un numero.

float Q_rsqrt( float number )
{
 long i;
 float x2, y;
 const float threehalfs = 1.5F;

 x2 = number * 0.5F;
 y = number;
 i = * ( long * ) &y; // evil floating point bit level hacking
 i = 0x5f3759df - ( i >> 1 ); // what the fuck? 
 y = * ( float * ) &i;
 y = y * ( threehalfs - ( x2 * y * y ) ); // 1st iteration
//	y  = y * ( threehalfs - ( x2 * y * y ) );   // 2nd iteration, this can be removed

 return y;
}

Ci sono i commenti originali!

Questo qui sopra è il codice originale. Se non siete dei programmatori non vi dirà molto. Secondo me è un diamante.

Avventure in Unity e memorie

Photo by Alex Kondratiev on Unsplash

Continuo a passare una buona porzione del mio tempo libero su Unity e con il passare del tempo mi rendo conto di alcune cose.

E’ incredibile la quantità di argomenti con i quali si deve acquisire una certa familiarità prima di potere arrivare a dei risultati concreti.

Ho quindi deciso di documentare qui sopra il percorso che sto seguendo giusto perché magari potrebbe tornare utile a qualcuno e permettergli di risparmiare tempo nel fare quello che io sto cercando di fare.

La premessa fondamentale è che io so scrivere codice, anche benino tutto sommato, ma questo è condizione necessaria ma non sufficiente per riuscire a combinare qualcosa di senso compiuto in Unity.

In realtà avrei dovuto avere buona memoria e ricordare che cosa raccontavo ai bambini che seguivo quando partecipavo al CoderDojo di Buccinasco. In genere mi prendevo sempre i ragazzini che non avevano alcuna esperienza di programmazione e durante il pomeriggio li portavo a creare il loro primo gioco con Sketch.

Quando parlavo con loro dicevo che a tutti noi piace giocare con i videogiochi ma che spesso ci ritroviamo prigionieri in un mondo che ha pensato un’altra persona. Quante volte ci siamo ritrovati a domandarci: “Ma perché in questo punto del gioco non posso fare questa cosa?”. Continuavo dicendo che sarebbe stato bello scrivere un gioco così come lo avevamo immaginato noi. Una cosa costruita da noi dall’inizio alla fine ed in tutte le sue parti.

L’idea che sottintendeva a questa narrazione era scrollare di dosso la passività della fruizione di un videogioco e prendere un ruolo attivo nei confronti della tecnologia.

Per questa ragione allora dicevo che in un solo pomeriggio saremmo stati dei programmatori che avrebbero scritto il codice che avrebbe governato la logica del gioco, dei visual designer che avrebbero disegnato i personaggi e l’ambiente, dei game designer che avrebbero progettato le dinamiche di gioco ed i vari livelli, dei sound designer che avrebbero creato i suoni e la musica. Avremmo insomma indossato diversi cappelli per arrivare a sera con un oggetto funzionante.

Funzionava. Bene. Confesso che da quando mi sono trasferito a Laglio quei pomeriggi con i ragazzi sono una delle cose che mi mancano di più.

In questi giorni credo di essere io uno di quei ragazzini, con la sostanziale differenza che non c’è nessuno ad aiutarmi se non Internet, qualche libro ed una discreta dose di curiosità.

Anche qui devi indossare diversi cappelli per fare funzionare le cose.

Una delle prime cose che ho realizzato è che modellare in 3D all’interno di Unity è estremamente inefficiente. Ci sono degli strumenti che ti permettono di fare delle cose ma non sono nemmeno lontanamente paragonabili a strumenti che sono nati per fare esattamente quella cosa lì.

Per questa ragione dopo avere litigato un pomeriggio per creare un mobile ho deciso di mollare il colpo e prendere due strade differenti.

La prima strada è quella di affidarsi a dei modelli in tre dimensioni già pronti e facilmente, oddio nemmeno tanto con il senno di poi, importarbili in Unity.

La seconda strada, più complessa della prima, è quella di usare un programma dedicato di modellazione in tre dimensioni. A portata di mano c’è Blender che negli anni è evoluto in qualcosa di veramente figo. E’ chiaro che esistono strumenti professionali per questo genere di cose ma non intendo spendere migliaia di euro per una cosa che è poco più che un esperimento e un divertimento.

La curva di apprendimento diviene quindi ancora più ripida. Oltre ad imparare cosa fare con Unity devi ora anche imparare ad utilizzare Blender.

Più vado avanti e più scopro cose di cui devo avere almeno una conoscenza superficiale per continuare nel mio esperimento.

Scarico quindi qualche modello in tre dimensioni e con Blender lo modifico secondo le mie necessità. Lo salvo e lo importo nel mio progetto in Unity. Figo, tutto sembra funzionare.

Ricompilo la mia applicazione e la installo sul mio Oculus. Gli oggetti che ho importato sembrano veri.

Mi muovo nella stanza e mi rendo conto che il mio personaggio si comporta come un fantasma. Riesci, quasi come fosse una magia, a passare attraverso gli oggetti senza fare una piega.

E a quel punto capisci che durante la procedura di importazione devi selezionare il checkbox “Generate Colliders” altrimenti gli oggetti importati non avranno proprietà fisiche. In realtà la questione è un pochino più complessa ma semplifico.

Immagino che tutti i professionisti là fuori si stiano facendo delle grasse risate leggendo queste righe. E’ chiaro che sono veramente una pippa sull’argomento ma vi assicuro che mi sto divertendo un sacco. Che poi è lo scopo ultimo di qualsiasi hobby che abbia la dignità di portare questo nome.

Ad ogni modo ecco il risultato delle mie fatiche:

Nel caso questo è il link: https://vimeo.com/684213153