Commenti al codice e affini

Altro ritrovamento, datato 2008

E’ strano dirlo ma la semplicità è sempre stata l’arma vincente di qualsiasi prodotto
informatico… non a caso per le operazioni bancarie online basta una USER e un PIN
parcheggiati su una tabella ed eventualmente criptati da algoritmi e procedure che
non devono impedire a uno sviluppatore di sciropparsi una pagina come questa per
eseguire un accesso ad un servizio web. Che sia di lezione a chi verrà dopo di me.
Regola numero 1: la semplicità.

Vue.js, NativeScript e altri esperimenti a tempo perduto

Prima di tutto, secondo tentativo con Vue.js fallito. In settimana non ho tempo. Al weekend il sito e’ imballato, spesso non c’è’ corrispondenza tra quello che viene raccontato e il codice che viene generato… e niente mi sono scocciato.

Potrei aprire una grande parentesi sulla estrema fluidità’ e conseguente inconsistenza di tutto questo mondo javascript/typescript ma diventerei molto turpe.

Cosi ho pensato ritirar fuori un giochino di qualche tempo fa’: NativeScript pensando ingenuamente… quanto tempo ci vorrà per fare uno scanner bluetooth che registri ID, Nome dispositivo, data e ora di rilevazione su un server privato ? Ovvero la buzzword del momento: contact tracing, ma mantenendo pieno controllo dei dati raccolti.

Ovviamente non lo scoprirò mai perché e’ l’ennesima cosa a-tempo-perso che inizio e non finisco. Temo che mi serva essere pagato per portare a termine una cosa…

Ma se ne esce un semilavorato quasi accettabile ve lo farò sapere.

Un primo riferimento potrebbe essere questo articolo: Controlling Robots with NativeScript Bluetooth.

Una cosa che sapevo e una che ho scoperto

Un problema abbastanza comune: io non riesco a mantenere l’attenzione su quello che sto facendo mentre ci sono voci di altre persone. Sentire parlare qualcuno automaticamente sposta parte della mia attenzione da quello che sto facendo a quello che sento anche se non sono io il desiderio del messaggio.

In una certa misura credo che capiti a tutti, a chi più a chi meno. Per me è più.

E inevitabilmente accade anche con la musica.

Una cosa che sapevo è che si possono usare i noise generator per offuscare il parlato e isolarsi. MyNoise ne ha una collezione enorme e personalizzabile.

Una cosa che non conoscevo, e che sto apprezzando molto, sono le stazioni LoFi Hip Hop. Ne scegli una e la fai andare per ore. Fantastico.

Un ulteriore consiglio non richiesto: per ascolti prolungati è meglio un paio di cuffie grandi, vecchia maniera, piuttosto che gli auricolari in-ear, se poi sono dotate di cancellazione attiva del rumore l’effetto isolamento è ancora migliore.

Commenti al codice e affini

Nella parte non visibile dei programmi si trovano cose strane. Una recente scoperta, nascosta in una riga alta 1px. Mah.

Una delle mie attività principali consiste nel favorire e ampliare le reazioni.
Io non progetto soluzioni, ma facilito le reazioni; è l’organizzazione a preoccuparsi dei contenuti.
Io analizzo la situazione, la riporto ai responsabili e mi assicuro che ogni decisione venga immediatamente comunicata e passi attraverso una catena informativa con molteplici retroazioni.
Costruisco delle reti, accresco la connettività dell’organizzazione e amplifico le voci degli operatori (che altrimenti rimarrebbero inascoltate).
In seguito al mio lavoro, i responsabili cominciano a discutere cose che, normalamente, non sarebbero state discusse, e in questo modo viene ad accrescersi la capacità di apprendere propria dell’organizzazione.

Fritjof Capra, La scienza della vita, Rizzoli, 2002.

Tastiera meccanica

E’ un attrezzo che volevo provare da molto tempo, ma visto che la maggior parte della mia attività di scrittura si svolge su un notebook che mi porto in giro, non mi ero mai deciso.

Ora questa lunga permanenza a casa, e un po la noia, mi ha convinto a comprare questo strumento di tortura uditiva per chi mi sta intorno. Si perchè fa un rumore paragonabile ad una vecchia macchina da scrivere.

Però, per il resto, mi chiedo come ho fatto prima di oggi. La scrittura è infinitamente più comoda e piacevole. Come farò a tornare ad usare la tastiera del notebook?

La tastiera scelta è una Ajazz AK33, con layout ridotto (come si vede nella foto), ha un discreto peso, data la struttura metallica e giochi di luci molto vari, non che la cosa mi interessi molto. E inoltre ha il layout americano, cosa estremamente comodo quando si programma. Ecco un po’ meno quando si scrive in italiano ma comunque si può cambiare e anche se quello che è stampato sul tasto non corrisponde a quello che viene scritto non è un problema. Diciamo che il layout italiano lo so a memoria. Un po’ meno quello americano per cui ogni tanto guardo i tasti per sapere cosa scrivere.

Dagli all’untore

Alla primavera non frega nulla dei nostri problemi.

Probabilmente mi ha fatto male rileggere i Promessi Sposi di recente, e constatare che a distanza di 2 secoli dalla scrittura, e 4 dai supposti eventi narrati poco è cambiato. L’unica cosa che vedo di differente è che la Medicina è una scienza un po più matura e che ha dei dati oggettivi da produrre e capacita analitica sul male.

La peste prima è stata sottovalutata e sminuita dalla autorità, poi chi assisteva i malati è stato lasciato a se stesso, poi in tutta fretta si sono individuati luoghi in cui mettere i malati e alla fine molti di quelli che assistevano i malati si sono ammalati a loro volta. Alla fine si è salvato chi è stato isolato e chi fortunatamente ne è uscito con le sue forze. Gran parte degli sforzi tardivi delle autorità hanno fatto più male che bene.

Ma il punto è che la ggente (con due g) ancora cerca l’untore. Per semplicità: avere un nemico visibile ti mette in pace con i tuoi pochi neuroni. Prima il cinese, poi il passeggiatore di cani, ultimamente si è eletto a categoria untrice il runner. Probabilmente non sarà l’ultima categoria. E perché non il corriere o la cassiera? Vedremo. Non sono tempi noiosi.

Solo non affidatevi all’astrologia, e tenete acceso il cervello. Le soluzioni semplici non esistono. Le soluzioni estreme sono sempre un estremo sbaglio.

Vue.js – Primo impatto

Alla fine il tempo è quello che è, anche in quarantena, e non ho visto molto, ma qualche prima impressione posso scriverla.

Aspetti interessanti:

  • Non necessita che tutta l’applicazione sia una SPA. Può esserlo, ma può anche essere una versione ibrida, con html statico o generato server side in alcune parti, e una applicazione Vue.js dove serve più reattività.
  • Non necessita di scaricare mille cose, librerie, dipendenze, compilare, etc … si aggiunge il link al js sulla CDN e si ha tanto pronto.
  • Approccio a componenti, reattività e data binding. Ovvio. Se no tanto valeva usare una tecnologia server side con un pò di jQuery.

Dubbi:

  • Come scala all’aumentare della complessità dell’applicazione? In genere i framework che puntano a facilitare l’ingresso finiscono anche a facilitare lo spaghetti coding all’aumentare della difficoltà del problema che devono risolvere. Ma dovrei vedere qualche lezione in più.

Proxy Dinamico per logging

Può essere necessario loggare tutto ciò che fa una determinata classe che però fa parte di una libreria e non contiene tutti i log desiderati. Supponendo che non sia necessario debuggare la classe in sè, che fa quello che deve fare nel modo giusto, ma come viene utilizzata all’interno del progetto ho trovato che realizzare un proxy dinamico sia una soluzione efficace e molto versatile. Anche perchè fatto uno, va bene per qualsiasi classe.

La classe che andiamo da realizzare fa due cose :

  • implementa InvocationHandler in modo che venga richiamata tutte le volte che viene chiamato un metodo dall’utilizzatore del target da loggare
  • ha un factory method di comodo che crea una nuova istanza di proxy dinamico attaccando se stessa come InvocationHandler

Implementare InvocationHandler significa implementare il metodo invoke:

invoke di fatto richiama il metodo del target e logga nome del metodo, parametri e risultati. Più la gestione delle eccezioni del metodo target e di tutte le altre possibili eccezioni.

Il metodo wrap permette di avere la nostra classe ben wrappata con un solo comando.

Visto che tutto questo mi ha permesso oggi di scoprire un utilizzo un pò insensato dell’accesso ai dati con conseguente lentezza ho pensato di condividerlo.