<?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>Xavier Llorà &#187; clojure</title>
	<atom:link href="http://www.xavierllora.net/tag/clojure/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.xavierllora.net</link>
	<description>A notebook about data-intensive computing, genetics-based machine learning, semantic-web technology, cloud computing,  and more.</description>
	<lastBuildDate>Thu, 15 Jul 2010 19:50:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Meandre is going Scala</title>
		<link>http://www.xavierllora.net/2009/12/01/meandre-is-going-scala/</link>
		<comments>http://www.xavierllora.net/2009/12/01/meandre-is-going-scala/#comments</comments>
		<pubDate>Tue, 01 Dec 2009 20:01:47 +0000</pubDate>
		<dc:creator>Xavier</dc:creator>
				<category><![CDATA[Notes]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[clojure]]></category>
		<category><![CDATA[data-intensive flows]]></category>
		<category><![CDATA[erlang]]></category>
		<category><![CDATA[jruby]]></category>
		<category><![CDATA[jython]]></category>
		<category><![CDATA[meandre]]></category>
		<category><![CDATA[scala]]></category>
		<category><![CDATA[ZigZag]]></category>

		<guid isPermaLink="false">http://www.xavierllora.net/?p=637</guid>
		<description><![CDATA[After quite a bit of experimenting with different alternatives, Meandre is moving into Scala. Scala is a general purpose programming language designed to express common programming patterns in a concise, elegant, and type-safe way. This is not a radical process, but a gradual one while I am starting to revisit the infrastructure for the next [...]


Related posts:<ol><li><a href='http://www.xavierllora.net/2010/07/15/meandre-2-0-alpha-preview-scala-mongodb/' rel='bookmark' title='Permanent Link: Meandre 2.0 Alpha Preview = Scala + MongoDB'>Meandre 2.0 Alpha Preview = Scala + MongoDB</a></li>
<li><a href='http://www.xavierllora.net/2008/04/18/meandre-semantic-driven-data-intensive-flow-engine/' rel='bookmark' title='Permanent Link: Meandre: Semantic-Driven Data-Intensive Flow Engine'>Meandre: Semantic-Driven Data-Intensive Flow Engine</a></li>
<li><a href='http://www.xavierllora.net/2010/01/21/fast-rest-api-prototyping-with-crochet-and-scala/' rel='bookmark' title='Permanent Link: Fast REST API prototyping with Crochet and Scala'>Fast REST API prototyping with Crochet and Scala</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>After quite a bit of experimenting with different alternatives, <a href="http://seasr.org/meandre">Meandre</a> is moving into <a href="http://www.scala-lang.org/">Scala</a>. <a href="http://www.scala-lang.org/">Scala</a> is a general purpose programming language designed to express common programming patterns in a concise, elegant, and type-safe way. This is not a radical process, but a gradual one while I am starting to revisit the infrastructure for the next major release. <a href="http://www.scala-lang.org/">Scala</a> also generates code for the JVM making mix and match trivial. I started fuzzing around with Scala back when I started the development of <a href="http://seasr.org/meandre">Meandre</a> during the summer of 2007, however I did fall back to Java since that was what most of the people in the group was comfortable with. I was fascinated with <a href="http://www.scala-lang.org/">Scala</a> fusion of object oriented programming and functional programming. Time went by and the codebase has grown to a point that I cannot stand anymore cutting through the weeds of Java when I have to extend the infrastructure or do bug fixing&#8212;not to mention its verbosity even for writing trivial code.</p>
<p>This summer I decided to go on a quest to get me out of the woods. I do not mind relying on the JVM and the large collection of libraries available, but I would also like to get my sanity back. Yes, I tested some of the usual suspects for the JVM (<a href="http://www.jython.org/">Jython</a>, <a href="http://jruby.org/">JRuby</a>, <a href="http://clojure.org/">Clojure</a>, and <a href="http://groovy.codehaus.org/">Groovy</a>) but not quite what I wanted. For instance, I wrote most of the <a href="http://seasr.org/meandre">Meandre</a> infrastructure services using <a href="http://www.jython.org/">Jython</a> (much more concise than Java), but still not quite happy to jump on that boat. <a href="http://clojure.org/">Clojure</a> is also interesting (functional programming) but it would be hard to justify for the group to move into it since not everybody may feel comfortable with a pure functional language. I also toyed with some not-so-usual ones like <a href="http://www.erlang.org/">Erlang</a> and <a href="http://www.haskell.org/">Haskell</a>, but again, I ended up with no real argument that could justify such a decision. </p>
<p>So, as I started doing back in 2007, I went back to my original idea of using  <a href="http://www.scala-lang.org/">Scala</a> and its mixed object-oriented- and functional-programming- paradigm. To test it seriously, I started developing the distributed execution engine for <a href="http://seasr.org/meandre">Meandre</a> in  <a href="http://www.scala-lang.org/">Scala</a> using its Earlang-inspired actors. And, boom, suddenly I found myself spending more time thinking that writing/debugging threaded/networking code <img src='http://www.xavierllora.net/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> . Yes, I regret my 2007 decision instead of running with my original intuition, but better late than never. With a working seed of the distributed engine working and tested (did I mention that <a href="http://code.google.com/p/scalacheck/">scalacheck</a> and <a href="http://code.google.com/p/specs/">specs</a> are really powerful tools for behavior driven development?), I finally decided to start gravitating the Meandre infrastructure development effort from Java to <a href="http://www.scala-lang.org/">Scala</a>&#8212;did I mention that <a href="http://www.scala-lang.org/">Scala</a> is Martin Odersky&#8217;s child? Yes, such a decision has some impact on my colleagues, but I envision that the benefits will eventually weight out the initial resistance and step learning curve. At least, the last two group meetings nobody jumped off the window while presenting the key elements of  <a href="http://www.scala-lang.org/">Scala</a>, and demonstrating how concise and elegant it made the first working seed of the distributed execution engine <img src='http://www.xavierllora.net/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> . We even got in discussions about the benefits of using <a href="http://www.scala-lang.org/">Scala</a> if it delivered everything I showed. I am lucky to work with such smart guys. If you want to take a peek at the <a href="http://dev-tools.seasr.org/fisheye/browse/Snowfield">distributed execution engine (a.k.a. Snowfield) at SEASR&#8217;s Fisheye</a>.</p>
<p>Oh, one last thing. Are you using Atlassian&#8217;s Fisheye? Do you want <a href='http://www.xavierllora.net/wp-content/uploads/2009/12/scala.def_.gz'>syntax highlighting for Scala</a>? I tweaked the Java definitions to make it highlight  <a href="http://www.scala-lang.org/">Scala</a> code. Remember to drop the <code>scala.def</code> file on <code>$FISHEYE_HOME/syntax</code> directory add an entry on the filename.map to make it highlight anything with extension <code>.scala</code>.</p>


<p>Related posts:<ol><li><a href='http://www.xavierllora.net/2010/07/15/meandre-2-0-alpha-preview-scala-mongodb/' rel='bookmark' title='Permanent Link: Meandre 2.0 Alpha Preview = Scala + MongoDB'>Meandre 2.0 Alpha Preview = Scala + MongoDB</a></li>
<li><a href='http://www.xavierllora.net/2008/04/18/meandre-semantic-driven-data-intensive-flow-engine/' rel='bookmark' title='Permanent Link: Meandre: Semantic-Driven Data-Intensive Flow Engine'>Meandre: Semantic-Driven Data-Intensive Flow Engine</a></li>
<li><a href='http://www.xavierllora.net/2010/01/21/fast-rest-api-prototyping-with-crochet-and-scala/' rel='bookmark' title='Permanent Link: Fast REST API prototyping with Crochet and Scala'>Fast REST API prototyping with Crochet and Scala</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.xavierllora.net/2009/12/01/meandre-is-going-scala/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>
