domenica 22 giugno 2014

Mosche Volanti

Cara Carmensita,
solitamente non scrivo mai di cose personali, cerco di essere riservato e temo strumentalizzazioni. E poi lamentarmi non mi piace: temo sempre di essere inopportuno.
Ma sono ormai alcuni centimetri di barba che ho dei pensieri. 
Non hanno un filo logico, non saprei almeno spiegare qual'è il legame che li accomuna e li presenta con insistenza. 
Cerco allora di scriverteli, consapevole che non li sto affatto esorcizzando.

Sovrasemplificando posso dire che i pensieri si dividono in positivi e negativi.

I pensieri negativi si comportano un po' come le "mosche volanti" che galleggiano nel mio vitreo sporco: non ti fanno vedere la vita in bianco e nero, ma sono abbastanza fastidiosi da costringerti a girare lo sguardo anche quando stai guardando una cosa bella. E come le mie mosche volanti, non sai mai da che direzione o quando si presenteranno, né per quanto tempo. 
Forse questo è uno degli aspetti piu' affascinanti della mente umana.

Chissà magari con il passare del tempo questi pensieri si adageranno sul fondo, un po' come le mie mosche volanti, e avrò nuovamente la visione "sgombra".

Di certo oggi questi pensieri negativi ci sono, e mi rendono quasi insensibile (ma non irriconosciente) perfino davanti a dei bei regali, non importa di che portata siano, fossero anche grandi come una casa.



Il lato negativo dei pensieri negativi è che si rafforzano, negativamente.
Credo sia una caratteristica umana: è piu' facile pensare negativo quando le circostanze sono negative.
Circostanza: quello che sta attorno. Troppo spesso ci si dimentica che dove si sta è piu' importante di cosa ci sta attorno.

Il lato positivo dei pensieri negativi è che ti spingono a riflettere.
Ad esempio su giustizia e Dio.
Perche' proprio su questi due? Forse perché quando le circostanze sono negative ci sembra che entrambi questi concetti siano accomunati da una egual assenza.

Riguardo la giustizia ti dirò, forse non è vero che è assente, forse sono solo io che non sempre riesco a capirla. Sicuramente io non sono in grado di giudicarla, perché credimi che se fossi io a decidere sulla giustizia il mondo sarebbe molto piu' ingiusto di come è adesso. E non lo dico perché sono rancoroso o arrabbiato, è che un po' tutti ci sentiamo sempre parte lesa e riteniamo di essere in grado di poter essere equi, ma in fondo forse non lo saremo mai.
E' un altro degli aspetti della natura umana: l'erba del vicino è sempre piu' verde.

Riguardo Dio, beh non abbiamo mai parlato di Dio.
Solitamente quando le circostanza sono avverse la fede tende a vacillare; la mia no e probabilmente perché non sono un gran esempio di fedele. Credo che Dio esista, credo ne esista solo uno visto che così mi è stato insegnato, e non sento l'esigenza di cercarne altri.
Anzi, proprio nelle circostanze avverse so che esiste: lo sento mentre preme il suo pugno sul mio stomaco.
Ti scrivevo che la mia fede non vacilla, anche se forse sarebbe piu' corretto dire che le mie abitudini non vacillano. Eh si, perché non ho certo intenzione di pregare di piu' o di cambiare le mie rare manifestazioni religiose. E non per lanciare una sfida, ma perché se mi si vuole piagnucolante allora non si merita venerazione.
E allo stesso tempo non varierò il numero di candeline accese con mio figlio.


Mi diletto di programmazione. Non sono un programmatore famoso, non certo uno che cambierà il mondo con i suoi programmi.
Io curo le anomalie dei software, chiamate in gergo bug.
  • Alcune forme di bug possono essere risolte semplicemente con un cambio di contesto.

  • Alcune forme di bug richiedono un piccolo intervento chirurgico.

  • Alcune forme di bug richiedono un intervento complesso e lungo, con arresto e fermo del sistema per diverso tempo.

  • Alcune forme di bug non si manifesteranno mai.

  • Alcune forme di bug produranno la morte accidentale del sistema in tempi brevi.

  • Alcune forme di bug non faranno in tempo a manifestarsi perché il sistema sarà sostituito prima.

  • Alcune forme di bug non veranno curate perché il sistema è troppo obsoleto.

  • Alcune forme di bug (de)genereranno in altre forme.

  • Ogni volta che si manifesta un bug occorre fare opportuni accertamenti e programmare gli interventi necessari, nonché ripetere una fase di esami funzionali per assicurarsi che il problema sia risolto.

  • La cura di un bug puo' scatenare altri effetti collaterali, anche altre forme di bug.

Sostiuisci alla parola "bug" la parola "cancro" e rileggi.

Cancro è una parola che ha diversi significati, e che produce sensazioni differenti in chi la legge o pronuncia. E anche questa è una delle cose affascinanti della mente umana.
Se usata per indicare il segno zodiacale, ad esempio di un figlio, penso generi pensieri positivi. 
Se usata per indicare una malattia, genera sicuramente pensieri negativi.

Il cancro (la malattia) è una delle cose piu' vigliacche che la natura potesse inventare. E' una cosa che rende anche me vigliacco, perché cerco di non parlarne nella speranza che non mi noti.
Il cancro è una cosa che non auguro nemmeno al mio peggior nemico, ma ad essere sincero non mi sconvolgerebbe se capitasse a qui pochi che han cercato di minare la mia famiglia. 
Come ti scrivevo, forse è meglio che non sia io a decidere cosa sia giusto e cosa no!

Una persona molto influente mi disse che il tempo è l'unica cosa veramente democratica, perché passa per tutti in ugual misura. Ho sempre pensato fosse vero, ma scontrandomi con una malattia del genere capisco che è un ragionamento sbagliato. 
Sbagliato è quello che si sta misurando: non importa che la velocità sia la stessa, la distanza è ciò che conta, e quindi se il tempo passa uguale per tutti, la quantità accumulata fa la differenza, anche se mitigata dalla qualità
E forse in questo ragionamento ci sta che le malattie siano abbastanza giuste nel non giudicare chi colpiscono, anche se la vera giustizia pare essere una frase da velina: "non avere malattie nel mondo".

Nella parola "cancro" è contenuta anche la parola "arco", e pensavo a quando mi dilettavo in questo sport. 
Sono stato un buon arciere, non uno famoso, ma me la cavavo. 
Ho avuto un grande fan che mi spingeva a fare le gare anche quando non mi sentivo pronto, quando la mia "forma" non era al top. Eh si perché se gareggi solo quando sai di vincere allora sei un vigliacco. Ed ecco perché ritengo che il cancro sia una manifestazione di vigliaccheria: se ne sta nell'ombra, a prepararsi, ad allenarsi, per mostrarsi solo quando si sente pronto ad affrontarti.

L'arco è stato uno sport molto importante per me. La sua individualità mi ha insegnato a contare sulle mie forze, e adesso che non lo pratico piu' forse mi sento meno forte. 
Se non fosse stato per l'arco non avrei nemmeno preso in considerazioen di sposare mia moglie.


Ti scrivevo a proposito del mio grande fan.
Il fan è una persona che ti sostiene in molte delle scelte che fai, se non in tutte. Non importa quale sport tu voglia praticare, perché incidentalmente è anche il preferito del tuo fan. Nel mio caso, fu' l'arco.
Il fan è quella persona che rimette a posto il frigo portatile dopo che lo hai preso a calci per una voléé sbagliata, come pure è quello che si alza presto per portarti ad un raduno le aste nuove da provare. E' anche la persona che, alla tua prima gara, va a recuperare le frecce buttate fuori mentre tu sei troppo impegnato a piangere.
Alla tua gara successiva troverà il modo di aggiustarti gli occhiali, ben contento di come questo significherà guidare fino in Sicilia per una nuova competizione.

Il fan è spesso incompreso: agli occhi delle altre persone risulta quasi ridicolo per la passione che ha. Alcune persone addirittura vedono nei fan la causa dei tuoi insuccessi, ma io non ho mai dato credito a queste teorie.
Inutile dirlo, al fan non importa quante delle oltre 144 frecce tu sbagli, perché ha siglato un accordo segreto in due articoli:
  1. guarderai con il cannocchiale ogni freccia, eventualmente segnandola come un vero giocatore di briscola;
  2. il tuo atleta è il migliore che esista sempre e comunque.

Con questo non voglio dire che ogni fan sia con il paraocchi e non oggettivo, anzi devo ammettere che il mio piu' grande fan è sempre stato oggettivo nei miei confronti. Anche se la componente soggettiva è quella che mi piaceva di piu'.

Ora il mio piu' grande fan è malato.

La sua malattia è il mio segno zodiacale, che strana coincidenza. 
Per uno come me, che cerca sempre di trovare il legame negli avvenimenti, è un po' quello che mi merito.
Sai, ho dato il primo bacio a mia moglie il giorno 3, ci siamo sposati il giorno 4, fidanzati il giorno 5, e un altro lieto evento il giorno 6. Insomma, ho reso l'idea.
Chissà, forse questa attitudine mentale mi deriva proprio da quando, agli albori della mia carriera arcieristica, il mio piu' grande fan aveva elaborato uno strano collegamento fra le mie performance e quelle di Tomba, il suo secondo atleta preferito.

Ricordo di aver pensato in piu' di una occasione quanto fosse facile la vita del fan: sempre dietro la linea di tiro a guardare, mentre in pedana con le gambe tremolanti e il cuore in gola c'ero io.

Ora che dietro alla linea di tiro devo starci io ti dirò che è molto dura.

E così questi sono piu' o meno le mie mosche volanti, che continuano ad infastidirmi nel breve periodo, anche se paradossalmente quello che mi interessa ora è il lungo periodo.

mercoledì 26 marzo 2014

OpenWebMail ?

OpenWebMail e' una piattaforma di email web.
Non e' particolare, ce ne sono tante come OpenWebMail. Non dispone di un calendario e di nessuno strumento evoluto per essere classificata come una vera applicazione PIM (Personal Information Management), e' una semplice e funzionale applicazione di posta elettronica.

Perche' allora parlare di OpenWebMail?
In passato sono stato costretto ad utilizzare questa interfaccia come client di posta per un'azienda. Ebbene, seppur di semplice e intuitivo utilizzo, OpenWebMail non viene piu' sviluppato attivamente da diverso tempo.



Eppure ci sono ancora aziende che utilizzano OpenWebMail come unico client di posta per i loro dipendenti, e quel che e' peggio, ci sono anche fornitori di servizi che forniscono installazioni di OpenWebMail beta in produzione!


venerdì 14 marzo 2014

Towards a sigil style

It happens more day by day that I find myself writing or maintaning programs and scripts written in different languages, mixed and interpolated together.
This lead me to appreciate every day more those languages that apply a "sigil" style, where each variable is identified thru a special character (a sigil), such as for instance $var or @array.
The technical reason for having a sigil is often that the parser is simpler, since it is helped by the developer in understanding what looks like a variable and what looks like a bareword or a function. But the final result, at least for me, is that it is much simpler to read a sigil-based language than another one. I cannot explain exactly why and how, but it turns out that looking at a piece code that contains sigils prompt me in the right mood at the right line. Let's say for now that it is just a metter of seeing a sigil that pops up my attention and make me think what the symbol at the cursor is depending on its sigil.
And, it is worth saying, I appreciate the most those languages like Perl where different sigils are used to indicate different things (even if you will end using the scalar $ the most).

lunedì 10 marzo 2014

Atom vs Emacs

Atom.io e' un nuovo editor di testo, in fase di sviluppo.
E' promettente: un editor totalmente personalizzabile da parte degli utenti che possono scrivere facilmente moduli ed estensioni per cambiarne il comportamento e l'aspetto.
Ok, ricorda qualcosa....se non fosse per il "semplicemente" direi che e' esattamente identico ad Emacs. Eccetto che Emacs puo' essere ancora piu' semplice!
A parte le battute dovute piu' che altro alla religione degli editor, Atom appare veramente un clone moderno di Emacs.
Non solo Emacs e' di fatto l'unico vero editor totalmente personalizzabile che io abbia mai visto e usato, ma alcune delle feature di Atom sono identiche a quelle di Emacs.
Ad esempio, il modulo  Zen fa esattamente quello che il mio Emacs fa con poche righe di codice lisp, e soprattutto senza dover installare una estensione.
La possibilita' di avere i suggerimenti sui nomi dei file da editare e' esattamente quello che fa il mio Emacs con IDO.
Sort Lines  fa esattamente quello che il comando sort fa, solo che Emacs permette di eseguire gia' tutti i comandi disponibili su un buffer o una regione, e quindi risulta ancora una volta vincente.
E come per Emacs, le estensioni si sprecano e portano fino ad esempi inutili come Editor Stats  (francamente mi interessa sapere di piu' cosa sto editando che sapere 'quanto').

Insomma, a parte per la tecnologia utilizzata e per il fatto che la struttura di Atom mi appare maggiormente a "micro-kernel", direi che di differenze significative con Emacs non ce ne sono.
E questa mi sembra una bella vittoria per Emacs, precursore di molte idee riprese poi negli IDE e negli ambienti moderni.

Non mi e' ancora chiaro se Atom potra' funzionare anche in console e quindi via terminale remoto, cosa che Emacs svolge egregiamente (anzi, Emacs puo' lavorare in modalita' client-server e anche come wrapper di terminale).
Ma sicuramente una cosa e' chiara: Emacs ha una licenza piu' conveniente che quella di Atom.

PostgreSQL 9.4: decodifica dei WAL e replication slot

Ricordo che al PGDay.IT del 2012 il keynote (Simon Riggs) parlava di una feature che sarebbe stata introdotta in PostgreSQL riguardo la decodifica dei WAL in formato logico, ossia umanamente leggibile (istruzioni SQL o qualcosa di simile). Era stato detto che ci sarebbe voluto diverso tempo per implementare tutti i pezzi di questa conversione da binario a testuale, ma che era un passo fondamentale per la crescita di PostgreSQL.
Ebbene nella nuova versione, la 9.4, alla quale gli sviluppatori stanno lavorando, e' stata introdotta una patch che permette di convertire i WAL in formato testuale.
Qui si trova un primo esempio, piuttosto impressionante , della funzionalita' di decodifica dei WAL.
Da notare che l'esempio sopra riportato cita anche i "replication slots", un'altra feature aggiunta per l'imminente 9.4. L'idea e' semplice ed elegante: mentre prima il master non aveva alcuna conoscenza dello stato di replica degli slave, che quindi potevano andare off-line per molto tempo e rimanere "troppo indietro" rispetto al master, dalla 9.4 il master terra' lo stato di replicazione di ogni slave agganciato (uno slot appunto). Questo permettera' al master di conservare tutti e soli i WAL richiesti dagli slave, anche se non disponibili per molto tempo, senza costringere il DBA a indovinare quanti WAL mantenere (keep segmentes) o l'implementazione di un continuos archiving.

La 9.4 promette molte altre feature, ma quelle di cui sopra in fatto di replica sono sicuramente molto significative.

domenica 2 marzo 2014

On bug and bug reporting

A quite well established mindset with Open Source projects is that as much users a code base has, as much it will be tested and, therefore, will produce a continuosly growing quality product.
And it is true, indeed!
But what does it mean to test an Open Source project? Disregarding the low level testing with test suites, it means that true users will install, run and report back application misbehaviors, crashes, problems, and so on. And this is the point of this post: reporting back information to developers so that they could do their work and improve the software. I'm not focusing on how to write a good bug report, you can find a lot of information about in the net and in the project documentation itself. But have you ever thought about the importance to report as less information as possible to allow a developer to do her job? I mean: what do you think a developer will feel like opening the bug tracking system on the Monday morning and finding out tons of bug reports? Therefore, before posting a bug report, please ensure that none before you has openend the same report, and in case append to such report. You will achieve the goal of making the developer feel better and, most notably, to avoid wasting her time in reading just another report that reports the already known problem.
And if you have time, please provide a clear and short way to reproduce the bug, even if you are not the first reporter. Even better, write an automated test for the bug you are interested in: you will grant the developer some extra time to concentrate on the real bug instead of the aside artifacts.

And about testing allow me to spend some extra words: while it is very important to test the produced code, please consider that techniques such as Test Driven Development TDD not only promote the creation of tests ahead the code that implements a feature, but also that a feature should be requested due to a failed test.
In other word, if you want to add feature X to the project Y provide a short and clear test along with the feature request.
Why?
Because again, you are going to give the developer(s) some extra time and will help her better understanding what is your will. And most notably, while writing the test you will become a concrete part of the development and will better think about what you are asking (and why you are needing it). In other words: you will only ask something you can clearly explain and with as less as possible misunderstandings, while the developer(s) will have a concrete case to start developing on.

Fianlly, again on testing, please spend some time reviewing and providing new test cases for existing code, even if you don't have a feature request or a bug to work on.
Why?
Because Open Source developers often, or better almost always, do the hard work on their spare time, and will regret to implement some new code until they do not risk public embarassment. Therefore, if the code base has a strong and reliable test case, developers will be more likely to implement more code without having to worry about awkaward bugs.

sabato 1 marzo 2014

Editors

No, questo non è un post tecnico: gli editors a cui mi riferisco non sono quelli di testi, bensì quelli musicali. Gli Editors sono un gruppo inglese che sta avendo un grosso successo, e devo dire hanno uno stile e un ritmo carico. Il cantante ha una voce con una tonalità molto calda, che si rapisce.

Ebbene ieri sera sono andato, o meglio mia moglie mi ha portato, al concerto degli Editors a Bologna. Ammetto che probabilmente io non ci sarei mai andato di mia iniziativa: non è un genere di band che mi interessa vedere dal vivo. 
Fino a ieri sera.

Gli Editors sul palco sono veramente travolgenti. Lo spettaccolo è stato veramente bello e travolgente, e il gruppo non si prende nemmeno una pausa fra una canzone e l'altra.
Insomma ne è proprio valsa la pena, consiglio caldamente a tutti di vedere almeno un loro concerto. E così magari qualcuno riuscirà a spiegare da dove il cantante, esile, tira fuori questo vocione avvolgente.

E prima dell'inizio del concerto, mentre guardavo i gadget, qualcosa ha colpito il lato nerd del mio cervello. La mug ufficiale degli Editors non ricorda forse un'altra mug, di un editor famoso, guarda caso il mio preferito, ovvero lo GNU dietro a Emacs? Ok il simbolo degli editors è un toro, quello di Emacs uno gnu, ma effettivamente la somiglianza c'è.
Che si tratti solo di una concidenza fra il nome della band, il simbolo scelto e il mio editor preferito?