jQuery short answers quiz

I’m developing a website containing my deutsch course lessons. Our teacher given us some exercises, and I had the need to render it on an interactive web page. How to accomplish this mission? Obviously using jQuery.
The main issue is to write in a simple way your “short answers” form, and leave the hard job to jQuery code. So the form need to looks like:

<form>
    The sky is <input type="text" answ="blue"/>.
    The pen is <input type="text" answ="on"/> the table.<br />
    Yes I, <input type="text" answ="am"/>.<br />
    <input type="button" class="subm" value="Verify"/>
</form>

As you can see, each <input> contains the attribute answ with the correct answer and the element you want to use to check needs to have class=”subm”. That’s all!

The JS code resizes all the text inputs using the answer’s length, and changes CSS class (answ_error, answ_ok) of the input element. Finally a couple of attributes (tot and ok) will be added to the form, containing the number of text inputs and the number correct answers.

Code is available here.

Guardafuori, non c’è libertà!

Lettera aperta ai miei colleghi

Cari colleghi,
sto notando, con mal celato dispiacere, che in voi si sta radicando (e in molti di voi concretizzando) l’idea di usare software proprietario per la gestione del servizio email. Ciò mi induce, in qualità di “free software evangelist”, a cercare di farvi desistere da questa scelta. Le motivazioni che cercherò di addurre saranno di carattere tecnico e filosofico.

Perché occorre evitare di usare software proprietario, specialmente quando esso si interfaccia col mondo internet? Prima di tutto perché non sappiamo come è stato sviluppato, non ne conosciamo il codice sorgente e non possiamo in alcun modo ispezionarlo. I software proprietari strizzano l’occhio al DRM (Digital Restrictions Management) facendo in modo che i costruttori siano i veri manipolatori delle scelte dell’utente. Il software proprietario è progettato per essere distribuito con una licenza che limita le libertà dell’utente attraverso pratiche commerciali come il “lock-in“. A tal proposito vi cito il famosissimo problema del “winmail.dat“, si tratta di un abuso degli standard che costringe l’utente a dipendere dal fornitore.

Non cadete nel tranello! Ci sono molte vulnerabilità legate ai lock-in, ammesse a volte esplicitamente dai costruttori (es. [1] , [2]). Il contenitore TNEF è un formato proprietario che presenta (da progettazione) una falla di sicurezza chiamata “Full Path Disclosure” potenzialmente molto pericolosa. Il vostro nome e il percorso della directory dove risiede il database delle email vengono inglobati, infatti, all’interno di questo file. Inoltre può includere “oggetti” che verranno automaticamente aperti e interpretati dal vostro client email. Questa caratteristica permette molto facilmente a Trojan, o malware in genere, di compromettere i vostri dati.

Quando i nostri “padri” costruirono internet, ne definirono un “Galateo” che chiamarono “netiquette” che tutti gli utenti dovrebbero seguire nel rispetto degli altri (Netiquette). In particolar modo l’email dovrebbe essere leggera per non appesantire il traffico internet, dovrebbe contenere solo testo e se si ha bisogno di includere un documento formattato si può sempre inserirlo come allegato o come link internet.

Oltre a queste motivazioni tecniche ce ne sono altre legate alla vostra libertà. Perché tempo fa avete scelto di usare software libero ed ora state scegliendo software proprietario? Evidentemente perché la vostra scelta è stata motivata erroneamente. Il primo motivo per la scelta di software libero deve essere infatti la licenza con la quale è distribuito che offre all’utente finale le 4 libertà principali.  Se oggi scegliete software proprietario, sceglierete di essere controllati e venderete la vostra libertà al costruttore che in cambio aggiungerà lock-in per potervi tenere fidelizzato.

Vi invito a ripensare alla vostra scelta, rendendomi disponibile per ogni chiarimento in merito. Se invece sceglierete di passare al software proprietario, vi prego, qualora abbiate bisogno di inviarmi un’email, di usare il formato “testo” ed evitare di usare il formato TNEF o HTML.

Il vostro “libero” collega
Simone

Il semino libero #1

Apro la rubrica del semino libero, piccole chicche di utilità personale che potrebbero far gola anche ad altri…quindi le condivido.
Perché semino? Perché spero di piantare qualcosa che poi cresca…
Perché libero? Perché tratterà di Software Libero.

Rimuovere fingerprints ssh scaduti

Ogni volta che ci si connette via ssh ad un server viene verificata la copia locale del fingerprint (~/.ssh/known_hosts) con l’originale remoto. Se le due firme non coincidono viene visualizzato un messaggio simile al seguente:

$ ssh secrethost
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!        @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
[...]
Offending key in /home/ccm/.ssh/known_hosts:46
[...]
Host key verification failed.

Occorre fare attenzione perché, o il fingerprint è scaduto, oppure è stato violato e manipolato (in realtà c’è un terzo caso e cioè quando si forza sshd a ricreare le chiavi di inizializzazione) . Nel caso in cui il fingerprint sia scaduto o comunque ci siamo accertati che il server non si stato compromesso possiamo utilizzare il comando

$ ssh-keygen -R secrethost

e verrà rimosso dalla copia locale il vecchio fingerprint.

Cambiare l’endianess di un file

Per cambiare l’endianness di un file (es. binario) in Unix ci sono principalmente due modalità una manuale e una automatica. La manuale è swab() che si usa così (man 3 swab):

#include <unistd.h>

void swab(const void *from, void *to, ssize_t n);

L’implementazione che permette di leggere un file e usare swab() è lasciata come esercizio al lettore. 🙂

La modalità automatica invece usa dd in questo modo:

$ dd if=flash.bin of=flashsw.bin conv=swab

Per questa puntata è tutto, alla prossima!

L’ex socio di Wozniak e il santone di GNU

Ci voleva la morte di Steve Jobs (RIP) per darmi la spinta a scrivere di nuovo sul mio blog, ed è già un primo miracolo (Jobs santo subito!). Spero che questa carica non si esaurisca nel giro di un post. Il mondo dei microblogging e dei social network sta uccidendo (e ne sono una vittima) i blog e i relativi potenziali contenuti.

Alcune premesse

  1. Non ho mai posseduto un MAC, ne ho usato uno (iMac G3) all’università, ma molto tempo fa quindi molto molto distante dagli attuali standard di usabilità e soprattutto di affidabilità. In compenso ho diversi amici e colleghi che ne possiedono una versione recente, e rimango sempre affascinato dalle feature e dalle potenzialità ogni volta che me ne fanno mostra. Da ultimo, ma non per ultimo, pur non avendo un MAC ho avuto modo di realizzare del software che ci girasse (libstork) e devo dire che essendo di base Unix è un piacere sviluppare a “basso livello”.
  2. Si può pensare che Steve Jobs sia un grande o meno, il fatto che io, come tanti altri ora ne stanno scrivendo fa di lui un personaggio di rilievo. Qualcuno qualche tempo fa, per altri contesti, mi disse “nel bene o nel male l’importante è che se ne parli”. Steve Jobs rimarrà sicuramente nella storia, chi, da qui a 100 anni, studierà la nascita dell’Informatica troverà sempre e comunque un capitolo riservato ai sistemi Apple.
  3. Il libro che sto sgranocchiando ora si intitola “Marx. Il Capitale. Una biografia” di Francis Wheen, mi introdurrà alla lettura ben più difficoltosa del già acquistato ed originale “Il Capitale” di Karl Marx. Questo per evidenziare che le mie riflessioni sono condite, insaporite e  ovviamente influenzate dalle teorie economiche marxiste traslate e tradotte in chiave moderna.
  4. Come i miei colleghi ormai sapranno il mio gioco dei ruoli è fare la voce fuori dal coro, in modo tale che il mondo si possa dividere in due: pro-simone, contro-simone, indipendentemente dal contesto o dall’argomento.

Jobs è morto

Steve Jobs è passato a miglior vita, analizzando l’evento pragmaticamente si potrebbe dire che prima o poi lo seguiremo anche noi in questo suo nuovo cammino, o anche che, viste le sue precarie condizioni di salute, era facilmente prevedibile che in breve tempo ci avrebbe lasciati. Sta di fatto che ora non c’è più. Non avremo più modo di ascoltare i suoi discorsi, keynote, lectio magistralis, ecc.. Se ne è andata un pezzo di storia dell’Informatica. La preoccupazione nel merito va subito alle generazioni future, mi auguro che possano avere docenti in grado di mostrare loro, con la giusta evidenza la vita, le opere e i miracoli (economici e non) di Jobs.

Io ho l’iPhone e tu no, pappappero

Non ho un iPhone e non desidero averne uno. Datemi liberamente del fondamentalista, ipocrita, retrogrado, vecchio, ognuno scelga, a seconda della maschera pirandelliana che indossa, il suo aggettivo-appellativo preferito. Probabilmente non ne ho bisogno, o non ne sfrutterei le potenzialità. Quello che posso affermare è che ai miei occhi l’iPhone appare come uno status symbol e la sua essenza ne rappresenta la motivazione principale del suo acquisto/uso. Esistono eccezioni o casi particolari dove l’iPhone potrà rappresentare una scelta dettata dalla necessità o dalla comodità, ma quel che vedo nella sua diffusione è ben altro. Sei giovane, sei alla moda, hai un iPhone, se non cellai sei fuori.

Feticcio, feticismo, e cacasenno

Una conoscenza basilare delle teorie marxiste, che se ne condivida l’efficacia o meno, fa saltare in mente la definizione di feticcio che da Marx relativamente al valore della merce. Lungi da me l’essere in grado di essere puntuale sulla sintesi delle teorie marxiste, il feticismo applicato alla merce permette alla merce stessa di acquisire semi-automaticamente un valore sul mercato pari all’adorazione che se ne ha o se ne percepisce. Un iPhone può essere venduto a tanto quanto si è disposti a pagare per averne uno. Il prezzo è dunque irrilevante, costasse ad oggi il doppio o il triplo, la percentuale di acquirenti che desisterebbero sarebbe veramente minima. Il possederlo offre molto più del corrispettivo in vile denaro. E questo accade non solo per i prodotti Apple ma per tutti gli altri feticci, feticcini e cacasenni in commercio. Una delle applicazioni più popolari per iPhone sembra essere instagr.am, uno sharing sociale di fotografie, qui il feticcio assume connotati interessanti. Si sta in coda per ore per acquistare un iPhone con la nuova fotocamera a n Megapixel e poi si fanno foto con effetto “vecchia polaroid”, artistiche quanto vogliamo ma pur non degne di cotanta tecnologia.

LGSP (Lavoro Guadagno Spendo Pretendo)

Chi ha inventato la nouvelle cuisine deve essere stato un genio, far pagare di più per mangiare di meno. Ti mettono un piatto gigantesco a tavola, te lo presentano con un nome da trecentoquarantasei caratteri, all’interno ci posizionano due cucchiai di banale riso alle zucchine e (per renderlo più saporito) te lo fanno pagare salato! La frase irriverente del titolo, pronunciata da famosi abbienti, si riduce ad essere soggiogata implicitamente da una mera operazione commerciale. E qui Jobs ha fatto da maestro. Ha reso appetibili dei prodotti, sicuramente all’avanguardia, sollevando la loro essenza ben più in alto di quanto ci si potesse immaginare.

Steve Jobs chi era costui?

Ma allora chi era veramente Jobs? Un visionario? Sicuramente. Un genio dell’Informatica? Probabilmente. Certamente Jobs era un commerciale che ha saputo sfruttare (a sua insaputa?) le teorie marxiste del capitalismo e del plusvalore della merce a suo favore. Sarebbe bello poterlo ricordare anche sotto questo punto di vista oltre che ai già citati. Ma non trascuriamo dettagli che lo hanno reso tale. Steve Jobs sarebbe diventato il “visionario” senza il suo poco citato ex-socio Wozniak? Le fabbriche cinesi di iPhone, iPad, iPod della Foxconn sono state rese famose alla cronaca per i numerosi suicidi degli operai che vi lavoravano. E’ eticamente accettabile acquistare un prodotto che nel suo prezzo include anche quello di vite umane?

Salviamo il soldato Richard

Molti hanno polemizzato l’intervento di Richard Stallman riguardo la morte di Jobs, ma forse pochi si sono sforzati di comprendere e di dare una chiave di lettura a ciò che egli ha cercato di esprimere. L’influenza di Jobs che RMS sintetizza nelle parole “the pioneer of the computer as a jail made cool, designed to sever fools from their freedom” deve essere necessariamente valutata anche sotto il profilo etico e della libertà. Un prodotto Apple offre davvero poco sotto il profilo della libertà e costruisce spesso meccanismi per bloccare l’utente: brevetti, DRM, ecc. Il mio, come quello di Stallman è un punto di vista alternativo, opinabile ma pur tale. Non sono contento della morte di Jobs, nessuno lo sarebbe, ma in me non posso non sperare che con lui finisca un’era di chiusura, di brevetti e di lock-in nei prodotti Apple.

Cogli la nuova mela

Netscape tempo fa, anche grazie al saggio La cattedrale e il Bazaar ha compiuto un passo gigantesco e da quell’atto eroico è nato il progetto Mozilla e il browser Firefox. La speranza, sicuramente utopica, è quella di una palingenesi libera della Apple e dei suoi prodotti. Una nuova nascita che, come l’araba fenice, rinasca dalle sue (compiante) ceneri e doni vita nuova ad uno spettacolare esemplare di uccello fiammante. Libero sofware in libero hardware ovviamente. Non più trucchetti per restringere la libertà dell’utente e non più inganni per controllarlo remotamente.