Skip to content


Trenitalia e l’alta velocità

Una volta mi piaceva molto viaggiare in treno e quindi anche ora che non sono più un pendolare universitario cercare la stazione ferroviaria più vicina alla mia destinazione è sempre la prima scelta.
Purtroppo non viaggio più in treno molto spesso, perchè semplicemente non mi conviene.

Diciamo però che non abito nelle città principali e non devo sbarcare in un’altra città principale, semplicemente devo andare, che so, da Rimini a Merano.
Arrivo sulla pagina di ricerca e subito devo scegliere se privilegiare il risparmio o la velocità.
Il viaggio veloce e costoso vale 17,50€ in più.
Il viaggio più lento dura 7 ore e 14 minuti, quello più veloce esattamente 38 minuti in meno.

Diciamo che vogliamo privilegiare la velocità quindi, siccome quando si va poi si torna, questo viaggio consta di 13 ore e 12 minuti alla “modica” cifra di 84,50€ (ho scelto di viaggiare in prima classe perchè poi voglio fare un confronto)
Google maps mi dice che i km di viaggio su strada asfaltata sono 421, diamo un po’ di vantaggio al treno e diciamo che i binari vanno più dritti: 400km.
Questo vuol dire che alla spesa di quasi 90€ sto viaggiando a ben 60km/h.

Proviamo invece a stimare i costi della mia inquinante macchina.
Siamo in due naturalmente (i viaggi son più divertenti se non si è soli), quindi divideremo le spese e le fatiche della guida.
Considero la macchina una prima classe: non è un’utilitaria, ha tutti i comfort e ti fermi a prendere il caffè quando vuoi.
Google maps mi ripete che il viaggio sono 421km e dice che posso farcela in 3 ore e 54 minuti.
So già che l’autostrada mi costerà 20€ e la benzina circa 40€.
Diciamo che ci si ferma a prendere 2 caffè (eufemismo per andare in bagno) per 15 minuti a sosta; il tempo totale di percorrenza diventa quindi 4 ore e 26 minuti.
Andata e ritorno useranno 8 ore e 52 minuti di vita per coprire 842 km.
Viaggio quindi a quasi 95km/h spendendo 60€ (a testa).

E se c’è traffico potete obiettare?
E se il treno ritarda e perdi il cambio dico io?
I ritardi sono frequenti e le coincidenze non esistono più, il treno dopo non aspetta nemmeno un minuto.

Naturalmente se si sceglie di viaggiare in seconda classe la differenza si riduce, ma magari posso prendere la macchina dei miei che è GPL e diminuisco la spesa benzina e se poi non mi fermo per il caffè ci metto anche meno tempo.
Questo confronto è un gioco che non ha pretese di precisione assoluta, ma avendo notato questo schema ricorrente nei miei viaggi Conan si è arrabbiato ed ha voluto farlo presente.

Tutte le volte che devo viaggiare controllo l’orario dei treni, cerco di dimenticarmi la sporcizia, la scortesia, i ritardi e i rimborsi impossibili da ottenere, ma è tutto inutile, quando arrivo al tempo di viaggio ed al costo mi devo arrendere, non ho più nessun motivo per affidarmi alle rotaie. Eppure mi piaceva tanto.

Posted in hai fatto arrabbiare conan, real life.


All’appello root è assente

**9/4/2010: ho dovuto aggiornare la procedura perchè la vecchia non permetteva al nuovo utente root di concedere i privilegi. Ora sembra tutto a posto.**

Mi è capitata un’installazione di mysql senza l’utente di root e senza altri utenti che avessero privilegi di amministrazione.
Questo quindi impediva ogni utilizzo del db, ovviamente la reinstallazione non era un’opzione e quindi ho dovuto escogitare un sistema.

Dopo un po’ di ricerche ho definito questa procedura:

  1. Arresto di mysqld.
    uccidendo il demone

    kill `cat /var/run/mysqld/mysql.pid`

    Sono essenziali i backticks (`) perchè sostituiscono alla stringa l’output del comando; il loro codice ASCII è 96.
    Probabilmente il resto della procedura funziona anche con un semplice
    service mysqld stop o analoghi, fate sapere se provate.
  2. Riavvio del servizio in una modalità che ci consenta spazio di manovra, quindi

    mysqld_safe --skip-grant-tables

    dove l’opzione –skip-grant-tables fa tutta la magia che ci serve, portandoci in un mondo dove non abbiamo più bisogno di un utente per connetterci a mysql
  3. ed infatti la connessione al server
    mysql
    ci lascia nella consolle di mysql liberi di creare un nuovo utente.

    Fermi là illusi

    CREATE USER bla bla

    non funziona, questa modalità non permette certi giochini quindi si fa tutto a mano.

    USE mysql;
    INSERT INTO user VALUES ('localhost','toor','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','','0','0','0','0');
    FLUSH PRIVILEGES;

    il FLUSH in fondo è essenziale, perchè altrimenti i privilegi faticosamente inseriti non verranno recepiti; a proposito le ‘Y’ sono 26.

  4. non ci resta che uscire dalla consolle, uccidere di nuovo il demone con il kill di cui sopra e riavviare il servizio con il vostro comando preferito.
  5. rientramo nella consolle questa volta con il solito metodo usando l’utente appena aggiunto

    mysql -u toor -p
  6. e creiamo finalmente l’utente root nel modo canonico:

    GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY ' ' WITH GRANT OPTION;
    FLUSH PRIVILEGES;
  7. dopo aver testato il funzionamento del nuovo(?!) utente root cancelliamo l’ utente toor perchè è pericoloso lasciare in giro due amministratori

    DELETE FROM mysql.user WHERE User LIKE 'toor';

La procedura è semplice e veloce; ora che è anche testata si potrebbe anche saltare la parte di creazione dell’utente ‘toor’ e buttare dentro direttamente root, ma io non rischierei, quella query lunga e tutta uguale è sinistramente “error prone” (come dicono anche sul sito ufficiale di mysql).

Aproposito, ‘toor’ è il contrario di ‘root’, che sia l’amministratore buono che tutti cercano?

Posted in system administration.

Tagged with , , , , .


Not with a bang

di Damon Knight

Uno dei migliori titoli che io abbia mai visto.
è un racconto breve, non cercatelo su wikipedia, vi raccontano il finale.

Rovinandovelo per sempre.

Posted in meraviglie.

Tagged with , .


Abuso di Tagline

Nel blog è attivo il plugin Tagline Rotator che ad ogni reload della pagina cambia la tagline.
Io ne abuso.
Ecco qui sotto l’elenco per leggerle tutte comodamente:

  • lavoriamo su internet non esiste nulla di grave
  • anca la prescia la vo e su témp
  • la regola è:”niente mmorpg, niente miniature”
  • didacevi? damacavi? didaciami?
  • security through obscurity is not security
  • If you give a good idea to a mediocre group, they’ll screw it up.
  • Ci vuole scienza, ci vuol costanza ad invecchiare senza maturità

Posted in Uncategorized.


iptables, rapida guida per chiudersi fuori da un server

1
2
3
iptables -A INPUT -j DROP
iptables -A OUTPUT -j DROP
iptables -A FORWARD -j DROP

Fatto, vi siete chiusi fuori dal server e anche molti software ora non stanno più funzionando.

Voi ( e i cattivi) non potete più entrare perchè iptables è un firewall (porta tagliafuoco) e quindi sta scartando (-j DROP) tutte le richieste che arrivano al server e i software non funzionano più perchè iptables elimina anche i messaggi che passano per l’interfaccia di loopback (lo) che viene usata dai programmi per comunicare tra loro.

Iptables divide le sue regole in 3 tabelle (tables), ognuna dedicata ad un utilizzo diverso:

  • nat
  • mangle
  • filter

Ogni tabella ha delle chains (elenchi di regole) predefinite.
Per un utilizzo minimo ci basta la tabella mangle e 3 delle sue chains:

  • INPUT: dedicata hai pacchetti destinati all’host locale
  • OUTPUT: per i pacchetti uscenti
  • FORWARD: pacchetti destinati ad altri host

.
Naturalmente per mettere in produzione un firewall è meglio (molto meglio, essenziale) capire come funziona iptables e come i pacchetti attraversano tabelle e chains, non mi dilungo, leggetelo qui o in un qualunque altro sito dell’elenco che propone google.

Per farla breve, comunque, un pacchetto entra in una chain e si scorre l’elenco di regole contenute dalla prima all’ultima,applicandole immediatamente.
Di conseguenza un pacchetto che incontra un DROP viene scartato ed esce dalla chain.

Prima cosa da imparare: l’ordine delle regole conta.
Nel cattivo esempio di cui sopra non serve a niente aggiungere altre regole, siamo fuori e ci rimarremo.

Cancelliamo quindi le regole inserite sopra.
Abbiamo 3 sintassi possibili:

  1. Le regole non sono ancora persistenti, vanno esplicitamente salvate, quindi riavviare la macchina.
    Questo ci manda a ramengo l’uptime, ma noi perfortuna non ne siamo schiavi.
  2. Eliminarle tutte insieme
    1
    
    iptables -F
  3. Cancelliamo una regola alla volta:
    1
    2
    
    iptables -D {regola}
    iptables -D [CHAIN] [numero di riga(partendo da 1)]

    iptables -D si può usare inserendo il numero di riga in cui appare la regola oppure riscrivendo la regola con la sintassi usata per aggiungerla (-A oppure -I)

Verifichiamo di esserci liberati delle regole chiedendone la lista (-L):

  • una elenco semplice
    1
    
    iptables -L
  • più informazioni

    1
    
    iptables -L -v
  • con numeri di linea (così magari usiamo con più tranquillità l’opzione -D)
    1
    
    iptables -L --line-numbers

A questo punto possiamo prendere il tablet (non un iPad per favore) su cui abbiamo segnato i servizi offerti e le porte che usano per iniziare ad appendere le regole.
Per semplicità userò negli esempi solo le chain INPUT e OUTPUT.

La nostra priorità è di consentire tutto il traffico sull’interfaccia di loopback (lo), quindi:

1
2
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -i lo -j ACCEPT

spiegazione:

iptables, appendi (-A) alla chain INPUT la regola che tutti i pacchetti che passano per l’interfaccia (-i lo) sono accettati (-j ACCEPT)

Al primo posto dei servizi permessi c’è sicuramente ssh quindi vogliamo che siano possibili connessioni entranti e uscenti sulla porta 22 (default).

1
iptables -A INPUT --dport 22 -j ACCEPT

Questa regola dice ad iptables di accettare le connessioni entranti dirette alla porta 22.
Questa regola base può (e deve) essere migliorata con ulteriori vincoli:

  • accettare solo uno specifico protocollo, nel caso specifico tcp
    1
    
    -p tcp
  • verificare lo stato della connessione. Nel caso di connessioni entranti dobbiamo accettare sia comunicazioni nuove che già attive (NEW ed ESTABLISHED)
    1
    
    -m state --state NEW,ESTABLISHED

    attenzione, non di devono essere spazi intorno alla virgola.

  • potremmo poi voler accettare solo le connessioni dirette ad un solo IP
    1
    
    -d [indirizzo ip]
  • oppure consentire l’accesso solo ad uno specifico IP/rete
    1
    
    -s [indirizzo ip]/[netmask]

    per lasciare libera la connessione si può non specificare nulla oppure usare

    1
    
    -s 0/0
  • eventualmente si può anche specificare da che porta deve partire la connessione affinchè sia accettata
    1
    
    --sport [numero di porta]

    per consentire un intervallo

    1
    2
    3
    
    --sport [porta partenza]:[porta base]
    es.
    --sport 1024:65535

Una regola ragionevolmente restrittiva da cui partire diventa quindi:

1
iptables -A INPUT -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT

Siccome dopo diremo al firewall di scartare tutti i pacchetti entranti e uscenti che non siano altrimenti regolati dobbiamo anche dire ad iptables cosa fare delle risposte che richiede il client ssh:

1
iptables -A OUTPUT -p tcp -m state --state ESTABLISHED -j ACCEPT

La sintassi è identica, cambia solo la chain a cui appenderlo e non sono specificate le porte della connessione.

A questo punto non rimane che reiterare la logica applicata per ssh per ogni servizio a cui vogliamo consentire l’accesso.

Finito l’elenco dei servizi blocchiamo tutto di nuovo:

1
2
3
iptables -A INPUT -j DROP
iptables -A OUTPUT -j DROP
iptables -A FORWARD -j DROP

A questo punto un port scanner tipo nmap vi segnalerà solo la porta ssh disponibile e l’output di iptables -L dovrebbe essere:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ssh state NEW,ESTABLISHED 
DROP       all  --  anywhere             anywhere            
 
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
DROP       all  --  anywhere             anywhere            
 
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     tcp  --  anywhere             anywhere            tcp spt:ssh dpts:login:65535 state ESTABLISHED 
DROP       all  --  anywhere             anywhere

Il parametro -A appende una regola in fondo alla chain selezionata, volendo inserire una regola in una posizione specifica si usa:

1
iptables -I INPUT 3 {regola}

Che ci consente di appendere {regola} alla terza posizione della chain (sempre partendo da 1).

Lavorando con i firewall è purtroppo molto facile fare errori che poi richiedono di loggarsi in locale sulla macchina per essere riparati.
Siccome più spesso che no il server è a qualche chilometro dalla tastiera su cui stiamo lavorando la seconda semplice precauzione da prendere è di spegnere il firewall ogni 5 minuti

1
2
3
4
crontab -e
  */5 * * * * /sbin/service iptables stop (centos)
  */5 * * * * /etc/init.d/iptables stop (debian-like)
  */5 * * * * /sbin/iptables -F (per tutte le stagioni)

Ovviamente la prima precauzione da prendere è provare la configurazione sul server di test.

Riassunto dei comandi

  • visualizzare le regole
    1
    
    iptables -L -v --line-number
  • eliminare tutte le regole
    1
    
    iptables -F
  • eliminare una regola
    1
    2
    
    iptables -D [chain] [numero regola]
    iptables -D [chain] {sintassi regola}
  • appendere una] regola in fondo alla chain
    1
    2
    3
    
    iptables -A [chain] {sintassi regola}
    es.
    iptables -A INPUT -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT (per ssh)
  • appendere una regola in posizione specifica
    1
    
    iptables -I [chain] [numero riga] {sintassi regola}

Iptables ha molti più parametri di così.
Per un firewall sicuro ci vuole molto più studio di questo semplice tutorial, si possono creare nuove chains e modificare i pacchetti prima del routing e dopo il routing; genericamente si può gestire ogni aspetto dei flussi entranti e uscenti.

Posted in system administration.

Tagged with , , , , , .


Si ho visto Avatar. No, non mi è piaciuto

Vorrei esprimere il mio giudizio su avatar con una metafora:

Diciamo che ho una ditta che mi deve rifare l’unico bagno di casa.
Mi ci mette lo specchio autopulente con sbrinatore (una palla darci col phon), il pavimento riscaldato, la porta della doccia che è uno schermo lcd touch, la rubinetteria in oro e le piastrelle più belle ma si dimentica il water io non dico “ottimo lavoro ragazzi siete i migliori”.
Io dico “cazzo avete dimenticato il water” poi proseguo “wow il resto è fighissimo cavolo questo specchio è proprio la roba più comoda, ma avete dimenticato il water, bella la porta della doccia, ma il water? cioè, come avete potuto fare un lavoro così bello e dimenticare il water?”.
Se poi incontro un amico che mi chiede “come sono venuti i lavori al bagno” non gli dico “una F-I-G-A-T-A”, la mia risposta sarebbe più simile a:”Hanno dimenticato il water, un lavoro fatto benissimo, ma hanno dimenticato il water

Ecco, secondo me Cameron ha dimenticato il water.

Vuoi sapere il mio voto al film?
guarda che ti fa arrabbiare eh
ok, hai insistito.
quattro.

Per una dissertazione più lunga e meno metaforica, per leggere un articolo che non la pensa come me, ma scritto bene e meditato (quindi degno di considerazione): filmclod.it – Avatar (io mi annido nei commenti ovviamente).

Posted in hai fatto arrabbiare conan, real life.


prendetelo più SEOriamente

Andrea Vit senza saperlo ha scritto una perfetta integrazione al mio articolo “Non prendetemi SEOriamente“.

Nel mio articolo parlavo di come secondo me l’evoluzione dei motori di ricerca modificherà il ruolo del SEO, ma avevo tralasciato completamente i colleghi di lavoro del summenzionato SEO, ma dimenticavo che “l’altra faccia della medaglia” ci insegna che è sempre un errore tralasciare le altre prospettive.

Nel leggere le descrizioni del team di sviluppo nell’articolo di Andrea (posso darti del tu vero?) ho ritrovato proprio quello che mi aspetto che un buon team faccia e sappia fare, quindi vi rimando al suo post “Il SEO è inutile. Forse. O forse cambierà soltanto…” sapendo bene che le mie aspettative nei confronti di chi fa il mio stesso lavoro (ed anche verso me stesso) sono alte, ma del resto secondo me non esiste codice biologico, ma solo errori di management e la voglia di migliorarsi.

Posted in buone idee, development, puffo con gli occhiali.


enlarge your elementis

Leggilo in italiano (che è meglio)

In this article I’m talking about The Ugly Prototyper a concept idea for a prototyping functionality.

When I start a web project sometimes I need to think about the size of the element on a page.
You are saying “never heard about photoshop/fireworks/flair builder/other prototyping software?” yes, I’ve done my homework, tryed lot of them and discovered that none give me the possibility to input a percent of the father element and get a new object of the proper size.

Practically we have to rely only on us eyes to decide if the logo (or content area) is big enough.
We put elements on page, size them and only then mathematically calculate their encumbrance (when this happens).
It’s a trials and errors method.
I don’t like at all.

If you are designing with a content-driven method you have to decide the right priority of the page elements, I think that a good starting point is to say:”the content area cannot be less than the 33% of the page, the header must be no bigger than 25%, ads will be 25%”, visually see it, modify and then (only then) start with the real prototyping and design.

So I developed my tool.
I made it in few nightly hours, sorry, it lacks of functionality and usability.
You have to reload a page if you change the working area size after creating some child and a lots of others problem.
In my excuse: this is not a release!
The Ugly Prototyper is on line just to be showed to my friends and to gather opinions

Italiano:
In questo articolo parlo di The Ugly Prototyper, un concept per uno strumento di prototipizzazione.

Ho provato diversi software per la prototipizzazione delle pagine web (e più genericamente delle interfacce) e non ho trovato nessuno che mi fornisse la possibilità di inserire una percentuale ed ottenere in cambio un oggetto della dimensione giusta.
Lo trovo strano, perchè in questo modo per il posizionamento contiamo solo sul nostro occhio che potrebbe non essere abbastanza allenato.
Penso che in fase di progettazione, specie se usiamo un approccio content-driven, sarebbe un buon punto di partenza poter decidere che l’header non debba essere più grande del 25%, i contenuti non più piccoli del 33% visualizzandone gli ingombri per poi partire con la prototipizzazione ed il design reali.

Nessuno me lo faceva e così ho creato il mio tool.
è stato sviluppato in poche ore notturne, quindi ha parecchi problemi, tra cui che non ha un sacco di funzionalità comode e necessarie, che bisogna ricaricare la pagina se si cambiano le dimensioni dell’area di lavoro dopo aver già creato almeno un oggetto ed un sacco di altre cose.

A mia discolpa posso dire che questa non è una release (e forse non ci sarà mai una release).
The Ugly Prototyper è messa on line per farsi vedere dagli interessati e raccogliere qualche opinione.

Posted in buone idee, development.

Tagged with , , .


Il piccolo vocabolario degli orrori

Alcuni neologismi non esisteranno, ma sono proprio adorevoli (opplà), alcune crasi non passeranno mai nel setaccio della crusca, ma sono così comode, altri termini saranno pure dei mezzosangue reietti, ma noi li lovviamo.
Questo è un piccolo vocabolario di parole che non esistono, ma ci piacciono (io e dplastino) e ci piace giocarci.
Prendi pure a prestito la parola che vuoi, sono nell’aria.

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

A

Adorevole: adorabile, ma come il velluto.

L

Lovvare: piacere, ma tanto.

N

Notisfiga: le notifiche, ma quelle fastidiose.

S

statutor: compendio dei doveri di un tutor.

T

Translapi: la Api di Google translate
Twitterizionario: persona che ha solo 140 caratteri e riesce ad usarli con perizia incredibile
Twittabile: un link o un pensiero che meritano di essere twittati es: Questo ha un’alta twittabilità

W

Wavvare: l’atto di inviare un messaggio su googlewave. es: Ti wavvo subito la mia opinione.
Web-(s)content: di lavoro scrive i testi, ma non è contento. (di dea.simo)

Posted in meraviglie.

Tagged with .


La terza faccia della medaglia

Finalmente ci siamo.
L’idea descritta in questi due post:

è diventata un’estensione per wordpress.
La pagina che la descrive e permette lo scaricamento si chiama: bSEM – Un grassetto per domarli tutti.

L’idea è esaurientemente spiegata nei due post e nella pagina dedicata, quindi non la riassumerò nuovamente.

Vorrei però ribadire qualche punto saliente e l’importanza dell’estensione.
Il nostro modo di vivere il testo scritto è cambiato profondamente.
Mentre la pagina stampata era un media fisso, immutabile nel tempo fruire i contenuti scritti sul web (e sui computer in generale) ci permette di cambiare l’aspetto del testo al cambiare delle nostre esigenze.

Le nostre necessità cambiano tra il momento in cui apriamo la pagina ed il momento in cui effettivamente incameriamo le informazioni
Quindi è giusto che anche la pagina, per aiutarci, cambi con noi.
L’estensione si occupa di rendere coerente l’uso del grassetto con il tipo di lettura che stiamo facendo.

Ho scritto anche troppo.
L’estensione è attiva su questo blog.
L’estensione è scaricabile a questo indirizzo: bsem.lghinelli.it
L’estensione è per wordpress, ma è integrabile con qualsiasi pagina, basta includere il js, i css e seguire le regole.

Per il momento in attesa che wordpress accetti di ospitare l’estensione nella directory dei plugin per segnalare i bug e proporre modifiche avete a disposizione:

  • i commenti di questo post
  • email: info@lghinelli.it
  • wave: lghinelli@googlewave.com

Posso sognare di implementare una feature?
In un mondo bello, bello in modo assurdo (cit.) l’estensione assegnerebbe i bSEM alle parole/frasi più significative in base alla provenienza dell’utente offrendo non solo una lettura più facile, ma anche personalizzata.
Ok, ho esagerato, ma io nel web semantico ci spero molto.

Posted in buone idee, development.

Tagged with , , , .


Ma te a casa leggi i papiri?

Scopro grazie a questo post Luisa Carrada su Il mestiere di Scrivere che il New York Times ha raccolto alcuni pareri autorevoli sul tema della lettura su schermo.

Il tema mi è caro perchè ritengo che sia uno dei campi in cui ancora c’è molta innovazione da vedere e che vada affrontato in fretta e di petto liberandoci da alcune vecchie ragnatele di pensiero che ci portiamo dietro.

Ho già affrontato un aspetto della questione nei post “una faccia della medaglia” e “l’altra faccia della medaglia” in cui introduco il tempo come variabile da tenere in considerazione per aiutare la lettura di una pagina.

Un altro parametro (di cui ho imparato solo recentemente il nome) è il mantenimento degli indici spaziali.
Uno dei problemi più importanti quando leggiamo su monitor è lo scroll.
Ogni volta che usiamo la rotella del mouse scorriamo la pagina di un numero arbitrario di righe (su windows e linux il default è 3, ma è impostabile, io uso 2) e questo ci costringe ogni volta a percorrere il testo per ritrovare il punto in cui rileggere.

Da qualche anno ormai cerco di costruire un sito che abbia esclusivamente uno scorrimento orizzontale.
Perchè?
Perchè io a casa non ho una collezione di papiri, ma di libri e i libri hanno uno sviluppo orizzontale piuttosto che verticale.
L’intuizione (non originale, tutte le metafore informatiche sono nate così) è stata di copiare l’analogico che abbiamo intorno.
Approfondendo l’intuizione per trasformarla in idea e poi in pratica i punti che ho reputato minimi ed indispensabili sono diventati questi:

  1. Mantenere le righe di testo ad una lunghezza accettabile (75 caratteri più o meno)
  2. Occupare tutto lo spazio verticale possibile
  3. Eliminare in ogni caso lo scroll verticale
  4. Fare in modo che lo scroll orizzontale non fosse fluido, ma a scatti, di blocco di testo in blocco di testo

Il punto forte è il n°4, infatti quello che ci consente una lettura più fluida non è la direzione di scorrimento, ma facilitare il lavoro dell’occhio, spostandoci di un blocco di testo l’occhio va automaticamente alla prima lettera della prima riga del nuovo blocco, nessuna confusione, nessun ritardo, vita più facile.

Altro punto fondamentale è il n°3, esistendo una molteplicità di device e risoluzioni non possiamo decidere arbitrariamente di limitare l’altezza di un blocco di testo a nostro piacimento, farlo provocherebbe frustrazione in chi ha un monitor più alto e costringerebbe i monitor minori (cellulari in primis) ad avere uno scroll in due direzioni, cosa che i nostri device di puntamento non ci consentono facilmente.

Un esempio di “orizzontalizzazione” dei contenuti è the horizontal way e come si può vedere nel tentativo di rispettare il punto n°2 rende fissa l’altezza (da bravo sito web rispetta una risoluzione minima di 1024×768) e non prende in cosiderazione il punto n°4 portando i difetti dello scroll verticale nel “mondo orizzontale”.
Sia chiaro che prendo “The Horizontal Way” come esempio in quanto uno dei siti che a suo tempo analizzai con più cura e non certo per criticare l’ottimo lavoro Marco Rosella.

Recentemente ho rivisto l’idea e ho scoperto che l’orizzontale non è necessario, il punto fondamentale è il n°4 e può essere usato in qualunque direzione, l’importante è spostarsi seguendo dei blocchi di testo, meglio se i blocchi hanno anche un significato semantico.

La mia idea risale ad ormai anni fa e periodicamente la riprendo in mano, nell’ultima (recente) rianalisi della questione ho eliminato dai requisiti il punto n°2, il monitor non è una pagina, abbiamo spazio in tutte le direzioni, usiamolo. ma questa è un’altra storia ed un altro post.

Posted in buone idee.


L’altra faccia della medaglia

In occidente ogni giorno
decine di lemuri
vengono maltrattati senza ragione
questo post è dedicato alla difesa
di questi sciacalli.

Si, c’è un errore. Un problema banale di coerenza nel testo: un’anafora che non funziona come dovrebbe. Talmente banale che non vi sorprenderà sapere che non vincerete un premio per averlo scoperto. Quello che dovrebbe sorprendervi è invece la facilità e la precisione con la quale appena letta la parola “sciacalli” siete tornati a leggere la parola “lemuri”. Se tutto è andato come dovrebbe, non avete riletto il testo per ricercare la parola sbagliata, ma siete direttamente saltati alla sua posizione.

Nella frase che segue invece tutto è coerente dal punto di vista semantico:

In occidente ogni giorno
decine di lemuri italiani
vengono maltrattati senza ragione.
La stessa sorte spetta agli
sciacalli francesi.
Un’altra categoria a rischio sono i falchi turchi.

Nessun problema semantico in questo caso, eppure anche qui c’è qualcosa che non va. Questa volta si tratta di coerenza grafica: nelle prime due frasi i nomi di animali (lemuri e sciacalli) sono in grassetto e la loro provenienza (italiani, francesi) è in corsivo. Nella terza questo codice è ribaltato.

Dietro a questi due esempi sta buona parte della progettazione dell’estensione che avete incontrato in un post precedente: «Una faccia della medaglia» e che serve a tenere insieme in una pagina web i grassetti che servono ad aiutare la lettura (scelti dal redattore) e i grassetti che servono ad ancorare il lettore alle parole chiave di un testo (scelti dal SEM) distinguendoli da un punto di vista grafico e temporale. I grassetti di lettura servono a comprendere meglio il testo, i grassetti SEM servono invece a individuare le parole chiave del testo durante una prima lettura rapida, per capire se il contenuto ci interessa o no.
C’è una descrizione più precisa nel post originale a cui vi rimando.

Quello che faremo è invece condividere alcune delle riflessioni sulla User Experience che hanno animato la fase di design dell’estensione e che potrebbero servire a dare qualche indicazione sul design di applicazioni web più in generale. Cosa c’entrino lemuri, sciacalli e falchi lo capirete a breve.

Se avete letto il post precedente capirete di cosa parliamo. Se non l’avete fatto siete ancora in tempo per farlo.

Fatto? Bene.

La versione che vedete ora (anche in questo post) è solo l’ultima di una serie di prove, in gergo iterazioni che abbiamo testato per decidere quale fosse la maniera migliore di distinguere graficamente (come) e temporalmente (quanto) ha richiesto lo scambio di un buon numero di mail.
Se vi capitasse di sviluppare qualcosa di simile sappiate che un modo sbagliato di ragionare è quello di considerare ogni elemento separatamente:

  1. Decidiamo quale sia lo stile migliore da attribuire al grassetto SEM « acceso » per renderlo rapidamente reperibile a una prima lettura;
  2. Poi quale sia lo stile migliore da attribuire al grassetto SEM « spento » per renderlo leggibile a una seconda lettura;
  3. Infine decidere dopo quanto tempo il grassetto SEM deve spegnersi;

É quello che abbiamo fatto in un primo momento, rendendoci poi conto che le nostre soluzioni non potevano funzionare. Ripercorriamo le fasi del design.

Fase 1: grassetti evidenziati, e testo normale

In un primo momento i grassetti SEM accesi erano evidenziati in rosso: così e quando si disattivavano apparivano come testo normale: cosi.
Soluzione che soddisfaceva pienamente il nostro desiderio di fornire il miglior layout alle due fasi della lettura:
massima leggibilità nella prima, minima distrazione nella seconda.

Il problema è però che per quanto riguarda l’Esperienza dell’Utente queste due fasi di lettura non sono affatto indipendenti: l’utente coglie informazioni di un certo tipo nella prima lettura che poi utilizzerà nella seconda, ma non vive una pausa tra le due. Inoltre, come i due esempi di lemuri sciacalli e falchi ci hanno dimostrato, quando leggiamo un testo non ci interessiamo solo al suo contenuto semantico, ma ci serviamo anche della sua posizione e del suo aspetto di superficie: usiamo degli indici spaziali e grafici per identificare un contenuto con l’aspetto che questo ha all’interno della pagina, in modo da poterlo ritrovare quando diventerà per noi interessante. Il primo esempio ci ha dimostrato quanto possa essere preciso questo meccanismo, e spiega ad esempio perchè fatichiamo cosi tanto a leggere dei pdf a monitor: ogni volta che facciamo uno scroll perdiamo quegli indici spaziali la cui stabilità costituisce la struttura di superficie del testo che è fondamentale alla sua comprensione.

Da questo punto di vista la nostra soluzione poneva due problemi:

  1. Il primo problema riguarda l’evidenziazione dei grassetti SEM, che catturavano troppo la nostra attenzione: Lo sfondo rendeva molto “grafici” i grassetti e portava a dare poca attenzione al testo. Proprio perchè diamo molta importanza alla struttura di superficie del testo in questo caso gli occhi rimbalzavano sui blocchi rossi senza fermarsi sul loro contenuto. Per capire quale sia la struttura di superficie del vostro testo e quali elementi attirino maggiormente l’attenzione potete testare la vostra interfaccia con delle tecniche di eye tracking.
    Un modo low cost per averne comunque un’idea approssimativa è quello di sfocare (con Photoshop) un’immagine della vostra pagina e vedere quali sono le strutture che restano salienti. Molto probabilmente l’occhio seguirà queste strutture.
  2. Il secondo problema che avevamo riguardava il passaggio dal grassetto evidenziato al testo normale. Anche in questo caso il problema era dato dal fatto che la struttura con cui l’utente diventava familiare durante la prima lettura scompariva nella seconda. E questo perchè avevamo considerato la prima e la seconda lettura come due eventi indipendenti, mentre in realtà sono strettamente collegati: giustamente l’evidenziazione creava una struttura visiva di superficie (delle etichette rosse) che doveva servire a scorrere il testo a una prima lettura. Ma avevamo dimenticato che aiutare la prima lettura significa fornire le basi per la seconda!
    Nel nostro caso la differenza grafica tra grassetti SEM attivi e non attivi era troppo grande, e l’utente non aveva alcun modo di servirsi nella seconda lettura di quegli indici grafici che aveva incontrato nella prima.

La prima soluzione è stata quella di sostituire le evidenziazioni con dei dei grassetti normali. Non abbiamo scelto di adottare un’evidenziazione meno forte perchè l’evidenziazione rappresenta un problema in sè: crea degli spigoli. E siccome i nostri occhi sono attirati dalle strutture salienti e discontinue come gli spigoli, c’erano molte meno probabilità che gli occhi cadessero anche sulle parole che si trovano prima o dopo il grassetto. E questo era un male perchè il grassetto dovrebbe si attirare lo sguardo sulla parola importante, ma all’interno di una frase che dovrebbe comunque essere percepita per intero, anche se rapidamente.

Come seconda soluzione cosa abbiamo deciso di trasformare i grassetti disattivi in grassetti più “magri”, graficamente vicini al testo normale, ma ancora distinguibili. Questo per evitare il problema di coerenza visto nel secondo esempio di lemuri, sciacalli e falchi: leggo dei grassetti molto marcati, imparo a distinguerli semanticamente dal testo normale finchè ad un tratto la distinzione scompare e le caratteristiche grafiche che avevo imparato a distinguere si fondono con il testo normale. Rendendoli meno intensi, ma ancora distinguibili dal testo standard, introduciamo non una forte variazione grafica, ma una modulazione che permette all’utente di passare alla seconda lettura mantenendo però gli indici grafici e spaziali che aveva appreso nella prima.

Fase 2: Gestione del tempo
In una seconda fase ci siamo invece occupati del tempo. Per quanto tempo i grassetti SEM devono restare attivi ? In un primo momento avevamo deciso di far sparire l’evidenziazione dopo un numero di secondi pari a quello delle parole evidenziate presenti nella pagina. Ad esempio: 20 parole, 20 secondi. Un ottimo criterio quantitativo, ma che si basa su un’interpretazione sbagliata delle azioni e delle intenzioni dell’utente. Questo criterio funziona solo se l’utente durante la prima lettura arriva direttamente in fondo alla pagina subito dopo averla aperta. Ci eravamo dimenticati una possibilità: quella che la pagina fosse aperta, ma letta solo dopo un certo tempo. Una possibilità resa molto probabile dall’uso dei TAB.

Quante volte vi capita di aprire un nuovo tab e poi leggere la pagina molto tempo più tardi?. Nel tempo che passa tra l’apertura del tab e l’effettiva lettura della pagina le nostre evidenziazioni sarebbero sparite, e ci saremmo ritrovati con un gran numero di utenti che non le avrebbe mai viste.
La soluzione adottata in questo caso è stata quella di far cominciare il conto alla rovescia solo dopo un periodo di attività del mouse sulla pagine, il che ci garantisce che l’utente stia scorrendo la pagina quando inizia il conteggio.

Queste modifiche ci lasciano con l’estensione WordPress che verrà ufficialmente rilasciata nei prossimi giorni (siamo ancora in trattativa per l’esclusiva con Wired). Ci lasciano anche qualche saggio insegnamento sul webdesign: volete costruire una buona User Experience? Prendetevi cura della coerenza e della continuità:

  1. Gestite in maniera coerente gli indici grafici e spaziali che servono all’utente per orientarsi nella semantica del testo. Fate attenzione alla struttura di superficie della vostra pagina.
  2. Prendete in considerazione che l’utente vive anche al di fuori della vostra pagina. Chiedetevi sempre da dove venga, cosa voglia fare quando agisce in un certo modo, dove vorrebbe andare poi;
  3. Rendeveti conto che non esiste una sola categoria di utenti, ma che il nostro design deve cercare di soddisfarne il più possibile. Non ci sono solo diverse versioni di browser, ma diverse pratiche d’uso del browser: ad esempio c’è chi legge tutto subito e chi apre tab che leggerà solo in seguito. Pensateci, se progettate un’applicazione che evolve nel tempo.

Alcuni di voi si staranno ancora chiedendo il senso degli esempi su lemuri, sciacalli e falchi in apertura di post. Ci sono tre risposte:

la prima è che se avessimo voluto inserirli solo per spiegare l’importanza di indici non semantici e della coerenza superficiale saremmo stati costretti a introdurli con « ora leggete questa frase ». Voi avreste capito che c’era qualcosa sotto e l’esempio non avrebbe funzionato cosi bene (mica bello farsi fregare cosi in un post in cui si scrive di User Experience).

La seconda ragione è che certe volte la curiosità di capire dove il post andrà a parare può motivare la lettura più di un buon riassunto.

La terza è che è molto divertente iniziare un post scrivendo di lemuri, sciacalli e falchi.


lghinelli:
Questo post è il frutto di molte iterazioni tra me e Claudio.
Io avevo cominciato a sviluppare l’idea e ne ho parlato con lui per avere un feedback.
Il risvolto inaspettato è che l’idea lo ha interessato molto ed ho quindi potuto accedere al suo specifico corpus di conoscenze imparando molte cose e rendendo l’estensione di gran lunga migliore rispetto a quanto avrei mai immaginato.

Claudio è stato completo e chiaro (ma del resto ne ero sicuro), spero che la lettura sia stata per voi interessante tanto quanto lo è stato per noi il processo che ci ha portato qua.
Mi limito solo a ringraziare di nuovo anche le altre persone che hanno collaborato all’idea:

dplastino che mi ha spiegato tutto quello che dovevo sapere sul dove e come posizionare correttamente i grassetti per entrambi i tipi di lettura.

Diego (formaldeide) Ricci che per primo ha notato che per gli spider <span class=”qualcosa”> non ha lo stesso peso di <strong>è

Posted in buone idee, development.

Tagged with , , .


once upon a time there was “2700″

Era un fumetto e voi non lo conoscete, peccato.
Io conservo ancora molto gelosamente i 4 disegni che mi son fatto fare a varie convention a cui peraltro andavo apposta per incontrare lo staff.
Era un fumetto autoprodotto che ha chiuso troppo presto e troppo amaramente.
Io ci credevo così tanto che mi comprai tutti i volumi della prima edizione uscita solo in fumetteria e poi li ricomprai tutti quando arrivarono in tutte le edicole.
Ero più giovane, ma credo che lo rifarei anche domani.

Considero tutt’ora l’albo n°7 “I mastini celesti” uno dei meglio disegnati della mia libreria e di conseguenza Emanuele Manfredi uno dei migliori disegnatori che mi vengono in mente (ed io ho un suo disegno autografo!).
Chi non ha visto l’albo non può capire quanti dettagli ci abbia infilato dentro.
Anche il resto del team dei disegnatori era a mio avviso di altissimo livello (tranne 2 o 3 che proprio non mi piacevano, ma i nomi non li faccio).

Ovviamente i disegnatori contano poco se non sono sostenuti da una sceneggiatura forte e 2700 aveva anche questa.

Lo sceneggiatore di tutti gli albi era Manfredi Toraldo, che riuscì a costruire un mondo solido, non banale e dotato di forte coerenza interna scegliendo anche tecniche narrative diverse tra loro ma assolutamente azzeccate per la trama.
Trovavo assolutamente affascinanti anche gli editoriali che scriveva in ogni albo perché non erano mai scritti per accontentare un pubblico adolescenziale, ma espressioni del lavoro fatto per quell’uscita ed intrecciate di citazioni proveniente dalla letteratura.
Credo di aver scoperto almeno un paio di libri che mi sono piaciuti molto leggendole.

Ogni tanto rileggo tutta la serie, ma oggi mi è tornato in mente 2700 perchè ho trovato il blog dello sceneggiatore.

Manfredi Toraldo lo potete trovare qua
Se trovo anche gli altri aggiorno

Edit:
Leggo ora sul blog di Toraldo: 2700, succose novità.
Ci spero proprio!

Posted in meraviglie, nerd stuffs.

Tagged with .


Una faccia della medaglia

Ci siamo evoluti, quando leggiamo sul grande web applichiamo due stili di lettura molto diversi.
Il primo è valutativo, una scorsa veloce per decidere se i contenuti meritano la seconda lettura più approfondita.

I SEM dicono che i grassetti devono aiutare a catturare l’utente e quindi devono formare un “sommario” del testo che fermi il lettore sulla pagina, la mia analogica professoressa di italiano, a suo tempo, mi diceva che il grassetto deve fornire un appiglio visivo a quelle parti del testo che sono anche semanticamente rilevanti.
Le due cose anche se si assomigliano non sono affatto equivalenti, chi scrive di mestiere distingue immediatamente un testo ottimizzato per “fermare” il lettore da uno scritto per la lettura approfondita, il lettore passivo invece probabilmente non riesce a razionalizzare la differenza, ma la sente come un retrogusto.

Al momento siamo costretti ad una scelta, un testo deve essere ottimizzato in un modo o nell’altro, abbiamo solo un tag <strong> e dobbiamo conviverci.

Siccome entrambi i tipi di lettura sono utili al nostro scopo di divulgazione/marketing dover scegliere quale adottare oltre ad essere insulso (perchè rinunciamo ad una cosa in cambio di un’altra di pari valore) ci porta anche ad effettuare una scelta “artigianale” di quale tipo di lettura sia la più adatta per il nostro testo.
Definisco questa scelta artigianale perchè si basa su variabili non conoscibili tramite strumenti tecnici, ma solo sulla percezione che supponiamo il lettore avrà del testo, ponendo quindi l’effettiva efficacia dell’articolo al di  fuori del nostro controllo.

Le soluzioni sono due, continuare ad usare la sensibilità del nostro editor per decidere che stile usare oppure non accettare nessun compromesso e distinguere nettamente le due cose.
Un’aspetto per gli analogici grassetti del professore d’italiano ed un’altro per il digitalissimo sommario del SEM.

Il problema è che in questo modo molta parte del testo risulterà evidenziata, come può dirvi chiunque “tutto importante = niente importante” e questo non ci piace per niente.
Ci viene però in aiuto il fatto che i due tipi di lettura sono temporalmente non contemporanei, il grassetto SEM compie il grosso del suo scopo nei primi secondi, nel tempo di scorrere la pagina da cima a fondo per decidere se vale la pena leggere tutto, poi passa in secondo piano.
Questo ci suggerisce che il primo tipo di grassetto non è necessariamente permanente sul testo, ma che può scomparire dopo un tempo congruo alla valutazione del testo stesso.

Quindi con due intonacate di javascript e qualche pennellata di css potremmo ottenere un nuovo strumento che funzioni all’incirca così:

  • evidenziazione di tutti i tag “SEM” della pagina
  • calcolo della durata dell’evidenziazione (in sperimentazione 1 secondo per ogni tag)
  • scomparsa dell’evidenziazione “SEM” dopo un periodo di inattività del mouse pari alla durata dell’evidenziazione

A riprova che il web non è più il “one man show” di qualche anno fa vi informo che anche questa semplice idea è estremamente interdisciplinare, infatti la mia idea iniziale non avrebbe raggiunto un livello soddisfacenze senza:

dplastino che mi ha spiegato tutto quello che dovevo sapere sul dove e come posizionare correttamente i grassetti per entrambi i tipi di lettura.

Claudio Vandi che ha rivisto l’intera idea in un’ottica di usabilità ed UX oltre ad aver fornito una tonnellata di altri spunti e nuove idee.

Diego (formaldeide) Ricci che per primo ha notato che per gli spider <span class=”qualcosa”> non ha lo stesso peso di <strong>

Se notate qualche “movimento” strano sulla pagina è perchè sto già sperimentando l’estensione cercando il giusto equilibrio tra i vari parametri da tenere in considerazione in vista della prima release.

Posted in buone idee, development.

Tagged with , , .


Hanno tagliato un albero

Hanno tagliato un albero piantato a Bergamo per commemorare Peppino Impastato.
L’articolo è su:
Repubblica.
L’unità

Sembra una cazzata, ma è stupido sottovalutare un atto del genere che toglie sostegno al simbolo di una lotta difficile fatta da un numero sempre crescente, ma ancora troppo piccolo di persone..

Sono stato in Sicilia ormai 4 anni fa, ma non a fare il turista, ad incontrare la gente.

Ho parlato con un capo scout che anzichè incontrare i suoi ragazzi (8-12 anni) il sabato pomeriggio li doveva accompagnare a scuola tutte le mattine perchè non la saltassero, che si sentiva suonare il campanello da un bambino che voleva un piatto di pasta e che il sabato vedeva altri bambini con i tasca 300€ perchè avevano appena venduto della droga.

Ho parlato con uno dei fondatori di “Addio Pizzo“, noti attacchini di adesivi che cercano di cambiare le cose dal basso e che nell’iniziare a costruire la loro associazione hanno dovuto parlare freddamente attorno ad un tavolo dell’opportunità di essere uccisi dalla mafia. La loro soluzione non è stata la resa, ma fare in modo di non avere un “uomo simbolo” si fanno intervistare a turno, vanno alle manifestazioni a turno, attaccano adesivi tutti insieme con gli altri associati.
Ognuno ha sviluppato la sua tecnica di attacchinaggio volta alla rapidità.
Maestri di spada ma con la penna.

Sono stato in una cooperativa di “Libera Terra“, ci hanno parlato di proiettili, intimidazioni e di gente che ha mollato per paura che accadesse qualcosa alle famiglie. Chi ha mollato non era un vigliacco, certe battaglie non sono per tutti e l’averci provato merita stima.

Ho parlato con Giovanni Impastato, sono arrivato da Cinisi alla pizzeria della sua famiglia a piedi, dopo pranzo, in Agosto, in Sicilia, mi ha visto arrivare da lontano e mi ha accolto con una bottiglia di spuma fresca in una mano ed bicchieri di carta nell’altra.
Giovanni Impastato è un uomo che fa paura.
Gentile e cordiale, ma parla con l’intensità di chi ha visto molte cose, ne sa altrettante vuole fare la cosa giusta.
Giovanni Impastato è un uomo denso, non lo puoi ignorare.

L’albero era una piccola cosa, da lontano è difficile fare qualcosa di concreto, ma era il segno che anche Bergamo era nella lotta, che anche lì si pensa a chi combatte per ottenere il rispetto delle regole e degli altri, senza più soprusi e signorotti.

Finora ho parlato al singolare, ma non ero da solo in Sicilia, non eravamo nemmeno in tanti, ma di sicuro siamo tornati più grandi e con la voglia di far qualcosa, fosse anche qualcosa di piccolo come far sapere che ci siamo, che li appoggiamo e che ammiriamo chi lotta con coraggio contro una mentalità contorta e sbagliata anche se diffusa.

Perchè scrivo oggi che l’insulto è “solo” un albero mentre ogni giorno ci sono ben altri segnali?
Perchè l’albero non è in sicilia, perchè l’albero è un affronto “piccolo” e gli affronti piccoli sono sintomi vigliacchi di una mentalità meschina.
Una mentalità egoista che nella sua interpretazione più ingenua dice “son solo fatti loro” ed in altre parla di gesto politico mirato ed all’interno di un piano.
Non ho gli strumenti per sapere quale sia l’interpretazione giusta, ma non è importante perché anche la più gentile delle ipotesi parla di un gesto marcio dalle radici e meschino nella sua attuazione, un’intimidazione in pieno stile mafioso e pertanto da condannare senza mezzi termini.

C’è un’altra cosa che ho imparato in sicilia: in certi casi non puoi essere neutrale, o lotti o stai con la mafia.
L’ignavia appartiene alla mafia.
Dire “sono fatti loro” è perlomeno ignavia.

Vorrei aggiungere a questo post il link di un autore di fumetti siciliano che commentando un fatto di cronaca (ormai vecchio) ci spiega un po’ di cose.
Il fumetto principale è comico, ma i suoi inserti speciali e le strisce di satira politica sono argute, pungenti e dimostrano che ha a cuore la sua sicilia e l’italia intera.
Ecco una delle sue più belle strisce contro la mafia: “Ultim’ora 25XL – Falcone e Borsellino
Ed ecco il suo webcomics: Alboblog

L’ultima cosa che dirò è che ho pensato molto prima di scrivere e poi ho pensato se fosse il caso di pubblicare il post, non mi piace scrivere di cose che non conosco bene e tantomeno pontificare su situazioni che stento a capire, ma soprattutto ho il timore di poter offendere qualcuno.
Ho scritto con le migliori intenzioni e non voglio sostenere che “ogni terrone è un delinquente mafioso”, come ho scritto sopra lottare non è per tutti, ma sperare in un futuro migliore sì e le persone che si assumono dei rischi per farlo avverare meritano ogni appoggio.

Posted in altre cose, real life.


mysql cli: importare file csv

LOAD DATA LOCAL INFILE 'path-to-file/file.csv' INTO TABLE table FIELD TERMINATED BY ',' OPTIONALLY ENCLOSED BY """" LINES TERMINATED BY '\n' (field1, field2, field3, .... );

ovviamente vanno cambiati i delimitatori di campo (FIELD TERMINATED BY) e la delimitazione del testo (OPTIONALLY ENCLOSED BY).
Eventualmente (file creati sotto windows) bisogna aggiungere il solito \r al fine riga (LINES TERMINATED BY ‘\r\n’).

Posted in development, system administration.

Tagged with , , .


non prendetemi SEOriamente

Io do al massimo 10 anni di vita alla professione di SEO (ma quando mi accaloro dico 5).
L’ottimizzazione per i motori di ricerca consiste nella strenua lotta per far comparire un sito tra i primi posti in un elenco di link ordinato per importanza in base a criteri complicati e pseudopubblici, praticamente qualcosa di simile alla stregoneria.

Il Seo però è una stregoneria che funziona, infatti i siti nelle mani di persone capaci salgono di reputazione e valore all’interno di un elenco di link ordinato e pertanto è una figura essenziale nella progettazione e nel rinnovamento dei siti web.
Un motore di ricerca considera un sito “meritevole” sulla base di parecchi parametri, i link entranti, i link uscenti, l’indicizzabilità dei testi etc etc etc etc etc (ad libitum), per i più comuni parametri esistono delle linee guida rilasciate dai motori di ricerca stessi, per il resto esiste un sottobosco di trucchetti che il seo conserva più o meno gelosamente e che si coltiva con l’esperienza.

Il trucchetto nascosto in piena vista naturalmente è che il sito sia sul serio di qualità , ovvero ricco di contenuti aggiornati spesso e che interessino davvero gli utenti.
Ed ecco quindi il motivo per cui il SEO è un mestiere solo temporaneo:
finchè i risultati dei motori di ricerca saranno un elenco di link la valigia dei trucchetti (aka l’esperienza) farà la differenza a parità di contenuti, ma nel momento in cui i motori di ricerca daranno dei risultati in base alla semantica della richiesta e delle possibili risposte sarà la qualità dei contenuti a comandare senza opposizione.
In quel momento la figura professionale più richiesta per “migliorare il ritorno del mio investimento su internet” sarà un semplice, banale, vecchio tizio che sceglie la notizia più interessante tra quelle che gli hanno girato i collaboratori oppure se la scrive da solo, in una sola parola: il redattore.

In conclusione il seo è una figura assolutamente essenziale in questo periodo storico del web, ma che è fortemente vincolato alla struttura odierna dei motori di ricerca, che però è ormai decisamente pronta per un balzo in avanti (tutte le interfacce sono pronte per un balzo in avanti, si vedano gli schermi sempre più touch ed il fermento attorno al -semantico e il cloud computing).
Sicuramente la professione SEO si evolverà di pari passo con i motori, ma io scommetto diventerà così simile ad un redattore da non vederne la differenza.

Posted in buone idee, puffo con gli occhiali.

Tagged with , , .


Al grafico non far sapere….

..che ci sono sistemi per l’embedding dei font nelle pagine web.
Sto parlando del più famoso sIFR (ora alla terza versione) di Cufon e diversi altri (tra cui il recente Typekit), script grazie ai quali si può utilizzare qualunque carattere all’interno di una pagina html.

In un mondo perfetto avremmo un ottimo supporto ai caratteri anche nei browser, ma così non è, quindi ci teniamo la nostra manciata di font sempre uguali (qualcuno ha detto verdana?) e tiriamo avanti sopravvivendo al dispiacere di non poter godere di opere come quelle che per esempio ci elenca quotidianamente typojungle.
Siamo costretti a questo dal fatto che ogni computer può visualizzare solo i font che ha installati.

Alla terribile ingiustizia che chi può si gode l’Helvetica mentre gli altri si beccano l’Arial purtroppo non c’è rimedio (tranne flash naturalmente), ma per piccoli pezzetti di testo, tipicamente i titoli si può supplire sostituendo la scritta in html con un analogo in flash (o un’immagine).

sIFR fa la scelta di utilizzare il javascript per sostituire l’elemento indicato e tutti i suoi figli con un filmato in flash delle stesse dimensioni (quasi).
sIFR3 risulta abbastanza semplice da aggiungere ad una pagina i passi riassunti brutalmente sono solo 4:

  1. Avere il file .swf: non richiede quasi preparazione, infatti basta aprire il .fla fornito nel pacchetto, cancellare il testo, impostare il font che si vuole utilizzare e pubblicare il filmato.
  2. includere nella pagina il css sifr.css:
    1
    
     
  3. includere nella pagina i file sifr.js e sifr-confg.js:
    1
    2
    
    <script src="/path/to/sifr.js" type="text/javascript"><!--mce:0--></script>
    <script src="/path/to/sifr-config.js" type="text/javascript"><!--mce:1--></script>
  4. inserire nel sifr-config.js i filmati da attivare, dove attivarli e le impostazioni da usare (color, background ed altre amenità “simil css”.
    Una minima configurazione comprende:

    1
    2
    3
    
    var strangeFont = { src: "/path/to/strangefont.swf" } //il path è relativo alla pagina che carica il filmato
    sIFR.activate(strangeFont); // ci deve essere un solo "activate" per ogni sIFR, ma è possibile la sintassi sIFR.activate(font1,font2,font3,...,fontN)
    sIFR.replace(strangeFont, {selector: 'h1'}); // .className per le classi #idValue per gli id

Probabilmente seguendo questi 4 step la pagina ora fa un po’ schifo, le cose migliorano molto dopo aver scoperto che sIFR.replace() consente una sintassi css-like ed infatti:

1
sIFR.replace(strangeFont, {selector:'h1', css:['.sIFR-root{color:#ff0000; font-size:10px}']}

trasforma tutti gli <h1> della pagina in un bel colore rosso puro e corpo 10. Attenzione, non ho scritto il codice del colore a 6 cifre in quanto masochista, ma perchè flash non riconosce l’abbreviazione a 3 cifre come fanno i css.

Altre cose a cui fare stare attenti:

  • se lo sfondo non è uniforme sIFR.replace() ci consente l’opzione transparent:true
  • a sIFR.replace() possono essere aggiunti tutti gli stili che vogliamo, quindi è perfettamente valida la sintassi css['sIFR-root{...}','.class{...}'] purchè i selettori siano tutti figli dell’elemento da sostituire. è comunque da tenere presente che questo sistema non è perfetto e quindi utilizzarlo può far venire mal di testa ed insoddisfazione. Molto meglio è utilizzare diversi sIFR.replace() con i selettori ordinati dal più particolare al più generale. Per esempio
    1
    2
    3
    4
    
    sIFR.replace('ul#main li.selected');
    sIFR.replace('ul#main li');
    sIFR.replace('li.selected');
    sIFR.replace('li');

    In questo modo si dovrebbero avere meno mal di testa, ma non è vero, solo l’esperienza fa passare questo tipo di malesseri.

  • sIFR calcola l’ingombro del filmato flash in base all’ingombro che ha l’oggetto che deve sostituire, può capitare che il js di sIFR si esegua prima che l’ingombro venga assegnato (es. Safari carica in parallelo css e js) provocando uno strano aspetto alla pagina. Per verificare che il problema sia questo basta ridimensionare la finestra del browser, se va tutto a posto la questione è proprio questa.
    Per risolvere questo problema bisogna applicare qualche hack che ritardi l’esecuzione del js fino al momento giusto
  • evitare di sostituire i link. sIFR non può sostituire direttamente i tag <a> quindi bisogna applicarlo ad un elemento padre. A mio parere il gioco non vale la candela

In conclusione sIFR è sicuramente uno script ottimamente programmato a partire da un’idea intelligente, ma a me non piace.
Per quanto io sia un amante della tipografia sostituire del testo con altri oggetti non è una soluzione è un hack per aggirare il problema e come tutti gli hack non conduce ad un risultato perfetto.
Naturalmente a piccole dosi può produrre un risultato ottimo, ma il confine è così sottile che la differenza tra usarlo ed abusarlo è troppo facile da superare.

Per quel che riguarda gli altri sistemi di embedding dei font ancora non li ho provati e tantomeno messi in produzione.
Non ho intenzione di provare Cufon perchè il testo sostituito non è selezionabile (in quanto immagine) e questo mi sembra un grosso sgarbo nei confronti dell’utente.

Typekit invece che cos’è? questo di bradcolbow.com è un mirabile riassunto, quello che penso io è che potrebbe essere un buon sistema, vedremo.

Posted in development.

Tagged with , .


On lastfm since 25 Oct 2005

Oggi ho consumato le mie 30 tracce di “free trial” su lastfm.
Grazie ad amarok sono un loro utente dal 25 Ottobre 2005.
Trovo che i 3€ mensili che ora mi richiedono siano una cifra molto ragionevole per il diritto di ascoltare quasi quello che mi pare ed anche scoprire qualche nuovo gruppo.
Ho però avuto un moto di fastidio nel constatare che la mia fedeltà al sito non sia stata valutata per nulla.
Naturalmente so che un utente non ha alcun diritto di mettere becco nelle politiche di un sito, ma siccome siamo nel 2.0 fino al collo un utente affezionato consiglia, linka, smuove la sua rete, in una parola fa promozione.
Ed è qui che scatta il tarlo mentale, non sarebbe stata una politica di marketing vincente fare sconti agli utenti più anziani?
Probabilmente la cifra non guadagnata non sarebbe alta, mentre penso che il ritorno in termini di immagine sarebbe stato decisamente buono.
Ad esempio questo sarebbe stato (nel suo piccolo) un post per consigliare a tutti di usare lastfm che tiene in gran considerazione i suoi utenti ed invece google mi sta dando una mano a trovare un adeguato sostituto.

Posted in altre cose, domande.


la terza regola di internet

Esiste davvero del codice scritto troppo bene per essere vendibile o è un mostro dell’immaginazione?

Nell’ultimo ufficio dove ho lavorato avevamo una lavagna.
Sulla lavagna c’erano scritte cose utili e cazzate (quasi solo partorite da me), ma soprattutto c’era segnato anche il nostro decalogo di internet.

E’ un decalogo composto da 3 regole, le prime due parlano di idraulici e per il momento le lasciamo perdere perchè non siete pronti per qualcosa di così strano, ma la terza invece recita:

3. Quanto costa il tuo barattolo di marmellata?

Esplica il concetto che tu puoi fare anche la marmellata più buona del mondo, ma se, al barattolo, costa troppo non la venderai mai, perciò in base a questa regola la qualità di un lavoro deve essere abbassata finchè il costo della produzione non consente un buon guadagno.

Naturalmente non può essere così perchè se un’azienda che fa siti web dovesse abbassare la qualità del prodotto fino ad incontrare l’aspettativa di prezzo dei clienti staremmo ancora facendo siti con il tag marquee (pessimo esempio, io adoro il tag marquee. Remember, real spartans use tag marquee).

Tra uno scherzo e l’altro sono stato “accusato” di produrre marmellata codice biologico (e quindi troppo costoso) ed io ci ho pensato seriamente su.

Esiste davvero del codice biologico?
Ho deciso di no.
La qualità di un progetto dipende essenzialmente da due fattori: la bontà del codice del programmatore meno abile e la data di scadenza.
è compito di chi progetta il software stabilire quanto tempo ci vuole per sviluppare le features richieste oppure decidere quali features possono essere incastrate nel tempo che viene concesso dall’alto.
Il codice biologico è un mostro della mente che viene fuori nel momento in cui si vogliono inserire troppe features nel tempo a disposizione.
Mi sembra quindi ovvio che il problema non è né nel codice né nello sviluppatore, ma in chi fissa i tempi.

Posted in development.

Tagged with .


desideri proibiti

orologio geek matematica

Posted in nerd stuffs.

Tagged with .


i’ve got tv

Dopo più di un anno senza l’oggetto tv in alcuna stanza della casa il fatto ne la nonna ne buttasse via uno funzionante ha fatto avvenire l’invasione.

Sono pentito di essermi fatto convincere a farle conquistare il mio salotto, è un oggetto antipatico, grosso e stupido come un orco e nessuno inviterebbe un orco nel proprio salotto.

Io sono abituato ad internet, a gestirmi i miei contenuti, leggo i feed, ascolto con amarok una vasta libreria musicale sincronizzata con lastfm,  guardo le serie tv in lingua originale appena escono (non chiederlo, non posso rispondere) ed i film che voglio quando voglio scegliendo anche se li voglio in lingua, sottotitolati o no.

Il succo quindi è che io voglio.

Voglio gestire quello che vedo nei miei tempi e nei miei gusti, la tv ormai mi da l’idea di un oggetto che vuole risucchiare la mia intelligenza ed incanalarla dove vogliono gli altri (qualcuno ha detto “fahrenheit 451“?).

Quindi? la tv è un oggetto antipatico perchè lei decide cosa voglio fare io ed non il contrario. L’unica obiezione sensata che ho sentito fin’ora è “ogni tanto ho voglia di farmi trasportare dal caso“. Vero, mi hai convinto, c’è un lastfm per i contenuti video? perchè no?

Posted in real life.


jquery mousewheel

Firefox ed Opera usano per la rotella del mouse comportamenti diametralmente opposti. Questo da fastidio al mio javascript e costringe il plugin di jquery che uso per il supporto allo scorrimento non totalmente multibrowser.

Non ho nulla contro il plugin il cui funzionamento è ineccepibile, ma si basa su un parametro che varia a seconda del browser rendendo necessario interpretare i risultati solo dopo aver sniffato il browser del navigatore.

Mousewheel infatti all’attivazione dell’evento “rotella girata” restituisce una variabile delta contenente un signed int che ci dice di quanto è stata spostata la rotella e ce ne indica il verso grazie al segno.

Su firefox uno spostamento della rotella verso l’utente (per me giù) è positivo ed uno spostamento nell’altro verso (su) è negativo. In opera esattamente il contrario.

Ho scoperto ora il problema ed aggiornerò il post con la mia soluzione (quando l’avro almeno pensata) e con altre indicazioni sul comportamento negli altri browser.

Posted in development.

Tagged with , , .


cambiare il default charset su Ubuntu e Debian

L’open source è un posto strano molto simile al paese delle meraviglie, tante cose fighissime e più del doppio totalmente illogiche come per esempio settare le variabilie globali LANG e LANGUAGES in 2 (d-u-e) file diversi.

Comunque per cambiare il default charset è necessario modificare i file:

  • /etc/enviroment
  • /etc/default/locale

Aggiungendo/modificando le righe

LANG=”it_IT.ISO-8859-1″

LANGUAGE=”it_IT:it”

dove “it_IT.ISO-8859-1″ è il locale+charset con cui mi trovavo a litigare per questioni di svn

Posted in system administration.

Tagged with , , , .


Progressive enhancement

A volte mi chiedo se le tecniche di buona programmazione siano applicabili nel mondo reale.

Al momento mi sto dedicando a creare un nuovo ramo del mio sito, essendo esso un frutto delle mie personali fissazioni (cfr. “orizzontale è più leggibile”) i requisiti sono:

  • la pagina non deve avere alcuno scroll verticale a nessuna risoluzione
  • essere integrato con i vari social network
  • avere la possibilità di commentare i post (no, non è un blog)
  • ajax dappertutto perchè a me non piace ricaricare la pagina
  • essere usabile

Questi paletti che ho posto al progetto complicano tutto, perchè se da un lato quello che deve fare la pagina è una banalità (lo vedrete) far interagire tra loro i 5 punti precedenti complica orrendamente la faccenda.

Siccome sono pigro e non voglio perdere un sacco di tempo a correggere bug e ad aggiungere funzionalità a “oggetti” non predisposti a riceverle questa volta ho deciso di non commettere l’errore di farmi trascinare nel programmare la funzione più interessante per poi aggiungervi “metastasi” che per funzionare richiedono trucchetti e difettano di solidità.

E’ qui che entra in scena il “progressive enhancement” di cui si legge tanto in giro e che sto applicando per step:

  1. creazione della pagina statica (html/css)
  2. dinamicizzazione della pagina lato server (php)
  3. aggiunta di ajax (javascript/jquery)

1. creazione della pagina statica (html/css)

Tenendo in mente che la pagina non deve avere alcuno scroll verticale ho scelto di progettare il layout con tutte le dimensioni espresse in em utilizzando font-size:16px ed un’altezza della finestre di 649px in modo che nel punto 3 del progetto con il javascript dovrò cambiare solo il font-size del body per ridimensionare tutto.

E come ben sapete progettare un layout in em è un bagno di sangue (anche se ho trovato un buon sistema che avrà un post in seguito) ed un po’ di tempo è andato.

2. Dinamicizzazione della pagina lato server (php)

Lasciando (ovviamente) inalterato il layout il contenuto della pagina viene creato dinamicamente da funzioni php che restituiscono i dati in base ai parametri ricevuti in $_GET dai link, quindi nella pagina vengono inseriti tutti i necessari controlli di flusso

3. Aggiunta di ajax

A me l’ajax piace tanto, infatti oltre a far figo nel mio curriculum aggiunge una dimensione fluida alla navigazione che a mio avviso migliora la fruibilità (meglio una gif “loading” o la cesoia della pagina bianca con la clessidra che gira?).

Le funzioni richieste al js sono:

  • cambiare il font-size del body in funzione della dimensione della finestre (in questo caso: $(window).heigth()/40 (jquery)
  • intercettare i click dell’utente sui link e trasformali da “hey browser segui quel link” a “hey browser XMLHttpRequest con questi parametri“.
  • segnalare all’utente che le sue azioni intercettate dal js non sono cadute nel niente, ma stanno eseguendosi

Se siamo tutti d’accordo nel dire che un progetto web sviluppato da un professionista richiede (almeno):

  • una totale separazione tra layout, contenuto e codice, perchè così ognuno fa il suo mestiere senza disturbare gli altri (l’epoca del one man show sul web è finita assieme agli anni ’90)
  • graceful degradation“, perchè nel 2008 ancora qualcuno gira con javascript e flash disabilitati (paranoici!)
  • mantenibilità nel tempo, perchè non vogliamo mettere noi stessi ed in nostri colleghi in difficoltà tra 3 mesi vero?

scopriamo che i 3 step elencati sopra ci consentono di ottenere quasi automaticamente queste 3 caratteristiche, infatti la graceful degradation è garantita dal fatto che ogni strato è stato programmato in maniera da funzionare autonomamente, la mantenibilità è garantita dalla progettazione che abbiamo dovuto per forza fare per separare gli strati mentre la totale separazione è garantita solo se abbiamo fatto i bravi nella costruzione delle funzioni php (se parliamo di me diciamo che ancora non sono un campione in questo).

Ecco descritto quindi il progressive enhancement in salsa lghinelli, nel mio progetto e nel mio tempo libero sta funzionando ed anche bene, ma quanto tempo ci vuole in più a sviluppare un progetto in questo modo?

Non ne ho idea, ma  sono quasi sicuro non ci voglia del tempo in più, a patto che tutte le persone coinvolte nel progetto siano concordi nell’applicare il metodo e perciò non cerchino scorciatoie facili.

Il problema è quindi squisitamente umano piuttosto che tecnico:

saranno disposti i membri del team di sviluppo a modificare le abitudini che si sono incrostate in una vita?

E sarà disposto l’uomo che sgancia i soldi ad investire nella formazione sapendo che sicuramente il primo progetto sviluppato in questo modo avrà degli intoppi?

Posted in development.

Tagged with .


e-book readers

Bookeen produce il

cybook

che sembra essere un e-book reader molto interessante più per le sue caratteristiche che per l’evocativo nome dell’azienda produttrice.

Ovviamente non comprerò un giocattole simile finchè non ci sarà un vero mercato di libri dietro, ma come sarebbe bello averlo.

Posted in nerd stuffs.


esistenza di un elemento con jquery

la chiamata di funzione $(parameters) restituisce sempre un oggetto perchè vuol dire:

hey js dammi un oggetto di tipo jquery che eventualmente contiene parameters

Che è ben diverso da “hey js trasformami parameters in un oggetto jquery e ridammelo“.

quindi se a questo codice html:

<div><p>Lorem ipsum bla bla bla</p></div>

applicchiamo il jqueroso:

var tmp = $(‘span’);

l’espressione if ($tmp) {//stuffs} risulterà sempre eseguita perchè tmp è un  oggetto jquery (un array) di lunghezza nulla, quindi un sistema per rendere efficace l’espressione potrebbe essere:

if ($tmp.length>0) {//better stuffs}

Ci sono tanti altri sistemi, ad esempio prima di scoprire questo effettuavo il controllo sui valori di altri attributi con $(tmp).attr(), ma questo è più compatto e funziona sempre (dovrebbe).

Posted in development.

Tagged with , , .


chat ai confini della realtà

Il grafico: si ma a me va benissimo così minimal
me: minimal si, ma a me ha un po’ stufato l’effetto lightbox
Il grafico: hai delle proposte creative?
sono sempre ben accette
Sent at 12:11 PM on Thursday
me: ti rendi conto vero che TU hai chiesto a ME proposte creative per un effetto prettamente grafico
Il grafico: messa giù così in effetti spaventa anche me

Posted in meraviglie, real life.



Decoy Mathematician

pi greco

Oggi è il 3/14 e forse alle 15:9:26 il Pi greco cesserà di esistere (sempre che non lo abbia già fatto alle 1:59:26pm, ma anche am)

Pi: 3,1415926.

Sembra che tutti gli anni oggi cada il Pi greco day, io lo festeggio declamando:
“Tre imperfettibile è degno archetipo di quella serie che svela, volgendo circolare, mirabil relazione”.
Frase in cui (casualità?) ogni parola n ha un numero di lettere uguale alla cifra n del festeggiato.

Posted in meraviglie, nerd stuffs.

Tagged with .


Disintegration

“Prendo i 5 sarchiaponi e li porto di sotto”
“certo, appoggiali tutti e 4 sul tavolo”
“Permesso? ho portato i 3 sarchiaponi che stavano di sopra,
li metto tutti 2 sul tavolo”
“Io vado.” “Hai messo il sarchiapone sul tavolo?”
“Quale sarchiapone?”
“Bho”

Posto che il sarchiapone sia qualcosa di desiderabile e la situazione sia lo smontaggio dello stand di un evento.

Posted in altre cose.

Tagged with , .


A faery tale

Alzi gli occhi dallo schermo del portatile ed il folletto è lì, sul davanzale della finestra, al quinto piano.
Le piccole nocche stanno bussando leggermente sul vetro mentre la bocca è atteggiata in un largo sorriso che illumina i grandi occhi, mentre lo stereo canta
“C’è bisogno di aguzzare la vista
Per capire quali sono gli amici…”

Trasecolato ti alzi, giri la maniglia ed apri la finestra incurante del vento molto forte e molto freddo che agita gli alberi ed i vestiti per le strade, il folletto con un movimento agile delle ginocchia ossute è già dentro seduto sul lato interno nel tempo che hai impiegato per sbattere le ciglia

“…Bisognerebbe restare svegli
Per scoprire tutti i nemici…”

L’ospite sta facendo cenno di chiudere sorridendoti con il sorriso del gatto che ha mangiato il topo, rabbrividisci e richiudi lo spiraglio sul mondo esterno, una stella ti guarda da appena sopra la casa di fronte ed il folletto salta sul pavimento, immobile lo fissi con un’espressione sciocca

“…Ci vorrebbe un paio di scarpe nuove
Per partire, per scappare lontano
E poi seguire una traccia sbagliata
Perdersi meglio e non tornare più indietro…”

Ti afferra per l’orlo dei pantaloni della tuta ed inizia a tirare con due mani, muovi un passo lasciandoti trascinare e ti fa sedere sul letto, sei confuso, non sai che fare, che dire, lui ti lancia i pantaloni del pigiama sulla faccia e poi la maglia

“…Bisognerebbe fermarsi in tempo
Non aver fretta ma rallentare
Bisognerebbe solo ascoltare
o ancora meglio, cambiare canale…”

Ti cambi mentre il folletto ti osserva compiaciuto, appena hai finito senza preavviso spicca un salto e ti colpisce sul petto abbattendoti sul cuscino.
Lo fissi.
Come una madre gentile afferra le coperte e te le appoggia sopra, il caldo del piumone è così piacevole da stordirti

“..Ci vorrebbe una muta di corde nuove
Per suonare sempre scordati
C’è bisogno di nuove canzoni
Con parole per sognare più forte…”

Ti cammina sopra leggero come una piuma e fissandoti occhi negli occhi con i suoi grandi e nocciola ed allunga una mano per farteli chiudere.
Li tieni leggermente socchiusi, ma vedi la scena come se fossi in piedi al centro della stanza

“…Bisognerebbe fare sogni grandiosi
Oltre la noia e le nevrosi
Avere cura, avere pazienza
Di tutta quanta l’intelligenza…”

Ti vedi, sdraiato sotto al tuo piumone con le braccia sollevate e piegate intorno a proteggerti, hai un folletto accucciato sul petto che sta allungando le sue mani ai lati della tua testa.
Ti senti rassicurato da questo gesto.
Vedi il folletto afferrarti per le orecchie e girare, sta svitando la tua testa ed è piacevole, i pensieri perdono la voce.
Quando ha finito mette la tua capelluta testa nella bisaccia vuota che porta appesa sul lato destro della cintura, scioglie i legacci della bisaccia che sta sul lato sinistro e con delicatezza avvita un’altra testa identica alla tua sul tuo corpo.
Solo a questo punto ti addormenti profondamente.

Posted in altre cose.

Tagged with , .