<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/1.5.1-alpha" -->
<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/"
>

<channel>
	<title>PDI^2</title>
	<link>http://riffraff.blogsome.com</link>
	<description>Propulsione d'Improbabilità Infinita</description>
	<pubDate>Sun, 08 Jun 2008 23:00:17 +0000</pubDate>
	<generator>http://wordpress.org/?v=1.5.1-alpha</generator>
	<language>en</language>

		<item>
		<title>motivi per cui pugs è -Ofun</title>
		<link>http://riffraff.blogsome.com/2007/05/04/motivi-per-cui-pugs-e-ofun/</link>
		<comments>http://riffraff.blogsome.com/2007/05/04/motivi-per-cui-pugs-e-ofun/#comments</comments>
		<pubDate>Fri, 04 May 2007 10:14:41 +0000</pubDate>
		<dc:creator>gabriele</dc:creator>
		
	<category>perl6</category>
	<category>pugs</category>
		<guid>http://riffraff.blogsome.com/2007/05/04/motivi-per-cui-pugs-e-ofun/</guid>
		<description><![CDATA[	Perché tu vai su #perl6 e dici &#8220;ma subst non è implementata? Va bene se ne metto una versione scema in Prelude.pm?&#8221; e larry wall ti risponde &#8220;si va bene&#8221; (log). 
	Dopo di che passi ad implementarla, usando una quantità di tempo incredibilmente superiore alle aspettative, navigando in haskell, pseudo haskell, meta haskell, perl5 e [...]]]></description>
			<content:encoded><![CDATA[	<p>Perché tu vai su <a href="irc://irc.freenode.net/perl6">#perl6</a> e dici &#8220;<em>ma subst non è implementata? Va bene se ne metto una versione scema in Prelude.pm?</em>&#8221; e larry wall ti risponde &#8220;<em>si va bene</em>&#8221; (<a href="http://moritz.faui2k3.org/irclog/out.pl?channel=perl6;date=2007-05-02#id_l472">log</a>). </p>
	<p>Dopo di che passi ad implementarla, usando una quantità di tempo incredibilmente superiore alle aspettative, navigando in haskell, pseudo haskell, meta haskell, perl5 e perl6, sotto la guida di gaal, moritz &#038; fglock. Ed avendo cura di infilarci una discussione su italiano, ebraico e ungherese, tanto per soddisfare il linguista che è in te. </p>
	<p>E finisci per definire un pezzettino delle specifiche di perl6, in modo che assomigli di più a ruby (<a href="http://moritz.faui2k3.org/irclog/out.pl?channel=perl6;date=2007-05-03#id_l343">log</a>) <img src='http://riffraff.blogsome.com/wp-images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
	<p><strong>UPDATE:</strong></p>
	<p>ripensandoci, forse è simpatico se vi faccio vedere il codice di subst <img src='http://riffraff.blogsome.com/wp-images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
	<pre>
<font color=\"#a52a2a\"> 1 </font>    method subst(<font color=\"#008b8b\">$rule</font>, <font color=\"#008b8b\">$replacement</font>) is primitive is safe {
	
<font color=\"#a52a2a\"> 2 </font>        <font color=\"#a52a2a\"><b>my</b></font> (<font color=\"#008b8b\">$rgx</font>,<font color=\"#008b8b\">$adv</font>,<font color=\"#008b8b\">$dup</font> = self);
<font color=\"#a52a2a\"> 3 </font>
<font color=\"#a52a2a\"> 4 </font>        <font color=\"#a52a2a\"><b>if</b></font> <font color=\"#008b8b\">$rule</font>.isa(Str) {
	
<font color=\"#a52a2a\"> 5 </font>          <font color=\"#008b8b\">$rgx</font> =  <font color=\"#ff00ff\">&quot;</font><font color=\"#ff00ff\">&lt;&#8217;</font><font color=\"#008b8b\">$rule</font><font color=\"#ff00ff\">&#8216;&gt;</font><font color=\"#ff00ff\">&quot;</font>;
<font color=\"#a52a2a\"> 6 </font>        }
<font color=\"#a52a2a\"> 7 </font>        <font color=\"#a52a2a\"><b>else</b></font> {
	
<font color=\"#a52a2a\"> 8 </font>          <font color=\"#008b8b\">$rgx</font> = Pugs::Internals::rule_pattern(<font color=\"#008b8b\">$rule</font>);
<font color=\"#a52a2a\"> 9 </font>          <font color=\"#008b8b\">$adv</font> = Pugs::Internals::rule_adverbs(<font color=\"#008b8b\">$rule</font>);
<font color=\"#a52a2a\">10 </font>        }
	
<font color=\"#a52a2a\">11 </font>
<font color=\"#a52a2a\">12 </font>        <font color=\"#a52a2a\"><b>my</b></font> <font color=\"#008b8b\">$advstr</font> = <font color=\"#008b8b\">$adv</font>.<font color=\"#a52a2a\"><b>map</b></font>: { <font color=\"#ff00ff\">&quot;</font><font color=\"#ff00ff\">:</font><font color=\"#008b8b\">$_[</font><font color=\"#ff00ff\">0</font><font color=\"#008b8b\">]</font><font color=\"#ff00ff\">&quot;</font>~<font color=\"#ff00ff\">&quot;</font><font color=\"#ff00ff\">(</font><font color=\"#008b8b\">$_[</font><font color=\"#ff00ff\">1</font><font color=\"#008b8b\">]</font><font color=\"#ff00ff\">)</font><font color=\"#ff00ff\">&quot;</font>}.<font color=\"#a52a2a\"><b>join</b></font> <font color=\"#a52a2a\"><b>if</b></font> <font color=\"#008b8b\">$adv</font>;
	
<font color=\"#a52a2a\">13 </font>        <font color=\"#a52a2a\"><b>my</b></font> <font color=\"#008b8b\">$apply</font> = <font color=\"#ff00ff\">&#8216;</font><font color=\"#ff00ff\">()</font><font color=\"#ff00ff\">&#8216;</font> <font color=\"#a52a2a\"><b>if</b></font> <font color=\"#008b8b\">$replacement</font> ~~ Code;
<font color=\"#a52a2a\">14 </font>        <font color=\"#a52a2a\"><b>my</b></font> <font color=\"#008b8b\">$op</font>=<font color=\"#ff00ff\">&quot;</font><font color=\"#ff00ff\">s</font><font color=\"#008b8b\">$advstr</font><font color=\"#ff00ff\">/</font><font color=\"#008b8b\">$rgx</font><font color=\"#ff00ff\">/</font><font color=\"#6a5acd\">\$</font><font color=\"#ff00ff\">replacement</font><font color=\"#008b8b\">$apply</font><font color=\"#ff00ff\">/</font><font color=\"#ff00ff\">&quot;</font>;
	
<font color=\"#a52a2a\">15 </font>
<font color=\"#a52a2a\">16 </font>        <font color=\"#a52a2a\"><b>eval</b></font>(<font color=\"#ff00ff\">&#8216;</font><font color=\"#ff00ff\">$dup ~~ </font><font color=\"#ff00ff\">&#8216;</font>~<font color=\"#008b8b\">$op</font>);
<font color=\"#a52a2a\">17 </font>        <font color=\"#008b8b\">$dup</font>
<font color=\"#a52a2a\">18 </font>    }
	</pre>
	<p>le dichiarazioni &#8220;<tt>is primitive is safe</tt>&#8221; sono per pugs, e sono una delle cose che mi poiace in perl6. Concettualmente si possono attaccare un sacco di metadati a una funzione, in questo caso ci limitiamo a dire che è una funzione di basso livello e che può essere usata all&#8217;interno di <tt>eval()</tt>, quindi ad esempio attraverso <a href="http://run.pugscode.org">run.pugscode.org</a> o lambdabot. </p>
	<p>I puristi della OO e dei linguaggi dinamici dovrebbero arrabbiarsi per quei blocchi condizionali che fanno un check sul tipo, ma purtroppo è l&#8217;unica soluzione a cui sono arrivato. </p>
	<p>Ora: in perl6 è possibile usare una espressione regolare all&#8217;interno di un&#8217;altra in questo modo: <tt>/< $regex>/</tt> ma questo non è implementato in pugs, motivo per cui devo ricostruire la cosa a colpi di string interpolation &#038; eval. </p>
	<p>Altra cosa curiosa è che in pugs non si può risalire facilmente ad una rappresentazione di una regex per cui valga <tt>eval($regex.qualcosa())==$regex</tt>. In ruby ad esempio, <tt>Regexp#to_s</tt> restituisce una rappresentazione eval&#8217;abile, perché le Regexp sono essenzialmente solo delle stringhe. </p>
	<p>In Perl6 invece una Rule (non le chiamiamo più regex perché sono molto di più) è più simile ad un programma che a una stringa, con tanto di regole di scope, argomenti, ereditarietà etc.</p>
	<p>IMHO questo non significa che non si possa avere una rappresentazione in forma di stringa, ma per ora dalla regia dicono di no. </p>
	<p>Questo per quanto riguarda il secondo ramo dell&#8217;<tt>if</tt>. </p>
	<p>Il primo ramo sfrutta invece un&#8217;altra nuova caratteristica di Perl6, ovvero una sintassi speciale per effettuare il match di una stringa letterale, per cui<br />
<tt> &#8220;hello&#8221; </tt> matcha <tt>/he..o/</tt>, matcha <tt>/< 'hello'>/</tt> ma non matcha <tt>/< 'he..o'>/. </p>
	<p>Ovviamente anche questo lo impacchettiamo nell&#8217;eval. </p>
	<p>Infine facciamo la porcata di aggiungere un </tt><tt>&#8220;()&#8221;</tt> per forzare l&#8217;applicazione di <tt>$replacement</tt> in caso questo sia un blocco di codice invece che una string. </p>
	<p>Confusionario, lo so, ma pensate che quando l&#8217;interpolazione di una rule in un&#8217;altra sarà possibile tutto si ridurrà a una riga <img src='http://riffraff.blogsome.com/wp-images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
	<p>Per concludere, <a href="http://svn.pugscode.org/pugs/t/builtins/strings/subst.t">il testcase</a></p>
]]></content:encoded>
			<wfw:commentRss>http://riffraff.blogsome.com/2007/05/04/motivi-per-cui-pugs-e-ofun/feed/</wfw:commentRss>
	</item>
		<item>
		<title>Perle Perl6 n° 2</title>
		<link>http://riffraff.blogsome.com/2007/03/19/p344/</link>
		<comments>http://riffraff.blogsome.com/2007/03/19/p344/#comments</comments>
		<pubDate>Mon, 19 Mar 2007 12:17:51 +0000</pubDate>
		<dc:creator>gabriele</dc:creator>
		
	<category>perl6</category>
	<category>pugs</category>
	<category>lettura</category>
		<guid>http://riffraff.blogsome.com/2007/03/19/p344/</guid>
		<description><![CDATA[	Forse cose come questa sono un errore di percorso:
	
# warning: codice inutile e volutamente oscurato, benché valido
=&lt;&gt;!====&lt;&gt;====&lt;&gt;

	ciò perché in perl6 si può usare =&lt;&gt; per leggere una riga, in modo analogo a &lt;&gt; in perl5, credo. 
	Ed esiste un simpatico operatore === che rappresenta l&#8217;uguaglianza con semantica eterna, che è un modo perverso per dire [...]]]></description>
			<content:encoded><![CDATA[	<p>Forse cose come questa sono un errore di percorso:</p>
	<pre>
# warning: codice inutile e volutamente oscurato, benché valido
=&lt;&gt;!====&lt;&gt;====&lt;&gt;
</pre>
	<p>ciò perché in perl6 si può usare <tt>=&lt;&gt;</tt> per leggere una riga, in modo analogo a <tt>&lt;&gt;</tt> in perl5, credo. </p>
	<p>Ed esiste un simpatico operatore <tt>===</tt> che rappresenta l&#8217;uguaglianza con <em>semantica eterna</em>, che è un modo perverso per dire che confronta l&#8217;identità degli oggetti invece che la loro rappresentazione (i.e. <tt>&#8220;ciao&#8221;</tt> e <tt>&#8220;ciao&#8221;</tt> possono essere oggetti diversi ma <tt>$s</tt> e <tt>$s</tt> sono lo stesso). </p>
	<p>Infine, è possibile concatenare gli operatori di comparazione, in modo da avere, come in python: <tt>a &lt; b &gt; c</tt>.</p>
	<p>Nell&#8217;angolo di <em>pugs culture</em> voglio invece perlarvi del file <a href="http://svn.openfoundry.org/pugs/READTHEM">READTHEM</a> che si trova nel trunk svn, in pratica un file di consigli per la lettura, sia informatici, come <em>Advanced Topics in Types and Programming Languages</em>  che non.</p>
	<p>Esempio: Il Silmarillion, che ha delle strane connessioni con pugs, come dimostrano <a href="http://svn.openfoundry.org/pugs/src/Pugs/Val.hs">header </a>in giro per i sorgenti, o strane parafrasi di <a href="http://feather.perl6.nl/~audreyt/osdc/mariner.xul">Eärendil  il marinaio</a>
</p>
]]></content:encoded>
			<wfw:commentRss>http://riffraff.blogsome.com/2007/03/19/p344/feed/</wfw:commentRss>
	</item>
		<item>
		<title>Groovy 1.0, D 1.0, Perl 6,  Java 7 e Ruby 1.8</title>
		<link>http://riffraff.blogsome.com/2007/01/04/groovy-10-d-10-perl-6-java-7-e-ruby-18/</link>
		<comments>http://riffraff.blogsome.com/2007/01/04/groovy-10-d-10-perl-6-java-7-e-ruby-18/#comments</comments>
		<pubDate>Thu, 04 Jan 2007 08:56:32 +0000</pubDate>
		<dc:creator>gabriele</dc:creator>
		
	<category>java</category>
	<category>perl6</category>
	<category>pugs</category>
		<guid>http://riffraff.blogsome.com/2007/01/04/groovy-10-d-10-perl-6-java-7-e-ruby-18/</guid>
		<description><![CDATA[	Pare che questa sia stata una settimana intensa sul fronte dei linguaggi di programmazione, ed è una cosa buona. 
	In particolare è una cosa buona per me, visto che oggi ho tempo di scrivere questo post mentre domani me ne torno nella terra degli unni, il che significherà un probabile /away di un mese dal [...]]]></description>
			<content:encoded><![CDATA[	<p>Pare che questa sia stata una settimana intensa sul fronte dei linguaggi di programmazione, ed è una cosa buona. </p>
	<p>In particolare è una cosa buona per me, visto che oggi ho tempo di scrivere questo post mentre domani me ne torno nella terra degli unni, il che significherà un probabile <tt>/away</tt> di un mese dal mondo tecnologico. Siccome voglio chiudere in bellezza vi lascio qualcosa di corposo da leggere.</p>
	<p><strong>Pugs &#038; teoria dei numeri</strong><br />
Ma dicevo, settimana intensa sul fronte programmatorio. Anzitutto l&#8217;Autore è diventato committer di <a href="http://svn.pugscode.org/">pugs</a>, dimostrando che effettivamente il commit bit viene dato via con estrema facilità.<br />
In particolare il suo ultimo contributo è stato il problema numero 32, implementare l&#8217;algoritmo di euclide per il minimo comune multiplo:<br />
<code></p>
	<pre>
# Perl6 impone l'ottimizzazione delle tail call, per cui
# non abbiamo bisogno di scrivere la routine in forma iterativa.
# Ale' !
	
multi sub gcd(Int $a, Int $b){
    return $a if $b == 0;
    return gcd($b,$a % $b);
}
	
is gcd(36,63), 9, \"We should be able to find the gcd of 36 and 63\";
is gcd(63,36), 9, \".. and viceversa\";
is gcd(0,5)  , 5, '.. and that gcd(0,$x) is $x';
is gcd(0,0)  , 0, '.. even when $x is 0';
</pre>
	<p></code><br />
Notate la finezza per cui gcd è definito come un multimetodo, perché in teoria è possibile definire la funzione in qualsiasi <a href="http://it.wikipedia.org/wiki/Anello_commutativo">anello commutativo</a>, non solo per gli interi. </p>
	<p>Ovviamente io so che esiste una cosa chiamata <em>anello commutativo</em>, ma non mi ricordo cosa sia veramente e questa nota è un semplice plagio da wikipedia. </p>
	<p>Il che tra l&#8217;altro mi da l&#8217;occasione di far notare che <em>la definizione di numero primo su en.wikipedia è sbagliata</em>.<br />
Uno (1) non è un numero primo, per definizione un numero primo è un numero positivo divisibile solo per se stesso e per 1 ma diverso da uno (o -1).<br />
Questo perché, se usiamo questa definizione poi ci viene fuori il fantastico teorema fondamentale dell&#8217;aritmetica che è:</p>
	<blockquote><p>
Ogni numero naturale diverso da 1 o è un numero primo o si può esprimere come prodotto di numeri primi. Tale rappresentazione è unica a meno dell&#8217;ordine in cui compaiono i fattori.
</p></blockquote>
	<p>Il motivo di questo delirio era ovviamente <a href="http://en.wikipedia.org/wiki/Prime_number">la soluzione del problema 31</a>.</p>
	<p>Tornando a Perl6, forse l&#8217;Autore potrà raccontare ai suoi nipotini che se una subroutine dichiarata come <tt>Bool</tt> converte automaticamente un valore di ritorno <tt>undef</tt> in <tt>False</tt> è merito suo. Larry sembrava ponderoso sull&#8217;argomento, ma ci sono speranze. </p>
	<p><strong>Groovy 1.0</strong><br />
E a proposito di linguaggi con dichiarazioni di tipo opzionali, <a href="http://groovy.codehaus.org/">Groovy</a> ha finalmente raggiunto la versione 1.0.<br />
Per parte mia, ritengo che Groovy sia un linguaggino carino, mi piace un sacco che abbiano la variabile implicita <tt>&#8220;it&#8221;</tt> nei blocchi, ad esempio, che permette di scrivere</p>
	<pre>
[1,2,3].each { print it}
</pre>
	<p>Ma in fondo è solo un poco interessante dialetto di ruby per la JVM.<br />
Il Lettore arguto potrebbe obiettare che ruby è solo un poco interessante dialetto del lisp o di smalltalk per unix, ma ho fiducia che i Lettori arguti non siano dei rompipalle. </p>
	<p><strong>D 1.0</strong><br />
Più interessante è invece il linguaggio D, che<a href="http://developers.slashdot.org/developers/07/01/01/2041256.shtml"> raggiunge la 1.0 </a>, e mi han fatto notare che adesso c&#8217;è anche un pacchetto debian di <acronym title="Gnu D compiler">gdc</acronym>.  </p>
	<p>L&#8217;Autore invita a notare che gdc è un anagramma di gcd, e questo ovviamente non è un caso.</p>
	<p>IMHO D è un&#8217;ottimo esempio di linguaggio di sistema moderno. Design By Contract, libreria ricca (regexp, socket, thread), strutture dati come array dinamici ed hash integrate, OOP fatta in modo sensato, supporto unicode etc..</p>
	<p>Ma perché D prenda piede ha bisogno di un progettone open source che lo traini (server ftp/http/whatever, nuova implementazione di X11, linguaggio usato per nuke&#8217;em forever&#8230;) , e questo non verrà fuori a brevissimo tempo, temo.<br />
Python e Ruby ci hanno messo una decina d&#8217;anni a sfondare.<br />
E nel frattempo la concorrenza non se ne sta ferma, con il nuovo C++ in arrivo, il nuovo C# e i futuri Java, quindi imo il futuro di D non è particolarmente brillante.<br />
Ma speriamo che mi sbagli. </p>
	<p><strong>Java 7</strong><br />
Guardiamoci in faccia, la comunità Java si è data una svegliata, hanno corretto, o provato a correggere, il linguaggio dove aveva delle falle troppo grosse (generic, autoboxing etc), hanno esteso la libreria dove ce n&#8217;era bisogno (<tt>java.util.concurrent</tt> etc), hanno cercato di abbracciare le richieste della comunità (JVM open source, invokedynamic).<br />
E in java 7 ci saranno anche le closure, cosa <a href="http://riffraff.blogsome.com/2006/08/19/java-7-dolphin-avra-le-closure/">che già sapeva </a>, ma quello che non sapevo è il modo con cui esse si integreranno con le api precedenti. </p>
	<p>In pratica, la closure viene utilizzata per costruire un&#8217;oggetto anonimo che viene poi infilato dentro l&#8217;interfaccia che già esisteva per i metodi. Ok, non si è capito, intendo dire che ad esempio una funzione <tt>startComputation(Runnable r)</tt> può essere richiamata con una closure come argomento, che verrà poi convertita automaticamente nel metodo <tt>run</tt> di un oggetto <tt>Runnable</tt> creato al volo.<br />
Ovviamente, affinché il compilatore sia in grado di gestire correttamente la cosa è necessario che riesca a capire in che metodo mettere il blocco, quindi perché la cosa funzioni l&#8217;interfaccia deve fornire un solo metodo, come fa <tt>Runnable</tt> con <tt>run</tt>. </p>
	<p>Per il resto è bello vedere come queste closure siano <em>identiche</em> ai blocchi in ruby, ad esempio non vengono segnalate nell&#8217;eccezioni come funzioni aggiuntive, il <tt>return</tt> da una closure esce dal blocco esterno ad essa invece che dalla closure, se si mettono come argomenti speciali si può usare una sintassi più carina etc..<br />
Vabè, ma è inutile che ve ne parli io, andatevi a leggere l&#8217;<a href="http://www.artima.com/lejava/articles/neal_gafter_closures.html">intervista a neal gafter</a></p>
	<p><strong>Conclusione</strong><br />
Siamo al 4 gennaio, e già c&#8217;è un sacco di roba a cui pensare.<br />
In più <a href="http://www.neropercaso.it">lawrence</a> ha scelto erlang  come <acronym title="language of the year">LoTY</acronym>, il che suggerisce che si potrebbe seguirlo.<br />
E poi mi sono impegnato a rendermi utile con sette gruppi di persone differenti.<br />
Ed avrei due o tre progettini da portare avanti.<br />
E devo prendere una cavolo di laurea (&#8221;oh no, di nuovo!&#8221; [cit]) .</p>
	<p>Ma se ne parla da febbraio,  da febbraio.
</p>
]]></content:encoded>
			<wfw:commentRss>http://riffraff.blogsome.com/2007/01/04/groovy-10-d-10-perl-6-java-7-e-ruby-18/feed/</wfw:commentRss>
	</item>
		<item>
		<title>Post Archivio n. 7</title>
		<link>http://riffraff.blogsome.com/2006/03/21/post-archivio-n-7/</link>
		<comments>http://riffraff.blogsome.com/2006/03/21/post-archivio-n-7/#comments</comments>
		<pubDate>Tue, 21 Mar 2006 08:54:31 +0000</pubDate>
		<dc:creator>gabriele</dc:creator>
		
	<category>ruby</category>
	<category>personale</category>
	<category>blogosfera</category>
	<category>pugs</category>
		<guid>http://riffraff.blogsome.com/2006/03/21/post-archivio-n-7/</guid>
		<description><![CDATA[	è tardi! è tardi! ripeteva il nabaztag. 
	
Salvatore Cariello si accorge che gli internauti stanno virando salla semplice ricerca di keyword (&#8221;gnocca&#8221;) ad una più articolata (&#8221;dove trovo una gran gnocca&#8221;). Sono stato un pioniere, già nel 2003 usavo google per dimostrare agli amici che 1 non è un numero primo.
	 blog italirubyci in aumento, [...]]]></description>
			<content:encoded><![CDATA[	<p>è tardi! è tardi! ripeteva il <a href="http://www.nabaztag.com/">nabaztag</a>. </p>
	<ul>
<li><a href="http://www.seotalk.it/2006/03/cosa-cercano-gli-utenti.html">Salvatore Cariello si accorge </a>che gli internauti stanno virando salla semplice ricerca di keyword (&#8221;gnocca&#8221;) ad una più articolata (&#8221;dove trovo una gran gnocca&#8221;). Sono stato un pioniere, già nel 2003 usavo google per dimostrare agli amici che <a href="http://www.google.it/search?hs=4pb&#038;hl=it&#038;client=firefox-a&#038;rls=org.mozilla%3Ait%3Aofficial&#038;q=%22perch%C3%A9+1+non+%C3%A8+primo%22&#038;btnG=Cerca&#038;meta=">1 non è un numero primo</a>.</li>
	<li> blog italirubyci in aumento, volevo fare un link dump ma mi sono perso l&#8217;opml.. comincio a pensare che ci voglia un&#8217;aggregatore, se qualcuno lo scrive (nah, planet no).</li>
	<li>in un giorno ho scoperto che due mie idee per diventare ultramiliardario nel tempo libero esistono già, sigh. Consiglio però la lettura di <a href="http://blog.acmelab.org/?p=35">questo ottimo articolo </a> che spiega come per fare soldi con internet <em>oggi</em> ci voglia un&#8217;idea da 5 dollari. Di quelle che gli amici ti dicono <em>&#8220;ah cazzo, e ci hai pure pensato?&#8221;</em>, e che non diresti mai ad un membro del sesso opposto (<em>&#8220;sai ho inventato datey.org, un sito che serve a xyz&#8221;</em>) perché ti vergogneresti</li>
	<li> Luca Conti fa notare che fra un po&#8217; forse ci sarà <a href="http://www.pandemia.info/2006/03/20/digg_30_in_italiano.html">digg in italiano</a>, prima che ci sia un digg italiano. </li>
	<li> se usate ancora win32 e non vi piace il software di masterizzazione interno, e non avete voglia di stare li a crackare nero (che poi magari avete originale ma datato da qualche parte) consiglio l&#8217;uso di <a href="http://www.cdburnerxp.se/">CD Burner XP PRO 3</a> (freeware)</li>
	<li>C&#8217;è ancora <a href="http://duckdown.blogspot.com/2006/03/more-thoughts-on-ruby-and-why-it-isnt.html">che dice che ruby non è <em>enterprise ready</em></a>. Un disastro ferroviario in attesa di avvenire, secondo questo tizio.<br />
<tt>self.notes < < "verificare se mcgovern è un demente"</tt></tt></li>
	<li><a href="http://pugs.blogs.com/pugs/2006/03/intermission_ag.html">Audrey Tang e Koichi Sasada a scrivere codice insieme</a> per far si che Pugs possa usare YARV come backend. Sono quasi spaventato. </li>
	</ul>
]]></content:encoded>
			<wfw:commentRss>http://riffraff.blogsome.com/2006/03/21/post-archivio-n-7/feed/</wfw:commentRss>
	</item>
		<item>
		<title>Haskell is..</title>
		<link>http://riffraff.blogsome.com/2005/09/10/10/</link>
		<comments>http://riffraff.blogsome.com/2005/09/10/10/#comments</comments>
		<pubDate>Sat, 10 Sep 2005 08:11:40 +0000</pubDate>
		<dc:creator>gabriele</dc:creator>
		
	<category>haskell</category>
	<category>perl</category>
	<category>pugs</category>
		<guid>http://riffraff.blogsome.com/2005/09/10/10/</guid>
		<description><![CDATA[Haskell is..]]></description>
			<content:encoded><![CDATA[	<p>&#8220;faster than C++, more concise than Perl, more regular than Python, more flexible than Ruby, more typeful than C#, more robust than Java, and has absolutely nothing in common with PHP.&#8221;</p>
	<p>(secondo  <a href="http://use.perl.org/~autrijus">Autrijus Tang</a>, letta in <a href="http://perl.com/pub/a/2005/09/08/autrijus-tang.html">questa intervista </a>su perl.com)
</p>
]]></content:encoded>
			<wfw:commentRss>http://riffraff.blogsome.com/2005/09/10/10/feed/</wfw:commentRss>
	</item>
	</channel>
</rss>
