<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>monkey#6 &#187; development</title>
	<atom:link href="http://www.lghinelli.it/blog/category/development/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.lghinelli.it/blog</link>
	<description>anca la prescia la vo e su témp</description>
	<lastBuildDate>Mon, 28 Nov 2011 13:41:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>prendetelo più SEOriamente</title>
		<link>http://www.lghinelli.it/blog/2009/prendetelo-piu-seoriamente/</link>
		<comments>http://www.lghinelli.it/blog/2009/prendetelo-piu-seoriamente/#comments</comments>
		<pubDate>Wed, 11 Nov 2009 13:19:27 +0000</pubDate>
		<dc:creator>lghinelli</dc:creator>
				<category><![CDATA[buone idee]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[puffo con gli occhiali]]></category>

		<guid isPermaLink="false">http://www.lghinelli.it/blog/?p=472</guid>
		<description><![CDATA[Andrea Vit senza saperlo ha scritto una perfetta integrazione al mio articolo &#8220;Non prendetemi SEOriamente&#8220;. Nel mio articolo parlavo di come secondo me l&#8217;evoluzione dei motori di ricerca modificherà il ruolo del SEO, ma avevo tralasciato completamente i colleghi di lavoro del summenzionato SEO, ma dimenticavo che &#8220;l&#8217;altra faccia della medaglia&#8221; ci insegna che è [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.andreavit.com/blog/information-architecture-e-seo/il-seo-e-inutile-forse-o-forse-cambiera-soltanto.html">Andrea Vit</a> senza saperlo ha scritto una <strong>perfetta integrazione</strong> al mio articolo &#8220;<a href="http://www.lghinelli.it/blog/2009/non-prendetemi-seoriamente/">Non prendetemi SEOriamente</a>&#8220;.</p>
<p>Nel mio articolo parlavo di come secondo me l&#8217;<strong>evoluzione dei motori di ricerca</strong> modificherà il ruolo del SEO, ma avevo tralasciato completamente i colleghi di lavoro del summenzionato SEO, ma dimenticavo che &#8220;<a href="http://www.lghinelli.it/blog/2009/laltra-faccia-della-medaglia/">l&#8217;altra faccia della medaglia</a>&#8221; ci insegna che è <strong>sempre un errore</strong> tralasciare le altre prospettive.</p>
<p>Nel leggere le descrizioni del team di sviluppo nell&#8217;articolo di Andrea (posso darti del tu vero?) ho ritrovato proprio quello che mi aspetto che un <strong>buon team</strong> faccia e sappia fare, quindi vi rimando al suo post &#8220;<a href="http://www.andreavit.com/blog/information-architecture-e-seo/il-seo-e-inutile-forse-o-forse-cambiera-soltanto.html">Il SEO è inutile. Forse. O forse cambierà soltanto…</a>&#8221; 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 <strong>non esiste</strong> <a href="http://www.lghinelli.it/blog/2009/la-terza-regola-di-internet/">codice biologico</a>, ma solo errori di management e la voglia di migliorarsi.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lghinelli.it/blog/2009/prendetelo-piu-seoriamente/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>enlarge your elementis</title>
		<link>http://www.lghinelli.it/blog/2009/enlarge-your-elementis/</link>
		<comments>http://www.lghinelli.it/blog/2009/enlarge-your-elementis/#comments</comments>
		<pubDate>Thu, 29 Oct 2009 14:23:05 +0000</pubDate>
		<dc:creator>lghinelli</dc:creator>
				<category><![CDATA[buone idee]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[managing projects]]></category>

		<guid isPermaLink="false">http://www.lghinelli.it/blog/?p=452</guid>
		<description><![CDATA[Leggilo in italiano (che è meglio) In this article I&#8217;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 &#8220;never heard about photoshop/fireworks/flair builder/other prototyping software?&#8221; yes, I&#8217;ve done [...]]]></description>
			<content:encoded><![CDATA[<p><a href="#italiano">Leggilo in italiano (che è meglio)</a></p>
<p>In this article I&#8217;m talking about <a href="http://www.lghinelli.it/the-ugly-prototyper" target="_blank">The Ugly Prototyper</a> a concept idea for a prototyping functionality.</p>
<p>When I start a web project sometimes I need to think about the <span class="evidence">size of the element on a page</span>.<br />
You are saying &#8220;never heard about photoshop/fireworks/flair builder/other prototyping software?&#8221; yes, I&#8217;ve done my homework, tryed lot of them and discovered that <strong>none</strong> give me the possibility to <span class="evidence">input a percent of the father</span> element and get a new object of the proper size.</p>
<p>Practically we have to rely <strong>only</strong> on us eyes to decide if the logo (or content area) is big enough.<br />
We put elements on page, size them and only then mathematically calculate their encumbrance (when this happens).<br />
It&#8217;s a <span class="evidence"><strong>trials and errors</strong> method</span>.<br />
I don&#8217;t like at all.</p>
<p>If you are designing with a content-driven method you <strong>have to</strong> decide the right priority of the page elements, I think that a good starting point is to say:&#8221;the content area cannot be less than the 33% of the page, the header must be no bigger than 25%, ads will be 25%&#8221;, visually see it, modify and then (only then) start with the real prototyping and design.</p>
<p>So I developed my tool.<br />
I made it in few nightly hours, sorry, it lacks of functionality and usability.<br />
You have to reload a page if you change the working area size after creating some child and a lots of others problem.<br />
In my excuse: <strong>this is not a release!</strong><br />
<a href="http://www.lghinelli.it/the-ugly-prototyper/" target="_blank">The Ugly Prototyper</a> is on line just to be showed to my friends and to gather opinions</p>
<p><a name="italiano">Italiano:</a><br />
In questo articolo parlo di <a href="http://www.lghinelli.it/the-ugly-prototyper">The Ugly Prototyper</a>, un concept per uno strumento di prototipizzazione.</p>
<p>Ho provato diversi <span class="evidence">software per la prototipizzazione</span> delle pagine web (e più genericamente delle interfacce) e non ho trovato <strong>nessuno</strong> che mi fornisse la possibilità di <span class="evidence">inserire una percentuale</span> ed ottenere in cambio un oggetto della dimensione giusta.<br />
Lo trovo strano, perchè in questo modo per il posizionamento <strong>contiamo solo</strong> sul nostro occhio che potrebbe non essere abbastanza allenato.<br />
Penso che in fase di progettazione, specie se usiamo un <strong>approccio content-driven</strong>, sarebbe un buon punto di partenza poter decidere che l&#8217;header non debba essere più grande del 25%, i contenuti non più piccoli del 33% visualizzandone gli ingombri per <strong>poi</strong> partire con la prototipizzazione ed il design reali.</p>
<p>Nessuno me lo faceva e così ho creato il mio tool.<br />
è 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&#8217;area di lavoro dopo aver già creato almeno un oggetto ed un sacco di altre cose.</p>
<p>A mia discolpa posso dire che <strong>questa non è una release</strong> (e forse non ci sarà mai una release).<br />
<a href="http://www.lghinelli.it/the-ugly-prototyper/" target="_blank">The Ugly Prototyper</a> è messa on line per farsi vedere dagli interessati e raccogliere qualche opinione.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lghinelli.it/blog/2009/enlarge-your-elementis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>La terza faccia della medaglia</title>
		<link>http://www.lghinelli.it/blog/2009/la-terza-faccia-della-medaglia/</link>
		<comments>http://www.lghinelli.it/blog/2009/la-terza-faccia-della-medaglia/#comments</comments>
		<pubDate>Wed, 21 Oct 2009 13:30:49 +0000</pubDate>
		<dc:creator>lghinelli</dc:creator>
				<category><![CDATA[buone idee]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[bSEM]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[web writing]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.lghinelli.it/blog/?p=398</guid>
		<description><![CDATA[Finalmente ci siamo. L&#8217;idea descritta in questi due post: Una faccia della medaglia L&#8217;altra faccia della medaglia è diventata un&#8217;estensione per wordpress. La pagina che la descrive e permette lo scaricamento si chiama: bSEM &#8211; Un grassetto per domarli tutti. L&#8217;idea è esaurientemente spiegata nei due post e nella pagina dedicata, quindi non la riassumerò [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Finalmente ci siamo</strong>.<br />
L&#8217;idea descritta in questi due post:</p>
<ul>
<li><a href="http://www.lghinelli.it/blog/2009/una-faccia-della-medaglia/">Una faccia della medaglia</a></li>
<li><a href="http://www.lghinelli.it/blog/2009/laltra-faccia-della-medaglia/">L&#8217;altra faccia della medaglia</a></li>
</ul>
<p>è diventata un&#8217;estensione per wordpress.<br />
La pagina che la descrive e permette lo scaricamento si chiama: <a href="http://bsem.lghinelli.it">bSEM &#8211; Un grassetto per domarli tutti</a>.</p>
<p><span class="evidence">L&#8217;idea è esaurientemente spiegata</span> nei due post e nella pagina dedicata, quindi <strong>non</strong> la riassumerò nuovamente.</p>
<p>Vorrei però ribadire qualche punto saliente e l&#8217;importanza dell&#8217;estensione.<br />
Il nostro modo di <strong>vivere il testo scritto</strong> è cambiato profondamente.<br />
Mentre <span class="evidence">la pagina stampata era un media fisso</span>, immutabile nel tempo fruire i contenuti scritti sul web (e sui computer in generale) ci permette di <strong>cambiare l&#8217;aspetto del testo al cambiare delle nostre esigenze</strong>.</p>
<p><span class="evidence">Le nostre necessità cambiano</span> tra il momento in cui apriamo la pagina ed il momento in cui effettivamente incameriamo le informazioni<br />
Quindi è giusto che anche la pagina, <strong>per aiutarci</strong>, cambi con noi.<br />
L&#8217;estensione si occupa di <strong>rendere coerente</strong> l&#8217;uso del grassetto con il <span class="evidence">tipo di lettura che stiamo facendo</span>.</p>
<p>Ho scritto anche troppo.<br />
L&#8217;estensione <strong>è attiva</strong> su questo blog.<br />
L&#8217;estensione <strong>è scaricabile</strong> a questo indirizzo: <a href="http://bsem.lghinelli.it">bsem.lghinelli.it</a><br />
L&#8217;estensione è per wordpress, ma <strong>è integrabile</strong> con qualsiasi pagina, basta includere il js, i css e seguire le regole.</p>
<p>Per il momento in attesa che wordpress accetti di ospitare l&#8217;estensione nella directory dei plugin per <strong name="segnalare">segnalare i bug e proporre modifiche</strong> avete a disposizione:</p>
<ul>
<li>i commenti di questo post</li>
<li>email: info@lghinelli.it</li>
<li>wave: lghinelli@googlewave.com</li>
</ul>
<p>Posso <strong>sognare di implementare</strong> una feature?<br />
In un mondo bello, bello in modo assurdo (cit.) l&#8217;estensione assegnerebbe i bSEM alle parole/frasi più significative in base alla provenienza dell&#8217;utente offrendo non solo una lettura più facile, ma anche personalizzata.<br />
Ok, ho esagerato, ma <strong>io nel web semantico ci spero molto</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lghinelli.it/blog/2009/la-terza-faccia-della-medaglia/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>L&#8217;altra faccia della medaglia</title>
		<link>http://www.lghinelli.it/blog/2009/laltra-faccia-della-medaglia/</link>
		<comments>http://www.lghinelli.it/blog/2009/laltra-faccia-della-medaglia/#comments</comments>
		<pubDate>Fri, 09 Oct 2009 12:57:22 +0000</pubDate>
		<dc:creator>vandicla</dc:creator>
				<category><![CDATA[buone idee]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[web writing]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.lghinelli.it/blog/?p=317</guid>
		<description><![CDATA[In occidente ogni giorno decine di lemuri vengono maltrattati senza ragione questo post è dedicato alla difesa di questi sciacalli. Si, c&#8217;è un errore. Un problema banale di coerenza nel testo: un&#8217;anafora che non funziona come dovrebbe. Talmente banale che non vi sorprenderà sapere che non vincerete un premio per averlo scoperto. Quello che dovrebbe [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>In occidente ogni giorno<br />
decine di lemuri<br />
vengono maltrattati senza ragione<br />
questo post è dedicato alla difesa<br />
di questi sciacalli.</p></blockquote>
<p>Si, c&#8217;è un <strong>errore</strong>. Un problema banale di <span class="evidence"><strong>coerenza</strong></span> nel testo: un&#8217;<a title="Wikipedia &quot;anafora&quot;" href="http://it.wikipedia.org/wiki/Anafora_%28retorica%29" target="_blank">anafora</a> 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 <span class="evidence">facilità e la precisione</span> con la quale appena letta la parola &#8220;sciacalli&#8221; siete tornati a leggere la parola &#8220;lemuri&#8221;. Se tutto è andato come dovrebbe, non avete riletto il testo per ricercare la parola sbagliata, ma siete direttamente <strong>saltati</strong> alla sua posizione.</p>
<p>Nella frase che segue invece tutto è coerente dal punto di vista semantico:<br />
<!-- p style="padding-left: 30px;" --></p>
<blockquote><p>In occidente ogni giorno<br />
decine di <strong>lemuri</strong> <em>italiani</em><br />
vengono maltrattati senza ragione.<br />
La stessa sorte spetta agli<br />
<strong>sciacalli</strong> <em>francesi</em>.<br />
Un&#8217;altra categoria a rischio sono i <em>falchi</em> <strong>turchi</strong>.</p></blockquote>
<p>Nessun problema semantico in questo caso, eppure anche qui c&#8217;è qualcosa che non va. Questa volta si tratta di <span class="evidence"><strong>coerenza grafica</strong></span>: 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 <strong>codice</strong> è ribaltato.</p>
<p>Dietro a questi due esempi sta buona parte della progettazione dell&#8217;estensione che avete incontrato in un post precedente: «<a href="http://www.lghinelli.it/blog/2009/una-faccia-della-medaglia/" target="_blank">Una faccia della medaglia</a>» e che serve a tenere insieme in una pagina web i <strong>grassetti</strong> che servono ad aiutare la lettura (scelti dal redattore) e i <span class="evidence">grassetti</span> che servono ad ancorare il lettore alle parole chiave di un testo (scelti dal <a href="http://it.wikipedia.org/wiki/Search_Engine_Marketing">SEM</a>) distinguendoli da un punto di vista grafico e temporale. <strong>I grassetti di lettura</strong> servono  a comprendere meglio il testo, i <span class="evidence"><strong>grassetti SEM</strong></span> servono invece a individuare le parole chiave del testo durante una prima <span class="evidence">lettura rapida</span>, per capire se il contenuto ci interessa o no.<br />
C&#8217;è una descrizione più precisa nel <a href="http://www.lghinelli.it/blog/2009/una-faccia-della-medaglia/">post originale</a> a cui vi rimando.</p>
<p>Quello che faremo è invece condividere alcune delle riflessioni sulla <em><a title="Bibliografia sulla User Experience" href="http://whitneyhess.com/blog/2009/06/30/so-you-wanna-be-a-user-experience-designer-step-1-resources/">User Experience</a></em> che hanno animato la fase di design dell&#8217;estensione e che potrebbero servire a dare qualche indicazione sul design di applicazioni web più in generale. Cosa c&#8217;entrino lemuri, sciacalli e falchi lo capirete a breve.</p>
<p>Se avete letto il post precedente capirete di cosa parliamo. Se non l&#8217;avete fatto siete ancora in tempo per <a href="http://www.lghinelli.it/blog/2009/una-faccia-della-medaglia/">farlo</a>.</p>
<p>Fatto? Bene.</p>
<p>La versione che vedete ora (anche in questo post) è solo l&#8217;ultima di una serie di prove, in gergo <span class="evidence">iterazioni</span> che abbiamo testato per decidere quale fosse la maniera migliore di distinguere <strong>graficamente</strong> (<em>come</em>) e <strong>temporalmente</strong> (<em>quanto</em>) ha richiesto lo scambio di un buon numero di mail.<br />
Se vi capitasse di sviluppare qualcosa di simile sappiate che <span class="evidence">un modo sbagliato di ragionare</span> è quello di considerare ogni elemento separatamente:</p>
<ol>
<li>Decidiamo quale sia lo stile migliore da attribuire al grassetto SEM « acceso » per renderlo rapidamente reperibile a una prima lettura;</li>
<li>Poi quale sia lo stile migliore da attribuire al grassetto SEM « spento » per renderlo leggibile a una seconda lettura;</li>
<li>Infine decidere dopo quanto tempo il grassetto SEM deve spegnersi;</li>
</ol>
<p>É quello che abbiamo fatto in un primo momento, rendendoci poi conto che le nostre soluzioni <strong>non potevano funzionare</strong>. Ripercorriamo le <span class="evidence">fasi del design</span>.</p>
<p><strong>Fase 1: </strong>grassetti evidenziati, e testo normale</p>
<p>In un primo momento i grassetti SEM accesi erano evidenziati in rosso: <span style="background-color:#460103; color:#FFF; padding:0 3px 0 3px;">così</span> e quando si disattivavano apparivano come testo normale: cosi.<br />
Soluzione che soddisfaceva pienamente il nostro desiderio di fornire il miglior layout alle due fasi della lettura:<br />
massima <strong>leggibilità</strong> nella prima, minima <strong>distrazione</strong> nella seconda.</p>
<p>Il problema è però che per quanto riguarda <span class="evidence"><strong>l&#8217;Esperienza dell&#8217;Utente </strong></span><strong></strong>queste due fasi di lettura non sono affatto indipendenti: l&#8217;utente coglie informazioni di un certo tipo nella <strong>prima</strong> lettura che poi utilizzerà nella <strong>seconda</strong>, 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 <span class="evidence"><strong>semantico</strong></span>, ma ci serviamo anche della sua <span class="evidence"><strong>posizione</strong></span> e del suo <span class="evidence"><strong>aspetto di superficie</strong></span>: usiamo degli <strong>indici spaziali e grafici</strong> per identificare un contenuto con l&#8217;aspetto che questo ha all&#8217;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.</p>
<p>Da questo punto di vista <strong>la nostra soluzione poneva due problemi</strong>:</p>
<ol>
<li> Il <strong>primo problema</strong> riguarda l&#8217;<span style="background-color:#460103; color:#FFF; padding:0 3px 0 3px;">evidenziazione</span> dei grassetti SEM, che catturavano troppo la nostra attenzione: Lo sfondo rendeva molto &#8220;grafici&#8221; i grassetti e portava a dare poca <span class="evidence">attenzione al testo</span>. Proprio perchè diamo molta importanza alla <strong>struttura di superficie</strong> 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&#8217;attenzione potete <span class="evidence"><strong>testare</strong></span> la vostra interfaccia con delle tecniche di <span class="evidence">eye tracking</span>.<br />
Un modo <span class="evidence"><strong>low cost</strong></span> per averne comunque un&#8217;idea approssimativa è quello di sfocare (con Photoshop) un&#8217;immagine della vostra pagina e vedere quali sono le strutture che restano <strong>salienti</strong>. Molto probabilmente l&#8217;occhio seguirà queste strutture.</li>
<li>Il <strong>secondo problema</strong> che avevamo riguardava il passaggio dal <span style="background-color:#460103; color:#FFF; padding:0 3px 0 3px;">grassetto evidenziato</span> al testo normale. Anche in questo caso il problema era dato dal fatto che la struttura con cui l&#8217;utente diventava familiare durante la prima lettura scompariva nella seconda. E questo perchè avevamo considerato la prima e la seconda lettura come due eventi <strong>indipendenti</strong>, mentre in realtà sono <strong>strettamente collegati</strong>: giustamente l&#8217;evidenziazione creava una <span class="evidence">struttura visiva</span> di superficie (delle etichette rosse) che doveva servire a scorrere il testo a una prima lettura. Ma avevamo dimenticato che <strong>aiutare la prima lettura significa fornire le basi per la seconda!</strong><br />
Nel nostro caso la differenza grafica tra grassetti SEM attivi e non attivi era troppo grande, e l&#8217;utente non aveva alcun modo di servirsi nella seconda lettura di quegli indici grafici che aveva incontrato nella prima.</li>
</ol>
<p>La <strong>prima soluzione</strong> è stata quella di sostituire le evidenziazioni con dei  dei grassetti normali. Non abbiamo scelto di adottare un&#8217;evidenziazione meno forte perchè l&#8217;evidenziazione rappresenta un problema in sè: crea degli spigoli. E siccome i nostri occhi sono <strong>attirati</strong> dalle strutture salienti e discontinue come gli spigoli, c&#8217;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 <span class="evidence">attirare lo sguardo</span> sulla parola importante, ma all&#8217;interno di una frase che dovrebbe comunque essere percepita per intero, anche se rapidamente.</p>
<p>Come <strong>seconda soluzione</strong> cosa abbiamo deciso di trasformare i grassetti disattivi in grassetti più &#8220;magri&#8221;, graficamente vicini al testo normale, ma ancora distinguibili. Questo per evitare il problema di <span class="evidence">coerenza</span> 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 <strong>modulazione</strong> che permette all&#8217;utente di passare alla seconda lettura mantenendo però gli indici grafici e spaziali che aveva appreso nella prima.</p>
<p><strong>Fase 2: Gestione del tempo</strong><br />
In una seconda fase ci siamo invece occupati del tempo. Per quanto tempo i <span class="evidence">grassetti SEM</span> devono restare attivi ? In un primo momento avevamo deciso di far sparire l&#8217;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&#8217;interpretazione sbagliata delle azioni e delle <span class="evidence"><strong>intenzioni dell&#8217;utente</strong></span>. Questo criterio <strong>funziona solo se</strong> l&#8217;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&#8217;<span class="evidence"><strong>uso dei TAB</strong></span>.</p>
<p>Quante volte vi capita di aprire un nuovo tab e poi leggere la pagina molto tempo più tardi?. Nel tempo che passa tra l&#8217;apertura del tab e l&#8217;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.<br />
La <strong>soluzione</strong> 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&#8217;utente stia scorrendo la pagina quando inizia il conteggio.</p>
<p>Queste modifiche ci lasciano con l&#8217;<span class="evidence"><strong>estensione WordPress</strong></span> che verrà ufficialmente rilasciata nei prossimi giorni (siamo ancora in trattativa per l&#8217;esclusiva con Wired). Ci lasciano anche qualche saggio insegnamento sul <span class="evidence">webdesign</span>: volete costruire una buona User Experience? Prendetevi cura della <strong>coerenza</strong> e  della <strong>continuità</strong>:</p>
<ol>
<li> Gestite in maniera coerente gli <strong>indici grafici e spaziali</strong> che servono all&#8217;utente per <span class="evidence">orientarsi nella semantica</span> del testo. Fate attenzione alla struttura di superficie della vostra pagina.</li>
<li>Prendete in considerazione che l&#8217;utente vive anche <strong>al di fuori della vostra pagina</strong>. Chiedetevi sempre da dove venga, <span class="evidence">cosa voglia fare</span> quando agisce in un certo modo, dove vorrebbe andare poi;</li>
<li>Rendeveti conto che non esiste una sola <strong>categoria di utenti</strong>, ma che il nostro design deve cercare di soddisfarne il più possibile. Non ci sono solo diverse <strong>versioni di browser</strong>, ma diverse pratiche d&#8217;uso del browser: ad esempio c&#8217;è chi legge tutto subito e chi apre tab che leggerà solo in seguito. Pensateci, se progettate <span class="evidence">un&#8217;applicazione che evolve nel tempo</span>.</li>
</ol>
<p><em>Alcuni di voi si staranno ancora chiedendo il senso degli esempi su lemuri, sciacalli e falchi in apertura di post. Ci sono tre risposte:</em></p>
<p><em>la <strong>prima</strong> è che se avessimo voluto inserirli solo per spiegare l&#8217;importanza di indici non semantici e della coerenza superficiale saremmo stati costretti a introdurli con « ora leggete questa frase ». Voi avreste capito che c&#8217;era qualcosa sotto e l&#8217;esempio non avrebbe funzionato cosi bene (mica bello farsi fregare cosi in un post in cui si scrive di User Experience).</em></p>
<p><em>La <strong>seconda</strong> ragione è che certe volte la curiosità di capire dove il post andrà a parare può motivare la lettura più di un buon riassunto.</em></p>
<p><em>La <strong>terza</strong> è che è molto divertente iniziare un post scrivendo di lemuri, sciacalli e falchi.</em></p>
<hr /><a href="http://www.lghinelli.it/blog/author/lghinelli/">lghinelli</a>:<br />
Questo post è il frutto di molte iterazioni tra me e Claudio.<br />
Io avevo cominciato a sviluppare l&#8217;idea e ne ho parlato con lui per avere un feedback.<br />
Il risvolto inaspettato è che l&#8217;idea lo ha interessato molto ed ho quindi potuto accedere al suo specifico corpus di conoscenze imparando molte cose e rendendo l&#8217;estensione di gran lunga migliore rispetto a quanto avrei mai immaginato.</p>
<p><a href="http://www.google.com/profiles/claudio.vandi">Claudio</a> è 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.<br />
Mi limito solo a ringraziare di nuovo anche le altre persone che hanno collaborato all&#8217;idea:</p>
<p><a href="http://www.twitter.com/dplastino">dplastino</a> che mi ha spiegato tutto quello che dovevo sapere sul dove e come posizionare correttamente i grassetti per entrambi i tipi di lettura.</p>
<p>Diego (formaldeide) Ricci che per primo ha notato che per gli spider &lt;span class=&#8221;qualcosa&#8221;&gt; non ha lo stesso peso di &lt;strong&gt;è</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lghinelli.it/blog/2009/laltra-faccia-della-medaglia/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Una faccia della medaglia</title>
		<link>http://www.lghinelli.it/blog/2009/una-faccia-della-medaglia/</link>
		<comments>http://www.lghinelli.it/blog/2009/una-faccia-della-medaglia/#comments</comments>
		<pubDate>Thu, 01 Oct 2009 10:20:14 +0000</pubDate>
		<dc:creator>lghinelli</dc:creator>
				<category><![CDATA[buone idee]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[web writing]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.lghinelli.it/blog/?p=234</guid>
		<description><![CDATA[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&#8217;utente e quindi devono formare un &#8220;sommario&#8221; del testo che fermi il [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Ci siamo evoluti</strong>, quando leggiamo sul grande web applichiamo <span class="evidence">due stili di lettura</span> molto diversi.<br />
Il primo è <span class="evidence">valutativo</span>, una <strong>scorsa veloce</strong> per decidere se i contenuti meritano la seconda lettura <strong>più <span class="evidence">approfondita</span></strong>.</p>
<p>I SEM dicono che i grassetti devono <span class="evidence">aiutare a <strong>catturare l&#8217;utente</strong></span> e quindi devono formare un &#8220;sommario&#8221; 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  <strong>appiglio visivo</strong> a quelle parti del testo che sono anche <span class="evidence">semanticamente rilevanti</span>.<br />
Le due cose anche se si assomigliano non sono affatto equivalenti, chi scrive di mestiere <strong>distingue immediatamente</strong> un testo ottimizzato per &#8220;fermare&#8221; il lettore da uno scritto per la lettura approfondita, il lettore passivo invece probabilmente non riesce a razionalizzare la differenza, ma <strong>la sente</strong> come un retrogusto.</p>
<p>Al momento siamo <strong>costretti ad una scelta</strong>, <span class="evidence">un testo deve essere ottimizzato</span> in un modo o nell&#8217;altro, abbiamo solo un tag &lt;strong&gt; e dobbiamo conviverci.</p>
<p>Siccome entrambi i tipi di lettura sono <strong>utili al nostro scopo</strong> di divulgazione/marketing dover scegliere quale adottare oltre ad essere insulso (perchè rinunciamo ad una cosa in cambio di un&#8217;altra di pari valore) ci porta anche ad effettuare una scelta &#8220;artigianale&#8221; di quale <span class="evidence">tipo di lettura sia la più adatta</span> per il nostro testo.<br />
Definisco questa scelta artigianale perchè si basa su <strong>variabili non conoscibili</strong> tramite strumenti tecnici, ma solo sulla percezione che supponiamo il lettore avrà del testo, ponendo quindi l&#8217;effettiva efficacia dell&#8217;articolo al di  fuori del nostro controllo.</p>
<p>Le soluzioni sono due, continuare ad usare la <strong>sensibilità</strong> del nostro editor per decidere che stile usare oppure non accettare <strong>nessun compromesso</strong> e <span class="evidence">distinguere nettamente le due cose</span>.<br />
Un&#8217;aspetto per gli analogici grassetti del professore d&#8217;italiano ed un&#8217;altro per il digitalissimo sommario del SEM.</p>
<p>Il problema è che in questo modo <strong>molta parte</strong> del testo risulterà evidenziata, come può dirvi chiunque <span class="evidence">&#8220;tutto importante = niente importante&#8221;</span> e questo non ci piace per niente.<br />
Ci viene però in aiuto il fatto che i due tipi di lettura sono <strong>temporalmente non contemporanei</strong>, 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.<br />
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.</p>
<p>Quindi con due intonacate di javascript e qualche pennellata di css potremmo ottenere un <strong>nuovo strumento</strong> che funzioni all&#8217;incirca così:</p>
<ul>
<li>evidenziazione di tutti i tag &#8220;SEM&#8221; della pagina</li>
<li>calcolo della durata dell&#8217;evidenziazione (in sperimentazione 1 secondo per ogni tag)</li>
<li>scomparsa dell&#8217;evidenziazione &#8220;SEM&#8221; dopo un periodo di inattività del mouse pari alla durata dell&#8217;evidenziazione</li>
</ul>
<p>A riprova che il web non è più il &#8220;one man show&#8221; 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:</p>
<p><a href="http://www.twitter.com/dplastino">dplastino</a> che mi ha spiegato tutto quello che dovevo sapere sul dove e come posizionare correttamente i grassetti per entrambi i tipi di lettura.</p>
<p><a href="http://www.google.com/profiles/claudio.vandi">Claudio Vandi</a> che ha rivisto l&#8217;intera idea in un&#8217;ottica di usabilità ed UX oltre ad aver fornito una tonnellata di altri spunti e nuove idee.</p>
<p>Diego (formaldeide) Ricci che per primo ha notato che per gli spider &lt;span class=&#8221;qualcosa&#8221;&gt; non ha lo stesso peso di &lt;strong&gt;</p>
<p>Se notate qualche &#8220;movimento&#8221; strano sulla pagina è perchè sto già sperimentando l&#8217;estensione cercando il giusto equilibrio tra i vari parametri da tenere in considerazione in vista della prima release.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lghinelli.it/blog/2009/una-faccia-della-medaglia/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>mysql cli: importare file csv</title>
		<link>http://www.lghinelli.it/blog/2009/mysql-cli-importare-file-csv/</link>
		<comments>http://www.lghinelli.it/blog/2009/mysql-cli-importare-file-csv/#comments</comments>
		<pubDate>Mon, 07 Sep 2009 13:47:47 +0000</pubDate>
		<dc:creator>lghinelli</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[system administration]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[query]]></category>
		<category><![CDATA[spiccioli]]></category>

		<guid isPermaLink="false">http://www.lghinelli.it/blog/?p=188</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p><code>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, .... );</code></p>
<p>ovviamente vanno cambiati  i delimitatori di campo (FIELD TERMINATED BY) e la delimitazione del testo (OPTIONALLY ENCLOSED BY).<br />
Eventualmente (file creati sotto windows) bisogna aggiungere il solito \r al fine riga (LINES TERMINATED BY &#8216;\r\n&#8217;).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lghinelli.it/blog/2009/mysql-cli-importare-file-csv/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Al grafico non far sapere&#8230;.</title>
		<link>http://www.lghinelli.it/blog/2009/al-grafico-non-far-sapere/</link>
		<comments>http://www.lghinelli.it/blog/2009/al-grafico-non-far-sapere/#comments</comments>
		<pubDate>Wed, 10 Jun 2009 17:03:52 +0000</pubDate>
		<dc:creator>lghinelli</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.lghinelli.it/blog/?p=142</guid>
		<description><![CDATA[..che ci sono sistemi per l&#8217;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&#8217;interno di una pagina html. In un mondo perfetto avremmo un ottimo supporto ai caratteri [...]]]></description>
			<content:encoded><![CDATA[<p>..che ci sono sistemi per l&#8217;<strong>embedding dei font</strong> nelle pagine web.<br />
Sto parlando del più famoso <a href="http://novemberborn.net/sifr3">sIFR</a> (ora alla terza versione) di <a href="http://wiki.github.com/sorccu/cufon">Cufon</a> e diversi altri (tra cui il recente <a href="http://typekit.com/">Typekit</a>), script grazie ai quali si può utilizzare qualunque carattere all&#8217;interno di una pagina html.</p>
<p>In un mondo perfetto avremmo un ottimo supporto ai caratteri anche nei browser, ma così non è, quindi ci teniamo la nostra <strong>manciata di font sempre uguali</strong> (qualcuno ha detto verdana?) e tiriamo avanti sopravvivendo al dispiacere di non poter godere di opere come quelle che per esempio ci elenca quotidianamente <a href="http://www.typojungle.net/">typojungle</a>.<br />
Siamo costretti a questo dal fatto che ogni computer può visualizzare solo i font che ha installati.</p>
<p>Alla terribile ingiustizia che chi può si gode l&#8217;<a href="http://www.mimeartist.com/helvetica/">Helvetica</a> mentre gli altri si beccano l&#8217;Arial purtroppo non c&#8217;è rimedio (tranne flash naturalmente), ma per <strong>piccoli pezzetti di testo</strong>, tipicamente i titoli si può supplire sostituendo la scritta in html con un analogo in flash (o un&#8217;immagine).</p>
<p><strong>sIFR</strong> fa la scelta di utilizzare il javascript per sostituire l&#8217;elemento indicato e tutti i suoi figli con un filmato in flash delle stesse dimensioni (quasi).<br />
sIFR3 risulta abbastanza semplice da aggiungere ad una pagina i passi riassunti brutalmente sono solo 4:</p>
<ol>
<li>Avere il file <em>.swf</em>: non richiede quasi preparazione, infatti basta aprire il<em> .fla</em> fornito nel pacchetto, cancellare il testo, impostare il font che si vuole utilizzare e pubblicare il filmato.</li>
<li>includere nella pagina il css <strong>sifr.css</strong>:

<div class="wp_codebox"><table><tr id="p1426"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p142code6"><pre class="javascript" style="font-family:monospace;">&nbsp;</pre></td></tr></table></div>

</li>
<li>includere nella pagina i file <strong>sifr.js</strong> e <strong>sifr-confg.js</strong>:

<div class="wp_codebox"><table><tr id="p1427"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p142code7"><pre class="js" style="font-family:monospace;">&lt;script src=&quot;/path/to/sifr.js&quot; type=&quot;text/javascript&quot;&gt;&lt;!--mce:0--&gt;&lt;/script&gt;
&lt;script src=&quot;/path/to/sifr-config.js&quot; type=&quot;text/javascript&quot;&gt;&lt;!--mce:1--&gt;&lt;/script&gt;</pre></td></tr></table></div>

</li>
<li>inserire nel sifr-config.js i filmati da attivare, dove attivarli e le impostazioni da usare (color, background ed altre amenità &#8220;simil css&#8221;.<br />
Una <strong>minima configurazione</strong> comprende:</p>

<div class="wp_codebox"><table><tr id="p1428"><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code" id="p142code8"><pre class="javascript" style="font-family:monospace;">var strangeFont = { src: &quot;/path/to/strangefont.swf&quot; } //il path è relativo alla pagina che carica il filmato
sIFR.activate(strangeFont); // ci deve essere un solo &quot;activate&quot; 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</pre></td></tr></table></div>

</li>
</ol>
<p>Probabilmente seguendo questi 4 step la pagina ora fa un po&#8217; schifo, le cose migliorano molto dopo aver scoperto che <em>sIFR.replace()</em> consente una sintassi <strong>css-like</strong> ed infatti:</p>

<div class="wp_codebox"><table><tr id="p1429"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p142code9"><pre class="javascript" style="font-family:monospace;">sIFR.replace(strangeFont, {selector:'h1', css:['.sIFR-root{color:#ff0000; font-size:10px}']}</pre></td></tr></table></div>

<p>trasforma tutti gli <em>&lt;h1&gt;</em> della pagina in un bel colore rosso puro e corpo 10. <em>Attenzione</em>, non ho scritto il codice del colore a 6 cifre in quanto masochista, ma perchè flash non riconosce l&#8217;abbreviazione a 3 cifre come fanno i css.</p>
<p>Altre cose a cui fare stare attenti:</p>
<ul>
<li>se lo sfondo non è uniforme <em>sIFR.replace()</em> ci consente l&#8217;opzione <em>transparent:true</em></li>
<li>a <em>sIFR.replace()</em> possono essere aggiunti tutti gli stili che vogliamo, quindi è perfettamente valida la sintassi <em>css['sIFR-root{...}','.class{...}']</em> purchè i selettori siano tutti figli dell&#8217;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 <em>sIFR.replace()</em> con i selettori ordinati dal più particolare al più generale. Per esempio

<div class="wp_codebox"><table><tr id="p14210"><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code" id="p142code10"><pre class="javascript" style="font-family:monospace;">sIFR.replace('ul#main li.selected');
sIFR.replace('ul#main li');
sIFR.replace('li.selected');
sIFR.replace('li');</pre></td></tr></table></div>

<p>In questo modo si dovrebbero avere meno mal di testa, ma non è vero, <strong>solo l&#8217;esperienza fa passare questo tipo di malesseri</strong>.</li>
<li>sIFR <strong>calcola l&#8217;ingombro</strong> del filmato flash in base all&#8217;ingombro che ha l&#8217;oggetto che deve sostituire, può capitare che il js di sIFR si esegua prima che l&#8217;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 <strong>ridimensionare la finestra del browser</strong>, se va tutto a posto la questione è proprio questa.<br />
Per risolvere questo problema bisogna applicare qualche hack che ritardi l&#8217;esecuzione del js fino al momento giusto</li>
<li><strong>evitare</strong> di sostituire i link. sIFR non può sostituire direttamente i tag <em>&lt;a&gt;</em> quindi bisogna applicarlo ad un elemento padre. A mio parere il gioco non vale la candela</li>
</ul>
<p>In conclusione sIFR è sicuramente uno script<strong> ottimamente programmato</strong> a partire da un&#8217;<strong>idea intelligente</strong>, ma a me non piace.<br />
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 <strong>non conduce ad un risultato perfetto</strong>.<br />
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.</p>
<p>Per quel che riguarda gli altri sistemi di embedding dei font ancora non li ho provati e tantomeno messi in produzione.<br />
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&#8217;utente.</p>
<p><a href="http://typekit.com/">Typekit</a> invece che cos&#8217;è? <a href="http://www.bradcolbow.com/archive.php/?p=86">questo di bradcolbow.com</a> è un mirabile riassunto, quello che penso io è che potrebbe essere un buon sistema, vedremo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lghinelli.it/blog/2009/al-grafico-non-far-sapere/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>la terza regola di internet</title>
		<link>http://www.lghinelli.it/blog/2009/la-terza-regola-di-internet/</link>
		<comments>http://www.lghinelli.it/blog/2009/la-terza-regola-di-internet/#comments</comments>
		<pubDate>Wed, 29 Apr 2009 23:38:34 +0000</pubDate>
		<dc:creator>lghinelli</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[managing projects]]></category>

		<guid isPermaLink="false">http://www.lghinelli.it/lgolb/?p=63</guid>
		<description><![CDATA[Esiste davvero del codice scritto troppo bene per essere vendibile o è un mostro dell&#8217;immaginazione? Nell&#8217;ultimo ufficio dove ho lavorato avevamo una lavagna. Sulla lavagna c&#8217;erano scritte cose utili e cazzate (quasi solo partorite da me), ma soprattutto c&#8217;era segnato anche il nostro decalogo di internet. E&#8217; un decalogo composto da 3 regole, le prime [...]]]></description>
			<content:encoded><![CDATA[<p>Esiste davvero del codice scritto troppo bene per essere vendibile o è un mostro dell&#8217;immaginazione?</p>
<p>Nell&#8217;ultimo ufficio dove ho lavorato avevamo una lavagna.<br />
Sulla lavagna c&#8217;erano scritte cose utili e cazzate (quasi solo partorite da me), ma soprattutto c&#8217;era segnato anche il nostro <strong>decalogo di internet</strong>.</p>
<p>E&#8217; 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:</p>
<p><em>3. Quanto costa il tuo barattolo di marmellata?</em></p>
<p>Esplica il concetto che <strong>tu</strong> puoi fare anche la marmellata più buona del mondo, <strong>ma</strong> <strong>se</strong>, al barattolo, costa troppo non la venderai <strong>mai</strong>, perciò in base a questa regola la qualità di un lavoro deve essere abbassata finchè il costo della produzione non consente un buon guadagno.</p>
<p>Naturalmente non può essere così perchè se un&#8217;azienda che fa siti web dovesse abbassare la qualità del prodotto fino ad incontrare l&#8217;aspettativa di prezzo dei clienti staremmo ancora facendo siti con il tag <em>marquee</em> (pessimo esempio, io adoro il tag marquee. <a href="http://www.ratticchio.com">Remember, real spartans use tag marquee</a>).</p>
<p>Tra uno scherzo e l&#8217;altro sono stato &#8220;accusato&#8221; di produrre <span style="text-decoration: line-through;">marmellata</span> codice biologico (e quindi troppo costoso) ed io ci ho pensato seriamente su.</p>
<p>Esiste davvero del <em>codice biologico</em>?<br />
Ho deciso di no.<br />
La qualità di un progetto dipende essenzialmente da due fattori: la bontà del codice del programmatore meno abile e la data di scadenza.<br />
è 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&#8217;alto.<br />
Il <em>codice biologico</em> è un mostro della mente che viene fuori nel momento in cui si vogliono inserire troppe features nel tempo a disposizione.<br />
Mi sembra quindi ovvio che il problema non è né nel codice né nello sviluppatore, ma in chi fissa i tempi.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lghinelli.it/blog/2009/la-terza-regola-di-internet/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>jquery mousewheel</title>
		<link>http://www.lghinelli.it/blog/2009/jquery-mousewheel/</link>
		<comments>http://www.lghinelli.it/blog/2009/jquery-mousewheel/#comments</comments>
		<pubDate>Fri, 23 Jan 2009 08:28:03 +0000</pubDate>
		<dc:creator>lghinelli</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://www.lghinelli.it/lgolb/?p=78</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p>Firefox ed Opera usano per la rotella del mouse comportamenti diametralmente opposti. Questo da fastidio al mio javascript e costringe il <a title="jquery plugin mousewheel" href="http://plugins.jquery.com/project/mousewheel">plugin</a> di jquery che uso per il supporto allo scorrimento non totalmente multibrowser.</p>
<p>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.</p>
<p><a title="jquery plugin mousewheel" href="">Mousewheel</a> infatti all&#8217;attivazione dell&#8217;evento &#8220;rotella girata&#8221; 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.</p>
<p>Su firefox uno spostamento della rotella verso l&#8217;utente (per me giù) è positivo ed uno spostamento nell&#8217;altro verso (su) è negativo. In opera esattamente il contrario.</p>
<p>Ho scoperto ora il problema ed aggiornerò il post con la mia soluzione (quando l&#8217;avro almeno pensata) e con altre indicazioni sul comportamento negli altri browser.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lghinelli.it/blog/2009/jquery-mousewheel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Progressive enhancement</title>
		<link>http://www.lghinelli.it/blog/2008/progressive-enhancement/</link>
		<comments>http://www.lghinelli.it/blog/2008/progressive-enhancement/#comments</comments>
		<pubDate>Sun, 16 Nov 2008 15:44:57 +0000</pubDate>
		<dc:creator>lghinelli</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[managing projects]]></category>

		<guid isPermaLink="false">http://www.lghinelli.it/lgolb/?p=56</guid>
		<description><![CDATA[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. &#8220;orizzontale è più leggibile&#8221;) i requisiti sono: la pagina non deve avere alcuno scroll verticale a nessuna risoluzione [...]]]></description>
			<content:encoded><![CDATA[<p>A volte mi chiedo se le tecniche di buona programmazione siano applicabili nel mondo reale.</p>
<p>Al momento mi sto dedicando a creare un nuovo ramo del mio sito, essendo esso un frutto delle mie personali fissazioni (cfr. &#8220;orizzontale è più leggibile&#8221;) i requisiti sono:</p>
<ul>
<li>la pagina non deve avere alcuno scroll verticale a nessuna risoluzione</li>
<li>essere integrato con i vari social network</li>
<li>avere la possibilità di commentare i post (no, non è un blog)</li>
<li>ajax dappertutto perchè a me non piace ricaricare la pagina</li>
<li>essere usabile</li>
</ul>
<p>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.</p>
<p>Siccome sono pigro e non voglio perdere un sacco di tempo a correggere bug e ad aggiungere funzionalità a &#8220;oggetti&#8221; non predisposti a riceverle questa volta ho deciso di non commettere l&#8217;errore di farmi trascinare nel programmare la funzione più interessante per poi aggiungervi &#8220;metastasi&#8221; che per funzionare richiedono trucchetti e difettano di solidità.</p>
<p>E&#8217; qui che entra in scena il &#8220;<strong>progressive enhancement</strong>&#8221; di cui si legge tanto in giro e che sto applicando per step:</p>
<ol>
<li>creazione della pagina statica (<em>html/css</em>)</li>
<li>dinamicizzazione della pagina lato server (<em>php</em>)</li>
<li>aggiunta di ajax (<em>javascript/jquery</em>)</li>
</ol>
<p><strong>1. creazione della pagina statica (html/css)</strong></p>
<p>Tenendo in mente che la pagina non deve avere alcuno scroll verticale ho scelto di progettare il layout con tutte le dimensioni espresse in <strong>em</strong> utilizzando <em>font-size:16px</em> ed un&#8217;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.</p>
<p>E come ben sapete progettare un layout in <strong>em</strong> è un bagno di sangue (anche se ho trovato un buon sistema che avrà un post in seguito) ed un po&#8217; di tempo è andato.</p>
<p><strong>2. Dinamicizzazione della pagina lato server (php)</strong></p>
<p>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 <strong>$_GET</strong> dai link, quindi nella pagina vengono inseriti tutti i necessari controlli di flusso</p>
<p><strong>3. Aggiunta di ajax</strong></p>
<p>A me l&#8217;<strong>ajax</strong> 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 &#8220;loading&#8221; o la cesoia della pagina bianca con la clessidra che gira?).</p>
<p>Le funzioni richieste al js sono:</p>
<ul>
<li>cambiare il font-size del body in funzione della dimensione della finestre (in questo caso: <em>$(window).heigth()/40</em> (<em>jquery</em>)</li>
<li>intercettare i click dell&#8217;utente sui link e trasformali da &#8220;<em>hey browser segui quel link</em>&#8221; a &#8220;<em>hey browser <strong>XMLHttpRequest</strong> con questi parametri</em>&#8220;.</li>
<li>segnalare all&#8217;utente che le sue azioni intercettate dal js non sono cadute nel niente, ma stanno eseguendosi</li>
</ul>
<p>Se siamo tutti d&#8217;accordo nel dire che un progetto web sviluppato da un professionista richiede (almeno):</p>
<ul>
<li>una <strong>totale</strong> separazione tra layout, contenuto e codice, perchè così ognuno fa il suo mestiere senza disturbare gli altri (l&#8217;epoca del one man show sul web è finita assieme agli anni &#8217;90)</li>
<li>&#8220;<strong>graceful degradation</strong>&#8220;, perchè nel 2008 ancora qualcuno gira con javascript e flash disabilitati (paranoici!)</li>
<li><strong>mantenibilità nel tempo</strong>, perchè non vogliamo mettere noi stessi ed in nostri colleghi in difficoltà tra 3 mesi vero?</li>
</ul>
<p>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).</p>
<p>Ecco descritto quindi il <strong>progressive enhancement</strong> 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?</p>
<p>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&#8217;applicare il metodo e perciò non cerchino scorciatoie facili.</p>
<p>Il problema è quindi squisitamente umano piuttosto che tecnico:</p>
<p>saranno disposti i membri del team di sviluppo a modificare le abitudini che si sono incrostate in una vita?</p>
<p>E sarà disposto l&#8217;uomo che sgancia i soldi ad investire nella formazione sapendo che sicuramente il primo progetto sviluppato in questo modo avrà degli intoppi?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lghinelli.it/blog/2008/progressive-enhancement/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

