<?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>conundrum &#187; Software</title>
	<atom:link href="http://www.emmanuelebassi.name/archives/category/computer/software/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.emmanuelebassi.name</link>
	<description>on the other side of the screen it all looks so easy</description>
	<lastBuildDate>Tue, 08 Sep 2009 20:52:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>GUADEC/0</title>
		<link>http://www.emmanuelebassi.name/archives/2008/07/11/guadec0-3/</link>
		<comments>http://www.emmanuelebassi.name/archives/2008/07/11/guadec0-3/#comments</comments>
		<pubDate>Fri, 11 Jul 2008 20:35:41 +0000</pubDate>
		<dc:creator>ebassi</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[gtk+]]></category>
		<category><![CDATA[guadec]]></category>

		<guid isPermaLink="false">http://www.emmanuelebassi.net/archives/2008/07/guadec0-3/</guid>
		<description><![CDATA[dalla caffetteria dell&#8217;università, a cinquanta metri dal Bosforo anche quest&#8217;anno, il GUADEC è stata una grande esperienza. ritrovare varia umanità con cui chiaccheri solo su IRC o su mailing list mette più o meno di buon umore &#8212; e se a questo si aggiunge passare la serata fino alle tre del mattino sdraiato su cuscini [...]]]></description>
			<content:encoded><![CDATA[<p><em>dalla caffetteria dell&#8217;università, a cinquanta metri dal Bosforo</em></p>
<p>anche quest&#8217;anno, il GUADEC è stata una grande esperienza. ritrovare varia umanità con cui chiaccheri solo su IRC o su mailing list mette più o meno di buon umore &mdash; e se a questo si aggiunge passare la serata fino alle tre del mattino sdraiato su cuscini bevendo te e in compagnia di un nargilé al mango il quadro è completo.</p>
<p>al GUADEC, però, si va anche per parlare con persone che lavorano con e su GNOME &mdash; invariabilmente questo porta a interessanti sviluppi.</p>
<p>leggendo un po&#8217; in giro, vedo che alcuni si sono scandalizzati o sorpresi del <em>new deal</em> nelle GTK+ e in GNOME; se però avessero seguito quello che avviene ogni giorno da un anno a questa parte si sarebbero velocemente resi conto di come tutto questo sia partito dallo scorso GUADEC &mdash; e possibilmente anche da quello prima. sigillare le GTK+ per poter cambiare gli <em>internals</em> senza rompere le applicazioni, ridurre il lasso di tempo da <em>major release</em>, non sono grandi e rivoluzionari piani: sono l&#8217;unico modo di portare avanti una piattaforma in maniera organica e continua. non vi siete svegliati una mattina trovandovi venti centimetri più alti, con una voce di due ottave più bassa e i caratteri sessuali secondari completamente sviluppati &mdash; vi ci saranno voluti anni. E se gestire la pubertà è un&#8217;impresa ardua, immaginatevi un <em>desktop</em> con milioni di utenti su varie piattaforme su cui non esercitate alcun controllo.</p>
<p>GNOME ha già provato a rompere con il passato in maniera netta, con un <em>quantum leap</em> invece che vari passi incrementali; è stato un diastro ferroviario, e sicuramente tutti quelli coinvolti nel progetto pensano &quot;mai più&quot;. la somma di questi piani &mdash; GTK+ 3.0 e GNOME 3.0 &mdash; sono l&#8217;unica alternativa realistica.</p>
<p>se poi vogliamo andare sul non-realistico, possiamo sempre contare sull&#8217;aiuto di Babbo Natale e della Fatina dei Denti &mdash; ma ho i miei dubbi sull&#8217;implementabilità.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.emmanuelebassi.name/archives/2008/07/11/guadec0-3/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Driving Sideways</title>
		<link>http://www.emmanuelebassi.name/archives/2008/01/15/driving-sideways/</link>
		<comments>http://www.emmanuelebassi.name/archives/2008/01/15/driving-sideways/#comments</comments>
		<pubDate>Tue, 15 Jan 2008 22:14:57 +0000</pubDate>
		<dc:creator>ebassi</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[clutter]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[hacking]]></category>

		<guid isPermaLink="false">http://www.emmanuelebassi.net/archives/2008/01/driving-sideways/</guid>
		<description><![CDATA[non ti rendi conto di quanto dai per scontato in Linux se non quando devi replicare un ambiente di sviluppo sotto OS X. fortunatamente, con un po&#8217; di &#60;a href=&#34;http://www.macports.org/&#34;&#62;Macports&#60;/a&#62; e di &#60;a href=&#34;http://live.gnome.org/Jhbuild&#34;&#62;JHBuild&#60;/a&#62; si riesce a mettere in piedi qualcosa di usabile. una cosa sicuramente mi piacerebbe avere anche sotto &#60;a href=&#34;http://en.wikipedia.org/wiki/GLX&#34;&#62;GLX&#60;/a&#62;, e sono [...]]]></description>
			<content:encoded><![CDATA[<p>non ti rendi conto di quanto dai per scontato in Linux se non quando devi replicare un ambiente di sviluppo sotto OS X. fortunatamente, con un po&#8217; di &lt;a href=&quot;http://www.macports.org/&quot;&gt;Macports&lt;/a&gt; e di &lt;a href=&quot;http://live.gnome.org/Jhbuild&quot;&gt;JHBuild&lt;/a&gt; si riesce a mettere in piedi qualcosa di usabile.</p>
<p>una cosa sicuramente mi piacerebbe avere anche sotto &lt;a href=&quot;http://en.wikipedia.org/wiki/GLX&quot;&gt;GLX&lt;/a&gt;, e sono i &lt;em&gt;tool&lt;/em&gt; per fare &lt;em&gt;profiling&lt;/em&gt; delle &lt;a href=&quot;http://developer.apple.com/graphicsimaging/opengl/opengl_serious.html&quot;&gt;chiamate OpenGL&lt;/a&gt;; l&#8217;&lt;acronym title=&quot;User Interface&quot;&gt;UI&lt;/acronym&gt; Ã¨ banale da replicare (basta prendere una cosa tipo &lt;a href=&quot;http://labs.o-hand.com/oprofileui/&quot;&gt;questa&lt;/a&gt;) ma quello che Ã¨ interessante Ã¨ tutta la serie di &lt;em&gt;hooks&lt;/em&gt; per attaccarci uno &lt;em&gt;statistical profiler&lt;/em&gt;.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.emmanuelebassi.name/archives/2008/01/15/driving-sideways/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dead Duck</title>
		<link>http://www.emmanuelebassi.name/archives/2007/11/01/dead-duck/</link>
		<comments>http://www.emmanuelebassi.name/archives/2007/11/01/dead-duck/#comments</comments>
		<pubDate>Thu, 01 Nov 2007 11:03:40 +0000</pubDate>
		<dc:creator>ebassi</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[compiz]]></category>

		<guid isPermaLink="false">http://www.emmanuelebassi.net/archives/2007/11/dead-duck/</guid>
		<description><![CDATA[L&#8217;altra settimana ho aggiornato il laptop a Gutsy. In generale, il &#60;em&#62;feel&#60;/em&#62; Ã¨ che questa release sia una mezza tragedia: non siamo ai livelli di Edgy, ma poco ci manca. Tra le cose che hanno smesso di funzionare: &#60;ul&#62; &#60;li&#62;NetworkManager non sopravvive al &#60;em&#62;suspend&#60;/em&#62; e sono costretto a disabilitare la rete quando sposto il computer [...]]]></description>
			<content:encoded><![CDATA[<p>L&#8217;altra settimana ho aggiornato il laptop a Gutsy. In generale, il &lt;em&gt;feel&lt;/em&gt; Ã¨ che questa release sia una mezza tragedia: non siamo ai livelli di Edgy, ma poco ci manca. Tra le cose che hanno smesso di funzionare:</p>
<p>&lt;ul&gt;<br />
  &lt;li&gt;NetworkManager non sopravvive al &lt;em&gt;suspend&lt;/em&gt; e sono costretto a disabilitare la rete quando sposto il computer da casa all&#8217;ufficio; questo quando va bene: alle volte devo andare di &lt;code&gt;killall&lt;/code&gt;. &lt;strong&gt;Update@2007-11-01T15:39+0100&lt;/strong&gt;: &lt;a href=&quot;https://bugzilla.redhat.com/show_bug.cgi?id=352771&quot;&gt;bug noto&lt;/a&gt;, a quanto pare risolto in SVN.&lt;/li&gt;<br />
  &lt;li&gt;Se spengo il monitor sotto X (ad esempio, se chiudo il laptop ma lo lascio acceso) due volte su tre non viene riacceso e sono costretto a far ripartire GDM.&lt;/li&gt;<br />
&lt;/ul&gt;</p>
<p>C&#8217;Ã¨ di buono che GNOME 2.20 Ã¨ meraviglioso, e che Debian non riconosca (ancora) l&#8217;esistenza dei laptop, altrimenti sarei tornato di corsa al mix di testing+unstable che usavo prima.</p>
<p>Ovviamente, ho provato di nuovo Compiz &#8211; il compositor che alle volte fa da (pessimo) window manager. L&#8217;&lt;em&gt;user interface&lt;/em&gt; Ã¨ un totale disastro ferroviario, in cui puoi scegliere solo tre livelli:</p>
<p>&lt;ol&gt;<br />
  &lt;li&gt;Niente effetti (ovvero: Metacity)&lt;/li&gt;<br />
  &lt;li&gt;Effetti per persone sane di mente&lt;/li&gt;<br />
  &lt;li&gt;Hurt me plenty<sup>1</sup> (ovvero: gente che si bulla con gli amici, gente che registra un video per bullarsi con gli amici, gente che sta male perchÃ© non ha amici ma non ne ha bisogno perchÃ© ha Compiz, gentooisti)&lt;/li&gt;<br />
&lt;/ol&gt;</p>
<p>In piÃ¹, se hai qualcosa che non Ã¨ installato di default e non ha un nome umanamente inferibile<sup>2</sup>, hai anche il livello segreto:</p>
<p>&lt;ol style=&quot;count-reset:4&quot; start=&quot;4&quot;&gt;<br />
  &lt;li&gt;Customizzami tutta&lt;/li&gt;<br />
&lt;/ol&gt;</p>
<p>Che permette di selezionare cose utili come il &lt;em&gt;motion blur&lt;/em&gt; ma non ha un setting per avere un window manager sensato, tra il &lt;strong&gt;miliardo&lt;/strong&gt; di &lt;em&gt;tunables&lt;/em&gt;, plugin che si disattivano a vicenda e chiari esempi di opzioni di tipo &lt;em&gt;unfuck my application&lt;/em&gt;.</p>
<p>Il problema Ã¨ che perfino al livello per persone normali dopo dieci minuti di utilizzo comincio a sentire il mal di mare e un mal di testa impressionante. A questo va aggiunto il fatto che il trasferimento di opzioni da Metacity a Compiz Ã¨ orrido e mi sono trovato dall&#8217;avere dodici workspace all&#8217;avere dodici viewport con dodici workspace l&#8217;uno &#8211; l&#8217;equivalente di 144 aree di lavoro la cui navigazione Ã¨ banalmente impossible.</p>
<p>Morale della storia:</p>
<p>&lt;pre&gt;<br />
  cd ~/git<br />
  git clone git://anongit.freedesktop.org/git/xorg/app/xcompmgr<br />
  ./autogen.sh<br />
  make &amp;&amp; cp xcompmgr ~/bin<br />
  xcompmgr -cC -o .3 &amp;<br />
&lt;/pre&gt;</p>
<p>e Metacity. E, ovviamente, &lt;a href=&quot;https://launchpad.net/awn&quot;&gt;AWN&lt;/a&gt; (che ha dei bug grandi cosÃ¬, ma posso rompere le scatole a Neil di persona).</p>
<ol class="footnotes"><li id="footnote_0_1082" class="footnote">citazione colta</li><li id="footnote_1_1082" class="footnote">hint: &lt;strong&gt;non&lt;/strong&gt; Ã¨ gnome-compiz-manager</li></ol>]]></content:encoded>
			<wfw:commentRss>http://www.emmanuelebassi.name/archives/2007/11/01/dead-duck/feed/</wfw:commentRss>
		<slash:comments>28</slash:comments>
		</item>
		<item>
		<title>Just a Ride</title>
		<link>http://www.emmanuelebassi.name/archives/2007/09/03/just-a-ride/</link>
		<comments>http://www.emmanuelebassi.name/archives/2007/09/03/just-a-ride/#comments</comments>
		<pubDate>Mon, 03 Sep 2007 22:24:18 +0000</pubDate>
		<dc:creator>ebassi</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[gtk+]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://www.emmanuelebassi.net/archives/2007/09/just-a-ride/</guid>
		<description><![CDATA[Dicevo &#60;a href=&#34;http://log.emmanuelebassi.net/archives/2007/09/my-wandering-days-are-over/&#34;&#62;altrove&#60;/a&#62; di aver provato &#60;a href=&#34;http://live.gnome.org/Vala&#34;&#62;Vala&#60;/a&#62;, il linguaggio C#-like scritto usando GLib e GObject come base, e che viene &#34;compilato&#34; in C invece di usare una &#60;acronym title=&#34;Virtual Machine&#34;&#62;VM&#60;/acronym&#62; e un linguaggio intermedio1. Ho trovato dei difetti nel layer di traduzione, ma sono dovuti essenzialmente alla giovane etÃ  del progetto, e il team [...]]]></description>
			<content:encoded><![CDATA[<p>Dicevo &lt;a href=&quot;http://log.emmanuelebassi.net/archives/2007/09/my-wandering-days-are-over/&quot;&gt;altrove&lt;/a&gt; di aver provato &lt;a href=&quot;http://live.gnome.org/Vala&quot;&gt;Vala&lt;/a&gt;, il linguaggio C#-like scritto usando GLib e GObject come base, e che viene &quot;compilato&quot; in C invece di usare una &lt;acronym title=&quot;Virtual Machine&quot;&gt;VM&lt;/acronym&gt; e un linguaggio intermedio<sup>1</sup>.</p>
<p>Ho trovato dei difetti nel layer di traduzione, ma sono dovuti essenzialmente alla giovane etÃ  del progetto, e il team di sviluppo sta raccogliendo intorno a sÃ© una quantitÃ  di collaboratori piÃ¹ o meno saltuari che fa ben sperare. In piÃ¹, la mera esistenza di Vala sta spingendo a completare il supporto per l&#8217;introspezione in GObject<sup>2</sup>.</p>
<p>Quello che piÃ¹ mi interessa, perÃ², Ã¨ la possibilitÃ  di avere un linguaggio a medio/alto ufficialmente sanzionato da GNOME &#8211; come Objective-C da Apple. Intendiamoci: la quantitÃ  di &lt;em&gt;binding&lt;/em&gt; giÃ  presenti Ã¨ enorme, e giÃ  oggi se volessi scrivere un&#8217;applicazione per GNOME potrei farlo in Perl, come in Java, come in C# e perfino con quel &lt;em&gt;train wreck&lt;/em&gt; di Python<sup>3</sup>. Tuttavia, i bindings sono quello che sono: si portano dietro &lt;em&gt;virtual machine&lt;/em&gt;, ambienti di &lt;em&gt;runtime&lt;/em&gt;, licenze, implementazioni &lt;em&gt;patent encumbered&lt;/em&gt; e altre amenitÃ .</p>
<p>Intendiamoci: non ho nulla contro le &lt;acronym title=&quot;Virtual Machine&quot;&gt;VM&lt;/acronym&gt; &#8211; a parte l&#8217;obiezione classica: &quot;sto giÃ  usando una macchina virtuale su una macchina reale, perchÃ© devo usarne un&#8217;altra ancora per ogni linguaggio?&quot;; tuttavia, e specie sulle macchine su cui lavoro, &lt;strong&gt;una&lt;/strong&gt; &lt;em&gt;virtual machine&lt;/em&gt; Ã¨ giÃ  sufficiente &#8211; figuriamoci quattro o cinque. Mi piacerebbe che qualcuno prendesse Mono e ci portasse piÃ¹ di tre o quattro linguaggi; mi piacerebbe ancora di piÃ¹ che qualcuno prendesse &lt;a href=&quot;http://en.wikipedia.org/wiki/Parrot_virtual_machine&quot;&gt;Parrot&lt;/a&gt; e lo completasse. Mi piacerebbe, insomma, avere &lt;strong&gt;una&lt;/strong&gt; macchina virtuale per tutti i linguaggi ad alto livello. Se non posso averla, allora tanto vale usare Vala.</p>
<ol class="footnotes"><li id="footnote_0_1074" class="footnote">si potrebbe arguire come, in realtÃ , la VM usata sia il sistema operativo ospite, e che sicuramente esistono piÃ¹ piattaforme con un compilatore C che piattaforme che supportano Java o C#</li><li id="footnote_1_1074" class="footnote">ovvero la possibilitÃ  di avere meta-informazioni a &lt;em&gt;runtime&lt;/em&gt; su una libreria, sulle API e sui tipi di dati esportati</li><li id="footnote_2_1074" class="footnote">che, spero, Python 3.0 affosserÃ  definitivamente con tutte le modifiche arbitrarie alle API senza vere nuove &lt;em&gt;feature&lt;/em&gt;; non ci resta, quindi, che sperare in IronPython per una implementazione sana di mente? non voglio pensarci</li></ol>]]></content:encoded>
			<wfw:commentRss>http://www.emmanuelebassi.name/archives/2007/09/03/just-a-ride/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Hysteria</title>
		<link>http://www.emmanuelebassi.name/archives/2007/08/28/hysteria/</link>
		<comments>http://www.emmanuelebassi.name/archives/2007/08/28/hysteria/#comments</comments>
		<pubDate>Tue, 28 Aug 2007 09:40:33 +0000</pubDate>
		<dc:creator>ebassi</dc:creator>
				<category><![CDATA[Lusers]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Rants]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[stupidity]]></category>

		<guid isPermaLink="false">http://www.emmanuelebassi.net/archives/2007/08/hysteria/</guid>
		<description><![CDATA[O mio dio! Skype usa D-Bus, che usa &#60;code&#62;getpwnam (3posix)&#60;/code&#62;, che apre &#60;code&#62;/etc/passwd&#60;/code&#62;! Moriremo tutti! O mio dio! La demo giocabile di un gioco giÃ  uscito installa un sistema per il &#60;acronym title=&#34;Digital Restrictions Management&#34;&#62;DRM&#60;/acronym&#62; possibilmente scritto dalla stessa compagnia che aveva scritto un altro sistema per il &#60;acronym title=&#34;Digital Restrictions Management&#34;&#62;DRM&#60;/acronym&#62; che aveva le [...]]]></description>
			<content:encoded><![CDATA[<p>O mio dio! Skype usa D-Bus, che usa &lt;code&gt;getpwnam (3posix)&lt;/code&gt;, che apre &lt;code&gt;/etc/passwd&lt;/code&gt;! Moriremo tutti!</p>
<p>O mio dio! La demo giocabile di un gioco giÃ  uscito installa un sistema per il &lt;acronym title=&quot;Digital Restrictions Management&quot;&gt;DRM&lt;/acronym&gt; possibilmente scritto dalla stessa compagnia che aveva scritto un altro sistema per il &lt;acronym title=&quot;Digital Restrictions Management&quot;&gt;DRM&lt;/acronym&gt; che aveva le caratteristiche di un &lt;em&gt;rootkit&lt;/em&gt;! Moriremo tutti!</p>
<p>&lt;em&gt;L&#8217;isteria di massa del weekend Ã¨ stata gentilmente offerta da blog e webforum e dal tam-tam della stessa gente che installa un firewall per sentirsi piÃ¹ sicuri &#8211; e poi magari blocca il DNS e pensa di essere stata &quot;acherata&quot;. Chiunque campi sull&#8217;informatica non puÃ² che ringraziare questi fessi che permettono di portarsi a casa la pagnotta e non offrono alcun pericolo imminente di rimpiazzo.&lt;/em&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.emmanuelebassi.name/archives/2007/08/28/hysteria/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>The Worst Joke Ever</title>
		<link>http://www.emmanuelebassi.name/archives/2007/05/14/the-worst-joke-ever/</link>
		<comments>http://www.emmanuelebassi.name/archives/2007/05/14/the-worst-joke-ever/#comments</comments>
		<pubDate>Mon, 14 May 2007 22:13:51 +0000</pubDate>
		<dc:creator>ebassi</dc:creator>
				<category><![CDATA[Diary]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[gtk+]]></category>

		<guid isPermaLink="false">http://www.emmanuelebassi.net/archives/2007/05/the-worst-joke-ever/</guid>
		<description><![CDATA[Ho passato gli ultimi tre giorni a tentare di capire perchÃ© un pezzo di codice producesse un &#60;code&#62;SIGSEGV&#60;/code&#62;. Ho cambiato linee, logica, tipi di dato. Niente: qualunque cosa facessi, solo crash. Come al solito, &#60;code&#62;gdb&#60;/code&#62; si rivelava poco utile, mentendo spudoratamente sul luogo della violazione di memoria. Oggi pomeriggio ho deciso di arrendermi e ho [...]]]></description>
			<content:encoded><![CDATA[<p>Ho passato gli ultimi tre giorni a tentare di capire perchÃ© un pezzo di codice producesse un &lt;code&gt;SIGSEGV&lt;/code&gt;. Ho cambiato linee, logica, tipi di dato. Niente: qualunque cosa facessi, solo crash. Come al solito, &lt;code&gt;gdb&lt;/code&gt; si rivelava poco utile, mentendo spudoratamente sul luogo della violazione di memoria.</p>
<p>Oggi pomeriggio ho deciso di arrendermi e ho chiesto a Kris se poteva darmi una mano (dato che il &lt;em&gt;segfault&lt;/em&gt; si verificava nel codice del &lt;code&gt;GtkTreeModelSort&lt;/code&gt; che lui mantiene). Stasera mi dice di aver trovato la patch:</p>
<p>&lt;pre&gt;<br />
Index: gtk/gtkfilechooserdefault.c<br />
==============================================================<br />
&#8212; gtk/gtkfilechooserdefault.c (revision 17846)<br />
+++ gtk/gtkfilechooserdefault.c (revision 17848)<br />
@@ -9508,7 +9508,7 @@ recent_column_path_sort_func (GtkTreeMod<br />
   if (!name_a)<br />
     return 1;</p>
<p>-  if (!name_b);<br />
+  if (!name_b)<br />
     return -1;</p>
<p>   if (is_folder_a != is_folder_b)<br />
&lt;/pre&gt;</p>
<p>Penso che i miei moccoli siano arrivati vicinissimi al Moccolo a Delta di Dirac (dieci alla ventottesima madonne in un microsecondo).</p>
<p>&lt;em&gt;Va da sÃ© che Kris si vedrÃ  offrire una birra al GUADEC.&lt;/em&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.emmanuelebassi.name/archives/2007/05/14/the-worst-joke-ever/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Give It Up</title>
		<link>http://www.emmanuelebassi.name/archives/2007/03/13/give-it-up/</link>
		<comments>http://www.emmanuelebassi.name/archives/2007/03/13/give-it-up/#comments</comments>
		<pubDate>Tue, 13 Mar 2007 13:20:39 +0000</pubDate>
		<dc:creator>ebassi</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[kde]]></category>
		<category><![CDATA[stupidity]]></category>

		<guid isPermaLink="false">http://www.emmanuelebassi.net/archives/2007/03/give-it-up/</guid>
		<description><![CDATA[La missione, se deciderete di accettarla, sarÃ  di trovare la playlist nel prossimo Amarok: &#60;div style=&#34;text-align:center&#34;&#62; &#60;a id=&#34;p1052&#34; rel=&#34;attachment&#34; class=&#34;imagelink&#34; href=&#34;http://www.emmanuelebassi.net/archives/2007/03/give-it-up/amarok-2png/&#34; title=&#34;amarok-2.png&#34;&#62;&#60;img id=&#34;image1052&#34; src=&#34;http://www.emmanuelebassi.net/wp-content/amarok-2.png&#34; alt=&#34;amarok-2.png&#34; /&#62;&#60;/a&#62; &#60;/div&#62; Se verrete catturati, uccisi oppure vi butterete dalla finestra dall&#8217;orrore, il dipartimento negherÃ  di essere a conoscenza della vostra missione. Poi, a che diavolo serve il menu &#60;em&#62;Engage&#60;/em&#62;? [...]]]></description>
			<content:encoded><![CDATA[<p>La missione, se deciderete di accettarla, sarÃ  di trovare la playlist nel prossimo Amarok:</p>
<p>&lt;div style=&quot;text-align:center&quot;&gt;<br />
&lt;a id=&quot;p1052&quot; rel=&quot;attachment&quot; class=&quot;imagelink&quot; href=&quot;http://www.emmanuelebassi.net/archives/2007/03/give-it-up/amarok-2png/&quot; title=&quot;amarok-2.png&quot;&gt;&lt;img id=&quot;image1052&quot; src=&quot;http://www.emmanuelebassi.net/wp-content/amarok-2.png&quot; alt=&quot;amarok-2.png&quot; /&gt;&lt;/a&gt;<br />
&lt;/div&gt;</p>
<p>Se verrete catturati, uccisi oppure vi butterete dalla finestra dall&#8217;orrore, il dipartimento negherÃ  di essere a conoscenza della vostra missione.</p>
<p>Poi, a che diavolo serve il menu &lt;em&gt;Engage&lt;/em&gt;? Cos&#8217;Ã¨, l&#8217;Enterprise?</p>
<p>Le motivazioni per utilizzare Amarok stanno scivolando sempre piÃ¹ verso il lombrosiano.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.emmanuelebassi.name/archives/2007/03/13/give-it-up/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Next Year</title>
		<link>http://www.emmanuelebassi.name/archives/2007/03/06/next-year/</link>
		<comments>http://www.emmanuelebassi.name/archives/2007/03/06/next-year/#comments</comments>
		<pubDate>Tue, 06 Mar 2007 10:35:02 +0000</pubDate>
		<dc:creator>ebassi</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[kde]]></category>

		<guid isPermaLink="false">http://www.emmanuelebassi.net/archives/2007/03/next-year/</guid>
		<description><![CDATA[&#60;em&#62;Attenzione: post ad elevato livello di sarcasmo&#60;/em&#62; Ã bello vedere gli amici di KDE pensare agli utenti, e &#60;a href=&#34;http://www.ossblog.it/post/2115/la-storia-di-kde-e-dolphin&#34;&#62;passare&#60;/a&#62; a Dolphin. Certo che, potendo scegliere, non sarebber convenuto loro usare un file manager che &#60;strong&#62;non&#60;/strong&#62; assomigliasse a Nautilus com&#8217;era cinque anni fa? Ad ogni modo, il cerchio si chiude e si ritorna al 1999: [...]]]></description>
			<content:encoded><![CDATA[<p>&lt;em&gt;Attenzione: post ad elevato livello di sarcasmo&lt;/em&gt;</p>
<p>Ã bello vedere gli amici di KDE pensare agli utenti, e &lt;a href=&quot;http://www.ossblog.it/post/2115/la-storia-di-kde-e-dolphin&quot;&gt;passare&lt;/a&gt; a Dolphin.  Certo che, potendo scegliere, non sarebber convenuto loro usare un file manager che &lt;strong&gt;non&lt;/strong&gt; assomigliasse a Nautilus com&#8217;era cinque anni fa?</p>
<p>Ad ogni modo, il cerchio si chiude e si ritorna al 1999: KDE torna ad essere l&#8217;ambiente per i &lt;em&gt;corporate user&lt;/em&gt;, transfughi di Windows, mentre GNOME torna ad essere il &lt;em&gt;desktop environment&lt;/em&gt; &lt;a href=&quot;http://pollycoke.wordpress.com/2007/03/06/tracker-delle-meraviglie-ecco-le-prossime-sciccherie/&quot;&gt;pieno di crack&lt;/a&gt;.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.emmanuelebassi.name/archives/2007/03/06/next-year/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Twist the Knife</title>
		<link>http://www.emmanuelebassi.name/archives/2007/02/14/twist-the-knife/</link>
		<comments>http://www.emmanuelebassi.name/archives/2007/02/14/twist-the-knife/#comments</comments>
		<pubDate>Wed, 14 Feb 2007 15:08:14 +0000</pubDate>
		<dc:creator>ebassi</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[stupidity]]></category>

		<guid isPermaLink="false">http://www.emmanuelebassi.net/archives/2007/02/twist-the-knife/</guid>
		<description><![CDATA[&#60;blockquote&#62; &#60;strong&#62;Panacea&#60;/strong&#62; &#60;em&#62;\Pan`a*ce&#34;a\&#60;/em&#62;, n. [L., fr. Gr. pana`keia fr. panakh`s all-healing; pa^s pa^n, all + 'akei^sqai to heal.] [1913 Webster] 1. A remedy for all diseases; a universal medicine; a cure-all; catholicon; hence, a relief or solace for affliction. [1913 Webster] 2. (Bot.) The herb allheal. [1913 Webster] 3. (Programming) &#60;a href=&#34;http://mail.gnome.org/archives/desktop-devel-list/2007-February/msg00202.html&#34;&#62;Tracker&#60;/a&#62;. [2007 Gnome] &#60;/blockquote&#62; [...]]]></description>
			<content:encoded><![CDATA[<p>&lt;blockquote&gt;<br />
&lt;strong&gt;Panacea&lt;/strong&gt;<br />
&lt;em&gt;\Pan`a*ce&quot;a\&lt;/em&gt;, n.<br />
   [L., fr. Gr. pana`keia fr. panakh`s all-healing; pa^s pa^n, all + 'akei^sqai to heal.] [1913 Webster]<br />
   1. A remedy for all diseases; a universal medicine; a cure-all; catholicon; hence, a relief or solace for affliction. [1913 Webster]<br />
   2. (Bot.) The herb allheal. [1913 Webster]<br />
   3. (Programming) &lt;a href=&quot;http://mail.gnome.org/archives/desktop-devel-list/2007-February/msg00202.html&quot;&gt;Tracker&lt;/a&gt;. [2007 Gnome]<br />
&lt;/blockquote&gt;</p>
<p>Okay, adesso si Ã¨ andati talmente oltre il ridicolo che non Ã¨ neppure piÃ¹ divertente.  Gli autori ci si sono messi per la loro parte, ma adesso i &lt;a href=&quot;http://mail.gnome.org/archives/desktop-devel-list/2007-February/msg00200.html&quot;&gt;droni&lt;/a&gt; stanno diventando davvero &lt;a href=&quot;http://mail.gnome.org/archives/desktop-devel-list/2007-February/msg00203.html&quot;&gt;fastidiosi&lt;/a&gt;.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.emmanuelebassi.name/archives/2007/02/14/twist-the-knife/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Overdrive/1</title>
		<link>http://www.emmanuelebassi.name/archives/2007/01/29/overdrive1/</link>
		<comments>http://www.emmanuelebassi.name/archives/2007/01/29/overdrive1/#comments</comments>
		<pubDate>Mon, 29 Jan 2007 17:43:08 +0000</pubDate>
		<dc:creator>ebassi</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[clutter]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://www.emmanuelebassi.net/archives/2007/01/overdrive1/</guid>
		<description><![CDATA[Un recap sui progetti a cui sto lavorando al momento. &#60;h4&#62;Clutter&#60;/h4&#62; Nei commenti al &#60;a href=&#34;http://www.emmanuelebassi.net/archives/2007/01/the-body-says-no/&#34;&#62;blog precendente&#60;/a&#62; mi si chiedeva di Clutter. Per chi non seguisse Planet GNOME (o per chi lo seguisse ma non avesse comunque la piÃ¹ pallida idea di cosa si tratti), &#60;a href=&#34;http://www.clutter-project.org&#34;&#62;Clutter&#60;/a&#62; Ã¨ un toolkit che ho contribuito a realizzare [...]]]></description>
			<content:encoded><![CDATA[<p>Un recap sui progetti a cui sto lavorando al momento.</p>
<p>&lt;h4&gt;Clutter&lt;/h4&gt;</p>
<p>Nei commenti al &lt;a href=&quot;http://www.emmanuelebassi.net/archives/2007/01/the-body-says-no/&quot;&gt;blog precendente&lt;/a&gt; mi si chiedeva di Clutter.  Per chi non seguisse Planet GNOME (o per chi lo seguisse ma non avesse comunque la piÃ¹ pallida idea di cosa si tratti), &lt;a href=&quot;http://www.clutter-project.org&quot;&gt;Clutter&lt;/a&gt; Ã¨ un toolkit che ho contribuito a realizzare piÃ¹ o meno da quando sono stato assunto alla OpenedHand (settimana piÃ¹, settimana meno).</p>
<p>Clutter Ã¨ un toolkit basato sulle stesse librerie usate per le GTK+ (GLib, GObject, Pango) ideato per scrivere applicazioni con un&#8217;interfaccia grafica mono-finestra &#8211; ad esempio: media box, personal video recorder, etc. &#8211; in ambienti (&lt;em&gt;embedded&lt;/em&gt; e non) dotati di grafica accelerata (tramite &lt;a href=&quot;http://en.wikipedia.org/wiki/OpenGL&quot;&gt;OpenGL&lt;/a&gt; oppure &lt;a href=&quot;http://en.wikipedia.org/wiki/OpenGL_ES&quot;&gt;OpenGL ES&lt;/a&gt;).  Clutter fornisce un &lt;em&gt;canvas&lt;/em&gt;, rappresentato dal &lt;em&gt;singleton&lt;/em&gt; &lt;code&gt;ClutterStage&lt;/code&gt;, e alcuni &lt;em&gt;widget&lt;/em&gt;, chiamati &lt;code&gt;ClutterActor&lt;/code&gt;.  I widget forniti sono (volutamente, al momento) pochi: non solo perchÃ© siamo alla release 0.2.0, ma soprattutto perchÃ© vogliamo vedere di cosa necessitano gli sviluppatori prima di implementare &lt;code&gt;ClutterActor&lt;/code&gt; nel modo sbagliato o del tutto inutili.</p>
<p>&lt;strong&gt;Hello, World&lt;/strong&gt; &#8211; Come funziona Clutter?  Ecco un semplice &lt;a href=&quot;http://devel.emmanuelebassi.net/software/hello-clutter.py&quot;&gt;&quot;hello, world&quot;&lt;/a&gt; che sfrutta buona parte delle nuove API.  Ã scritto in Python &#8211; avrei preferito scriverlo in Perl, ma conoscendo la quantitÃ  di pythonisti in &quot;ascolto&quot; ho scelto altrimenti; la versione in Perl Ã¨ disponibile a richiesta.  Se volete, potete scaricarla e farci quello che volete &#8211; Ã¨ nel &lt;em&gt;public domain&lt;/em&gt;, come dovrebbero essere tutti gli &quot;hello world&quot; di questo mondo.  Se cliccate dopo il link, smonto il codice in blocchi per spiegare come funziona.</p>
<p>&lt;!&#8211;more&#8211;&gt;</p>
<p>&lt;pre&gt;<br />
&lt;span style=&quot;color:purple&quot;&gt;import&lt;/span&gt; sys<br />
&lt;span style=&quot;color:purple&quot;&gt;import&lt;/span&gt; clutter<br />
&lt;/pre&gt;</p>
<p>Si parte importando i moduli, ovviamente.  Il modulo &lt;code&gt;clutter&lt;/code&gt; Ã¨ fornito da &lt;a href=&quot;http://www.clutter-project.org/sources/pyclutter/0.2/&quot;&gt;pyclutter&lt;/a&gt; e supporta tutta la &lt;em&gt;core library&lt;/em&gt;; non appena riuscirÃ² ad avere un po&#8217; di tempo, e a domare le interazioni tra Python, GObject e GStreamer, pyclutter fornirÃ  anche i binding per le estensioni multimediali disponibili (al momento) in C.</p>
<p>&lt;pre&gt;<br />
&lt;span style=&quot;color:orange&quot;&gt;class&lt;/span&gt; &lt;span style=&quot;color:blue&quot;&gt;HelloClutter&lt;/span&gt;:<br />
    &lt;span style=&quot;color:orange&quot;&gt;def&lt;/span&gt; &lt;span style=&quot;color:blue&quot;&gt;__init__&lt;/span&gt; (self, message):<br />
        self.stage = clutter.stage_get_default()<br />
        self.stage.set_color(clutter.color_parse(&lt;span style=&quot;color:red&quot;&gt;&#8217;DarkSlateGrey&#8217;&lt;/span&gt;))<br />
        self.stage.set_size(800, 600)<br />
        self.stage.connect(&lt;span style=&quot;color:red&quot;&gt;&#8217;key-press-event&#8217;&lt;/span&gt;, clutter.main_quit)<br />
        self.stage.connect(&lt;span style=&quot;color:red&quot;&gt;&#8217;button-press-event&#8217;&lt;/span&gt;,<br />
                           self.on_button_press_event)<br />
&lt;/pre&gt;</p>
<p>Semplice classe per la nostra applicazione; inizializziamo tutto quando e cominciamo a creare lo &lt;em&gt;stage&lt;/em&gt; principale su cui aggiungeremo i vari attori.  Diamo una mano di &quot;DarkSlateGrey&quot; al palco, lo allarghiamo a 800 pixel per 600 e colleghiamo i due eventi che ci interessano: pressione di un tasto (a cui associamo l&#8217;uscita dal programma) e pressione di un pulsante del mouse (a cui associamo il metodo &lt;code&gt;on_button_press_event&lt;/code&gt;).</p>
<p>&lt;pre&gt;<br />
        color = clutter.Color(0xff, 0xcc, 0xcc, 0xdd)<br />
&lt;/pre&gt;</p>
<p>Creiamo un colore, dandogli i valori dei quattro canali (rosso, verde, blu e alpha per l&#8217;opacitÃ ).  Questo Ã¨ uno dei vari modi che Clutter mette a disposizione per creare un colore.  In alternativa, si puÃ² usare una stringa di testo (come sopra) che, perÃ², non cambierÃ  il valore dell&#8217;opacitÃ  di default; si puÃ² usare un intero senza segno da 32 bit (packed) come &lt;code&gt;0xffccccdd&lt;/code&gt;; si puÃ² usare una conversione di &lt;em&gt;colorspace&lt;/em&gt; da &lt;acronym title=&quot;Hue Luminance Saturation&quot;&gt;HLS&lt;/acronym&gt; a &lt;acronym title=&quot;Red, Green, Blue&quot;&gt;RGB&lt;/acronym&gt;.</p>
<p>&lt;pre&gt;<br />
        self.label = clutter.Label()<br />
        self.label.set_font_name(&lt;span style=&quot;color:red&quot;&gt;&#8217;Mono 32&#8242;&lt;/span&gt;)<br />
        self.label.set_text(message)<br />
        self.label.set_color(color)<br />
        (label_width, label_height) = self.label.get_size()<br />
        label_x = self.stage.get_width() &#8211; label_width &#8211; 50<br />
        label_y = self.stage.get_height() &#8211; label_height<br />
        self.label.set_position(label_x, label_y)<br />
        self.stage.add(self.label)<br />
&lt;/pre&gt;</p>
<p>Dopo il palco, creiamo il primo attore: una semplice etichetta di testo.  Decidiamo il font e il contenuto e posizioniamo l&#8217;attore a cinquanta pixel dall&#8217;estremo in basso a destra dello &lt;em&gt;stage&lt;/em&gt;.  Le dimensioni dell&#8217;etichetta vengono ricalcolate quando impostiamo il font e il testo, cosÃ¬ da garantirci sempre dei valori aggiornati.  Usando Pango, abbiamo gratis il supporto per l&#8217;internazionalizzazione delle stringhe, dei glifi, dei paragrafi, dell&#8217;ellissi dei testi, degli spazi e delle legature.</p>
<p>&lt;pre&gt;<br />
        self.cursor = clutter.Rectangle()<br />
        self.cursor.set_color(color)<br />
        self.cursor.set_size(20, label_height)<br />
        cursor_x = self.stage.get_width() &#8211; 50<br />
        cursor_y = self.stage.get_height() &#8211; label_height<br />
        self.cursor.set_position(cursor_x, cursor_y)<br />
        self.stage.add(self.cursor)<br />
&lt;/pre&gt;</p>
<p>Altro attore: il &quot;cursore&quot; alto quanto l&#8217;etichetta di testo, largo venti pixel e posto nell&#8217;estremo in basso a destra del nostro &lt;em&gt;stage&lt;/em&gt;.  Ora non ci resta che animarlo, facendolo lampeggiare.</p>
<p>&lt;pre&gt;<br />
        self.timeline = clutter.Timeline(30, 25)<br />
        self.timeline.set_loop(True)<br />
        alpha = clutter.Alpha(self.timeline, clutter.ramp_func)<br />
        self.behaviour = clutter.BehaviourOpacity(alpha, 0xdd, 0)<br />
        self.behaviour.apply(self.cursor)<br />
&lt;/pre&gt;</p>
<p>Per le animazioni ricorro ai &quot;behaviour&quot;, i comportamenti che accennavo all&#8217;inizio del post.  Per prima cosa, creo una timeline, ovvero una linea che dia il computo del tempo; la voglio di trenta frame, con 25 frame al secondo, e la voglio in &lt;em&gt;loop&lt;/em&gt;.</p>
<p>Come seconda cosa, creo un &lt;em&gt;alpha&lt;/em&gt;.  Un &lt;code&gt;ClutterAlpha&lt;/code&gt; Ã¨ un oggetto che lega una timeline a una funzione; ad ogni &quot;tic&quot; della timeline, invoca la funzione e ottiene un intero senza segno che Ã¨ dipendente solo dal tempo.  In pratica, ingegneristicamente parlando, Ã¨ un generatore di &lt;a href=&quot;http://en.wikipedia.org/wiki/Waveform&quot;&gt;forme d&#8217;onda&lt;/a&gt; (mi rendo conto solo ora, cercandolo, che Wikipedia italiana non ha una pagina sui generatori di forme d&#8217;onda; gli ingeneri sono peggio degli idraulici: quando servono non ci sono mai).</p>
<p>Infine, creo un &lt;em&gt;behaviour&lt;/em&gt;, ovvero un oggetto che controlla una o piÃ¹ proprietÃ  di un set di attori usando l&#8217;oggetto alpha; in questo caso, un &lt;code&gt;ClutterBehaviourOpacity&lt;/code&gt; che controlla l&#8217;opacitÃ  degli attori.</p>
<p>&lt;pre&gt;<br />
    &lt;span style=&quot;color:orange&quot;&gt;def&lt;/span&gt; &lt;span style=&quot;color:blue&quot;&gt;on_button_press_event&lt;/span&gt; (self, stage, event):<br />
        print &lt;span style=&quot;color:red&quot;&gt;&quot;mouse button %d pressed at (%d, %d)&quot;&lt;/span&gt; % &lt;span style=&quot;color:purple&quot;&gt;\\&lt;/span&gt;<br />
              (event.button, event.x, event.y)<br />
&lt;/pre&gt;</p>
<p>Questo Ã¨ il callback del nostro evento, giusto per mostrare come ottenere i vari dettagli dall&#8217;oggetto &lt;code&gt;event&lt;/code&gt;.</p>
<p>&lt;pre&gt;<br />
    &lt;span style=&quot;color:orange&quot;&gt;def&lt;/span&gt; &lt;span style=&quot;color:blue&quot;&gt;run&lt;/span&gt; (self):<br />
        self.stage.show_all()<br />
        self.timeline.start()<br />
        clutter.main()<br />
&lt;/pre&gt;</p>
<p>Il metodo &lt;code&gt;run&lt;/code&gt; serve a:</p>
<p>&lt;ul&gt;<br />
  &lt;li&gt;mostrare tutti gli attori sullo &lt;em&gt;stage&lt;/em&gt;;&lt;/li&gt;<br />
  &lt;li&gt;avviare la timeline;&lt;/li&gt;<br />
  &lt;li&gt;avviare il main loop;&lt;/li&gt;<br />
&lt;/ul&gt;</p>
<p>In questo senso, Clutter funziona esattamente come le GTK+: il main loop gira ed esegue il dispatch degli eventi da X all&#8217;applicazione.</p>
<p>&lt;pre&gt;<br />
&lt;span style=&quot;color:orange&quot;&gt;def&lt;/span&gt; &lt;span style=&quot;color:blue&quot;&gt;main&lt;/span&gt; (args):<br />
    &lt;span style=&quot;color:orange&quot;&gt;if&lt;/span&gt; args:<br />
        message = args[0]<br />
    &lt;span style=&quot;color:orange&quot;&gt;else&lt;/span&gt;:<br />
        message = &lt;span style=&quot;color:red&quot;&gt;&#8217;Hello, Clutter!&#8217;&lt;/span&gt;</p>
<p>    app = HelloClutter(message)<br />
    app.run()<br />
    return 0</p>
<p>&lt;span style=&quot;color:orange&quot;&gt;if&lt;/span&gt; __name__ == &lt;span style=&quot;color:red&quot;&gt;&#8217;__main__&#8217;&lt;/span&gt;:<br />
    sys.exit(main(sys.argv[1:]))<br />
&lt;/pre&gt;</p>
<p>Qui c&#8217;Ã¨ la solita ferramenta necessaria per i programmi Python.  Per avviare, basta eseguire:</p>
<p>&lt;pre&gt;<br />
$ python hello-clutter.py &quot;Ciao, mondo&quot;<br />
&lt;/pre&gt;</p>
<p>&lt;strong&gt;Where do we go from here?&lt;/strong&gt; &#8211; La versione 0.1 di Clutter, rilasciata l&#8217;anno passato, ha gettato le fondamenta per gli attori di base, ed Ã¨ stata sufficiente per realizzare &lt;acronym title=&quot;OpenedHand Presentation Tool&quot;&gt;OPT&lt;/acronym&gt;, un programma di presentazione usato da Ross Burton, da Jeff Waugh e dal sottoscritto al GUADEC di Vilanova.  Per la version 0.2 abbiamo migliorato l&#8217;API, creato un renderer GL per Pango (riducendo l&#8217;utilizzo della memoria e aumentando la velocitÃ  e il supporto per l&#8217;internazionalizzazione) e aggiunto il supporto per i &quot;comportamenti&quot; (&lt;code&gt;ClutterBehaviour&lt;/code&gt;) degli attori &#8211; ovvero un modo per animare i widget sul canvas.  Purtroppo, a parte &lt;a href=&quot;http://svn.o-hand.com/view/clutter/trunk/toys/opt/&quot;&gt;OPT&lt;/a&gt; non abbiamo notizia (al momento) di applicazioni che usino Clutter.  Per questo ci farebbe piacere l&#8217;input della comunitÃ , anche per sapere quali sono non solo i bug, ma anche le feature e le richieste che gli sviluppatori di applicazioni hanno; se voleste delle modifiche alle API per realizzare il prossimo rivale di MythTV (la cui interfaccia, diciamocela tutta, va bene a duemila &lt;em&gt;geek&lt;/em&gt;, ma se la vedono gli utenti che hanno difficoltÃ  a cambiare l&#8217;ora del videoregistratore abbiamo diecimila utenti che si buttano dalla finestra dall&#8217;orrore), oppure se avete dei bug da segnalare, basta aprire un ticket su &lt;a href=&quot;http://bugzilla.o-hand.com/enter_bug.cgi?product=Clutter&quot;&gt;Bugzilla&lt;/a&gt;.</p>
<p>&lt;em style=&quot;font-size:80%&quot;&gt;continua&#8230;&lt;/em&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.emmanuelebassi.name/archives/2007/01/29/overdrive1/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
	</channel>
</rss>
