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.

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.

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.

Please Don’t Learn to Code Unless… – DZone Agile

“Focusing On Coding Inflates the Importance of Finding the “Right” Method to Solve a Problem Rather Than the Importance of Understanding the Problem. Before we start working on a solution to a coding problem we have to decide what the problem is–if we even have one to begin with. If we let ourselves become fixated on how to solve a problem via code–regardless of if it is a programming problem or not–and lose sight of why, we gain nothing.”

Che è più o meno:

Concentrarsi  sulla programmazione porta a concentrarsi sulla ricerca del modo “giusto” di risolvere un problema invece che concentrarsi l’importanza di capire il problema stesso.

Prima di iniziare a programmare dobbiamo capire il problema e se veramente esiste. Se ci fissiamo su come risolvere un problema con la programmazione, senza considerare se questo è un problema di programmazione o meno, e dimentichiamo il perché lo stiamo risolvendo, non guadagniamo nulla.

https://dzone.com/articles/please-dont-learn-to-code-unless