<?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>_mindMeld &#187; Groovy</title>
	<atom:link href="http://www.mindmeld.ws/blog/category/groovy/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mindmeld.ws/blog</link>
	<description>Les Stroud on Technology, Life, Liberty, and the Pursuit of Happiness</description>
	<lastBuildDate>Wed, 15 Jun 2011 02:10:58 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Groovy Spread-Dot Operator</title>
		<link>http://www.mindmeld.ws/blog/2009/08/30/groovy-spread-dot-operator/</link>
		<comments>http://www.mindmeld.ws/blog/2009/08/30/groovy-spread-dot-operator/#comments</comments>
		<pubDate>Sun, 30 Aug 2009 17:53:29 +0000</pubDate>
		<dc:creator>Les Stroud</dc:creator>
				<category><![CDATA[Groovy]]></category>

		<guid isPermaLink="false">http://www.mindmeld.ws/blog/2009/08/30/groovy-spread-dot-operator/</guid>
		<description><![CDATA[<p style="clear: both">I am mainly linking this because I find myself never remembering it and never able to find a reference to it. However, I love this syntax.</p>
<blockquote style="clear: both"><p>Groovy adds some nice operators to the language to write brief code. We already learned about the Elvis operator and the Spaceship operator. And now we see what the spread-dot operator is about and what it does.</p>
</blockquote>
<p style="clear: both">link: <a href="http://mrhaki.blogspot.com/2009/08/groovy-goodness-spread-dot-operator.html" target="_blank">Groovy Goodness: The Spread-Dot Operator &#8211; Messages from mrhaki</a><u><br /></u></p>
<p style="clear: both"><u><br /></u></p>
<pre class="brush: php">
// Create a list with 3 objects. Each object has a lang
// property and a say() or sayIt() method.
def list [
    new Expando(lang: &#039;Groovy&#039;, say:   { &#34;I am Groovy&#34;}),
    new Expando(lang: &#039;Java&#039;,   sayIt: { &#34;I am Java&#34;}),
    new Expando(lang: &#039;Scala&#039;,  say:   { &#34;I am ${lang}&#34;})
]

// Use the spread-dot operator to invoke the say() method.
assert [&#039;I am Groovy&#039;, &#039;I am Scala&#039;] == list*.say()
assert [&#039;I am Java&#039;] == list*.sayIt()
assert [&#039;I am Groovy&#039;, &#039;I am Scala&#039;] == list.collect{ it.say() }

// We can also use the spread-dot operator to access
// properties, but we don&#039;t need to, because Groovy allows
// direct property access on list members.
assert [&#039;Groovy&#039;, &#039;Java&#039;, &#039;Scala&#039;] == list*.lang
assert [&#039;Groovy&#039;, &#039;Java&#039;, &#039;Scala&#039;] == list.lang
</pre>
<p><br class="final-break" style="clear: both" /></p>
]]></description>
		<wfw:commentRss>http://www.mindmeld.ws/blog/2009/08/30/groovy-spread-dot-operator/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Future of Programming Languages</title>
		<link>http://www.mindmeld.ws/blog/2009/07/07/the-future-of-programming-languages/</link>
		<comments>http://www.mindmeld.ws/blog/2009/07/07/the-future-of-programming-languages/#comments</comments>
		<pubDate>Tue, 07 Jul 2009 11:26:37 +0000</pubDate>
		<dc:creator>Les Stroud</dc:creator>
				<category><![CDATA[Groovy]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.mindmeld.ws/blog/?p=382</guid>
		<description><![CDATA[<p style="clear: both">Jeff Mesnil has a nice post about the future of programming languages. There is no doubt that the language that solves concurrency for the right 80% will be the next Java. The question is, which one?</p>
<blockquote style="clear: both"><p>Concurrency is likely to be one of the main decision criteria when I chose which next language/platform to learn. I envision it being as important as memory management was when I started to learn OO and how it tipped the balance for Java instead of C++.</p>
</blockquote>
<p style="clear: both">link: <a href="http://jmesnil.net/weblog/2009/07/06/concurrency-is-my-new-memory-management-criteria/" target="_blank">Jeff Mesnil » Blog Archive » Concurrency Is My New Memory Management Criteria</a>  </p>
<p><br class="final-break" style="clear: both" /></p>
]]></description>
		<wfw:commentRss>http://www.mindmeld.ws/blog/2009/07/07/the-future-of-programming-languages/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Grails Jobs</title>
		<link>http://www.mindmeld.ws/blog/2009/07/06/grails-jobs/</link>
		<comments>http://www.mindmeld.ws/blog/2009/07/06/grails-jobs/#comments</comments>
		<pubDate>Tue, 07 Jul 2009 04:36:16 +0000</pubDate>
		<dc:creator>Les Stroud</dc:creator>
				<category><![CDATA[Groovy]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.mindmeld.ws/blog/2009/07/06/grails-jobs/</guid>
		<description><![CDATA[<p style="clear: both">It looks like there is some pickup in the numbers of available jobs, but that grails lost a little ground in the bigger scheme of things.</p>
<blockquote style="clear: both"><p>The Tiobe Groovy numbers show a sharp decline from the last month. It was biggest drop in percentage and in rank, and the lowest rating since I started keeping track.</p>
</blockquote>
<p style="clear: both">link: <a href="http://www.changent.com/display_blog.cfm" target="_blank">Groovy/Grails Talk &#8211; July 2009 Groovy &#8211; Grails Job Market</a>  </p>
<p><br class="final-break" style="clear: both" /></p>
]]></description>
		<wfw:commentRss>http://www.mindmeld.ws/blog/2009/07/06/grails-jobs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Run grails apps on the root context</title>
		<link>http://www.mindmeld.ws/blog/2009/07/06/run-grails-apps-on-the-root-context/</link>
		<comments>http://www.mindmeld.ws/blog/2009/07/06/run-grails-apps-on-the-root-context/#comments</comments>
		<pubDate>Mon, 06 Jul 2009 13:55:34 +0000</pubDate>
		<dc:creator>Les Stroud</dc:creator>
				<category><![CDATA[Groovy]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.mindmeld.ws/blog/?p=351</guid>
		<description><![CDATA[<p style="clear: both"><a href="http://www.blogger.com/profile/10251282954706460100">Burt</a> (Burt Beckwith?) posted a response to <a href="http://blog.henyo.com/2009/06/run-grails-app-on-root-context.html">Henyo&#8217;s post</a> with a really nice little tip.</p>
<blockquote style="clear: both"><p>There&#8217;s no need to edit any scripts &#8211; this is a maintenance problem since you&#8217;ll need to keep editing scripts each time you upgrade. <br />Just put: <br /> app.context=/ <br />in your application.properties</p>
</blockquote>
<p style="clear: both">link: <a href="http://blog.henyo.com/2009/06/run-grails-app-on-root-context.html" target="_blank">]-[3ny0 ONLINE: Run grails-app on the root context</a>  </p>
<p><br class="final-break" style="clear: both" /></p>
]]></description>
		<wfw:commentRss>http://www.mindmeld.ws/blog/2009/07/06/run-grails-apps-on-the-root-context/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java based Implementation of ExtJs Direct API</title>
		<link>http://www.mindmeld.ws/blog/2009/07/06/java-based-implementation-of-extjs-direct-api/</link>
		<comments>http://www.mindmeld.ws/blog/2009/07/06/java-based-implementation-of-extjs-direct-api/#comments</comments>
		<pubDate>Mon, 06 Jul 2009 13:33:21 +0000</pubDate>
		<dc:creator>Les Stroud</dc:creator>
				<category><![CDATA[Groovy]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.mindmeld.ws/blog/?p=346</guid>
		<description><![CDATA[<p style="clear: both">A new implementation of Direct for ExtJs had been posted on google code.</p>
<blockquote style="clear: both"><p>DirectJNgine is a Java based implementation of the Ext Direct API for ExtJs. DirectJNgine is feature complete, providing support for all kinds of requests: batched json requests, form posts with file uploads, requests from polling providers, etc. A detailed User&#8217;s Guide (more than 20 pages) is part of distribution. Besides, it runs all of Ext Direct examples distributed with ExtJs 3.0, located in examples/direct, and additional demos are included and discussed in the User&#8217;s Guide.</p>
</blockquote>
<p style="clear: both">link: <a href="http://code.google.com/p/directjngine/" target="_blank"> directjngine &#8211; Google Code</a><u><br /></u></p>
<p style="clear: both">The documentation looks really good. I am excited to try out this new mechanism. </p>
<p style="clear: both">Upon first glance, it looks more cumbersome than my grails-like, spring mvc based, groovy controllers. Groovy makes it so simple to process dynamic data from the UI that I rarely need to worry much about marshalling and demarshalling. I do have to admit, though, that the method direct calling mechanism could definitely make the javascript code more readable. I&#8217;ll post about my experience after I try it.</p>
<p style="clear: both">
<p><br class="final-break" style="clear: both" /></p>
]]></description>
		<wfw:commentRss>http://www.mindmeld.ws/blog/2009/07/06/java-based-implementation-of-extjs-direct-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Groovy Performance</title>
		<link>http://www.mindmeld.ws/blog/2009/07/06/groovy-performance/</link>
		<comments>http://www.mindmeld.ws/blog/2009/07/06/groovy-performance/#comments</comments>
		<pubDate>Mon, 06 Jul 2009 12:17:23 +0000</pubDate>
		<dc:creator>Les Stroud</dc:creator>
				<category><![CDATA[Groovy]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.mindmeld.ws/blog/?p=357</guid>
		<description><![CDATA[<p style="clear: both">Nick Wiedenbrueck did a quick and dirty performance comparison between java, groovy, and scala:</p>
<blockquote style="clear: both"><p>Nuff said, here is the result of sorting 100.000 integers: 
<ul style="clear: both">
<li>Java: 45ms </li>
<li>Scala: 60ms </li>
<li>Groovy: 12800ms</li>
</ul>
</p></blockquote>
<p style="clear: both">link: <a href="http://stronglytypedblog.blogspot.com/2009/07/java-vs-scala-vs-groovy-performance.html" target="_blank">Strongly Typed, Loosely Coupled: Java vs. Scala vs. Groovy &#8211; Performance Update</a>  </p>
<p style="clear: both">I decided to run his code on my box because the timings did not look right for what it was doing. As it turns out, his times were slow, but they were in the right proportion. Here is what I got (I didn&#8217;t run scala).  </p>
<ul style="clear: both">
<li>Java: 10ms</li>
<li>Groovy: 3828 ms</li>
</ul>
<p style="clear: both">So, I decided to compare apples to apples and see what Ruby (another dynamic language) would come up with. I am not a ruby coder. I have tried it and that is about it. So, here is the quicksort routine I came up with:</p>
<p style="clear: both">
<pre class="brush: ruby">
def partition(data, front, back)
  last = front
  pivot = data[front]
  frontUnknown = front + 1

  while frontUnknown &#38;lt; = last do
    if data[frontUnknown] &#38;lt; pivot
      back += 1
      data[frontUnknown, back] = data[back, frontUnknown]
    end

    frontUnknown += 1
  end

  data[front, back] = data[back, front]
  back
end

def quicksort(data, front = 0, back = data.size - 1)
  if front &#38;lt; back
    pivotIndex = partition(data, front, back)
    quicksort(data, front, pivotIndex - 1)&#8230;</pre></p>]]></description>
		<wfw:commentRss>http://www.mindmeld.ws/blog/2009/07/06/groovy-performance/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Grails and Continuous Integration: An Essential Combo</title>
		<link>http://www.mindmeld.ws/blog/2009/07/03/grails-and-continuous-integration-an-essential-combo/</link>
		<comments>http://www.mindmeld.ws/blog/2009/07/03/grails-and-continuous-integration-an-essential-combo/#comments</comments>
		<pubDate>Fri, 03 Jul 2009 17:49:27 +0000</pubDate>
		<dc:creator>Les Stroud</dc:creator>
				<category><![CDATA[Groovy]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Software Engineering]]></category>

		<guid isPermaLink="false">http://www.mindmeld.ws/blog/2009/07/03/grails-and-continuous-integration-an-essential-combo/</guid>
		<description><![CDATA[<p style="clear: both">There isn&#8217;t much for me to add to this one, but it is a really good article on testing with grails.</p>
<p style="clear: both"><a href="http://www.mindmeld.ws/blog/wp-content/uploads/2009/07/hudson-code-coverage1.png" class="image-link"><img class="linked-to-original" src="http://www.mindmeld.ws/blog/wp-content/uploads/2009/07/hudson-code-coverage1-thumb.png" height="358" width="380" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<blockquote style="clear: both"><p>Grails is a fantastic framework. As well as being ultra-productive and fun to work with, it encourages good testing practices, and provides a swathe of tools to make writing unit, integration, and web tests a real pleasure. As we will see, Grails also lends itself quite well to build automation. However, Grails is not Maven. Grails has a fairly loose concept of the software development lifecycle, and is happy to let you bundle up and deploy your application as a WAR file without running all the unit and integration tests first. A Continuous Integration (CI) server can help you keep the flexibility of the Grails development process, and still ensure that your code is fully tested for each and every code change. In this article, we will take a look at how you can introduce Continuous Integration into your Grails project. More specifically, we will walk through how you can automate your Grails testing and code quality metrics with Hudson, a popular open source CI tool.</p>
</blockquote>
<p style="clear: both">link: <a href="http://today.java.net/pub/a/today/2009/06/23/Grails-and-Continuous-Integration.html" target="_blank">java.net: Grails and Continuous Integration: An Essential Combo</a>  </p>
<p><br class="final-break" style="clear: both" /></p>
]]></description>
		<wfw:commentRss>http://www.mindmeld.ws/blog/2009/07/03/grails-and-continuous-integration-an-essential-combo/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Groovy Templating</title>
		<link>http://www.mindmeld.ws/blog/2009/07/03/groovy-templating/</link>
		<comments>http://www.mindmeld.ws/blog/2009/07/03/groovy-templating/#comments</comments>
		<pubDate>Fri, 03 Jul 2009 17:39:05 +0000</pubDate>
		<dc:creator>Les Stroud</dc:creator>
				<category><![CDATA[Groovy]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.mindmeld.ws/blog/2009/07/03/groovy-templating/</guid>
		<description><![CDATA[<blockquote style="clear: both"><p>I somehow feel as if I have been initiated into some secret society: “The Knights Who Know About ”!</p>
</blockquote>
<p style="clear: both">link: <a href="http://www.transentia.com.au/flatpress/index.php/2009/07/02/groovy-templating-follow-up/" target="_blank">transentia pty. ltd. » Groovy Templating Follow-Up</a>  </p>
<p><br class="final-break" style="clear: both" /></p>
]]></description>
		<wfw:commentRss>http://www.mindmeld.ws/blog/2009/07/03/groovy-templating/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

