<?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>Rich Internet Applications (RIA) &#187; Events</title>
	<atom:link href="http://www.canoo.com/blog/category/events/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.canoo.com/blog</link>
	<description></description>
	<lastBuildDate>Wed, 18 Jan 2012 14:30:57 +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>Canoo Brings Global Code Retreat to Switzerland</title>
		<link>http://www.canoo.com/blog/2011/11/24/canoo-brings-global-code-retreat-to-switzerland/</link>
		<comments>http://www.canoo.com/blog/2011/11/24/canoo-brings-global-code-retreat-to-switzerland/#comments</comments>
		<pubDate>Thu, 24 Nov 2011 19:49:55 +0000</pubDate>
		<dc:creator>Hamlet</dc:creator>
				<category><![CDATA[Events]]></category>

		<guid isPermaLink="false">http://www.canoo.com/blog/?p=2354</guid>
		<description><![CDATA[<script type="text/javascript">dzone_url = "http://www.canoo.com/blog/2011/11/24/canoo-brings-global-code-retreat-to-switzerland/";</script>Next Saturday, 3rd December, Canoo is sponsoring the Swiss installment of the Global Day of Code Retreat. It&#8217;s being held in Lugano, which is easily reachable from Switzerland or Northern Italy. The event is free, lunch is provided, and you&#8217;ll get a chance to practice your programming skills while taking part in a world-wide event [...]]]></description>
			<content:encoded><![CDATA[<script type="text/javascript">dzone_url = "http://www.canoo.com/blog/2011/11/24/canoo-brings-global-code-retreat-to-switzerland/";</script><p>Next Saturday, 3rd December, Canoo is sponsoring the Swiss installment of the <a href="http://coderetreat.com/global_day.html">Global Day of Code Retreat</a>. It&#8217;s being held in <a href="http://www.juglugano.ch/events/meeting_gdc.html">Lugano</a>, which is easily reachable from Switzerland or Northern Italy. The event is free, lunch is provided, and you&#8217;ll get a chance to practice your programming skills while taking part in a world-wide event that criss-crosses the globe. Sound fun? It will be. Here&#8217;s what you need to know:<br />
<a href="http://www.canoo.com/blog/wp-content/uploads/2011/11/gdcr.png"><img class="aligncenter size-medium wp-image-2355" title="gdcr" src="http://www.canoo.com/blog/wp-content/uploads/2011/11/gdcr-300x176.png" alt="" width="300" height="176" /></a><br />
A code retreat is a day long event where programmers get to practice and hone their craft. The format was created three years ago and has been used and improved regularly since then. During the day we&#8217;ll use <a href="http://en.wikipedia.org/wiki/Conway's_Game_of_Life">Conway&#8217;s Game of Life</a> to practice our design, testing, and pair programming skills. The event has a predefined format and will be facilitated by Canooie <a href="http://twitter.com/hamletdrc">Hamlet D&#8217;Arcy</a>. This is quite different from our <a href="http://hackergarten.net/">Hackergartens</a>, so you may want to read up on the format so you know what to expect. Michael Hunger has an excellent synopsis of <a href="http://www.infoq.com/news/2011/11/global_day_of_code_retreat">Code Retreat up on the InfoQ</a> website.</p>
<p>The originator of the idea is <a href="http://coderetreat.com/">Corey Haines</a> and he will be facilitating the first code retreat of the day in Australia and then flying to Hawaii to also facilitate the last retreat of the day. There is most likely a code retreat in your area, just in case you can&#8217;t make it to Lugano. Check out the map to see where you can go.<br />
<iframe width="640" height="480" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.com/maps/ms?msid=211858429594081017615.0004b0b076e7ed3148f35&amp;msa=0&amp;ie=UTF8&amp;t=m&amp;vpsrc=6&amp;ll=27.683528,-22.5&amp;spn=166.415629,90&amp;z=1&amp;output=embed"></iframe><br />
There are several sponsors for the Code Retreat in Lugano: <a href="http://www.canoo.com/">Canoo</a>, <a href="http://www.exmachina.ch/">Ex Machina</a>, and <a href="http://www.jetbrains.com/">JetBrains</a> to name a few. If you show up then expect to leave with some goodies as well as the free lunch. And please, if you plan on coming then be sure to <a href="http://coderetreat.ning.com/events/global-day-of-code-retreat-in-lugano">register on the website</a> so we can provide enough food and coffee.</p>
<p>See you Saturday!</p>
<script>var dzone_style="2";</script><script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script><div style="float: left; width: 140px; height: 21px; overflow: hidden; position: relative; left: 8px;"><script>//<![CDATA[
reddit_url="http://www.canoo.com/blog/2011/11/24/canoo-brings-global-code-retreat-to-switzerland/";
//]]&gt;
</script><script language="javascript" src="http://reddit.com/button.js?t=1"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.canoo.com/blog/2011/11/24/canoo-brings-global-code-retreat-to-switzerland/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What to Expect at Hackergarten</title>
		<link>http://www.canoo.com/blog/2011/05/12/what-to-expect-at-hackergarten/</link>
		<comments>http://www.canoo.com/blog/2011/05/12/what-to-expect-at-hackergarten/#comments</comments>
		<pubDate>Thu, 12 May 2011 10:57:56 +0000</pubDate>
		<dc:creator>Hamlet</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Hackergarten]]></category>

		<guid isPermaLink="false">http://www.canoo.com/blog/?p=2131</guid>
		<description><![CDATA[<script type="text/javascript">dzone_url = "http://www.canoo.com/blog/2011/05/12/what-to-expect-at-hackergarten/";</script>Hackergarten is on tour again, and in the next few days we have an all day coding event at GeeCON in Krakow (Saturday 14th May) and all night event at GR8 in Copenhagen (Tuesday 17th May). So what is Hackergarten anyway? Hackergarten is a group of people that come together to write open source code. [...]]]></description>
			<content:encoded><![CDATA[<script type="text/javascript">dzone_url = "http://www.canoo.com/blog/2011/05/12/what-to-expect-at-hackergarten/";</script><p><a href="http://hackergarten.net/">Hackergarten</a> is on tour again, and in the next few days we have an all day coding event at <a href="http://2011.geecon.org/">GeeCON in Krakow</a> (Saturday 14th May) and all night event at <a href="http://www.eu2011.gr8conf.org/">GR8 in Copenhagen</a> (Tuesday 17th May). So what is Hackergarten anyway?</p>
<p>Hackergarten is a group of people that come together to write open source code. If you come to Hackergarten, then expect to do some pair programming, learn better how to write code, and make a contribution to the open source world. The idea of the event is to create a hands-on user group, where you don&#8217;t sit an listen to a presentation, but instead you learn through doing and creating. Conferences give people tons of energy and excitement, and here&#8217;s a way to continue your conference experience and make a positive impact on the world while you&#8217;re still amped up from the conference.</p>
<p>Here&#8217;s a run-down of some important aspects of hackergarten:</p>
<ul>
<li><em>there will be coding</em> &#8211; most of your the time is spent pair programming on a small task for an existing project</li>
<li><em>you will submit a patch</em> &#8211; your goal is to write a feature or fix for a project and then submit the patch (or make a commit)</li>
<li><em>there is no agenda</em> &#8211; the session starts with chaos as people suggest coding ideas and naturally from into small teams and groups</li>
<li><em>you don&#8217;t need a laptop</em> &#8211; If you have a computer then please bring it! If you don&#8217;t then come anyway and don&#8217;t worry about it</li>
<li><em>you don&#8217;t need specific skills</em> &#8211; All skills and backgrounds are welcome: beginner to expert, assembler to Scala, and everything in between</li>
<li><em>you can recruit for your open source project</em> &#8211; got an OS project of your own? Come to Hackergarten and convince other people to work on it with you</li>
</ul>
<p>There will be some Hackergarten veterans to help out with the event. We have our own project ideas and can lead some teams if you want.</p>
<p><a href="http://twitter.com/aalmiray">Andres Almiray</a> &#8211; Andres is the lead on the <a href="http://griffon.codehaus.org/">Griffon Framework</a> (among other things) and he&#8217;s always ready to lead people through contributing<br />
<a href="http://twitter.com/breskeby">Rene Groeschke</a> &#8211; Rene is a frequent plugin contributor to the <a href="http://gradle.org/">Gradle build system</a> and will to help people with working on Gradle<br />
<a href="http://twitter.com/aalmiray">Hamlet D&#8217;Arcy</a> &#8211; I am a committer on <a href="http://codenarc.sourceforge.net/">CodeNarc</a> (static analysis for Groovy) and the <a href="http://groovy.codehaus.org/">Groovy language</a>. I have a ton of static analysis rules that are ready to be implemented for Groovy, and just need some help from you.<br />
You &#8211; Got your own project? Please show up and help people contribute!</p>
<p>There is one last important thing: drinks and food are provided. <a href="http://www.canoo.com/">Canoo</a> sponsors Hackergarten (thanks <a href="http://www.canoo.com/">Canoo</a>!), so you&#8217;ll at least be fed and watered.</p>
<p>See you soon!</p>
<script>var dzone_style="2";</script><script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script><div style="float: left; width: 140px; height: 21px; overflow: hidden; position: relative; left: 8px;"><script>//<![CDATA[
reddit_url="http://www.canoo.com/blog/2011/05/12/what-to-expect-at-hackergarten/";
//]]&gt;
</script><script language="javascript" src="http://reddit.com/button.js?t=1"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.canoo.com/blog/2011/05/12/what-to-expect-at-hackergarten/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Catch Canooies Dierk and Hamlet at Devoxx and JAX-W</title>
		<link>http://www.canoo.com/blog/2010/10/27/catch-canooies-dierk-and-hamlet-at-devoxx-and-jax-w/</link>
		<comments>http://www.canoo.com/blog/2010/10/27/catch-canooies-dierk-and-hamlet-at-devoxx-and-jax-w/#comments</comments>
		<pubDate>Wed, 27 Oct 2010 18:33:14 +0000</pubDate>
		<dc:creator>Hamlet</dc:creator>
				<category><![CDATA[Events]]></category>

		<guid isPermaLink="false">http://canoo.com/blog/?p=1577</guid>
		<description><![CDATA[<script type="text/javascript">dzone_url = "http://www.canoo.com/blog/2010/10/27/catch-canooies-dierk-and-hamlet-at-devoxx-and-jax-w/";</script>Good news for conference attendees in November&#8230; I (Hamlet) will be giving a 15-minute quickie at Devoxx on the topic of Groovy Code Generation. The talk is normally a little longer, but most talks can be improved by making them shorter. I&#8217;m sure the 15 minutes will be great fun. Check out the slides for [...]]]></description>
			<content:encoded><![CDATA[<script type="text/javascript">dzone_url = "http://www.canoo.com/blog/2010/10/27/catch-canooies-dierk-and-hamlet-at-devoxx-and-jax-w/";</script><div id="_mcePaste">Good news for conference attendees in November&#8230; I (Hamlet) will be giving a 15-minute quickie at <a href="http://www.devoxx.com">Devoxx</a> on the topic of Groovy Code Generation. The talk is normally a little longer, but most talks can be improved by making them shorter. I&#8217;m sure the 15 minutes will be great fun. Check out the slides for the <a href="http://dl.dropbox.com/u/138156/CodeGeneration_2gx.pdf">longer version here</a>.</div>
<div id="_mcePaste"></div>
<div>If you can&#8217;t make Devoxx, then be sure to catch fellow Canooie and Language Guru Dierk Koenig at <a href="http://jax.de/">W-JAX</a> during the same time. His slots are all in German, but the code samples will surely be in Groovy.</div>
<div></div>
<div id="_mcePaste">For those interested here is the abstract for my talk. If you run or help organize a JUG and want a speaker then please contact me. I&#8217;m excited to travel around in 2011, see more of the world, and meet great people.</div>
<div></div>
<div><strong>Code Generation on the JVM: Writing Code that Writes Code</strong></div>
<div id="_mcePaste">&#8220;The Pragmatic Programmer&#8221; admonished us all to &#8220;write code that writes code&#8221;: use code generators to increase productivity and avoid duplication. Today&#8217;s language communities have clearly caught on, as more and more frameworks generate code at compile time: AST Transforms, Project Lombok, Spring Roo, and more. <span style="font-size: 13.3333px;">This session reviews these approaches including examples of how and why we&#8217;d want to do this. Come see the newest Groovy language tools, look in-depth at production deployed AST Transforms, and view libraries based on these techniques.</span></div>
<script>var dzone_style="2";</script><script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script><div style="float: left; width: 140px; height: 21px; overflow: hidden; position: relative; left: 8px;"><script>//<![CDATA[
reddit_url="http://www.canoo.com/blog/2010/10/27/catch-canooies-dierk-and-hamlet-at-devoxx-and-jax-w/";
//]]&gt;
</script><script language="javascript" src="http://reddit.com/button.js?t=1"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.canoo.com/blog/2010/10/27/catch-canooies-dierk-and-hamlet-at-devoxx-and-jax-w/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hackergarten â€“ Mockito, Spock, and Gradle Hackfest this Friday</title>
		<link>http://www.canoo.com/blog/2010/10/26/hackergarten-mockito-spock-and-gradle-hackfest-this-friday/</link>
		<comments>http://www.canoo.com/blog/2010/10/26/hackergarten-mockito-spock-and-gradle-hackfest-this-friday/#comments</comments>
		<pubDate>Tue, 26 Oct 2010 19:45:10 +0000</pubDate>
		<dc:creator>Hamlet</dc:creator>
				<category><![CDATA[Events]]></category>

		<guid isPermaLink="false">http://canoo.com/blog/?p=1575</guid>
		<description><![CDATA[<script type="text/javascript">dzone_url = "http://www.canoo.com/blog/2010/10/26/hackergarten-mockito-spock-and-gradle-hackfest-this-friday/";</script>Another month has past and it is once again time for Hackergarten. Last month we came together and managed to write 4 new static analysis rules for the CodeNarc project, a static analysis tool for Groovy similar to FindBugs for Java. We learned a lot about Groovy AST and had a great time. You should [...]]]></description>
			<content:encoded><![CDATA[<script type="text/javascript">dzone_url = "http://www.canoo.com/blog/2010/10/26/hackergarten-mockito-spock-and-gradle-hackfest-this-friday/";</script><p>Another month has past and it is once again time for <a href="http://www.hackergarten.net">Hackergarten</a>.</p>
<p>Last month we came together and managed to write 4 new static analysis rules for the CodeNarc project, a static analysis tool for Groovy similar to FindBugs for Java. We learned a lot about Groovy AST and had a great time. You should have come by!</p>
<p>This month there are two groups:</p>
<ul>
<li><a href="http://www.gradle.org">Gradle</a> &#8211; At the very first Hackergarten we released the &#8220;Announce&#8221; Plugin for Gradle. Now that Twitter has updated their security layer, we need to rework the plugin to use OAUTH. If you want to learn about Gradle or OAUTH then come by and lend a hand. Show up with your laptop (or don&#8217;t)</li>
<li><a href="http://www.mockito.org">Mockito</a> and Spock &#8211; Mockito is a mock object framework for Java, and Spock is a testing framework for Groovy. We&#8217;re going to compare the two projects against each other and create some new &#8220;developer cheatsheets&#8221; for both projects. We aren&#8217;t fully decided, but it will probably be a quick reference that other developers can hang by their monitor as a guide to the projects.</li>
<li>Your Project &#8211; Got an idea? Bring it. We need project ideas: Java, Groovy, .NET, JVM, whatever.</li>
</ul>
<p>Lastly:</p>
<ul>
<li>Halloween &#8211; There is a bar in Heuwaage giving free drinks to those in costume celebrating Halloween. I am bringing my sumo wrestler outfit, and I encourage you to bring your costume. Surely we will break by 10 PM to go celebrate, possibly earlier.</li>
</ul>
<p>See you Friday!</p>
<script>var dzone_style="2";</script><script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script><div style="float: left; width: 140px; height: 21px; overflow: hidden; position: relative; left: 8px;"><script>//<![CDATA[
reddit_url="http://www.canoo.com/blog/2010/10/26/hackergarten-mockito-spock-and-gradle-hackfest-this-friday/";
//]]&gt;
</script><script language="javascript" src="http://reddit.com/button.js?t=1"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.canoo.com/blog/2010/10/26/hackergarten-mockito-spock-and-gradle-hackfest-this-friday/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Code Generation on the JVM: Video and Slides</title>
		<link>http://www.canoo.com/blog/2010/07/14/code-generation-on-the-jvm-video-and-slides/</link>
		<comments>http://www.canoo.com/blog/2010/07/14/code-generation-on-the-jvm-video-and-slides/#comments</comments>
		<pubDate>Wed, 14 Jul 2010 12:59:04 +0000</pubDate>
		<dc:creator>Hamlet</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[hamlet]]></category>

		<guid isPermaLink="false">http://canoo.com/blog/?p=1380</guid>
		<description><![CDATA[<script type="text/javascript">dzone_url = "http://www.canoo.com/blog/2010/07/14/code-generation-on-the-jvm-video-and-slides/";</script>Two weeks ago I spoke at the Chech Java User Group (CZJUG) on the topic of &#8220;Code Generation on the JVM&#8221;. Some of the technologies covered are Lombok, Groovy, GContracts, Spock, AST Transformations, Spring Roo, and other fun stuff. The slides are available at: http://github.com/HamletDRC/presentations/blob/master/asttransformations/asttransforms_czjug.pdf As a fun aside: my Ubuntu laptop went crazy the night [...]]]></description>
			<content:encoded><![CDATA[<script type="text/javascript">dzone_url = "http://www.canoo.com/blog/2010/07/14/code-generation-on-the-jvm-video-and-slides/";</script><p>Two weeks ago I spoke at the Chech Java User Group (CZJUG) on the topic of &#8220;Code Generation on the JVM&#8221;. Some of the technologies covered are Lombok, Groovy, GContracts, Spock, AST Transformations, Spring Roo, and other fun stuff.</p>
<p>The slides are available at: <a href="http://github.com/HamletDRC/presentations/blob/master/asttransformations/asttransforms_czjug.pdf">http://github.com/HamletDRC/presentations/blob/master/asttransformations/asttransforms_czjug.pdf</a></p>
<p>As a fun aside: my Ubuntu laptop went crazy the night before and I spent all day before the JUG reloading Linux on my vacation. In the end, I had to switch to my wife&#8217;s Mac to do the presentation and live coding. I got the Macintosh fully configured and, during the 1st presenter, realized that I had no VGA output on the Macintosh. Oh geez. The final solution was to share my desktop, have an audience member VNC to my wife&#8217;s machine, and project the desktop from the audience. It worked and I&#8217;m glad I didn&#8217;t have to give the whole talk in chalk on the blackboard (although that would have been a fun challenge).</p>
<p>Enjoy the video!</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="385" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/hA1wwBbFMcU&amp;hl=en_US&amp;fs=1" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="480" height="385" src="http://www.youtube.com/v/hA1wwBbFMcU&amp;hl=en_US&amp;fs=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<script>var dzone_style="2";</script><script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script><div style="float: left; width: 140px; height: 21px; overflow: hidden; position: relative; left: 8px;"><script>//<![CDATA[
reddit_url="http://www.canoo.com/blog/2010/07/14/code-generation-on-the-jvm-video-and-slides/";
//]]&gt;
</script><script language="javascript" src="http://reddit.com/button.js?t=1"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.canoo.com/blog/2010/07/14/code-generation-on-the-jvm-video-and-slides/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hackergarten Welcomes Jazoon on Wednesday Night</title>
		<link>http://www.canoo.com/blog/2010/05/31/hackergarten-welcomes-jazoon-on-wednesday-night/</link>
		<comments>http://www.canoo.com/blog/2010/05/31/hackergarten-welcomes-jazoon-on-wednesday-night/#comments</comments>
		<pubDate>Mon, 31 May 2010 08:52:34 +0000</pubDate>
		<dc:creator>Hamlet</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Hackergarten]]></category>
		<category><![CDATA[Jazoon]]></category>

		<guid isPermaLink="false">http://canoo.com/blog/?p=1311</guid>
		<description><![CDATA[<script type="text/javascript">dzone_url = "http://www.canoo.com/blog/2010/05/31/hackergarten-welcomes-jazoon-on-wednesday-night/";</script>If you are reading this then you are quite likely a Jazoon 2010 attendee looking for more information about the mysterious &#8220;Hackergarten Jazoon&#8221; session blocked in your Wednesday night conference schedule. Welcome Aboard! Here is what you can expect: 1. A room will be announced when we know it 2. Drinks and food will be [...]]]></description>
			<content:encoded><![CDATA[<script type="text/javascript">dzone_url = "http://www.canoo.com/blog/2010/05/31/hackergarten-welcomes-jazoon-on-wednesday-night/";</script><div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">If you are reading this then you are quite likely a Jazoon 2010 attendee looking for more information about the mysterious &#8220;Hackergarten Jazoon&#8221; session blocked in your Wednesday night conference schedule. Welcome Aboard! Here is what you can expect:</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">1. A room will be announced when we know it</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">2. Drinks and food will be provided by Canoo</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">3. During the evening, everyone will try to contribute in some way to an open source software project.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Here are some of the contributions we made at past Hackergartens:</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">* A Twitter plugin for the Gradle build system</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">* A Growl/Notification plugin for Gradle</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">* Several Swing related plugins for the Griffon application framework</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">* A Grails Elastic Search plugin</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">* An inhancement to the Groovy language to aid logging</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">We have several ideas for projects to work on, but please feel free to show up with your own or leave a comment here with your idea. The past events have been Groovy focused, but Java, Scala, Clojure or whatever are all perfect.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">As people show up we Canooies will help you find other people with similar interests. Once you have 2-6 people in your group then it is up to you to start working. In the past, the most effective project groups are around 5-6 people, which creates 2 or 3 pair programming teams. Any larger than that and you spend too much time organizing yourselves. Near the end of the night you should wrap up your work and submit a patch to the project. Canooies are around to help you with patches, version control, tools, expertise, or anything else you might need.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Here are some of our project ideas, but please leave a comment here with your own! And remember, you have at most 4 hours so think small. There is no project too small&#8230; a 2 line patch is the Open Source developer&#8217;s equivalent of a CHF 10 bottle of wine. It might not be appropriate to the current meal, but it is almost always appreciated.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Griffon-Hudson Plugin  similar to the Grails plugin &#8211; http://wiki.hudson-ci.org/display/HUDSON/Grails+Plugin</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Griffon Substance Look and Feel Plugin</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Groovy Static Analysis Rules &#8211; Similar to Find Bugs but for Groovy</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Groovy @Log Transformation extensions &#8211; There is some small work to do in Groovy Core</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Find Bugs statis analysis rules for Java</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Gradle Find Bugs plugin</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Gradle JavaNCSS plugin</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Post your ideas below, and see you on Wednesday.</div>
<p>If you are reading this then you are quite likely a Jazoon 2010 attendee looking for more information about the mysterious &#8220;<a href="http://hackergarten.net/">Hackergarten</a> Jazoon&#8221; session blocked in your Wednesday night conference schedule. Welcome Aboard! Here is what you can expect:</p>
<ol>
<li>A room will be announced when we know it</li>
<li>Drinks and food will be provided by Canoo</li>
<li>During the evening, everyone will try to contribute in some way to an open source software project.</li>
</ol>
<p>Here are some of the contributions we made at past Hackergartens:</p>
<ul>
<li>A Twitter plugin for the Gradle build system</li>
<li>A Growl/Notification plugin for Gradle</li>
<li>Several Swing related plugins for the Griffon application framework</li>
<li>A Grails Elastic Search plugin</li>
<li>An inhancement to the Groovy language to aid logging</li>
</ul>
<p>We have several ideas for projects to work on, but please feel free to show up with your own or leave a comment here with your idea. The past events have been Groovy focused, but Java, Scala, Clojure or whatever are all perfect. A few of the speakers have said they would attend and Griffon project lead Andres Almiray will be there. Pairing with an expert is a wonderful way to learn.</p>
<p>As people show up we Canooies will help you find other people with similar interests. Once you have 2-6 people in your group then it is up to you to start working. In the past, the most effective project groups are around 5-6 people, which creates 2 or 3 pair programming teams. Any larger than that and you spend too much time organizing yourselves. Near the end of the night you should wrap up your work and submit a patch to the project. Canooies are around to help you with patches, version control, tools, expertise, or anything else you might need.</p>
<p>Here are some of our project ideas, but please leave a comment here with your own! And remember, you have at most 4 hours so think small. There is no project too small&#8230; a 2 line patch is the Open Source developer&#8217;s equivalent of a CHF 10 bottle of wine. It might not be appropriate to the current meal, but it is almost always appreciated.</p>
<ul>
<li>Griffon-Hudson Plugin similar to the <a href="http://wiki.hudson-ci.org/display/HUDSON/Grails+Plugin">Grails plugin</a></li>
<li><a href="http://wiki.hudson-ci.org/display/HUDSON/Grails+Plugin"></a>Griffon Substance Look and Feel Plugin</li>
<li>Groovy Static Analysis Rules &#8211; Similar to Find Bugs but for Groovy</li>
<li>Groovy @Log Transformation extensions &#8211; There is some small work to do in Groovy Core</li>
<li>Find Bugs statis analysis rules for Java</li>
<li>Gradle Find Bugs plugin</li>
<li>Gradle JavaNCSS plugin</li>
</ul>
<p>Post your ideas below, and see you on Wednesday.</p>
<script>var dzone_style="2";</script><script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script><div style="float: left; width: 140px; height: 21px; overflow: hidden; position: relative; left: 8px;"><script>//<![CDATA[
reddit_url="http://www.canoo.com/blog/2010/05/31/hackergarten-welcomes-jazoon-on-wednesday-night/";
//]]&gt;
</script><script language="javascript" src="http://reddit.com/button.js?t=1"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.canoo.com/blog/2010/05/31/hackergarten-welcomes-jazoon-on-wednesday-night/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>GR8 Europe Conference Wrap-Up</title>
		<link>http://www.canoo.com/blog/2010/05/24/gr8-europe-conference-wrap-up/</link>
		<comments>http://www.canoo.com/blog/2010/05/24/gr8-europe-conference-wrap-up/#comments</comments>
		<pubDate>Mon, 24 May 2010 11:32:47 +0000</pubDate>
		<dc:creator>Hamlet</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[Hackergarten]]></category>
		<category><![CDATA[hamlet]]></category>
		<category><![CDATA[Speakers/Sessions]]></category>

		<guid isPermaLink="false">http://canoo.com/blog/?p=1304</guid>
		<description><![CDATA[<script type="text/javascript">dzone_url = "http://www.canoo.com/blog/2010/05/24/gr8-europe-conference-wrap-up/";</script>Last week was the European GR8 Conference for Groovy, Grails, Griffon, and other GR8 technologies. Besides sending four attendees, Canoo had two speakers: Andres Almiray for &#8220;Flying with Griffon&#8221; and Hamlet D&#8217;Arcy for &#8220;Code Generation in Groovy&#8220;. As if that weren&#8217;t enough, Canoo also sponsored a Hackergarten night, where patches to Groovy, Grails, Griffon, and [...]]]></description>
			<content:encoded><![CDATA[<script type="text/javascript">dzone_url = "http://www.canoo.com/blog/2010/05/24/gr8-europe-conference-wrap-up/";</script><p>Last week was the European <a href="http://eu.gr8conf.org/eu2010/">GR8 Conference</a> for Groovy, Grails, Griffon, and other GR8 technologies. Besides sending four attendees, Canoo had two speakers: Andres Almiray for &#8220;<a href="http://eu.gr8conf.org/eu2010/talk/griffon">Flying with Griffon</a>&#8221; and Hamlet D&#8217;Arcy for &#8220;<a href="http://eu.gr8conf.org/eu2010/talk/ast">Code Generation in Groovy</a>&#8220;. As if that weren&#8217;t enough, Canoo also sponsored a <a href="http://hackergarten.net/">Hackergarten</a> night, where patches to Groovy, Grails, Griffon, and Gradle were all created. At the end of the event, a few of us Canooies got together and wrote about our favorite parts, the parts that impressed us most.</p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Detlef Brendle</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Spock &#8211; Smarter Testing with Spock by Peter Niederwieser</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Peter presented the Spock framework. Inspired by Junit and other testing framework, Spock brings the strength of Groovy into testing. A groovy DSL let testcases be more human readable and can even help in discussions with non-techie project members such as business analysts or managers. Data-driven test specifications let developers inject a data table (loaded from any data source such as an excel file, a db table or others) into tests in order to separate the test from its data. Spock testcases are Junit tests and therefore nothing special needs to be done within the IDE or within the CI build system. If a testcase fails Spock provides a much better reporting output than Junit. It gives a developer hints what have went wrong. Conclusion:</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Detlef</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Gradle &#8211; A better way to Build by Hans Dockter</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Hans talked about its baby Gradle and how Gradle can help to ease the build system of any Java Project. The strength of Gradle is its declarative way of defining the &#8216;What&#8217; to do in order to build and leave the &#8216;How&#8217; to the build system itself. Even things like task dependencies (e.g. to execute Tests the sources must have been built before) are left to Gradle. Parallel Test execution is also a built-in feature. This will soon be extended to parallel build execution for multi project builds.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Conclusion : It is definately something to keep in mind when thinking about changing its own build setup.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Sven</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Groovy: to Infinity and Beyond! by Guillaume Laforge</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Guillaume presented the most interesting bits in the evolution of Groovy from version 1.5 up to the current 1.7.x and what they would like to put in the future versions of Groovy. Especially for Groovy newbies it was interesting to see what Groovy provided in it&#8217;s first version like generated getters and setters for bean properties and how each version provided new value such as support for Java 5 features like annotations, generics and enums in Groovy 1.5 for example. AST transformations such as @Immutable and @Delegate, parallel assignments, Grape and improved performance in 1.6, 1.7 brought anonymous inner and nested classes, power asserts and ASTBuilder.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">One of the latest additions is that annotations can take a closure as argument laying the foundation for fantastic things like gcontract, Design by Contract (TM) for Groovy, which rose big interest. Unfortunately there was no exclusive session about gcontract, but Hamlet D&#8217;Arcy came to the rescue and explained the most important things about it in his very interesting and enjoyable sesssion &#8216;Groovy Compiler Metaprogramming&#8217;. Guillaume also gave an outlook about potential new features in version 1.8 such as annotations beyond Java 5, structural pattern matching and parser combinators. The intersting thing I found was when we discovered that &#8216;withDefault()&#8217; of a Map actually modifies the map even when it is made immutable:</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">def m = [:].withDefault { k -&gt; &#8216;default&#8217;}.asImmutable()</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">assert m.size() == 0</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">m.get(1)</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">assert m.size() == 1</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">As someone relatively new to groovy I find AST transformations extremely intersting and will definitely write one at the next Hackergarten event in Basel.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Groovy on the way to success (Philippe Delebarre, Raffaele Cigni, European Patent Office)</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">In the keynote Philippe and Raffaele gave an overview on how the European Patent Office works and explained the difficulties of processing 140&#8217;000 patent applications per year. Since patent applications have a rather unstructured format it is very challenging to process them in an automated way. Currently this is done by a legacy system mainly consisting of HOST components and REXX scripts.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Two attempts to migrate the old system with a new one failed. The latest attempt with a so called Data Flow Platform, a process server, was sucessful. With DFP and openrules business rules are implemented using a groovy based DSL. This is done by a business person together with a developer based upon the users&#8217;s and the business&#8217;s needs.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">An eye opener for me was how a business oriented DSL opens up completely new perspectives on pair programming and thus can contribute so much to the success of a project. In this project this was the way to bring Business and IT in direct contact which is so difficult in many larger companies. Philippe and Raffaele made the experience that this led to a much faster development cycle and in addition they rose the interest of other business domains in the European Patent Office to use this approach.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Sven &#8211; Hackergarten</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">My Hackergarten part:</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Hackergarten: Devloping a PMD plugin for gradle</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">With Hans Dockter, the gradle expert our team had the perfect foundation to takle this goal. We decided to go forward in small steps. Since we knew there was a ant task for pmd we started with a small tiny gradle script with one task that used the ant builder to call the pmd ant task. This sounds simple but it turned out to be not. To use pmd we needed to put a dependency on it in the gradle script. This caused to download many many jars on which pmd seems to depend on and which also caused ClassCastExceptions due to classloader conflicts.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">After having resolved them Hans showed us how to bring this functionality in the form of a plugin by putting it in it&#8217;s own file(s). Then we added the most important pmd features just by looking at what the pmd ant task provides.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">The current state is almost ready to be released. Hans still needed to make a change on handling filesets. The next step is to get rid of the ant builder usage and rather use the PMD api directly, most likely by looking at how the ant task is implemented.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">In the middle of our development work we learned that Rene Gröschke had already developed a findbugs and pmd plugin for grade a week. We contacted him and will merge the two versions.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">For me it was a great pleasure to work in this team in the Hackergarten because it was so productive. Everyone could contribute and learn at the same time.</div>
<div class="wp-caption alignright" style="width: 118px"><a href="http://canoo.com/whoiswho.html"><img title="Detlef" src="http://canoo.com/images/people/detlef_brendle.gif" alt="Detlef" width="108" height="89" /></a><p class="wp-caption-text">Detlef Brendle</p></div>
<h3><a href="http://eu.gr8conf.org/eu2010/talk/spock">Spock &#8211; Smarter Testing with Spock by Peter Niederwieser</a></h3>
<p><a href="http://eu.gr8conf.org/eu2010/speaker/show/10">Peter</a> presented the <a href="http://code.google.com/p/spock/">Spock Framework</a>. Inspired by Junit and other testing framework, Spock brings the strength of Groovy into testing. A groovy DSL lets test cases be more human readable and more structured. It can even help in discussions with non-techie project members such as business analysts or managers. Also, data-driven test specifications let developers inject a data table (loaded from any data source such as an excel file, a db table or others) into tests in order to separate the test from its data. Spock testcases are Junit tests and therefore nothing special needs to be done within the IDE or within the CI build system. If a test case fails Spock provides a much better reporting output than Junit. It gives a developer hints what have went wrong. Conclusion: The Spock Framework is something to consider on our next project.</p>
<h3><a href="http://eu.gr8conf.org/eu2010/talk/groovy">Groovy: to Infinity and Beyond! by Guillaume Laforge</a></h3>
<div class="wp-caption alignright" style="width: 118px"><a href="http://canoo.com/whoiswho.html"><img title="Sven Ehrke" src="http://canoo.com/images/people/sven_ehrke.gif" alt="Sven Ehrke" width="108" height="89" /></a><p class="wp-caption-text">Sven Ehrke</p></div>
<p><a href="http://eu.gr8conf.org/eu2010/speaker/show/7">Guillaume</a> presented the most interesting bits in the evolution of Groovy from version 1.5 up to the current 1.7.x and what they would like to put in the future versions of Groovy. Especially for Groovy newbies it was interesting to see what Groovy provided in it&#8217;s first version like generated getters and setters for bean properties and how each version provided new value such as support for Java 5 features like annotations, generics and enums in Groovy 1.5. Then in 1.6 we got AST transformations such as @Immutable and @Delegate, parallel assignments, Grape and improved performance. 1.7 brought anonymous inner and nested classes, power asserts and ASTBuilder.</p>
<p>One of the latest additions is that annotations can take a closure as argument laying the foundation for fantastic things like <a href="http://github.com/andresteingress/gcontracts">GContracts</a>, Design by Contract (TM) for Groovy, which arose big interest. Unfortunately there was no exclusive session about gcontract, but Hamlet D&#8217;Arcy came to the rescue and explained the most important things about it in his very interesting and enjoyable sesssion &#8216;Groovy Code Generation&#8217;. Guillaume also gave an outlook about potential new features in version 1.8 such as annotations beyond Java 5, structural pattern matching and parser combinators. The intersting thing I found was when we discovered that &#8216;withDefault()&#8217; of a Map actually modifies the map even when it is made immutable:<br />
<pre><pre>&nbsp;&nbsp;def m = [:].withDefault { k -&amp;gt; &#039;default&#039;}.asImmutable()
&nbsp;&nbsp;assert m.size() == 0
&nbsp;&nbsp;m.get(1)
&nbsp;&nbsp;assert m.size() == 1</pre></pre><br />
Also, as someone relatively new to groovy I find AST transformations extremely intersting and will definitely write one at the next Hackergarten event in Basel.</p>
<h3><a href="http://eu.gr8conf.org/eu2010/talk/groovy-goodness">Groovy Goodness &#8211; Exploring the Gems in </a><a href="http://eu.gr8conf.org/eu2010/talk/groovy-goodness">Groovy by Mr. Haki</a></h3>
<div class="wp-caption alignright" style="width: 118px"><a href="http://canoo.com/whoiswho.html"><img title="Hamlet DArcy" src="http://canoo.com/images/people/hamlet.jpg" alt="Hamlet DArcy" width="108" height="89" /></a><p class="wp-caption-text">Hamlet D&#39;Arcy</p></div>
<p><a href="http://eu.gr8conf.org/eu2010/speaker/show/3">Mr. Haki</a>, aka Hubert K. Ikkink, stood in front of the audience for a 90 minute live coding session that wowed everyone. I filled a page of my notebook with new Groovy idioms that I did not know existed. For example, did you know you can use Lists as a <a href="http://mrhaki.blogspot.com/2009/09/groovy-goodness-using-lists-and-maps-as.html">replacement for constructors</a>:<br />
<pre>&nbsp;&nbsp;URL url = [&#039;http&#039;, &#039;www.mrhaki.com&#039;, 80, &#039;/&#039;] as URL</pre><br />
Me neither! I had quite a few new tidbits like these as well.</p>
<p>It&#8217;s great to see a live coding session and Mr. Haki did it with almost no written notes. Bravo. As a Groovy developer, the <a href="http://mrhaki.blogspot.com/">Groovy Goodness</a> blog is a great resource that I use all the time for reference. It was fun and informative to see it live.</p>
<h3><a href="http://eu.gr8conf.org/eu2010/talk/gradle">Gradle &#8211; A better way to Build by Hans Dockter</a></h3>
<div class="wp-caption alignright" style="width: 118px"><a href="http://canoo.com/whoiswho.html"><img title="Detlef Brendle" src="http://canoo.com/images/people/detlef_brendle.gif" alt="Detlef Brendle" width="108" height="89" /></a><p class="wp-caption-text">Detlef Brendle</p></div>
<p>Hans talked about his baby <a href="http://www.gradle.org/">Gradle</a> and how Gradle can help to ease the build system of any Java Project. The strength of Gradle is its declarative way of defining the &#8216;What&#8217; to do in order to build and leave the &#8216;How&#8217; to the build system itself. Even things like task dependencies (e.g. to execute Tests the sources must have been built before) are left to Gradle. Parallel Test execution is also a built-in feature. This will soon be extended to parallel build execution for multi project builds.</p>
<p>Build system sessions can sometimes be boring, but Hans spent nearly all the session writing build scripts live, showing how quickly new build requirements can be incorporated into an existing build. His focus was on showing how a rich project domain model and a good front end scripting language enable you to get the build you need, not the build some other team has dictated to you.</p>
<p>Conclusion : It is definately something to keep in mind when thinking about changing to a new build tool.</p>
<h3><a href="http://eu.gr8conf.org/eu2010/speaker/show/13">Groovy on the way to success by Philippe Delebarre, Raffaele Cigni, European Patent Office</a></h3>
<div class="wp-caption alignright" style="width: 118px"><a href="http://canoo.com/whoiswho.html"><img title="Sven Ehrke" src="http://canoo.com/images/people/sven_ehrke.gif" alt="Sven Ehrke" width="108" height="89" /></a><p class="wp-caption-text">Sven Ehrke</p></div>
<p>In the keynote Philippe and Raffaele gave an overview on how the European Patent Office works and explained the difficulties of processing 140,000 patent applications per year. Since patent applications have an unstructured format it is very challenging to process them in an automated way. Currently this is done by a legacy system mainly consisting of HOST components and REXX scripts. Two attempts to migrate the old system with a new one failed. The latest attempt with a so called Data Flow Platform, a process server, was sucessful. With DFP and openrules business rules are implemented using a groovy based DSL. This is done by a business person together with a developer based upon the users&#8217;s and the business&#8217;s needs.</p>
<p>An eye opener for me was how a business oriented DSL opens up completely new perspectives on pair programming (a BA and a developer pairing together) and thus can contribute so much to the success of a project. In this project this was the way to bring Business and IT in direct contact which is so difficult in many larger companies. Philippe and Raffaele made the experience that this led to a much faster development cycle and in addition they rose the interest of other business domains in the European Patent Office to use this approach.</p>
<h3><a href="http://eu.gr8conf.org/eu2010/talk/griffon">Flying with Griffon by Andres Almiray</a></h3>
<div class="wp-caption alignright" style="width: 118px"><a href="http://canoo.com/whoiswho.html"><img title="Hamlet DArcy" src="http://canoo.com/images/people/hamlet.jpg" alt="Hamlet DArcy" width="108" height="89" /></a><p class="wp-caption-text">Hamlet D&#39;Arcy</p></div>
<p>If you think including a co-worker&#8217;s <a href="http://griffon.codehaus.org/">Grails-like RIA framework</a> session in the &#8220;best of&#8221; wrap up is unfair, then you must not have seen the session! Andres built a full Twitter client live starting with nothing and using only Griffon and the standard plugins. It was runnable as an applet, a JNLP webstart, or a traditional desktop application. It had a rich data grid that competes evenly with the FlashVM alternatives, and the business/component widgets are top notch.</p>
<p>The time when Griffon really impressed was during the extended question and answer. Every question was answered with a &#8220;yes, there is a plugin for that&#8221; and a live demo. Need an executable installer or a Mac .dmg file? Andes typed:<br />
<pre>&nbsp;&nbsp;griffon install-plugin installer</pre><br />
to install the functionality. Want to use CSS styling in your components?<br />
<pre style="font: normal normal normal 12px/18px Consolas, Monaco, 'Courier New', Courier, monospace;">&nbsp;&nbsp;griffon install-plugin css-builder</pre></p>
<div>The best part was the email he sent live with 5 minutes left in the presentation announcing the release of Griffon 0.3.1. I knew Andres was up late the night before hacking Griffon code, but that isn&#8217;t unusual. To see a software release live on stage was a complete surprise. Good job, Andres.</div>
<script>var dzone_style="2";</script><script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script><div style="float: left; width: 140px; height: 21px; overflow: hidden; position: relative; left: 8px;"><script>//<![CDATA[
reddit_url="http://www.canoo.com/blog/2010/05/24/gr8-europe-conference-wrap-up/";
//]]&gt;
</script><script language="javascript" src="http://reddit.com/button.js?t=1"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.canoo.com/blog/2010/05/24/gr8-europe-conference-wrap-up/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Canoo and Friends Release Open Source Griffon Plugins at Hackergarten</title>
		<link>http://www.canoo.com/blog/2010/05/14/canoo-and-friends-release-open-source-griffon-plugins-at-hackergarten/</link>
		<comments>http://www.canoo.com/blog/2010/05/14/canoo-and-friends-release-open-source-griffon-plugins-at-hackergarten/#comments</comments>
		<pubDate>Fri, 14 May 2010 14:05:06 +0000</pubDate>
		<dc:creator>Hamlet</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[griffon]]></category>
		<category><![CDATA[Hackergarten]]></category>

		<guid isPermaLink="false">http://canoo.com/blog/?p=1293</guid>
		<description><![CDATA[<script type="text/javascript">dzone_url = "http://www.canoo.com/blog/2010/05/14/canoo-and-friends-release-open-source-griffon-plugins-at-hackergarten/";</script>Once again a group of Canooies and Friends joined together on a Friday night to write open source code and contribute back to the software community. By any measure, the April &#60;a href=&#8221;http://hackergarten.net/&#8221;&#62;Hackergarten&#60;/a&#62; was a large success! The group developed and released 3 Plugins to the Griffon Framework, an open source Groovy and Swing desktop [...]]]></description>
			<content:encoded><![CDATA[<script type="text/javascript">dzone_url = "http://www.canoo.com/blog/2010/05/14/canoo-and-friends-release-open-source-griffon-plugins-at-hackergarten/";</script><div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Once again a group of Canooies and Friends joined together on a Friday night to write open source code and contribute back to the software community. By any measure, the April &lt;a href=&#8221;http://hackergarten.net/&#8221;&gt;Hackergarten&lt;/a&gt; was a large success!</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">The group developed and released 3 Plugins to the Griffon Framework, an open source Groovy and Swing desktop application framework.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">A recent Friday night</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">3 plugins were released:</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">JTreeMap &#8211; provides a JTreeMap component.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Notify &#8211; integrates desktop announcements via lib-notify (Ubuntu), Snarl (Windows), Growl (MacOSX).</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Oxbow &#8211; provides a TaskDialog component</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">The 4th plugin (DockingFrames) required a bit more of work than expected, however the team will be making a release soon.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Project Lead (and Canooie) Andres Almiray</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">I learned a lot about griffon plugin system. never thought how easy</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">plugin developement for griffon is. learned some more stuff about git</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">and about using the intellij idea with griffon. regards,</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">René Groeschke</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">At Hackergarten I learned how easy, and fun, the development of a standalone application can be using griffon.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">In just a few steps you are able to get something working, avoiding the painful process of setting up a build tool.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">I liked the use of the pomodoro technique during the evening, when used in team it helps avoiding that only one developer is doing all the steering.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Francesco Durbin</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">It&#8217;s amazing to see what you can achieve spending just a few hours in</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">hackergarten: Before the last event griffon was completely unknown to me -</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">now I am an official committer of that project. And besides that I had a</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">great evening with beer and pizza and some nice people.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Christoph Lipp</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">The second Hackergarten was great! Not only did I learn Griffon, I had the</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">best teacher in the world, Griffon project lead Andres Almiray himself!</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Working together with such talented people, as Hackergarten brings</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">together, is sheer joy. Actually contributing to the open source</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">community, seeing your stuff used by others, is just cream on top! I can&#8217;t</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">wait until the next Hackergarten!</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Per Junel</div>
<p>Once again a group of Canooies and Friends joined together on a Friday night to write open source code and contribute back to the software community. By any measure, the April <a href="http://hackergarten.net/">Hackergarten</a> was a large success!</p>
<p>The group developed and released 3 Plugins to the <a href="http://griffon.codehaus.org/">Griffon Framework</a>, an open source Groovy and Swing desktop application framework. The plugins were:</p>
<ul>
<li><a href="http://griffon.codehaus.org/JtreeMap+Plugin">JTreeMap</a> &#8211; An interesting take on tree visualizations based around the JTreeMap component.</li>
<li><a href="http://griffon.codehaus.org/Notify+Plugin">Notify</a> &#8211; A perennial hackergarten favorite, this adds nice alpha blended desktop announcements to Ubuntu, Windows, and MacOSX.</li>
<li><a href="http://griffon.codehaus.org/Oxbow+Plugin">Oxbow</a> &#8211; A mature project to standardize common task dialogs, an area Microsoft excels in but Java is just catching up with.</li>
</ul>
<p>We also got a good start on a 4th plugin (<a href="http://dock.javaforge.com/">DockingFrames</a>), but there was just too much work to do and we&#8217;ll try to finish and release in the next few weeks.</p>
<p>Griffon Project Lead (and Canooie) <a href="http://www.jroller.com/aalmiray/">Andres Almiray</a> already <a href="http://www.jroller.com/aalmiray/entry/hackergarten_2_griffon">blogged his thoughts</a> about the night. Here is what some other participants are saying:</p>
<p><img class="alignleft size-thumbnail wp-image-1294" title="Rene" src="http://canoo.com/blog/wp-content/uploads/2010/05/ich-150x150.jpg" alt="Rene" width="63" height="63" />I learned a lot about Griffon plugin system. never thought how easy plugin developement for Griffon is. Also learned some more stuff about git and about using Intellij IDEA with griffon.<br />
<a href="http://twitter.com/breskeby">Rene Groeschke</a></p>
<p><img class="alignright" src="http://canoo.com/images/people/francesco_durbin.jpg" alt="" width="86" height="71" /></p>
<p>At Hackergarten I learned how easy and fun the development of a standalone application can be using Griffon. In just a few steps you are able to get something working, avoiding the painful process of setting up a build tool. I liked the use of the pomodoro technique during the evening, when used in team it helps avoiding that only one developer is doing all the steering.<br />
Francesco Durbin</p>
<p><img class="alignleft" src="http://canoo.com/images/people/christoph_lipp.jpg" alt="" width="86" height="71" />It&#8217;s amazing to see what you can achieve spending just a few hours in hackergarten: Before the last event Griffon was completely unknown to me &#8211; now I am an official contributor of that project. And besides that I had a great evening with beer and pizza and some nice people.<br />
Christoph Lipp</p>
<p><img class="alignright" src="http://canoo.com/images/people/per.jpg" alt="" width="86" height="71" />The second Hackergarten was great! Not only did I learn Griffon, I had the best teacher in the world, project lead Andres Almiray himself! Working together with such talented people, as Hackergarten brings together, is sheer joy. Actually contributing to the open source community, seeing your stuff used by others, is just cream on top! I can&#8217;t wait until the next Hackergarten!<br />
Per Junel</p>
<p>The next two Hackergarten nights are on the road. If you&#8217;d like to join the fun then swing by or join the mailing list:</p>
<ul>
<li>19 May &#8211; GR8 Conference Copenhagen</li>
<li>2 June &#8211; Jazoon Conference Zurich</li>
</ul>
<script>var dzone_style="2";</script><script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script><div style="float: left; width: 140px; height: 21px; overflow: hidden; position: relative; left: 8px;"><script>//<![CDATA[
reddit_url="http://www.canoo.com/blog/2010/05/14/canoo-and-friends-release-open-source-griffon-plugins-at-hackergarten/";
//]]&gt;
</script><script language="javascript" src="http://reddit.com/button.js?t=1"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.canoo.com/blog/2010/05/14/canoo-and-friends-release-open-source-griffon-plugins-at-hackergarten/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java Post Mortem with Gilad Bracha</title>
		<link>http://www.canoo.com/blog/2010/05/07/java-post-mortem-with-gilad-bracha/</link>
		<comments>http://www.canoo.com/blog/2010/05/07/java-post-mortem-with-gilad-bracha/#comments</comments>
		<pubDate>Fri, 07 May 2010 07:10:52 +0000</pubDate>
		<dc:creator>Hamlet</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[hamlet]]></category>

		<guid isPermaLink="false">http://canoo.com/blog/?p=1290</guid>
		<description><![CDATA[<script type="text/javascript">dzone_url = "http://www.canoo.com/blog/2010/05/07/java-post-mortem-with-gilad-bracha/";</script>This year&#8217;s JAX.de conference hosted many great Java thought leaders, including one of my personal favorites Gilad Bracha. If anyone has the authority to critique Java and the Java platform then surely it is Gilad who spent years working for Sun on the language and platform tools. If you haven&#8217;t followed him recently, I recommend [...]]]></description>
			<content:encoded><![CDATA[<script type="text/javascript">dzone_url = "http://www.canoo.com/blog/2010/05/07/java-post-mortem-with-gilad-bracha/";</script><div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">This year&#8217;s JAX.de conference hosted many great Java thought leaders, including one of my personal favorites Gilad Bracha. If anyone has the authority to critique Java and the Java platform then surely it is Gilad who spent years working for Sun on the language and platform tools. If you haven&#8217;t followed him recently, I recommend reading his papers on Pluggable Type Systems and Software as a Service.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Lucky for me, my &#8220;Code Generation on the JVM&#8221; talk was sandwiched between his &#8220;Java: A Post Mortem&#8221; and &#8220;Newspeak: A Principled, Dynamic Language&#8221;. It was surreal to see my name next to someone I&#8217;ve revered for many years, and I felt a bit like the rookie professional athlete who has to play his first game against someone they grew up watching on TV.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">As expected, his talks were good mix of humor, strong opinion, and thoughtful analysis. Here are my favorite bits:</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">If you can&#8217;t abstract over it then it doesn&#8217;t belong there.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">An original sin of Java was constructors. They are static methods that commit to returning a concrete implementation. Remember the design mandate &#8220;program to interfaces&#8221;? Constuctors subvert this and gave rise to a cottage industry of Dependency Injection frameworks to get around the issue (as long as you consider VMWare a cottage industry!). You wouldn&#8217;t need DI if your language supported proper inversion of control in the first place. The next generation of languages hopefully won&#8217;t have this limitation.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Class initialization is absurd. There should be none.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Static state is bad, bad, bad and read Gilad&#8217;s great blog post if you aren&#8217;t persuaded. Without static state there is no need for class initialization. We&#8217;ve all heard that the JVM start up times are slow, but that is a bit of a myth. The problem is that through class initialization we&#8217;re asking the JVM to do millions of operations that could be avoided without static state. A Lambourgini isn&#8217;t slow, but it sure seems that way if you try to drive it to the Moon. Likewise the JVM.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Why should a high level language need a memory model in the first place?</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">The original Java memory model was incoherent, the revised memory model is understood by only five people in the world, and the actors for concurrency idea existed since the Gulati paper of 1970. Bracha&#8217;s point wasn&#8217;t that we need a better Java memory model, it is that we should have made a language that did not need to expose a memory model to the developers. As with many of the Java original sins, Threads were the wrong level of abstraction and something better like Actors should have been chosen.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Java is going to stay but it is going to stay where you don&#8217;t want to look</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Everyone wants to predict the demise of Java, don&#8217;t they? But few people offer a real, long-term alternative. There is enough risk with any of the other JVM languages to persude Enterprises that sticking with Java is the best choice. The evening&#8217;s speaker panel agreed (mostly) that the real successor to Java didn&#8217;t exist today. So where will the next big lanugage come from? Who can monetize a programming language? Microsoft has somehow done it with .NET, but show me the Oracle business plan that details how to get rich from writing a programming language. Or any other company for that matter. Here is my prediction: all this language innovation results in the best ideas making it into libraries and frameworks available for the Java language, and Java remains number one on our beloved TIOBE index, clunky syntax and all.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Webapps make you reboot. It is called &#8220;session expired&#8221;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Newspeak was funded to solve the problem of always on, always updated software. Quick question: what version of Google do you use? I&#8217;ve never in my life seen a version number at Google.com and that is a deployment success story. All software should work this way. I&#8217;m unclear how Newspeak is going to solve the session state problem but I&#8217;m also certain that I do &lt;i&gt;not&lt;/i&gt; fully grasp the Newspeak vision.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">If you want a static language you should look at Egyptian heiroglyphics because it hasn&#8217;t changed in a long time</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">And another quote from Brian Hurt: &#8220;Demand that you not have to learn something new to learn new languages, and then wonder why languages don&#8217;t improve much&#8221;. Newspeak is a bold change, and people are going to be very resistent. Incremental changes like Groovy are much easier to sell than big sweeping language changes. And an always changing language can hardly be adopted by the masses. I left the session wondering if Newspeak is an experiment meant to fuel language innovation or a real alternative as a mainstream programming language.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Complicated is not a sign that you&#8217;re clever. It is a sign that you failed.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Simple solutions can be achieved with a low number of non-overlapping concepts. If you need something more complicated then build it by composing the simpler pieces together. Special cases like primitive types are the road to ruin. Or the road to massive popularity and success as is the case with Java. In my humble opinion: success is an accident, much better to aim for happiness.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Language development has moved away from professional language writer and into the hands of hobbiest developers</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">As a hobbiest developer working on the Groovy language, I have averaged a mere 2-3 hours a week of work over the last 12 months. The good news: I&#8217;m clearing my schedule after the GR8 Conference to work on Groovy&#8217;s GEP-4. The bad news, I am and will remain a non-professional hobbiest developer hacking on a language in my spare time. Life couldn&#8217;t be better.</div>
<p>This year&#8217;s <a href="http://jax.de">JAX.de</a> conference hosted many great Java thought leaders, including one of my personal favorites <a href="http://bracha.org">Gilad Bracha</a>. If anyone has the authority to critique Java and the Java platform then surely it is Gilad who spent years working for Sun on the language and platform tools. If you haven&#8217;t followed him recently, I recommend reading his <a href="http://bracha.org/Site/Papers.html">papers</a> on <a href="http://bracha.org/pluggableTypesPosition.pdf">Pluggable Type Systems</a> and <a href="http://bracha.org/objectsAsSoftwareServices.pdf">Objects as Software Services</a>. Lucky for me, my &#8220;<a href="http://entwickler.com/konferenzen/ext_scripts/v2/php/sessions-popup.php?module=jax2010&amp;id=13700">Code Generation on the JVM</a>&#8221; talk was sandwiched between his &#8220;Java: A Post Mortem&#8221; and &#8220;<a href="http://newspeaklanguage.org/">Newspeak</a>: A Principled, Dynamic Language&#8221;. It was surreal to see my name next to someone I&#8217;ve revered for many years, and I felt a bit like the rookie professional athlete who has to play his first game against someone they grew up watching on TV.</p>
<p>As expected, his talks were good mix of humor, strong opinion, and thoughtful analysis. Here are my favorite bits:</p>
<p><strong>If you can&#8217;t abstract over it then it doesn&#8217;t belong there.<br />
</strong>An original sin of Java was constructors. They are static methods that commit to returning a concrete implementation. Remember the design mandate &#8220;program to interfaces&#8221;? Constuctors subvert this and gave rise to a cottage industry of Dependency Injection frameworks to get around the issue (as long as you consider VMWare a cottage industry!). You wouldn&#8217;t need DI if your language supported proper inversion of control in the first place. The next generation of languages hopefully won&#8217;t have this limitation.</p>
<p><strong>Class initialization is absurd. There should be none.<br />
</strong>Static state is bad, bad, bad and read Gilad&#8217;s great blog post if you aren&#8217;t persuaded. Without static state there is no need for class initialization. We&#8217;ve all heard that the JVM start up times are slow, but that is a bit of a myth. The problem is that through class initialization we&#8217;re asking the JVM to do millions of operations that could be avoided without static state. A Lambourgini isn&#8217;t slow, but it sure seems that way if you try to drive it to the Moon. Likewise the JVM.</p>
<p><strong>Why should a high level language need a memory model in the first place?<br />
</strong>The original Java memory model was incoherent, the revised memory model is understood by only five people in the world, and the actors for concurrency idea existed since the Gulati paper of 1970. Bracha&#8217;s point wasn&#8217;t that we need a better Java memory model, it is that we should have made a language that did not need to expose a memory model to the developers. As with many of the Java original sins, Threads were the wrong level of abstraction and something better like Actors should have been chosen.</p>
<p><strong>Java is going to stay but it is going to stay where you don&#8217;t want to look<br />
</strong>Everyone wants to predict the demise of Java, don&#8217;t they? But few people offer a real, long-term alternative. There is enough risk with any of the other JVM languages to persude Enterprises that sticking with Java is the best choice. The evening&#8217;s speaker panel agreed (mostly) that the real successor to Java didn&#8217;t exist today. So where will the next big lanugage come from? Who can monetize a programming language? Microsoft has somehow done it with .NET, but show me the Oracle business plan that details how to get rich from writing a programming language. Or any other company for that matter. Here is my prediction: all this language innovation results in the best ideas making it into libraries and frameworks available for the Java language, and Java remains number one on our beloved <a href="http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html">TIOBE</a> index, clunky syntax and all.</p>
<p><strong>Webapps make you reboot. It is called &#8220;session expired&#8221;<br />
</strong>Newspeak was funded to solve the problem of always on, always updated software. Quick question: what version of Google do you use? I&#8217;ve never in my life seen a version number at Google.com and that is a deployment success story. All software should work this way. I&#8217;m unclear how Newspeak is going to solve the session state problem but I&#8217;m also certain that I do &lt;i&gt;not&lt;/i&gt; fully grasp the Newspeak vision.</p>
<p><strong>If you want a static language you should look at Egyptian heiroglyphics because it hasn&#8217;t changed in a long time<br />
</strong>And another quote from <a href="http://enfranchisedmind.com/blog/">Brian Hurt</a>: &#8220;Demand that you not have to learn something new to learn new languages, and then wonder why languages don&#8217;t improve much&#8221;. Newspeak is a bold change, and people are going to be very resistent. Incremental changes like Groovy are much easier to sell than big sweeping language changes. And an always changing language can hardly be adopted by the masses. I left the session wondering if Newspeak is an experiment meant to fuel language innovation or a real alternative as a mainstream programming language.</p>
<p><strong>Complicated is not a sign that you&#8217;re clever. It is a sign that you failed.<br />
</strong>Simple solutions can be achieved with a low number of non-overlapping concepts. If you need something more complicated then build it by composing the simpler pieces together. Special cases like primitive types are the road to ruin. Or the road to massive popularity and success as is the case with Java. In my humble opinion: success is an accident, much better to aim for happiness.</p>
<p><strong>Language development has moved away from professional language writer and into the hands of hobbiest developers<br />
</strong>As a hobbiest developer working on the Groovy language, I have averaged a mere 2-3 hours a week of work over the last 12 months. The good news: I&#8217;m clearing my schedule after the <a href="http://gr8conf.org/">GR8 Conference</a> to work on <a href="http://docs.codehaus.org/display/GroovyJSR/GEP+4+-+AstBuilder+AST+Templates">Groovy&#8217;s GEP-4</a>. The bad news, I am and will remain a non-professional hobbiest developer hacking on a language in my spare time. Life couldn&#8217;t be better.</p>
<script>var dzone_style="2";</script><script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script><div style="float: left; width: 140px; height: 21px; overflow: hidden; position: relative; left: 8px;"><script>//<![CDATA[
reddit_url="http://www.canoo.com/blog/2010/05/07/java-post-mortem-with-gilad-bracha/";
//]]&gt;
</script><script language="javascript" src="http://reddit.com/button.js?t=1"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.canoo.com/blog/2010/05/07/java-post-mortem-with-gilad-bracha/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Canoo Hosts Hackergarten, Open Source Benefits</title>
		<link>http://www.canoo.com/blog/2010/04/26/canoo-hosts-hackergarten-open-source-benefits/</link>
		<comments>http://www.canoo.com/blog/2010/04/26/canoo-hosts-hackergarten-open-source-benefits/#comments</comments>
		<pubDate>Mon, 26 Apr 2010 13:29:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Hackergarten]]></category>

		<guid isPermaLink="false">http://canoo.com/blog/?p=1145</guid>
		<description><![CDATA[<script type="text/javascript">dzone_url = "http://www.canoo.com/blog/2010/04/26/canoo-hosts-hackergarten-open-source-benefits/";</script>A few weeks ago on a Friday evening, Canoo opened its doors to the public and hosted a new programming user group called Hackergarten. The goal of the group is different from other user groups: instead of learning from listening to a presentation they want to learn by writing code. In their own words: Our [...]]]></description>
			<content:encoded><![CDATA[<script type="text/javascript">dzone_url = "http://www.canoo.com/blog/2010/04/26/canoo-hosts-hackergarten-open-source-benefits/";</script><p>A few weeks ago on a Friday evening, Canoo opened its doors to the public and hosted a new programming user group called <a href="http://hackergarten.net/">Hackergarten</a>. The goal of the group is different from other user groups: instead of learning from listening to a presentation they want to learn by writing code. In their own words:</p>
<blockquote><p>Our goal is to create something that others can use; whether it be working software, improved documentation, or better educational materials. Our intent is to end each meeting with a patch or similar contribution submitted to an open and public project.</p></blockquote>
<p>We&#8217;re excited to say that their contribution to the <a href="http://www.gradle.org">Gradle</a> build system was accepted last week! The next release of Gradle 0.9 contains an &#8220;Announce&#8221; plugin that can notify you and your customers of build events using Twitter, Snarl, or the Ubuntu notification system. You can notify yourself of local build failures or notify your customers of successful formal build releases. It was a long Friday night, but the group of over 10 developers are all happy to see their work accepted. As the group sponsor, Canoo is happy to have kept them caffeinated and well fed.</p>
<p>The next Hackergarten is this Friday, 30 April 2010. The group plans to write some <a href="http://griffon.codehaus.org/">Griffon plugins</a>, a desktop application framework written in Java and Groovy. The Griffon Project Lead (and Canoo employee)<a href="http://www.jroller.com/aalmiray/">Andres Almiray</a> will be present to help guide the group. If you are anywhere near the Basel area this Friday, then please stop by Canoo and come join the fun. Don&#8217;t worry if you&#8217;ve never seen Groovy or Griffon before, the point is to learn new skills and meet new people.</p>
<p>You can find out more information on the Hackergarten <a href="http://groups.google.com/group/hackergarten/">mailing list</a> or follow <a href="http://twitter.com/Hackergarten">@Hackergarten</a> to stay up to date.</p>
<p>Come join the fun. Here&#8217;s what people are saying about the last event:</p>
<p><span style="color: #ffffff;">.</span></p>
<p><img class="size-full wp-image-1148 alignright" style="margin-top: 5px; margin-bottom: 5px; margin-left: 20px; margin-right: 20px;" title="etienne" src="http://canoo.com/blog/wp-content/uploads/2010/04/etienne.jpg" alt="etienne" width="108" height="108" /><em> </em></p>
<blockquote>
<p style="text-align: left; "><em>The first Hackergarten was a great event, not only because there was free pizza, but primarily because it was a true team event with everyone actively contributing. Submitting a patch for a new Gradle plugin at the end of the night was our goal which we reached successfully. I look forward to learning more about Griffon at the next Hackergarten.</em></p>
<p style="text-align: left; ">Etienne Stuber</p>
</blockquote>
<p style="text-align: left; "><span style="color: #ffffff;">.</span></p>
<p style="text-align: left; "><img class="size-full wp-image-1160 alignright" style="margin-top: 5px; margin-bottom: 5px; margin-left: 20px; margin-right: 20px;" title="alberto" src="http://canoo.com/blog/wp-content/uploads/2010/04/alberto.jpg" alt="alberto" width="108" height="108" /></p>
<blockquote></blockquote>
<blockquote><p><em>I learned how easy and powerful Gradle is. The fact: with a little group and in a little time, we wrote a worth-making contribution to an open source project. Did I have fun? Definitely, it was like meeting with friends but for a beer but enjoying coding at the same time. In the future I am interested in writing Grails or Griffon plugins</em>.</p>
<p>Alberto Mijares</p></blockquote>
<p><span style="color: #ffffff;">.</span></p>
<p><img class="alignright" style="margin-top: 5px; margin-bottom: 5px; margin-left: 40px; margin-right: 20px;" title="Christophe" src="http://canoo.com/images/people/christoph_sperle.jpg" alt="" width="86" height="71" /></p>
<blockquote></blockquote>
<blockquote><p><em>At Hackergarten I learned about the Pomodoro technique and how to use groovy closures to do exception handling in a smart way. And yes, I had a lot of fun! For future events I am interested in anything with new technologies but especially with testing different approaches on how to program in teams</em>.</p>
<p>Christoph Sperle</p></blockquote>
<script>var dzone_style="2";</script><script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script><div style="float: left; width: 140px; height: 21px; overflow: hidden; position: relative; left: 8px;"><script>//<![CDATA[
reddit_url="http://www.canoo.com/blog/2010/04/26/canoo-hosts-hackergarten-open-source-benefits/";
//]]&gt;
</script><script language="javascript" src="http://reddit.com/button.js?t=1"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.canoo.com/blog/2010/04/26/canoo-hosts-hackergarten-open-source-benefits/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

