<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Programowanie sieci</title>
	<atom:link href="http://i2av.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://i2av.wordpress.com</link>
	<description>Internet semantyczny, języki skryptowe, frameworki</description>
	<lastBuildDate>Tue, 15 Sep 2009 10:51:21 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>pl</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='i2av.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/74eb663a5787933d64a6946963b0ebf1?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Programowanie sieci</title>
		<link>http://i2av.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://i2av.wordpress.com/osd.xml" title="Programowanie sieci" />
		<item>
		<title>Psujemy internet</title>
		<link>http://i2av.wordpress.com/2009/09/15/psujemy-internet/</link>
		<comments>http://i2av.wordpress.com/2009/09/15/psujemy-internet/#comments</comments>
		<pubDate>Tue, 15 Sep 2009 10:22:46 +0000</pubDate>
		<dc:creator>Rafał Sobota</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://i2av.wordpress.com/2009/09/15/psujemy-internet/</guid>
		<description><![CDATA[Mam nadzieję, że chociaż Google Wave popchnie internet w dobrą stronę. Puki co, sam przyczyniam się do sukcesywnego oddalania internetu od słusznych idei jego twórców. Tak, jak Ameryka powstawała jako państwo ateistyczne i stricte wolnorynkowe, a dziś w jej PR wpisał się kościół i ekonomia socjalna, tak w zdecentralizowany internet wtacza się coraz więcej centralizujących projektów.
Google [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=i2av.wordpress.com&blog=3499063&post=83&subd=i2av&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Mam nadzieję, że chociaż Google Wave popchnie internet w dobrą stronę. Puki co, sam przyczyniam się do sukcesywnego oddalania internetu od słusznych idei jego twórców. Tak, jak Ameryka powstawała jako państwo ateistyczne i stricte wolnorynkowe, a dziś w jej PR wpisał się kościół i ekonomia socjalna, tak w zdecentralizowany internet wtacza się coraz więcej centralizujących projektów.</p>
<p>Google Search i Gmail to pół biedy. Pamiętam jeden przypadek awarii Gmaila i 0 awarii wyszukiwarki. Dalej wyłania się Facebook &#8211; scentralizowany mikrointernet &#8211; i Twitter &#8211; najszybsze medium świata polegające na wadliwej architekturze jednej grupy ludzi bez biznesplanu.</p>
<p>Dzisiaj podłączyłem Twittera do Google Readera za pomocą <a href="http://www.readtwit.com/">Readtwit</a>. Właśnie tego najbardziej się obawiam &#8211; kultury mashupów pośredniczących w wymianie informacji. Te wędrują z rąk do rąk narażone na pęknięcie któregoś z ogniw.</p>
<p>To wszystko musi być zorganizowane inaczej. Tylko jak?</p>
Posted in Uncategorized  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/i2av.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/i2av.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/i2av.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/i2av.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/i2av.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/i2av.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/i2av.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/i2av.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/i2av.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/i2av.wordpress.com/83/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=i2av.wordpress.com&blog=3499063&post=83&subd=i2av&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://i2av.wordpress.com/2009/09/15/psujemy-internet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f4dd8b23a712555e2b663626e25fd9bc?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">i2av</media:title>
		</media:content>
	</item>
		<item>
		<title>Java vs Scala</title>
		<link>http://i2av.wordpress.com/2009/08/13/java-vs-scala/</link>
		<comments>http://i2av.wordpress.com/2009/08/13/java-vs-scala/#comments</comments>
		<pubDate>Thu, 13 Aug 2009 12:08:04 +0000</pubDate>
		<dc:creator>Rafał Sobota</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Scala]]></category>

		<guid isPermaLink="false">http://i2av.wordpress.com/?p=75</guid>
		<description><![CDATA[Właśnie robię kolejny raz tutorial Google App Engine, ale przepisuję go w Scali. Oto jedno porównanie długości kodu, którego zamieszczeniu nie mogę się oprzeć:
Java:

package guestbook;
import java.util.Date;
import javax.jdo.annotations.*;
import com.google.appengine.api.users.User;
@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class Greeting {
    @PrimaryKey
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
    private Long id;
    @Persistent
    private User author;
    @Persistent
    private String content;
  [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=i2av.wordpress.com&blog=3499063&post=75&subd=i2av&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Właśnie robię kolejny raz tutorial <a href="http://code.google.com/intl/pl/appengine/docs/java/gettingstarted/">Google App Engine</a>, ale przepisuję go w Scali. Oto jedno porównanie długości kodu, którego zamieszczeniu nie mogę się oprzeć:</p>
<pre>Java:</pre>
<blockquote>
<pre><span>package</span><span> guestbook</span><span>;</span>
<span>import</span><span> java</span><span>.</span><span>util</span><span>.</span><span>Date</span><span>;</span>
<span>import</span><span> javax</span><span>.</span><span>jdo</span><span>.</span><span>annotations</span><span>.</span><span>*;</span>
<span>import</span><span> com</span><span>.</span><span>google</span><span>.</span><span>appengine</span><span>.</span><span>api</span><span>.</span><span>users</span><span>.</span><span>User</span><span>;</span>
<span>@PersistenceCapable</span><span>(</span><span>identityType </span><span>=</span><span> </span><span>IdentityType</span><span>.</span><span>APPLICATION</span><span>)</span>
<span>public</span><span> </span><span>class</span><span> </span><span>Greeting</span><span> </span><span>{</span>
<span>    </span><span>@PrimaryKey</span>
<span>    </span><span>@Persistent</span><span>(</span><span>valueStrategy </span><span>=</span><span> </span><span>IdGeneratorStrategy</span><span>.</span><span>IDENTITY</span><span>)</span>
<span>    </span><span>private</span><span> </span><span>Long</span><span> id</span><span>;</span>
<span>    </span><span>@Persistent</span>
<span>    </span><span>private</span><span> </span><span>User</span><span> author</span><span>;</span>
<span>    </span><span>@Persistent</span>
<span>    </span><span>private</span><span> </span><span>String</span><span> content</span><span>;</span>
<span>    </span><span>@Persistent</span>
<span>    </span><span>private</span><span> </span><span>Date</span><span> date</span><span>;</span>
<span>    </span><span>public</span><span> </span><span>Greeting</span><span>(</span><span>User</span><span> author</span><span>,</span><span> </span><span>String</span><span> content</span><span>,</span><span> </span><span>Date</span><span> date</span><span>)</span><span> </span><span>{</span>
<span>        </span><span>this</span><span>.</span><span>author </span><span>=</span><span> author</span><span>;</span>
<span>        </span><span>this</span><span>.</span><span>content </span><span>=</span><span> content</span><span>;</span>
<span>        </span><span>this</span><span>.</span><span>date </span><span>=</span><span> date</span><span>;</span>
<span>    </span><span>}</span>
<span>    </span><span>public</span><span> </span><span>Long</span><span> getId</span><span>()</span><span> </span><span>{</span>
<span>        </span><span>return</span><span> id</span><span>;</span>
<span>    </span><span>}</span>
<span>    </span><span>public</span><span> </span><span>User</span><span> getAuthor</span><span>()</span><span> </span><span>{</span>
<span>        </span><span>return</span><span> author</span><span>;</span>
<span>    </span><span>}</span>
<span>    </span><span>public</span><span> </span><span>String</span><span> getContent</span><span>()</span><span> </span><span>{</span>
<span>        </span><span>return</span><span> content</span><span>;</span>
<span>    </span><span>}</span>
<span>    </span><span>public</span><span> </span><span>Date</span><span> getDate</span><span>()</span><span> </span><span>{</span>
<span>        </span><span>return</span><span> date</span><span>;</span>
<span>    </span><span>}</span>
<span>    </span><span>public</span><span> </span><span>void</span><span> setAuthor</span><span>(</span><span>User</span><span> author</span><span>)</span><span> </span><span>{</span>
<span>        </span><span>this</span><span>.</span><span>author </span><span>=</span><span> author</span><span>;</span>
<span>    </span><span>}</span>
<span>    </span><span>public</span><span> </span><span>void</span><span> setContent</span><span>(</span><span>String</span><span> content</span><span>)</span><span> </span><span>{</span>
<span>        </span><span>this</span><span>.</span><span>content </span><span>=</span><span> content</span><span>;</span>
<span>    </span><span>}</span>
<span>    </span><span>public</span><span> </span><span>void</span><span> setDate</span><span>(</span><span>Date</span><span> date</span><span>)</span><span> </span><span>{</span>
<span>        </span><span>this</span><span>.</span><span>date </span><span>=</span><span> date</span><span>;</span>
<span>    </span><span>}</span>
<span>}</span></pre>
</blockquote>
<p>Scala:</p>
<blockquote>
<pre>package guestbook
import java.util.Date
import javax.jdo.annotations._
import com.google.appengine.api.users.User
@PersistenceCapable(identityType = IdentityType.APPLICATION)
class Greeting (@Persistent var author:User, @Persistent var content:String, @Persistent var date:Date){
 @PrimaryKey
 @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
 private var id:Long
}</pre>
</blockquote>
Posted in Java, Scala  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/i2av.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/i2av.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/i2av.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/i2av.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/i2av.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/i2av.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/i2av.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/i2av.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/i2av.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/i2av.wordpress.com/75/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=i2av.wordpress.com&blog=3499063&post=75&subd=i2av&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://i2av.wordpress.com/2009/08/13/java-vs-scala/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f4dd8b23a712555e2b663626e25fd9bc?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">i2av</media:title>
		</media:content>
	</item>
		<item>
		<title>SOFEA/SOUI</title>
		<link>http://i2av.wordpress.com/2009/06/11/sofeasoui/</link>
		<comments>http://i2av.wordpress.com/2009/06/11/sofeasoui/#comments</comments>
		<pubDate>Thu, 11 Jun 2009 00:40:18 +0000</pubDate>
		<dc:creator>Rafał Sobota</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://i2av.wordpress.com/?p=69</guid>
		<description><![CDATA[W tym tygodniu:

Tworząc skomplikowany system modułowy w ruby-sinatra/haml/js/compass-css zainteresowałem się javascriptem po stronie serwera jako językiem, w którym można stworzyć dynamiczny ajax-comet-framework
Poznałem trochę Moo Tools i zainteresowałem się Google App Engine
Uruchomiłem na GAE js, ruby (sinatra), scalę i javę
Poznałem idee SOFEA/SOUI i zdecydowałem się na oddzielenie interfejsu od serwera
Zainteresowałem się Jersey, Pure JS, Open Ajax [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=i2av.wordpress.com&blog=3499063&post=69&subd=i2av&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>W tym tygodniu:</p>
<ul>
<li>Tworząc skomplikowany system modułowy w ruby-sinatra/haml/js/compass-css zainteresowałem się javascriptem po stronie serwera jako językiem, w którym można stworzyć dynamiczny ajax-comet-framework</li>
<li>Poznałem trochę Moo Tools i zainteresowałem się Google App Engine</li>
<li>Uruchomiłem na GAE js, ruby (sinatra), scalę i javę</li>
<li>Poznałem idee SOFEA/SOUI i zdecydowałem się na oddzielenie interfejsu od serwera</li>
<li>Zainteresowałem się Jersey, Pure JS, Open Ajax Alliance, Ext JS</li>
<li>Zainteresowałem się także Flash Builderem</li>
<li>Zainteresowałem się tworzeniem aplikacji desktopowych i mobilnych</li>
<li>Postanowiłem kupić iPhone&#8217;a</li>
<li>Gdy zobaczyłem HTML 5 w Google Wave i Safari 4, zrezygnowałem z Flash Buildera na rzecz otwartych webowych standardów</li>
<li>Postanowiłem przetestować Google Web Toolkit</li>
<li>Zaczerpnąłem trochę inspiracji z Lift&#8217;a i pomyślałem, że można wykorzystać GWT jako podstawę pod framework, w którym rolę MXMLa i AS we flexie odgrywałyby XML i Scala</li>
<li>Zrezygnowałem z GWT, gdy się okazało, że nie współpracuje ze Scalą, ani żadnym innym językiem poza Javą</li>
<li>Znalazłem Appcelerator Titanium</li>
<li>Uznałem, że Titanium na razie nie nadaje się do użytku, ale wersją finalną będę BARDZO zainteresowany</li>
<li>Jersey i Scala na GAE też na razie sprawia za dużo problemów, więc zacząłem pisać w czystej Javie i JDO z zamiarem przesiadki w przyszłości</li>
</ul>
<p>Perspektywy na dziś:</p>
<ul>
<li>Google App Engine</li>
<li>Java</li>
<li>JDO</li>
<li>json/xml</li>
<li>OpenAjax, PureJS + biblioteczki js w zależności od potrzeb</li>
</ul>
<p>Perspektywy na przyszłość:</p>
<ul>
<li> Jersey + Scala</li>
<li>HTML 5</li>
<li>Titanium</li>
<li>Google Wave</li>
</ul>
Posted in Uncategorized  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/i2av.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/i2av.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/i2av.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/i2av.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/i2av.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/i2av.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/i2av.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/i2av.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/i2av.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/i2av.wordpress.com/69/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=i2av.wordpress.com&blog=3499063&post=69&subd=i2av&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://i2av.wordpress.com/2009/06/11/sofeasoui/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f4dd8b23a712555e2b663626e25fd9bc?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">i2av</media:title>
		</media:content>
	</item>
		<item>
		<title>Persevere</title>
		<link>http://i2av.wordpress.com/2009/05/26/persevere/</link>
		<comments>http://i2av.wordpress.com/2009/05/26/persevere/#comments</comments>
		<pubDate>Tue, 26 May 2009 15:20:00 +0000</pubDate>
		<dc:creator>Rafał Sobota</dc:creator>
				<category><![CDATA[Persevere]]></category>
		<category><![CDATA[Rhino]]></category>
		<category><![CDATA[web os]]></category>

		<guid isPermaLink="false">http://i2av.wordpress.com/?p=61</guid>
		<description><![CDATA[Pisałem wcześniej o internetowym systemie operacyjnym. Znalazłem projekt, który ma te same idee. Nie został jeszcze ukończony i jest jeszcze wiele do zrobienia, ale na razie jestem bardzo optymistycznie nastawiony. Tu fragment moich wcześniejszych planów:
Potrzebujemy:
* ustandaryzowany protokół wymiany informacji między stroną kliencką a stroną serwera
* cache danych i całych aplikacji u klienta
* język i jego [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=i2av.wordpress.com&blog=3499063&post=61&subd=i2av&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a href="http://i2av.wordpress.com/2009/02/01/internetowy-system-operacyjny/" target="_blank">Pisałem wcześniej</a> o internetowym systemie operacyjnym. Znalazłem projekt, który ma te same idee. Nie został jeszcze ukończony i jest jeszcze <a href="http://docs.persvr.org/documentation/howto-use-remote-objects" target="_blank">wiele do zrobienia</a>, ale na razie jestem bardzo optymistycznie nastawiony. Tu fragment moich wcześniejszych planów:</p>
<blockquote><p>Potrzebujemy:</p>
<p>* ustandaryzowany protokół wymiany informacji między stroną kliencką a stroną serwera<br />
* cache danych i całych aplikacji u klienta<br />
* język i jego środowisko<br />
* rdzeń systemu, który umożliwia komunikację z serwerami, instalację aplikacji i interakcję pomiędzy nimi</p></blockquote>
<p>Z perspektywy <a href="http://sitepen.com/labs/persevere.php" target="_blank">Persevere</a> rozwiązaniem jest javascript i protokoły stworzone przez ludzi z <a href="http://www.sitepen.com/" target="_blank">SitePen</a> (ludzie od <a href="http://www.dojotoolkit.org/" target="_blank">Dojo</a>). Są to <a href="http://www.sitepen.com/blog/2008/07/16/jsonquery-data-querying-beyond-jsonpath/" target="_blank">JSONQuery</a> i <a href="http://goessner.net/articles/JsonPath/" target="_blank">JSONPath.</a> System działa nieźle. Umożliwia zapisywanie obiektów javascriptowych wraz z relacjami, dziedziczeniem i ich metodami. Ma wbudowane konta użytkowników i system uprawnień. Protokół umożliwia korzystanie z bazy obiektów po stronie przeglądarki i serwera w taki sam sposób. Projekt nie obsługuje jeszcze bazy Big Table na Google App Engine, ale ten temat zaczyna <a href="http://groups.google.be/group/serverjs/browse_thread/thread/3a85696ab6552410/723c646f385cf287?#723c646f385cf287" target="_blank">być</a> <a href="http://groups.google.com/group/persevere-framework/browse_thread/thread/0af436c15efd26d4" target="_blank">omawiany</a>. Jestem zwolennikiem.</p>
Posted in Persevere, Rhino, web os  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/i2av.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/i2av.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/i2av.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/i2av.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/i2av.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/i2av.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/i2av.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/i2av.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/i2av.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/i2av.wordpress.com/61/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=i2av.wordpress.com&blog=3499063&post=61&subd=i2av&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://i2av.wordpress.com/2009/05/26/persevere/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f4dd8b23a712555e2b663626e25fd9bc?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">i2av</media:title>
		</media:content>
	</item>
		<item>
		<title>Przegląd języków funkcyjnych</title>
		<link>http://i2av.wordpress.com/2009/05/26/przeglad-jezykow-funkcyjnych/</link>
		<comments>http://i2av.wordpress.com/2009/05/26/przeglad-jezykow-funkcyjnych/#comments</comments>
		<pubDate>Tue, 26 May 2009 13:51:38 +0000</pubDate>
		<dc:creator>Rafał Sobota</dc:creator>
				<category><![CDATA[Clean]]></category>
		<category><![CDATA[Haskell]]></category>
		<category><![CDATA[Rhino]]></category>
		<category><![CDATA[Scala]]></category>
		<category><![CDATA[clojure]]></category>
		<category><![CDATA[lisp]]></category>

		<guid isPermaLink="false">http://i2av.wordpress.com/?p=57</guid>
		<description><![CDATA[Od kiedy napisałem poprzedniego posta moją uwagę przyciągnęły:
Clojure &#8211; Implementacja Lispa w Javie. Wygodna komunikacja z Javą. W projekcie języka nacisk na wielowątkowość. Wszystkie wady i zalety wynikające z tego, że to Lisp. W odróżnieniu od Common-Lispa, oderwanie od niektórych kompatybilności wynikających z przyzwyczajenia do poprzednich Lispów. Standaryzacja tego, co ustandaryzowane nie było. Dodatkowa składnia [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=i2av.wordpress.com&blog=3499063&post=57&subd=i2av&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Od kiedy napisałem poprzedniego posta moją uwagę przyciągnęły:</p>
<p>Clojure &#8211; Implementacja Lispa w Javie. Wygodna komunikacja z Javą. W projekcie języka nacisk na wielowątkowość. Wszystkie wady i zalety wynikające z tego, że to Lisp. W odróżnieniu od Common-Lispa, oderwanie od niektórych kompatybilności wynikających z przyzwyczajenia do poprzednich Lispów. Standaryzacja tego, co ustandaryzowane nie było. Dodatkowa składnia (&#8220;[]&#8220;, &#8220;{}&#8221;, &#8220;:&#8221;), która jest zamieniana na standardowe sekwencyjne odpowiedniki. Brak systemu obiektowego. Ogólnie porządny lisp. Jeśli ktoś kocha lispa &#8211; niech się zapozna. Sądzę, że Lisp to jeden z najciekawszych projektów języka jaki powstał, ale brakuje mi w nim obiektowości.</p>
<p>Clean &#8211; Bardzo szybki język funkcyjny (zbliżony szybkością do C). Najsilniejsza strona &#8211; kompilator. Clean jest bardzo podobny do Haskella. Istnieje translator z Haskella do Cleana, w celu skorzytania z kompilatora Cleana w kodzie Haskella. Mało popularny w sieci. Prawie żadnych materiałów do nauki.</p>
<p>Haskell &#8211; Jeden z najbardziej znanych całkowicie funkcyjnych języków programistycznych. Podobno od Haskella można się dużo nauczyć i warto go poznać. Piękna, czytelna składnia. Charakterystyczne cechy to &#8220;Lazy-evaluation&#8221; i inferencja typów. To pierwsze sprawia, że obliczenia są wykonywane tylko wtedy gdy to konieczne. Teoretycznie zastępuje to lispowe makra. Wykonanie a(b(2)) nie przekazuje do funkcji a wyniku b(2), tylko wynik ten jest wyliczany dopiero wewnątrz ciała funkcji a (lub w kolejnych zagłębieniach). Teoretycznie umożliwia to osiągnięcie podobnych efektów jak przy lispowych makrach. Inferencja typów sprawia, że nie musimy deklarować typów tam, gdzie kompilator jest je w stanie sam zobaczyć. W język bazowo wbudowane są także &#8220;partial functions&#8221;, co oznacza, że gdy podamy za mało argumentów do funkcji, to zwróci ona kolejną funkcję, która oczekuje pozostałych. Ciekawy język, ale nie wydał mi się aktualnie do niczego potrzebny</p>
<p>Scala &#8211; &#8220;Nowa Java&#8221;. Język funkcyjny i obiektowy jednocześnie, napisany na JVM. Duże zainteresowanie w internecie. Syntax podobny do Javy, ale lżejszy dzięki inferencji typów i cech funkcyjnych. Ciekawe podejście do projektowania składni, która kieruje się wieloma regułami, ale pozostaje w miarę uniwersalna. Operatory to metody. Funkcje to obiekty. Wiele składniowych trików (takich jak hash w ostatnim argumencie funkcji w ruby), które prowadzą m.in. do możliwości tworzenia własnych instrukcji warunkowych. &#8220;Tail recursive optimization&#8221; &#8211; coś, czego nie ma w Clojure. Nie podobają mi się 2 tryby pracy ze Scalą: tryb aplikacji i skryptu, czego efektem jest brak możliwości tworzenia nowych klas z poziomu REPL-a. Proces pisania i testowania nie jest przez to tak dynamiczny jak w Clojure. Przez to nie przekonuje mnie mimo swojego dużego momentum.</p>
<p>Rhino &#8211; Opensource&#8217;owy JavaScript na JVM zrobiony przez Mozillę. JavaScript ostatnio wychodzi z przeglądarek. Dzięki Rhino możemy korzystać z js lokalnie, na serwerze, lub zamieszczać w projektach javowych. Mozilla tworzy specyfikację ServerJS, która dodaje do js obsługę plików i inne zakazane w przeglądarce akcje. Istnieją projekty, które dodają te funkcjonalności do Rhino, co tworzy z niego język ogólnego przeznaczenia. Javascript ogólnie mi się podoba, a w nadchodzącym wydaniu drugim pojawi się kilka ciekawych nowości, w tym normalna obiektowość. Jeśli w projekcie duży udział ma javascript po stronie przeglądarki to użycie go także po stronie serwera jest całkiem zasadne. Rhino można sobie odpalić na Google App Engine i jest aktualnie moim tematem nr 1.</p>
Posted in Clean, clojure, Haskell, lisp, Rhino, Scala  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/i2av.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/i2av.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/i2av.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/i2av.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/i2av.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/i2av.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/i2av.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/i2av.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/i2av.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/i2av.wordpress.com/57/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=i2av.wordpress.com&blog=3499063&post=57&subd=i2av&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://i2av.wordpress.com/2009/05/26/przeglad-jezykow-funkcyjnych/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f4dd8b23a712555e2b663626e25fd9bc?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">i2av</media:title>
		</media:content>
	</item>
		<item>
		<title>Clojure + Terracotta</title>
		<link>http://i2av.wordpress.com/2009/03/09/clojure-terracotta/</link>
		<comments>http://i2av.wordpress.com/2009/03/09/clojure-terracotta/#comments</comments>
		<pubDate>Mon, 09 Mar 2009 15:29:36 +0000</pubDate>
		<dc:creator>Rafał Sobota</dc:creator>
				<category><![CDATA[clojure]]></category>
		<category><![CDATA[lisp]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[terracotta]]></category>

		<guid isPermaLink="false">http://i2av.wordpress.com/2009/03/09/clojure-terracotta/</guid>
		<description><![CDATA[Ruby jest fantastycznym językiem i życzę mu żeby zastąpił w sieci PHP, a jest na dobrej drodze. Jednakże Clojure ma pewne idee, które jeszcze lepiej rokują na przyszłość.
Szybkość. Clojure &#8211; jak to Lisp, mimo że wszyscy o tym zapomnieli &#8211; jest szybki. Jeden z ideologicznych fundamentów takich języków jak Ruby czy Ioke głosi, że praca [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=i2av.wordpress.com&blog=3499063&post=53&subd=i2av&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a href="http://www.ruby-lang.org">Ruby</a> jest fantastycznym językiem i życzę mu żeby zastąpił w sieci PHP, a jest na dobrej drodze. Jednakże <a href="http://clojure.org">Clojure</a> ma pewne idee, które jeszcze lepiej rokują na przyszłość.</p>
<p>Szybkość. Clojure &#8211; jak to Lisp, mimo że wszyscy o tym zapomnieli &#8211; jest szybki. Jeden z ideologicznych fundamentów takich języków jak Ruby czy Ioke głosi, że praca developera jest droższa od pracy serwera, więc warto używać języków operujących na wysokiej abstrakcji aby zmniejszyć koszta. Jednak analiza historyczna mówi, że przepustowość łączy rośnie szybciej od mocy obliczeniowej. Zbliżamy się więc do momentu, w którym czas przetworzenia jednego zapytania w sieci będzie większy od czasu transferu. Zjawisko to potęguje tendencja tworzenia zaawansowanych aplikacji internetowych. Jeśli oba trendy się nie zmienią to będzie musiał zostać nałożony nacisk na sporą optymalizację, której tak ekstrawaganckie języki jak Ruby mogą nie podołać.</p>
<p>Wielowątkowość. Clojure z niej słynie, bo został stworzony z myślą o niej. Zwiększa to jego walory na polu optymalizacji.</p>
<p>JVM. Java jaka by nie była, jest językiem nr 1 na świecie i powstało dla niej dużo dobrego kodu. Sam język miał pewne założenia, które musiały być przetestowane w praktyce, żeby wyciągnąć z nich wnioski. Język może się zmienić, ale JVM jest maszyną wirtualną, dla której zagrożenia nie widać. Clojure jest bardzo ściśle związany z Javą. Daje nową funkcjonalność, ale jest cienką warstwą, pod którą widać javę &#8220;jak przez taflę lodu&#8221;.</p>
<p>Oprócz tego, Clojure ma ciekawy zestaw cech, które wykorzystują siebie wzajemnie.</p>
<ul>
<li>Nawiązując do złotych sentencji przyświecających Merbowi, &#8220;All you need&#8230; nil you don&#8217;t.&#8221;, a poprzednio &#8220;No-code is the fastest code.&#8221;, nasuwa się &#8220;No-syntax is the best syntax&#8221;. Clojure ma mały zbiór &#8220;special forms&#8221;, które wyglądają i działają jak funkcje, definiowalne przez użytkownika. Cała reszta jest napisana w samym Clojure. Można więc wyciąć biblioteki standardowe i napisać (lub nadpisać) je po swojemu (w tym sposób definiowania funkcji!).</li>
<li>Dane (zbiory, wektory, listy) mogą być sprowadzone do jednolitej postaci &#8211; sekwencji. Dzięki temu funkcje operujące na danych nie muszą być duplikowane i specjalizowane, a Clojure udostępnia dużo gotowych funkcji ogólnego przeznaczenia.</li>
<li>Wszystko jest prezentowane w jednakowy sposób, zarówno kod, jak i dane.</li>
<li>Tworzy to unikalną dla Lispa możliwość pisania makr, które wyglądają jak funkcje, ale transformują kod (jako sekwencję) przed jego wykonaniem. Rozwiązuje to problemy nieosiągalne dla innych języków.</li>
</ul>
<p>Dobrze na przyszłość rokuje także <a href="http://terracotta.org">Terracotta</a>. Udostępnia ona współdzieloną pamięć jako miejsce do lokowania danych. Dzięki niej można pożegnać tradycyjne bazy danych i SQL. Wszystkie operacje na danych można wykonywać w języku w jakim zostały stworzone oraz zapisywać i odczytywać w formie w jakiej powstały.</p>
<p>Clojure na razie nie integruje się z Terracottą, ale prace nad <a href="http://github.com/pjstadig/tim-clojure-1.0-snapshot/tree/master">tym</a> <a href="http://paul.stadig.name/search/label/terracotta">połączeniem</a> trwają.</p>
Posted in clojure, lisp, ruby  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/i2av.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/i2av.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/i2av.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/i2av.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/i2av.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/i2av.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/i2av.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/i2av.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/i2av.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/i2av.wordpress.com/53/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=i2av.wordpress.com&blog=3499063&post=53&subd=i2av&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://i2av.wordpress.com/2009/03/09/clojure-terracotta/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f4dd8b23a712555e2b663626e25fd9bc?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">i2av</media:title>
		</media:content>
	</item>
		<item>
		<title>flash[:notice] flash[:error] feature in Sinatra</title>
		<link>http://i2av.wordpress.com/2009/02/21/flashnotice-flasherror-feature-in-sinatra/</link>
		<comments>http://i2av.wordpress.com/2009/02/21/flashnotice-flasherror-feature-in-sinatra/#comments</comments>
		<pubDate>Sat, 21 Feb 2009 22:26:11 +0000</pubDate>
		<dc:creator>Rafał Sobota</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://i2av.wordpress.com/?p=49</guid>
		<description><![CDATA[That&#8217;s my solution for simple implementation of flash feature in Sinatra:

helpers do
  def flash
    @flash &#124;&#124;= {}
  end
  def redirect(uri, *args)
    session[:flash] = flash unless flash.empty?
    status 302
    response['Location'] = uri
    halt(*args)
  end
end

before do
  if [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=i2av.wordpress.com&blog=3499063&post=49&subd=i2av&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>That&#8217;s my solution for simple implementation of flash feature in Sinatra:</p>
<blockquote>
<pre class="sunburst">helpers <span class="keyword keyword_control keyword_control_ruby keyword_control_ruby_start-block">do</span>
  <span class="meta meta_function meta_function_method meta_function_method_without-arguments meta_function_method_without-arguments_ruby"><span class="keyword keyword_control keyword_control_def keyword_control_def_ruby">def</span> <span class="entity entity_name entity_name_function entity_name_function_ruby">flash</span></span>
    <span class="variable variable_other variable_other_readwrite variable_other_readwrite_instance variable_other_readwrite_instance_ruby">@flash</span> <span class="keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_augmented keyword_operator_assignment_augmented_ruby">||=</span> {}
  <span class="keyword keyword_control keyword_control_ruby">end</span>
  <span class="meta meta_function meta_function_method meta_function_method_with-arguments meta_function_method_with-arguments_ruby"><span class="keyword keyword_control keyword_control_def keyword_control_def_ruby">def</span> <span class="entity entity_name entity_name_function entity_name_function_ruby">redirect</span>(<span class="variable variable_parameter variable_parameter_function variable_parameter_function_ruby">uri, <span class="keyword keyword_operator keyword_operator_arithmetic keyword_operator_arithmetic_ruby">*</span>args</span>)</span>
    session[<span class="constant constant_other constant_other_symbol constant_other_symbol_ruby">:flash</span>] <span class="keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_ruby">=</span> flash <span class="keyword keyword_control keyword_control_ruby">unless</span> flash<span class="meta meta_function-call meta_function-call_method meta_function-call_method_without-arguments meta_function-call_method_without-arguments_ruby">.<span class="entity entity_name entity_name_function entity_name_function_ruby">empty?</span></span>
    status <span class="constant constant_numeric constant_numeric_ruby">302</span>
    response[<span class="string string_quoted string_quoted_single string_quoted_single_ruby">'Location'</span>] <span class="keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_ruby">=</span> uri
    <span class="meta meta_function-call meta_function-call_ruby"><span class="entity entity_name entity_name_function entity_name_function_ruby">halt</span></span>(<span class="keyword keyword_operator keyword_operator_arithmetic keyword_operator_arithmetic_ruby">*</span>args)
  <span class="keyword keyword_control keyword_control_ruby">end</span>
<span class="keyword keyword_control keyword_control_ruby">end</span>

before <span class="keyword keyword_control keyword_control_ruby keyword_control_ruby_start-block">do</span>
  <span class="keyword keyword_control keyword_control_ruby">if</span> session[<span class="constant constant_other constant_other_symbol constant_other_symbol_ruby">:flash</span>] <span class="keyword keyword_operator keyword_operator_logical keyword_operator_logical_ruby">and</span> <span class="keyword keyword_operator keyword_operator_logical keyword_operator_logical_ruby">not</span> session[<span class="constant constant_other constant_other_symbol constant_other_symbol_ruby">:flash</span>]<span class="meta meta_function-call meta_function-call_method meta_function-call_method_without-arguments meta_function-call_method_without-arguments_ruby">.<span class="entity entity_name entity_name_function entity_name_function_ruby">empty?</span></span>
    <span class="variable variable_other variable_other_readwrite variable_other_readwrite_instance variable_other_readwrite_instance_ruby">@flash</span>, session[<span class="constant constant_other constant_other_symbol constant_other_symbol_ruby">:flash</span>] <span class="keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_ruby">=</span> session[<span class="constant constant_other constant_other_symbol constant_other_symbol_ruby">:flash</span>], <span class="constant constant_language constant_language_ruby">nil</span>
  <span class="keyword keyword_control keyword_control_ruby">end</span></pre>
<pre class="textmate-source"><span class="keyword keyword_control keyword_control_ruby">end
</span></pre>
</blockquote>
<p><a href="http://pastie.org/private/dguazldxxhw9yur2irog">Pastie</a></p>
Posted in Uncategorized  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/i2av.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/i2av.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/i2av.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/i2av.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/i2av.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/i2av.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/i2av.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/i2av.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/i2av.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/i2av.wordpress.com/49/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=i2av.wordpress.com&blog=3499063&post=49&subd=i2av&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://i2av.wordpress.com/2009/02/21/flashnotice-flasherror-feature-in-sinatra/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f4dd8b23a712555e2b663626e25fd9bc?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">i2av</media:title>
		</media:content>
	</item>
		<item>
		<title>Clojure snippets</title>
		<link>http://i2av.wordpress.com/2009/02/17/clojure-snippets/</link>
		<comments>http://i2av.wordpress.com/2009/02/17/clojure-snippets/#comments</comments>
		<pubDate>Tue, 17 Feb 2009 16:30:47 +0000</pubDate>
		<dc:creator>Rafał Sobota</dc:creator>
				<category><![CDATA[clojure]]></category>
		<category><![CDATA[lisp]]></category>

		<guid isPermaLink="false">http://i2av.wordpress.com/?p=44</guid>
		<description><![CDATA[Stuart Halloway -  autor Programming Clojure &#8211; na swoim blogu przekłada przykładowe kody z książek o lispie na clojure. Do tej pory przeportował:

Practical Common Lisp &#8211; Peter Seibel
On Lisp &#8211; Paul Graham

Posted in clojure, lisp       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=i2av.wordpress.com&blog=3499063&post=44&subd=i2av&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Stuart Halloway -  autor <a href="http://www.pragprog.com/titles/shcloj/programming-clojure">Programming Clojure</a> &#8211; na swoim blogu przekłada przykładowe kody z książek o lispie na clojure. Do tej pory przeportował:</p>
<ul>
<li><a href="http://blog.thinkrelevance.com/2008/9/16/pcl-clojure">Practical Common Lisp &#8211; Peter Seibel</a></li>
<li><a href="http://blog.thinkrelevance.com/2008/12/12/on-lisp-clojure">On Lisp &#8211; Paul Graham</a></li>
</ul>
Posted in clojure, lisp  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/i2av.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/i2av.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/i2av.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/i2av.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/i2av.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/i2av.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/i2av.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/i2av.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/i2av.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/i2av.wordpress.com/44/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=i2av.wordpress.com&blog=3499063&post=44&subd=i2av&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://i2av.wordpress.com/2009/02/17/clojure-snippets/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f4dd8b23a712555e2b663626e25fd9bc?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">i2av</media:title>
		</media:content>
	</item>
		<item>
		<title>Messaging</title>
		<link>http://i2av.wordpress.com/2009/02/13/messaging/</link>
		<comments>http://i2av.wordpress.com/2009/02/13/messaging/#comments</comments>
		<pubDate>Fri, 13 Feb 2009 13:45:00 +0000</pubDate>
		<dc:creator>Rafał Sobota</dc:creator>
				<category><![CDATA[clojure]]></category>
		<category><![CDATA[web os]]></category>

		<guid isPermaLink="false">http://i2av.wordpress.com/?p=41</guid>
		<description><![CDATA[There’s JMS:
http://en.wikipedia.org/wiki/Java_Message_Service
https://mq.dev.java.net/
http://joram.objectweb.org/
http://activemq.apache.org/
XMPP:
http://en.wikipedia.org/wiki/Xmpp
http://www.igniterealtime.org/projects/index.jsp
JXTA/Shoal:
http://en.wikipedia.org/wiki/Jxta
https://shoal.dev.java.net/
JINI:
http://en.wikipedia.org/wiki/Jini
http://incubator.apache.org/projects/river.html
DHTs like Pastry:
http://freepastry.org/
JGroups:
http://www.jgroups.org/javagroupsnew/docs/index.html
Terracotta:
http://www.terracotta.org
Jinterface:
http://www.erlang.org/doc/apps/jinterface/
NetKernel:
http://www.1060.org/
and more. All useful from Clojure. Given the diversity, sophistication, maturity, interoperability, robustness etc of these options, it’s unlikely I’m going to fiddle around with some language-specific solution. That said, I have been thinking about putting a simple wrapper API around queues that would work both locally and over something like JMS.
Rich [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=i2av.wordpress.com&blog=3499063&post=41&subd=i2av&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><blockquote><p>There’s JMS:<br />
<a rel="nofollow" href="http://en.wikipedia.org/wiki/Java_Message_Service" target="_blank">http://en.wikipedia.org/wiki/Java_Message_Service</a><br />
<a rel="nofollow" href="http://bc.tech.coop/blog/https://mq.dev.java.net/" target="_blank">https://mq.dev.java.net/</a><br />
<a rel="nofollow" href="http://joram.objectweb.org/" target="_blank">http://joram.objectweb.org/</a><br />
<a rel="nofollow" href="http://activemq.apache.org/" target="_blank">http://activemq.apache.org/</a></p>
<p>XMPP:<br />
<a rel="nofollow" href="http://en.wikipedia.org/wiki/Xmpp" target="_blank">http://en.wikipedia.org/wiki/Xmpp</a><br />
<a rel="nofollow" href="http://www.igniterealtime.org/projects/index.jsp" target="_blank">http://www.igniterealtime.org/projects/index.jsp</a></p>
<p>JXTA/Shoal:<br />
<a rel="nofollow" href="http://en.wikipedia.org/wiki/Jxta" target="_blank">http://en.wikipedia.org/wiki/Jxta</a><br />
<a rel="nofollow" href="http://bc.tech.coop/blog/https://shoal.dev.java.net/" target="_blank">https://shoal.dev.java.net/</a></p>
<p>JINI:<br />
<a rel="nofollow" href="http://en.wikipedia.org/wiki/Jini" target="_blank">http://en.wikipedia.org/wiki/Jini</a><br />
<a rel="nofollow" href="http://incubator.apache.org/projects/river.html" target="_blank">http://incubator.apache.org/projects/river.html</a></p>
<p>DHTs like Pastry:<br />
<a rel="nofollow" href="http://freepastry.org/" target="_blank">http://freepastry.org/</a></p>
<p>JGroups:<br />
<a rel="nofollow" href="http://www.jgroups.org/javagroupsnew/docs/index.html" target="_blank">http://www.jgroups.org/javagroupsnew/docs/index.html</a></p>
<p>Terracotta:<br />
<a rel="nofollow" href="http://www.terracotta.org/" target="_blank">http://www.terracotta.org</a></p>
<p>Jinterface:<br />
<a rel="nofollow" href="http://www.erlang.org/doc/apps/jinterface/" target="_blank">http://www.erlang.org/doc/apps/jinterface/</a></p>
<p>NetKernel:<br />
<a rel="nofollow" href="http://www.1060.org/" target="_blank">http://www.1060.org/</a></p>
<p>and more. All useful from Clojure. Given the diversity, sophistication, maturity, interoperability, robustness etc of these options, it’s unlikely I’m going to fiddle around with some language-specific solution. That said, I have been thinking about putting a simple wrapper API around queues that would work both locally and over something like JMS.</p></blockquote>
<p>Rich Hickey &#8211; <a href="http://www.planeterlang.org/en/planet/article/Clojure_could_be_to_Concurrency-Oriented_Programming_what_Java_was_to_OOP/">Clojure could be to Concurrency-Oriented Programming what Java was to OOP</a></p>
Posted in clojure, web os  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/i2av.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/i2av.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/i2av.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/i2av.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/i2av.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/i2av.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/i2av.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/i2av.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/i2av.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/i2av.wordpress.com/41/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=i2av.wordpress.com&blog=3499063&post=41&subd=i2av&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://i2av.wordpress.com/2009/02/13/messaging/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f4dd8b23a712555e2b663626e25fd9bc?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">i2av</media:title>
		</media:content>
	</item>
		<item>
		<title>Studia</title>
		<link>http://i2av.wordpress.com/2009/02/11/studia/</link>
		<comments>http://i2av.wordpress.com/2009/02/11/studia/#comments</comments>
		<pubDate>Wed, 11 Feb 2009 11:59:40 +0000</pubDate>
		<dc:creator>Rafał Sobota</dc:creator>
				<category><![CDATA[IT world]]></category>

		<guid isPermaLink="false">http://i2av.wordpress.com/?p=29</guid>
		<description><![CDATA[
One of the best programmers I ever hired had only a High School degree; he&#8217;s produced a lot of great software, has his own news group, and made enough in stock options to buy his own nightclub.

Peter Norvig &#8211; Teach Yourself Programming in Ten Years

Computer science education cannot make anybody an expert programmer any more [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=i2av.wordpress.com&blog=3499063&post=29&subd=i2av&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><blockquote>
<p style="text-align:left;">One of the best programmers I ever hired had only a High School degree; he&#8217;s produced a lot of great software, has his own news group, and made enough in stock options to buy his own nightclub.</p>
</blockquote>
<p style="text-align:left;"><a href="http://en.wikipedia.org/wiki/Peter_Norvig">Peter Norvig</a> &#8211; <a href="http://norvig.com/21-days.html">Teach Yourself Programming in Ten Years</a></p>
<blockquote>
<p style="text-align:left;">Computer science education cannot make anybody an expert programmer any more than studying brushes and pigment can make somebody an expert painter</p>
</blockquote>
<p style="text-align:left;"><a href="http://en.wikipedia.org/wiki/Eric_Raymond">Eric Raymond</a>, author of <a href="http://www.ccil.org/jargon/jarginfo.html"><em>The New Hacker&#8217;s Dictionary</em></a></p>
Posted in IT world  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/i2av.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/i2av.wordpress.com/29/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/i2av.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/i2av.wordpress.com/29/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/i2av.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/i2av.wordpress.com/29/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/i2av.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/i2av.wordpress.com/29/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/i2av.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/i2av.wordpress.com/29/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=i2av.wordpress.com&blog=3499063&post=29&subd=i2av&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://i2av.wordpress.com/2009/02/11/studia/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f4dd8b23a712555e2b663626e25fd9bc?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">i2av</media:title>
		</media:content>
	</item>
	</channel>
</rss>