<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress.com" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>grails &amp;laquo; WordPress.com Tag Feed</title>
	<link>http://en.wordpress.com/tag/grails/</link>
	<description>Feed of posts on WordPress.com tagged "grails"</description>
	<pubDate>Fri, 27 Nov 2009 22:25:14 +0000</pubDate>

	<generator>http://en.wordpress.com/tags/</generator>
	<language>en</language>

<item>
<title><![CDATA[Grails Exchange in December]]></title>
<link>http://richmarr.wordpress.com/2009/11/23/grails-exchange-in-december/</link>
<pubDate>Mon, 23 Nov 2009 17:25:19 +0000</pubDate>
<dc:creator>Richard Marr</dc:creator>
<guid>http://richmarr.wordpress.com/2009/11/23/grails-exchange-in-december/</guid>
<description><![CDATA[It&#8217;s great to see fellow Pixstanaut Tomás Lin talking at the forthcoming Grails Exchange confe]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>It&#8217;s great to see fellow Pixstanaut <a href="http://fbflex.wordpress.com/">Tomás Lin</a> talking at the forthcoming <a href="http://skillsmatter.com/event/java-jee/groovy-grails-exchange-2009/wd-184">Grails Exchange</a> conference in December. He&#8217;ll be talking about building rich GUI apps with Flex and Grails. There are still a few tickets left if you can make it.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Os Melhores Podcasts de Tecnologia para Desenvolvedores  ]]></title>
<link>http://andrefaria.com/2009/11/20/os-melhores-podcasts-de-tecnologia-para-desenvolvedores/</link>
<pubDate>Fri, 20 Nov 2009 14:32:29 +0000</pubDate>
<dc:creator>andrefaria</dc:creator>
<guid>http://andrefaria.com/2009/11/20/os-melhores-podcasts-de-tecnologia-para-desenvolvedores/</guid>
<description><![CDATA[Um dos maiores problemas da sociedade moderna é a dificuldade de locomoção diária, a maioria das pes]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Um dos maiores problemas da sociedade moderna é a dificuldade de locomoção diária, a maioria das pessoas passa horas em seus carros, ou em meios de transporte públicos para irem de lugar a outro. Há alguns anos atrás quando morava na zona norte de São Paulo e trabalha na zona sul, essa era minha realidade. Uma vez que naquela época passar por isso era inevitável procurei formas de fazer com esse tempo pudesse de alguma forma torna-se produtivo, foi então que comecei a ouvir à podcasts.</p>
<div class="wp-caption aligncenter" style="width: 410px"><a href="http://www.flickr.com/photos/dantaylor/87397283/"><img class=" " title="iPod FM radio remote por dan taylor" src="http://farm1.static.flickr.com/41/87397283_ebc7fbaadc.jpg" alt="iPod FM radio remote por dan taylor" width="400" height="300" /></a><p class="wp-caption-text">iPod FM radio remote por dan taylor</p></div>
<p>De acordo com a Wikipedia, Podcasting é uma forma de publicação de arquivos de mídia digital (áudio, vídeo, foto, etc.) pela Internet, através de um feed RSS, que permite aos utilizadores acompanhar a sua atualização. Assim, é possível o acompanhamento e/ou download automático do conteúdo de um podcast.</p>
<p>Neste post apresentarei os podcasts aos quais escuto e os episódios principais para que você ouça. Sugiro que você utilize o iTunes para inscrever-se nos podcasts e sincronizar com seu iPod.</p>
<h2>Desenvolvimento Ágil</h2>
<div class="wp-caption aligncenter" style="width: 410px"><a href="http://www.flickr.com/photos/pcalcado/2268593480/in/set-72157604854195771/"><img class=" " title="por pcalcado" src="http://farm3.static.flickr.com/2050/2268593480_68100bfa7c.jpg" alt="por pcalcado" width="400" height="300" /></a><p class="wp-caption-text">por pcalcado</p></div>
<h4>Podcast da ImproveIt</h4>
<p><span style="font-weight:normal;">por Vinícius Teles<br />
<a href="http://improveit.com.br/podcast">http://improveit.com.br/podcast<br />
</a>Português</span></p>
<ul>
<li><a href="http://improveit.com.br/podcast/improvecast-13-entrevista-alisson-vale-experiencias-ageis">Entrevista com Alisson Vale da Phidelis</a></li>
<li><a href="http://improveit.com.br/podcast/improvecast-11-entrevista-alexandre-magno-fdd-scrum-experiencias-ageis">Entrevista com Alexandre Magno na Série Experiências Ágeis</a></li>
<li><a href="http://improveit.com.br/podcast/improvecast-8-entrevista-carlos-barbieri-mpsbr">Entrevista com Carlos Barbieri sobre o MPS.BR</a></li>
<li><a href="http://improveit.com.br/podcast/improvecast-19-entrevista-ancar-experiencias-ageis">Entrevista com a equipe da Ancar na Série Experiências Ágeis</a></li>
</ul>
<h4>AgilCast</h4>
<p><span style="font-weight:normal;">Por AgilCoop<br />
<a href="http://agilcoop.incubadora.fapesp.br/portal/agilcast">http://agilcoop.incubadora.fapesp.br/portal/agilcast<br />
</a>Português</span></p>
<ul>
<li><a href="http://agilcoop.incubadora.fapesp.br/portal/agilcast/episodios/Agilcast03-Testes.mp3">Uma Visão Geral Sobre Scrum</a></li>
<li><a href="http://agilcoop.incubadora.fapesp.br/portal/agilcast/episodios/Agilcast03-Testes.mp3">Testes Automatizados</a></li>
<li><a href="http://agilcoop.incubadora.fapesp.br/portal/agilcast/episodios/Agilcast04-bds-ageis.mp3">Bancos de dados ágeis e refatoração de bancos de dados</a></li>
</ul>
<h4>Agile Toolkit Podcast<br />
<span style="font-weight:normal;"><a href="http://agiletoolkit.libsyn.com">http://agiletoolkit.libsyn.com</a><br />
Inglês</span></h4>
<ul>
<li><a href="http://agiletoolkit.libsyn.com/index.php?post_id=537344">Tom Goulet &#8211; Cucumber, Ruby and the transition to Generalizing Specialist (2009)</a></li>
<li><a href="http://agiletoolkit.libsyn.com/index.php?post_id=530103">Jim Miller &#8211; The Product Owner Role and Business Alignmnet</a></li>
<li><a href="http://agiletoolkit.libsyn.com/index.php?post_id=482372">Tips and Advice &#8211; Retrospectives</a></li>
</ul>
<h4>ThoughtWorks Podcast</h4>
<p><span style="font-weight:normal;"><a href="http://www.thoughtworks.com/what-we-say/podcasts.html">http://www.thoughtworks.com/what-we-say/podcasts.html</a><br />
Inglês</span></p>
<h2>Open Source</h2>
<h4><strong>FLOSS Weekly</strong></h4>
<p><span style="font-weight:normal;">por Leo Laport, Jono Bacon e Randal Schwartz<br />
Inglês</span></p>
<ul>
<li><a href="http://twit.tv/floss87">Entrevista com Kent Beck sobre Extreme Programming (XP)</a></li>
<li><a href="http://twit.tv/floss88">Entrevista com Linus Torvalds, o criador do Linux e do Git</a></li>
<li><a href="http://twit.tv/floss79">Entrevista com David Heinemeier Hansson criador do Ruby On Rails</a></li>
<li><a href="http://twit.tv/floss73">Entrevista com Tim O&#8217;Reilly, fundador e CEO da  O&#8217;Reilly Media</a></li>
<li><a href="http://twit.tv/floss55">Entrevista com John Resig criador e líder do Projeto jQuery</a></li>
<li><a href="http://twit.tv/floss36">Entrevista com Jan Lehnardt evangelista do projeto CouchDB</a></li>
<li><a href="http://twit.tv/floss34">Entrevista com  Jacob Kaplan-Moss criador do Django</a></li>
<li><a href="http://twit.tv/floss33">Entrevista com Bruno Souza sobre o OpenJDK</a></li>
<li><a href="http://twit.tv/floss27">Entrevista com Ward Cunningham inventor do Wiki e grande Personalidade da Comunidade Ágil</a></li>
<li><a href="http://twit.tv/floss26">Entrevista com  D. Richard Hipp criador do SQLite</a></li>
<li><a href="http://twit.tv/floss23">Entrevista com Nate Koechley sobre o Yahoo User Interface Library (YUI)</a></li>
<li><a href="http://twit.tv/floss19">Entrevista com Junio Hamano, Mantenedor do Git</a></li>
<li><a href="http://twit.tv/floss12">Entrevista com Rasmus Lerdorf, criador do PHP</a></li>
<li><a href="http://twit.tv/floss11">Entrevista com Guido van Rossum, Criador do Python</a></li>
<li><a href="http://twit.tv/floss7">Entrevista com o fundador da Wikipedia, Jimmy Wales</a></li>
</ul>
<h2>Java</h2>
<div class="wp-caption aligncenter" style="width: 410px"><a href="http://www.flickr.com/photos/amloq/302981047/"><img class=" " title="HorecaExpo - Java por bramloquet" src="http://farm1.static.flickr.com/107/302981047_6e74b21ecb.jpg" alt="HorecaExpo - Java por bramloquet" width="400" height="300" /></a><p class="wp-caption-text">HorecaExpo - Java por bramloquet</p></div>
<h4>JavaPosse</h4>
<p><span style="font-weight:normal;">Por Tor Norbye, Carl Quinn, Dick Wall e Joe Nuxoll<br />
Inglês<br />
<a href="http://www.javaposse.com"> http://www.javaposse.com</a></span></p>
<h4>Java Technology Insider</h4>
<p><span style="font-weight:normal;">Inglês<br />
<a href="http://www.javaworld.com/podcasts/jtech/"> http://www.javaworld.com/podcasts/jtech</a></span></p>
<ul>
<li><a href="http://www.javaworld.com/podcasts/jtech/2008/100708jtech.html">Rod Johnson: SpringSource and the future of Spring (2008)</a></li>
</ul>
<h4>Grails Podcast</h4>
<p><span style="font-weight:normal;">Por Glen Smith e Sven Haiges<br />
<a href="http://grailspodcast.com"> http://grailspodcast.com</a></span></p>
<h2>Ruby</h2>
<div class="wp-caption aligncenter" style="width: 410px"><a href="http://www.flickr.com/photos/nez/177722693/"><img class=" " title="Ruby on Rails por Andrew*" src="http://farm1.static.flickr.com/74/177722693_8aca6c7e82.jpg" alt="Ruby on Rails por Andrew*" width="400" height="320" /></a><p class="wp-caption-text">Ruby on Rails por Andrew*</p></div>
<h4>Rails Envy</h4>
<p><span style="font-weight:normal;">Por Jason Seifer e Gregg Pollack<br />
Inglês<br />
<a href="http://railsenvy.com"> http://railsenvy.com</a></span></p>
<h4>Rails Podcast</h4>
<p><span style="font-weight:normal;">por Geoffrey Grosenbach<br />
Inglês<br />
<a href="http://podcast.rubyonrails.com/"> http://podcast.rubyonrails.com/</a></span></p>
<ul>
<li><a href="http://podcast.rubyonrails.com/programs/1/episodes/david_heinemeier_hansson">Entrevista com David Heinemeier Hansson (2005)</a></li>
<li><a href="http://podcast.rubyonrails.com/programs/1/episodes/dave_thomas">Entrevista com Dave Thomas (2005)</a></li>
<li><a href="http://podcast.rubyonrails.com/programs/1/episodes/chad_fowler">Entrevista com Chad Fowler (2005)</a></li>
<li><a href="http://podcast.rubyonrails.com/programs/1/episodes/obie_fernandez">Entrevista com Obie Fernandez (2006)</a></li>
<li><a href="http://podcast.rubyonrails.com/programs/1/episodes/dave_thomas_and_mike_clark">Entrevista com Dave Thomas e Mike Clark (2006)</a></li>
</ul>
<h4>Rubiverse Podcast</h4>
<p><span style="font-weight:normal;">Por Mike Moore<br />
Ingles<br />
<a href="http://rubiverse.com"> http://rubiverse.com</a></span></p>
<ul>
<li><a href="http://rubiverse.com/podcasts/8-dave-hoover-on-software-craftsmanship">Dave Hoover on Software Crafsmanship (2009)</a></li>
<li><a href="http://rubiverse.com/podcasts/6-obie-fernandez-on-rails-maturity-model">Obie Fernandez on the Rails Maturity Model (2009)</a></li>
<li><a href="http://rubiverse.com/podcasts/5-ola-bini-on-polyglot-programming">Ola Bini on Polyglot Programming (2008)</a></li>
</ul>
<h2>JavaScript</h2>
<h4>jQuery Podcast</h4>
<p><span style="font-weight:normal;">Português<br />
<a href="http://blog.jquery.com/2009/11/13/announcing-the-official-jquery-podcast/"> http://blog.jquery.com/2009/11/13/announcing-the-official-jquery-podcast/</a></span></p>
<h2>Gadgets</h2>
<h4>GeekBrief TV</h4>
<p><span style="font-weight:normal;">por Cali Lewis<br />
Inglês<br />
<a href="http://www.geekbrief.tv"> http://www.geekbrief.tv</a></span></p>
<h2>Software</h2>
<div class="wp-caption aligncenter" style="width: 410px"><a href="http://www.flickr.com/photos/gesteves/2103477382/"><img class=" " title="Desk por Guillermo Esteves" src="http://farm3.static.flickr.com/2134/2103477382_ddce67a270.jpg" alt="Desk por Guillermo Esteves" width="400" height="300" /></a><p class="wp-caption-text">Desk por Guillermo Esteves</p></div>
<h4>Pragmatic Podcasts</h4>
<p><span style="font-weight:normal;">por Pragmatic Bookshelf<br />
Inglês<br />
<a href="http://www.pragprog.com/podcasts"> http://www.pragprog.com/podcasts</a></span></p>
<ul>
<li><a href="http://www.pragprog.com/podcasts/show/26">Chad Fowler on the Passionate Programmer</a></li>
<li><a href="http://www.pragprog.com/podcasts/show/20">Fred Daoud on Stripes</a></li>
<li><a href="http://www.pragprog.com/podcasts/show/19">Chad Fowler Finding the Jagged Edges</a></li>
<li><a href="http://www.pragprog.com/podcasts/show/13">Andy Hunt on Pragmatic Wetware</a></li>
</ul>
<h4>Software Engineering Radio</h4>
<p><span style="font-weight:normal;">por Software Engineering Radio<br />
<a href="http://www.se-radio.net"> http://www.se-radio.net</a><br />
Inglês</span></p>
<ul>
<li><a href="http://www.se-radio.net/podcast/2009-11/episode-148-software-archaeology-dave-thomas">Software Archaelogy with Dame Thomas</a></li>
<li><a href="http://www.se-radio.net/podcast/2009-06/episode-139-fearless-change-linda-rising">Fearless Change with Linda Rising</a></li>
<li><a href="http://www.se-radio.net/podcast/2009-06/episode-138-learning-part-development-allan-kelly">Learning as a Part of Development with Allan Kelly</a></li>
<li><a href="http://www.se-radio.net/podcast/2009-06/episode-137-sql-jim-melton">SQL with Jim Melton</a></li>
<li><a href="http://www.se-radio.net/podcast/2009-04/episode-133-continuous-integration-chris-read">Continuous Integration with Chris Read</a></li>
<li><a href="http://www.se-radio.net/podcast/2009-04/episode-132-top-10-architecture-mistakes-eoin-woods">Top 10 Architecture Mistakes with Eoin Woods</a></li>
<li><a href="http://www.se-radio.net/podcast/2009-02/episode-127-usability-joachim-machate">Usability with Joachim Machate</a></li>
<li><a href="http://www.se-radio.net/podcast/2008-08/episode-106-introduction-aop">Introduction to AOP with Christa Schwanninger e Iris Groher</a></li>
<li><a href="http://www.se-radio.net/podcast/2008-07/episode-105-retrospectives-linda-rising">Retrospectives with Linda Rising</a></li>
<li><a href="http://www.se-radio.net/podcast/2008-07/episode-103-10-years-agile-experiences">10 years of Agile Experiences</a></li>
<li><a href="http://www.se-radio.net/podcast/2008-03/episode-89-joe-armstrong-erlang">Joe Armstrong on Erlang</a></li>
<li><a href="http://www.se-radio.net/podcast/2008-02/episode-86-interview-dave-thomas">Interview Dave Thomas</a></li>
<li><a href="http://www.se-radio.net/podcast/2008-01/episode-84-dick-gabriel-lisp">Dick Gabriel on Lisp</a></li>
<li><a href="http://www.se-radio.net/podcast/2008-01/episode-83-jeff-deluca-feature-driven-development">Jeff DeLuca on Feature Driven Development</a></li>
<li><a href="http://www.se-radio.net/podcast/2007-12/episode-81-interview-erich-gamma">Interview Erich Gamma</a></li>
<li><a href="http://www.se-radio.net/podcast/2007-10/episode-70-gerard-meszaros-xunit-test-patterns">Gerard Meszaros on XUnit Test Patterns</a></li>
<li><a href="http://www.se-radio.net/podcast/2007-06/episode-59-static-code-analysis">Static Code Analysis with Jonathan Aldrich</a></li>
<li><a href="http://www.se-radio.net/podcast/2007-02/episode-46-refactoring-pt-1">Refactoring Pt. 1</a></li>
<li><a href="http://www.se-radio.net/podcast/2007-05/episode-55-refactoring-pt-2">Refactoring Pt. 2</a></li>
<li><a href="http://www.se-radio.net/podcast/2006-11/episode-37-extreme-programming-pt-1">eXtreme Programming Pt.1</a></li>
<li><a href="http://www.se-radio.net/podcast/2007-01/episode-43-extreme-programming-pt2">eXtreme Programming Pt.2</a></li>
<li><a href="http://www.se-radio.net/podcast/2006-10/episode-31-agile-documentation">Agile Documentation</a></li>
<li><a href="http://www.se-radio.net/podcast/2006-08/episode-26-interview-jutta-eckstein">Interview Jutta Eckstein</a></li>
<li><a href="http://www.se-radio.net/podcast/2006-03/episode-8-interview-eric-evans">Interview Eric Evans</a></li>
<li><a href="http://www.se-radio.net/podcast/2006-01/episode-1-patterns">Patterns</a></li>
</ul>
<h4>Elegant Code</h4>
<p><span style="font-weight:normal;">por Elegant Code Community<br />
<a href="http://elegantcode.com"> http://elegantcode.com</a><br />
Inglês</span></p>
<ul>
<li><a href="http://elegantcode.com/2009/08/31/code-cast-31-agile-for-families">Agile for Families</a></li>
<li><a href="http://elegantcode.com/2009/07/23/code-cast-28-jim-wierich">Entrevista com Jim Wierich o Criador do Rake (Ruby)</a></li>
<li><a href="http://elegantcode.com/2008/12/12/code-cast-17-david-laribee-on-lean-kanban">David Laribee on Lean / Kanban</a></li>
<li><a href="http://elegantcode.com/2008/09/30/cast-cast-15-uncle-bob-martin/">Uncle Bob Martin on Clean Code</a></li>
<li><a href="http://elegantcode.com/2008/08/27/code-cast-12-alan-shalloway/">Alan Shalloway on Lean</a></li>
<li><a href="http://elegantcode.com/2008/05/13/elegant-code-cast-8-is-online/">Entrevista com Jarod Ferguson</a></li>
<li><a href="http://elegantcode.com/2008/03/30/elegant-code-cast-6-is-up/">Entrevista com Darrel Carver</a></li>
<li><a href="http://elegantcode.com/2008/03/02/elegant-code-cast-4-is-up/">Entrevista com Scott Nichols</a></li>
<li><a href="http://elegantcode.com/2008/01/13/elegant-code-cast-2-online/">Entrevista com Scott Schimanski</a></li>
</ul>
<h4>Google Developer Podcast</h4>
<p><span style="font-weight:normal;"><a href="http://code.google.com/p/google-developer-podcast/downloads/list">http://code.google.com/p/google-developer-podcast/downloads/list</a><br />
Inglês</span></p>
<h4>Hearding Code</h4>
<p><span style="font-weight:normal;"><a href="http://herdingcode.com">http://herdingcode.com</a><br />
Inglês</span></p>
<h2>Tecnologia</h2>
<h4>IT Conversations</h4>
<p><span style="font-weight:normal;"><a href="http://itc.conversationsnetwork.org">http://itc.conversationsnetwork.org</a><br />
Inglês</span></p>
<h4>net@Night</h4>
<p><span style="font-weight:normal;">por Amber MacArthur e Leo Laport<br />
<a href="http://www.twit.tv/natn"> http://www.twit.tv/natn</a></span></p>
<h4>Twit &#8211; This Week in Tech</h4>
<p><span style="font-weight:normal;">por  Leo Laporte, Jeff Jarvis, Baratunde Thurston, e John C. Dvorak<br />
<a href="http://www.twit.tv/twit"> http://www.twit.tv/twit</a></span></p>
<h4>MacBreak Weekly</h4>
<p><span style="font-weight:normal;">por Leo Laporte, Don McAllister, Paul Kent, and Andy Ihnatko<br />
<a href="http://www.twit.tv/mbw"> http://www.twit.tv/mbw</a></span></p>
<h4>This Week in Google</h4>
<p><span style="font-weight:normal;">por Leo Laporte, Gina Trapani, Jeff Jarvis e Mary Hodder<br />
<a href="http://www.twit.tv/twig"> http://www.twit.tv/twig</a></span></p>
<h4>SitePoint Podcast</h4>
<p><span style="font-weight:normal;">inglês<br />
<a href="http://www.sitepoint.com/podcast"> http://www.sitepoint.com/podcast </a></span></p>
<h2>Empreendedorismo e Negócios</h2>
<h4>37 Signals Podcast</h4>
<p><span style="font-weight:normal;">por 37 Signals<br />
Inglês<br />
<a href="http://37signals.com/podcast"> http://37signals.com/podcast</a></span></p>
<h4>Max Gehringer (CBN)</h4>
<p><span style="font-weight:normal;">por Max Gehringer<br />
Português<br />
<a href="http://cbn.globoradio.globo.com/servicos/podcast/NOME.htm"> http://cbn.globoradio.globo.com/servicos/podcast/NOME.htm</a></span></p>
<h4>Mundo Corporativo (CBN)</h4>
<p><span style="font-weight:normal;">por Heródoto Barbeiro<br />
Português em Áudio<br />
<a href="http://cbn.globoradio.globo.com/servicos/podcast/NOME.htm"> http://cbn.globoradio.globo.com/servicos/podcast/NOME.htm</a></span></p>
<h4>The Startup Success Podcast</h4>
<p><span style="font-weight:normal;"><a href="http://startuppodcast.wordpress.com">http://startuppodcast.wordpress.com</a><br />
Inglês</span></p>
<h4>TED Talks</h4>
<p><span style="font-weight:normal;">por TED Talks<br />
Inglês<br />
<a href="http://www.ted.com"> http://www.ted.com</a></span></p>
<p>Se você quiser incluir algum outro podcast nesta lista, deixe um comentário. Espero que seja Útil!</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Nov 09 AJUG - Hands on Grails]]></title>
<link>http://geekcredential.wordpress.com/2009/11/18/nov-09-ajug-hands-on-grails/</link>
<pubDate>Wed, 18 Nov 2009 21:57:09 +0000</pubDate>
<dc:creator>msilverboard</dc:creator>
<guid>http://geekcredential.wordpress.com/2009/11/18/nov-09-ajug-hands-on-grails/</guid>
<description><![CDATA[Due to family obligations, I was unfortunately unable to contribute volunteer time to this month]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Due to family obligations, I was unfortunately unable to contribute volunteer time to this month&#8217;s Grails workshop at the <a href="http://www.ajug.org/">Atlanta Java Users Group</a>.  But it sure sounds like there&#8217;s some interest in Grails if <a href="http://www.jroller.com/prpatel/entry/grails_was_so_electric_it">AJUG members were willing to continue the Q &#38; A for 15 minutes while sitting in the dark</a> and I&#8217;m glad to hear it.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[O futuro do Java em meio a computação em nuvem]]></title>
<link>http://andrefaria.com/2009/11/16/o-futuro-do-java-em-meio-a-computacao-em-nuvem/</link>
<pubDate>Tue, 17 Nov 2009 01:36:46 +0000</pubDate>
<dc:creator>andrefaria</dc:creator>
<guid>http://andrefaria.com/2009/11/16/o-futuro-do-java-em-meio-a-computacao-em-nuvem/</guid>
<description><![CDATA[Aconteceu nos dias 6 e 7 de novembro de 2009 a 3ª edição do evento The Developers Conference realiza]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Aconteceu nos dias 6 e 7 de novembro de 2009 a 3ª edição do evento The Developers Conference realizado pela Global Code. Diferente do ano passado houve apenas uma trilha, porém maior enfoque em palestrantes internacionais.</p>
<p>Em sua palestra “<em><strong>Major Trends in Enterprise Software Development</strong></em>”, Rod Johnson, fundador da <a href="http://www.springsource.com/">SpringSource</a>, apresentou um pouco sobre a sua visão do futuro da linguagem e da plataforma Java e as novas tendências que o mercado de Tecnologia da Informação deverá seguir nos próximos anos. Gostaria de explorar um pouco os tópicos que foram abordados e registrar minhas impressões.</p>
<h3>Bancos de Dados e a Computação em Nuvem</h3>
<div class="wp-caption aligncenter" style="width: 410px"><a href="http://www.flickr.com/photos/florin_mogos/2523984446/"><img class=" " title="Cloud por Florin Mogos" src="http://farm3.static.flickr.com/2098/2523984446_737048439a.jpg" alt="Cloud por Florin Mogos" width="400" height="300" /></a><p class="wp-caption-text">Cloud por Florin Mogos</p></div>
<p>Segundo Rod, o mercado de tecnologia da informação está sofrendo grandes transformações em virtude da computação em nuvem (Cloud Computing) e do fato de o maior custo ter sido movido de hardware para pessoas.</p>
<blockquote><p>A computação em nuvem não é somente uma modismo imposto por fornecedores de ferramentas como foi SOA</p></blockquote>
<p>Em meio a essa realidade uma série de suposições tornou-se questionáveis como, por exemplo, a forma com que os dados são armazenados. A maioria esmagadora dos softwares construídos na atualidade utiliza bancos de dados relacionais, porém, sabe-se que estes não famosos por sua habilidade de escalar aplicações. Neste cenário, bancos de dados orientados a documentos ou Document Stores vêm ganhando mais e mais espaço. O Google <a href="http://en.wikipedia.org/wiki/BigTable">Big Table</a>, o <a href="http://hadoop.apache.org/">Hadoop</a> e o <a href="http://couchdb.apache.org/">Couch DB</a> são exemplos de soluções inovadoras que devem ser consideradas. As aplicações do futuro deverão ser capazes de lidar com novos tipos de bancos de dados.</p>
<blockquote><p>Google, Amazon, Facebook e LinkedIn utilizam bancos de dados NÃO Relacionais.</p></blockquote>
<p>A computação em nuvem oferece <strong>escalabilidade dinâmica</strong>, a cobrança é realizada de acordo o consumo que as aplicações demandam, e a plataforma que suporta a aplicação passa a ser vista com um serviço (PaaS &#8211; <strong>Plataform as a Service</strong>). “A cada dia faz menos sentido para a maior parte das organizações possuírem e manterem seus próprios DataCenters” afirmou Rod, “É como fábricas que já não fabricam sua própria energia elétrica”.</p>
<h3>E o Java Está Morto?</h3>
<div class="wp-caption aligncenter" style="width: 410px"><a href="http://www.flickr.com/photos/lofi/302018855/"><img class=" " title="Coffe por databhi " src="http://farm1.static.flickr.com/121/302018855_5b93549090.jpg" alt="Coffe por databhi " width="400" height="300" /></a><p class="wp-caption-text">Coffe por databhi </p></div>
<p>É fato que com a popularização de linguagens dinâmicas como Ruby e Python e em virtude da produtividade de frameworks para desenvolvimento de softwares para a web como Rails e Django muitas pessoas já se perguntaram: ‘A final de contas será que Java está morrendo?&#8217;. Muitos também vêm se questionado sobre as intenções da Oracle (que recentemente comprou a Sun) em relação à plataforma.</p>
<p>Penso que quanto a isso, a resposta é muito simples:</p>
<blockquote><p>As pessoas estão acordando e começando a utilizar as ferramentas certas para resolver os problemas que têm.</p></blockquote>
<p>Como disse Fred Brooks: ‘<strong><em>Não existe bala de Prata!</em></strong>’, isso é, não uma única solução que resolva todos os problemas. <strong><em>Java ainda faz muito sentido resolver muitos problemas</em></strong>, Ruby faz muito sentido para resolver outros, Erlang para outros, Scala para outros&#8230;<br />
Resumindo, Java não está morto, no entanto já não é uma linguagem inovadora, e outras linguagens estão ganhando seu merecido espaço, não se acomode, corrá atrás de entender as motivações por trás dessas novas tendências, e, sobretudo, os princípios por trás delas.</p>
<p>No DevInRio, <a href="http://www.guanabara.info/2009/10/guanacast-cobertura-dev-in-rio-2009/">o Guabanara gravou uma entrevista com Guilherme e Paulo Silveira da Caelum</a> em que esse assunto foi tratado com autoridade. Ouça <a href="http://www.guanabara.info/podcast/69-GuanaCast_Alta.mp3">ao MP3</a> ou assista o vídeo no <a href="http://www.vimeo.com/6616278">Vimeo do  Guilherme Chapiewski</a>.</p>
<p><span style='text-align:left;display:block;'><p><object type='application/x-shockwave-flash' data='http://wordpress.com/wp-content/plugins/audio-player/player.swf' width='290' height='24' id='audioplayer1'><param name='movie' value='http://wordpress.com/wp-content/plugins/audio-player/player.swf' /><param name='FlashVars' value='&amp;bg=0xf8f8f8&amp;leftbg=0xeeeeee&amp;lefticon=0x666666&amp;rightbg=0xcccccc&amp;rightbghover=0x999999&amp;righticon=0x666666&amp;righticonhover=0xffffff&amp;text=0x666666&amp;slider=0x666666&amp;track=0xFFFFFF&amp;border=0x666666&amp;loader=0x9FFFB8&amp;soundFile=http%3A%2F%2Fwww.guanabara.info%2Fpodcast%2F69-GuanaCast_Alta.mp3' /><param name='quality' value='high' /><param name='menu' value='false' /><param name='bgcolor' value='#FFFFFF' /></object></p></span></p>
<p><span style='text-align:center; display: block;'><br />
<object type="application/x-shockwave-flash" width="400" height="300" data="http://www.vimeo.com/moogaloop.swf?clip_id=6616278&amp;server=www.vimeo.com&amp;fullscreen=1&amp;show_title=1&amp;show_byline=0&amp;show_portrait=0&amp;color=01AAEA"><param name="quality" value="best" /><param name="allowfullscreen" value="true" /><param name="scale" value="showAll" /><param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=6616278&amp;server=www.vimeo.com&amp;fullscreen=1&amp;show_title=1&amp;show_byline=0&amp;show_portrait=0&amp;color=01AAEA" /></object><br />
</span></p>
<p>Já em relação a Oracle, Rod, afirmou que a empresa depende de tecnologia Java para atingir o sucesso, não é novidade que muitas soluções da Oracle são altamente dependes da plataforma Java e é obvio que a empresa não vai arruinar com tudo sem mais nem menos.</p>
<p>Para Rod, <strong><em>Java provavelmente será a última linguagem genérica de adoção em massa e no futuro mais e mais linguagens para finalidades específicas ganharão espaço no mercado</em></strong>, e muitas dessas novas linguagens serão executadas na Java Virtual Machine (JVM). Soluções integradas como Rails, Grails e Spring Roo tendem a ganhar espaço em virtude da alta produtividade que proporcionam.</p>
<p style="text-align:right;"><em><strong>Parabéns a Global Code pela realização do Evento!</strong></em></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Grails-Jasper plugin starter issues..]]></title>
<link>http://satyaq.wordpress.com/2009/11/13/grails-jasper-plugin-starter-issues/</link>
<pubDate>Fri, 13 Nov 2009 09:18:36 +0000</pubDate>
<dc:creator>satyaq</dc:creator>
<guid>http://satyaq.wordpress.com/2009/11/13/grails-jasper-plugin-starter-issues/</guid>
<description><![CDATA[Jasper is one of the better solutions on the reporting side from the open-source perspective.  Also,]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Jasper is one of the better solutions on the reporting side from the open-source perspective.  Also, Grails has been growing in popularity as the chosen framework to write web-apps which were ought to be written in Java.</p>
<p>In this post, I&#8217;ll stick to the grails-jasper plugin. It expects you to know basics of grails and jasper.</p>
<p>Off we go then..</p>
<p>On the editor side, I prefer Eclipse and <strong>eclipse-plugin JasperAssistant </strong>than iReport. There are many advantages with that. It is much more simple &#38; lightweight.<br />
Regarding the issue with Grails, I went ahead with installing the plugin and was able to generate reports.<br />
<strong><br />
One great help was: </strong>after installing the plugin, go to the url<br />
<span style="text-decoration:underline;"><a href="http://localhost:8080/">http://localhost:8080/</a>&#60;App-Name&#62;/jasper/admin</span></p>
<p>It gives few sample implementations of the jasper plugin. Once they&#8217;re working, you&#8217;re set to use the reports.</p>
<p><strong>Some issues I faced were:</strong><strong> </strong></p>
<p><strong>Issue :</strong> <strong>report/MyReport.jasper or .jrxml not found.</strong></p>
<p><strong>Solution:</strong> Need to create a report folder in web-app and copy all the .jasper &#38; .jrxml files there.</p>
<p><strong>Reason :</strong> The plugin expects the files to be there. It can be modified by changing the configuration.groovy file.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p><strong>Issue :</strong> <strong>PDF(output) is empty</strong></p>
<p><strong>Solution: </strong>Data is not bound to the report file.</p>
<p>My solution was I created my own Controller to access data and pass it to jasper (instead of the default jasper query)</p>
<table border="1" cellspacing="2" cellpadding="2" width="100%" bgcolor="#cccccc">
<tbody>
<tr>
<td valign="top" bgcolor="#f0f0f0"><code><strong>class ReportController {</strong></code>
<p>&#160;</p>
<p>def testExample = {<br />
<em> // This &#8220;data&#8221; object in this data model is the data that drives this Jasper report (i.e. what appears in the<br />
// detail band)</em><br />
List reportDetails = Race.list();</p>
<p>chain(controller:&#8217;jasper&#8217;,action:&#8217;index&#8217;,model:[<a href="reportDetails">data:reportDetails</a>],params:params)</p>
<p><em>// here jasper is the plugin provided controller.<br />
// and index is the default method in jasper controller.<br />
// we need to pass the data and the params.</em><br />
}<br />
}</p>
<p><strong>list.gsp (front end) has the following tag</strong></p>
<p>&#60;g:jasperReport controller=&#8221;report&#8221;              &#62;&#62; calls the report controller<br />
jasper=&#8221;all-races&#8221;            &#62;&#62; the jasper file<br />
action=&#8221;testExample&#8221;        &#62;&#62; the action(method) in the controller<br />
format=&#8221;pdf&#8221;            &#62;&#62; format can be pdf, excel, etc.<br />
name=&#8221;ReportFile&#8221;            &#62;&#62; Name of the file exported<br />
/&#62;</p>
<p><strong>all-races.jrxml (report file) has the following lines</strong></p>
<p><em>// fields provided to the report. They&#8217;ll be equivalent to the Object provided in collection.<br />
// e.g. List&#60;Person&#62;, Person class would be available and each field is its attribute.</em></p>
<p>&#8230;<br />
&#60;field name=&#8221;name&#8221;/&#62;<br />
&#60;field name=&#8221;city&#8221;/&#62;<br />
&#8230;</p>
<p>// usage of the field:<br />
&#8230;<br />
&#60;textFieldExpression   class=&#8221;java.lang.String&#8221;&#62;&#60;![CDATA[$F{name}]]&#62;&#60;/textFieldExpression&#62;<br />
&#60;textFieldExpression   class=&#8221;java.lang.String&#8221;&#62;&#60;![CDATA[$F{city}]]&#62;&#60;/textFieldExpression&#62;<br />
&#8230;</td>
</tr>
</tbody>
</table>
<p>I hope it helps.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Slides: Building SOFEA Applications with GWT and Grails by Matt Raible]]></title>
<link>http://denverjug.wordpress.com/2009/11/13/slides-building-sofea-applications-with-gwt-and-grails-by-matt-raible/</link>
<pubDate>Fri, 13 Nov 2009 02:24:24 +0000</pubDate>
<dc:creator>demian0311</dc:creator>
<guid>http://denverjug.wordpress.com/2009/11/13/slides-building-sofea-applications-with-gwt-and-grails-by-matt-raible/</guid>
<description><![CDATA[Here are the slides from the talk Matt Raible gave this week.]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Here are the slides from the talk <a href="http://raibledesigns.com/">Matt Raible</a> gave this week.</p>
<p><!-- SlideShare error: doc is missing or has illegal characters /[^-_a-zA-Z0-9]/ --></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Grails SQL Logging from the Command Line]]></title>
<link>http://btiernay.wordpress.com/2009/11/12/grails-sql-logging-from-the-command-line/</link>
<pubDate>Thu, 12 Nov 2009 01:35:43 +0000</pubDate>
<dc:creator>btiernay</dc:creator>
<guid>http://btiernay.wordpress.com/2009/11/12/grails-sql-logging-from-the-command-line/</guid>
<description><![CDATA[When wrestling with GORM queries you may find yourself needing to turn on SQL logging in grails. Thi]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>When wrestling with GORM queries you may find yourself needing to turn on SQL logging in grails. This is quite easy to setup in DataSource.groovy by setting <a target="_blank" href="http://grails.org/doc/1.1.1/guide/3.%20Configuration.html#3.3%20The%20DataSource">logSql</a>:</p>
<pre class="brush: groovy;">
dataSource {
	// ...
	logSql = true
}
</pre>
<p>However, I find it more convenient and safer to switch this value from the command line:<br />
<code><br />
grails <strong>-DlogSql=true</strong> run-app<br />
</code></p>
<p>This is possible if you change your DataSource.groovy slightly:</p>
<pre class="brush: groovy;">
dataSource {
	// ...
	logSql = Boolean.parseBoolean(System.properties.logSql ?: 'false')
}
</pre>
<p>The fun doesn&#8217;t stop there. We can do a bit better (although much more verbose) by also logging result sets and parameter bindings.  To set this up, we need to modify Config.groovy:</p>
<pre class="brush: groovy;">
log4j = {
	appenders {
		// ...
	}

	root {
		// ...
	}

	// Your application specific logging configuration here ...

	if (Boolean.parseBoolean(System.properties.traceSql ?: 'false')) {
		trace	'org.hibernate.SQL',
				'org.hibernate.type'
	}
}
</pre>
<p>Now, with the flip of some swiches, our command line interface to run-app now looks like this:<br />
<code><br />
grails <strong>-DlogSql=true -DtraceSql=true</strong> run-app<br />
</code></p>
<p>This will give us the essential information we need to tackle some really hardcode SQL issues. The fact that it is set on the command line ensures that we don&#8217;t accidentally check-in these values for our production settings. This is a good thing since it creates a great deal of information that can quickly fill up a hard drive.</p>
<p>If you want terser output, at the expensive of being more invasive, you should consider the <a target="_blank" href="http://grails.org/plugin/p6spy">p6spy plugin</a>.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Grails - What is it good for?]]></title>
<link>http://beckproduct.wordpress.com/2009/11/10/grails-what-is-it-good-for/</link>
<pubDate>Tue, 10 Nov 2009 14:57:09 +0000</pubDate>
<dc:creator>justincbeck</dc:creator>
<guid>http://beckproduct.wordpress.com/2009/11/10/grails-what-is-it-good-for/</guid>
<description><![CDATA[I&#8217;ve been a Java developer for close to 6 years now. I started when Hibernate was in it&#8217;]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>I&#8217;ve been a Java developer for close to 6 years now.  I started when Hibernate was in it&#8217;s infancy and Spring hadn&#8217;t really made an appearance yet.  In fact there were far fewer (as far as I can recall) &#8216;frameworks&#8217; to help you get your job done in those days.  What this meant for me was that I had to get it sorted the hard way.  Yeah, okay, I need a web application and I need basic CRUDability &#8211; Sounds easy enough, sure thing!</p>
<p>The basic recipe was Java and Hibernate and it was hard to wrap my head around the concepts back then.  Those applications were time consuming to write since everything had to be hard wired together and a developer needed to hand code all their mapping files for their domain objects.  Then along came XDoclet (or I &#8216;discovered&#8217; it) and I was able to use some pseudo annotations (they were real but not in the Annotation sense) to markup my domain objects so that I could generate my mapping files using an Ant script rather than hand code them.  It wasn&#8217;t perfect, but it was certainly a time saver.  Then Java 5 came along and we got our hands on real Annotations (please note the upper case &#8216;A&#8217; there) which made things easier still but didn&#8217;t solve the XDoclet problem right away.  Spring made an appearance!  That event certainly made for some loosely coupled architectures but it pushed most developers to the 7th level of XML hell.  Yes, we love the dependency injection and inversion of control but those application contexts &#8211; wow can they suck.  Shortly there after came Hibernate 3 and Hibernate Annotations which really made a big difference for a lot of folks.  Hibernate 3 cut down on the amount of XML required to wire DAOs together and changed the way we managed transactions but most importantly it allowed for Annotation driven persistence.  JPA defined a standard interface and my familiarity with Hibernate meant it was an easy transition for me.</p>
<p>So, how does this relate to Grails?  What&#8217;s the point here?  Well for a developer, like me, who spent his time slogging through the last 5 or 6 years of progress in Java web applications Grails doesn&#8217;t feel like the Ruby on Rails I think it&#8217;s trying to be.  I found, for example, that, although the project structure was nicely predefined for you, it seemed as though it had been designed by committee; why are there 3 places for application contexts? Sure it&#8217;s nice that I can put my Java files in one place and my Groovy files in another but isn&#8217;t this muddying the waters a little?  I mean if I&#8217;m going to write Java classes shouldn&#8217;t I just write a Java application?</p>
<p>Moving on, sure the &#8216;helper&#8217; methods for finding my book_by_author are nice and, I suppose, if all my queries were that simple I&#8217;d be happy with that approach as a well rounded solution for me.  The problem is that I&#8217;ve never had a Java application (or a Rails application for that matter) where all my queries came in a neat little box like that.  Software development is full of those one-off situations where that approach isn&#8217;t going to work.</p>
<p>Stepping back for a second, I think a lot of Java developers who&#8217;ve not worked with Rails feel like Grails is a nice stepping stone between Java and Rails.  Sure, I suppose there&#8217;s something to fall back on if you go the Grails route since you can just start writing Java classes but that (writing Java classes in a Grails application) sounds like the easy way out in that context and writing Grails applications instead of just diving in and writing a Rails application sounds like the easy way out too.  Besides why would you go the Grails route when the adoption rate for Rails is so much higher?</p>
<p>Of course, there is always a business case for taking a Java shop in to the land of scripting languages by way of Grails but, assuming for a second that it&#8217;s done right (no Java classes, fully embrace Groovy and Grails) then the learning curve is probably just as steep with Grails as it is with Rails.  And besides, when is it a good idea to let a business analysts decide on technology choices?</p>
<p>Sure, there are things that are good about Grails; maybe the fact that we, as inexperienced Ruby/Groovy developers, can dabble in Groovy during a project (e.g. let&#8217;s make all the helper classes Groovy and stick with Java elsewhere) is a good thing; slow adoption can make those wary business analysts feel better about maintaining velocity while still keeping up with new technologies (which is debatable).  And admittedly, once I got my head around them, I found closures to be pretty neat.  But I&#8217;m not seeing how the few benefits of Grails that I know of outweigh the benefits of a language/framework driven by a huge thriving community and a massive adoption rate such as that surrounding Rails.</p>
<p>When my company wanted to branch out of Java to maintain our competitiveness we made our first stop in the land of Grails.  We wrote a large project (on which I did spend some time) that was a large success.  But now that I have several Rails projects under my belt (and continue to write applications in Java) I struggle to find a place between Java and Rails where Grails feels like a good fit.  Ultimately, I guess I&#8217;m not really saying Grails doesn&#8217;t have it&#8217;s place.  I&#8217;m just not sure I see where it&#8217;s place is.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[TDC - The Developers Conference 2009 - day 1]]></title>
<link>http://jcranky.wordpress.com/2009/11/10/tdc-the-developers-conference-2009-day-1/</link>
<pubDate>Tue, 10 Nov 2009 02:37:30 +0000</pubDate>
<dc:creator>Paulo Renato</dc:creator>
<guid>http://jcranky.wordpress.com/2009/11/10/tdc-the-developers-conference-2009-day-1/</guid>
<description><![CDATA[So, one more Java event happened this last weekend down here in Brazil. The Developers Conference, o]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>So, one more Java event happened this last weekend down here in Brazil. <a title="the Developers Conference" href="http://www.thedevelopersconference.com.br/" target="_blank">The Developers Conference</a>, organized by <a title="Globalcode" href="http://www.globalcode.com.br" target="_blank">Globalcode</a>, took place on the 6th and 7th of November in São Paulo, and it is going also to Florianópolis (9th) and Rio de Janeiro (11th).</p>
<p>Like last year, the event featured international speakers, and was really nice. In this and two other posts, I&#8217;ll be talking about what happened in São Paulo, since this is the location I attended.</p>
<p>Lets start off saying that this edition was the best one until now. Among the international speakers, we had Rod Johnson (<a title="Springsource" href="http://www.springsource.com/" target="_blank">Springsource</a>), Ed Burns (<a title="Sun Microsystems" href="http://www.sun.com/" target="_blank">Sun</a>) and Mike Keith (<a title="Oracle" href="http://www.oracle.com/" target="_blank">Oracle</a>).</p>
<h2>Opening</h2>
<p>The event started with Vinicius Senger&#8217;s (<a title="Globalcode" href="http://www.globalcode.com.br" target="_blank">Globalcode</a>) dancing robots. They started some music and turned the robots on, which started to dance. The dance was programmed by themselves into the toys. Really funny =)</p>
<div id="attachment_435" class="wp-caption aligncenter" style="width: 460px"><img class="size-full wp-image-435" title="dancing robots" src="http://jcranky.wordpress.com/files/2009/11/0611200910881.jpg" alt="dancing robots" width="450" height="337" /><p class="wp-caption-text">dancing robots</p></div>
<p>Fast forward to a break that happened later, here is a closer picture of the robots in the stage above:</p>
<div id="attachment_438" class="wp-caption aligncenter" style="width: 460px"><img class="size-full wp-image-438" title="robots!" src="http://jcranky.wordpress.com/files/2009/11/061120091095.jpg" alt="robots!" width="450" height="337" /><p class="wp-caption-text">robots!</p></div>
<p>For the music, they used a parody they made themselves. They created a new music, based on an existing one, with lyrics related to software development. As soon as I have the link, I&#8217;ll post it here. That was really really funny.=D</p>
<p>One thing that always grab my attention at those events are how much some people are excited about their stuff. You could see this clearly about Vinicius in the entire event; but special was his scream at the end of the opening: &#8220;<em>I love what I do!&#8221;</em></p>
<h2>Rod Johnson</h2>
<p>Rod Johnson was the first international speaker. He talked about how things are evolving in the software development world, and mentioned things like the fact that different kinds of data storage might be interesting, instead of using relational databases for everything; cloud computing and how <a title="Springsource" href="http://www.springsource.com/" target="_blank">Springsource</a> (and <a title="VMWare" href="http://www.vmware.com/" target="_blank">VMware</a>) might be involved (<a title="Cloud Foundry" href="http://www.cloudfoundry.com/" target="_blank">CloudFoundry</a>). It also seemed that he likes <a title="Groovy" href="http://groovy.codehaus.org/" target="_blank">Groovy</a> and <a title="Grails" href="http://grails.org/" target="_blank">Grails</a> a lot.</p>
<div id="attachment_436" class="wp-caption aligncenter" style="width: 460px"><img class="size-full wp-image-436" title="rod johnson at tdc day 1" src="http://jcranky.wordpress.com/files/2009/11/061120091089.jpg" alt="rod johnson at tdc day 1" width="450" height="337" /><p class="wp-caption-text">rod johnson at tdc day 1</p></div>
<p>The talk was a little bit philosophic but interesting nonetheless.</p>
<h2>Career Panel</h2>
<p>Next we had a career panel, featuring the three international speakers. They basically told us some stories about how they started their careers, and things like what would they expect in interviews and the like.</p>
<div id="attachment_437" class="wp-caption aligncenter" style="width: 460px"><img class="size-full wp-image-437" title="career panel" src="http://jcranky.wordpress.com/files/2009/11/061120091100.jpg" alt="career panel" width="450" height="337" /><p class="wp-caption-text">career panel</p></div>
<h2>Lightning Talks</h2>
<p>Spread during the day, we also had lightning talks, with subjects like <a title="GWT" href="http://code.google.com/webtoolkit/" target="_blank">GWT</a>, <a title="Google Guice" href="http://code.google.com/p/google-guice/" target="_blank">Google Guice</a>, Agile Developement and Software Architecture, <a title="EJB 3.1 Samples" href="http://kenai.com/projects/ejb31codesamples" target="_blank">EJB 3.1 (samples, available on Kenai)</a> and ScrumToys (which is available as a <a title="Netbeans" href="http://www.netbeans.org" target="_blank">NetBeans</a> sample project and a <a title="Glassfish" href="https://glassfish.dev.java.net/" target="_blank">Glassfish</a> sample application). Two pictures of those:</p>
<div id="attachment_439" class="wp-caption aligncenter" style="width: 460px"><img class="size-full wp-image-439" title="agile and architecture" src="http://jcranky.wordpress.com/files/2009/11/061120091102.jpg" alt="agile and architecture" width="450" height="337" /><p class="wp-caption-text">agile and architecture</p></div>
<div id="attachment_440" class="wp-caption aligncenter" style="width: 460px"><img class="size-full wp-image-440" title="ejb 3.1 samples" src="http://jcranky.wordpress.com/files/2009/11/061120091108.jpg" alt="ejb 3.1 samples" width="450" height="337" /><p class="wp-caption-text">ejb 3.1 samples</p></div>
<p>And in-between presentations, Vinicius appeared again with one more toy. Now, a robotic balloon:</p>
<p style="text-align:left;">
<div id="attachment_441" class="wp-caption aligncenter" style="width: 460px"><img class="size-full wp-image-441" title="robotic balloon" src="http://jcranky.wordpress.com/files/2009/11/061120091105.jpg" alt="robotic baloon" width="450" height="337" /><p class="wp-caption-text">robotic balloon</p></div>
<h2 style="text-align:left;">Mike Keith</h2>
<p style="text-align:left;">Following we had Mike Keith talking about J2EE 6. He talked a little bit about the timeline of the past releases, and about a few new features coming. Note-worthy, although not that new, is the definition of JEE Profiles &#8211; different versions of the application server, with different sets of libraries, for different scenarios.</p>
<p style="text-align:left;">For some odd reason, I don&#8217;t have a picture of this&#8230; so lets move on.</p>
<h2 style="text-align:left;">Ed Burns</h2>
<p style="text-align:left;">Finally, Ed Burns talked about <a title="Java Server Faces" href="http://java.sun.com/javaee/javaserverfaces/" target="_blank">JSF</a> 2.0 components. Some quick highlights: development of components should now be really easy; components can be built in groovy and can be packaged together with CSS and JS files; support for EL inside CSS files and CSS can be put anywhere in the page &#8211; JSF takes care of moving them to the page <strong>head</strong> tag later.</p>
<p style="text-align:left;">
<div id="attachment_442" class="wp-caption aligncenter" style="width: 460px"><img class="size-full wp-image-442" title="JSF 2.0 Components with Ed Burns" src="http://jcranky.wordpress.com/files/2009/11/061120091111.jpg" alt="JSF 2.0 Components with Ed Burns" width="450" height="337" /><p class="wp-caption-text">JSF 2.0 Components with Ed Burns</p></div>
<p>And that was all for day 1 of the event! The next post will be about the second day, which was as busy as the first one. Stay tuned!</p>
<p>EDIT: <a title="TDC 2009 Day 2" href="http://jcranky.com/2009/11/12/tdc-the-developers-conference-2009-day-2/" target="_blank">Click here</a> for the coverage of the second day of the event.</p>
<p>EDIT 2: <a title="Bug Novo Video" href="http://www.globalcode.com.br/site/noticias/painel.seam?chave=bugNovo" target="_blank">Here is the link for the video</a>.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Inheriting Column Mappings in GORM]]></title>
<link>http://btiernay.wordpress.com/2009/11/08/inheriting-column-mappings-in-gorm/</link>
<pubDate>Sun, 08 Nov 2009 23:26:16 +0000</pubDate>
<dc:creator>btiernay</dc:creator>
<guid>http://btiernay.wordpress.com/2009/11/08/inheriting-column-mappings-in-gorm/</guid>
<description><![CDATA[When setting up a domain model in GORM, it is often handy to create a abstract base class to inherit]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>When setting up a domain model in GORM, it is often handy to create a abstract base class to inherit common table attributes. For those familiar with JPA, <a href="http://java.sun.com/javaee/5/docs/api/javax/persistence/MappedSuperclass.html"><code>@MappedSuperclass</code></a> provides this capability. With grails, this can be achieved simply by inheriting from an abstract base domain class such as the following:</p>
<pre class="brush: groovy;">
abstract class Base {
   Date dateCreated
   Date lastUpdated
   String updatedApplication = 'app'
   String updatedBy
   String codeVersion = '$Revision: 1.2 $'

   static constraints = {
      dateCreated(nullable:true)
      lastUpdated(nullable:true)
      updatedApplication(maxSize:64, nullable:true)
      updatedBy(maxSize:32, nullable:true)
      codeVersion(maxSize:64, nullable:true)
   }

   static mapping = {
      columns {
         addColumnMappings(delegate)
      }
   }

   static addColumnMappings = { Object d -&#62;
      delegate = d
      dateCreated column: 'CRT_DTTM'
      lastUpdated column: 'LST_UPD_DTTM'
      updatedApplication column: 'LST_UPD_APP'
      updatedBy column: 'LST_UPD_USR'
      codeVersion column: 'CD_VRSN'
   }
}
</pre>
<p>The class above shows how it is possible to override the default conventions in grails with its <a href="http://grails.org/doc/latest/guide/5.%20Object%20Relational%20Mapping%20(GORM).html#5.5.2%20Custom%20ORM%20Mapping">ORM Mapping DSL</a>.  However, grails currently <a href="http://jira.codehaus.org/browse/GRAILS-4031">does not support the merging of parent and subclass column mappings</a> as it does with constraints. This leads to having to redefine parent column mappings in each of the subclasses. In an effort to be more <a href="http://en.wikipedia.org/wiki/Don't_repeat_yourself">DRY</a>, there is a better way. By creating a static closure called <code>addColumnMappings</code>, subclasses can then invoke this method inside of their static <code>mapping</code> / <code>columns</code> closure:</p>
<pre class="brush: groovy;">
class Country extends Base {
	String name
	String isoCode
	Integer sortOrder

	static constraints = {
		name(maxSize:32, nullable:true)
		isoCode(maxSize:2, nullable:true)
		sortOrder(nullable:true)
	}

	static mapping = {
		table 'COUNTRY'
		version column: 'RW_VRSN'
		sort 'sortOrder'
		columns {
			id column: 'C_ID'
			name column: 'NM'
			isoCode column: 'ISO_CD'
			sortOrder column: 'SRT_ORDR'

			Base.addColumnMappings(delegate)
		}
	}
}
</pre>
<p>Note the passing of the closure&#8217;s <a href="http://groovy.codehaus.org/Closures">delegate</a>. This allows the <code>addColumnMappings</code> closure to adjust its delegate internally and the code to execute as if it were inlined in calling class. </p>
<p>In conclusion, this method allows one to centralize common column mappings to a common domain base class. Although it requires manual intervention to invoke a helper method, it&#8217;s much better than the alternative approach of repeating yourself.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Grails URLMapping]]></title>
<link>http://cmaclachlan.wordpress.com/2009/11/02/grails-urlmapping/</link>
<pubDate>Tue, 03 Nov 2009 06:32:38 +0000</pubDate>
<dc:creator>cmaclachlan</dc:creator>
<guid>http://cmaclachlan.wordpress.com/2009/11/02/grails-urlmapping/</guid>
<description><![CDATA[Given this URLMapping "/news/show/$id?/item/$itemId?" { controller = "news" action = "show" } result]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Given this URLMapping</p>
<pre>"/news/show/$id?/item/$itemId?" {
 controller = "news"
 action = "show"
 }</pre>
<p>results in the following params:</p>
<p>URL: http://localhost:8080/rfw/news/show<br />
params: ["action":"show", "controller":"news"]</p>
<p>URL: http://localhost:8080/rfw/news/show/1<br />
params: ["id":"1", "action":"show", "controller":"news"]</p>
<p>URL: http://localhost:8080/rfw/news/show/1/item<br />
params: ["id":"1", "action":"show", "controller":"news"]</p>
<p>URL: http://localhost:8080/rfw/news/show/1/item/4<br />
params: ["id":"1", "action":"show", "controller":"news", "itemId":"4"]</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[IX &lt;3]]></title>
<link>http://since92.wordpress.com/2009/11/03/ix-3/</link>
<pubDate>Tue, 03 Nov 2009 03:08:08 +0000</pubDate>
<dc:creator>since92</dc:creator>
<guid>http://since92.wordpress.com/2009/11/03/ix-3/</guid>
<description><![CDATA[My new loves. Got em for the lo&#8217; too - I call that a W. Alex]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><img class="aligncenter size-full wp-image-177" title="IMG00203" src="http://since92.wordpress.com/files/2009/11/img00203.jpg" alt="IMG00203" width="450" height="360" /></p>
<p>My new loves. Got em for the lo&#8217; too -</p>
<p><img class="aligncenter size-full wp-image-178" title="IMG00195" src="http://since92.wordpress.com/files/2009/11/img00195.jpg" alt="IMG00195" width="450" height="360" />I call that a W.</p>
<p>Alex</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[How to start using liquibase past the project launch]]></title>
<link>http://maxkorytko.wordpress.com/2009/11/03/how-to-start-using-liquibase-past-the-project-launch/</link>
<pubDate>Tue, 03 Nov 2009 01:51:45 +0000</pubDate>
<dc:creator>maxkorytko</dc:creator>
<guid>http://maxkorytko.wordpress.com/2009/11/03/how-to-start-using-liquibase-past-the-project-launch/</guid>
<description><![CDATA[Sometimes it happens that you need to change the domain model (which results in altering the DB sche]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Sometimes it happens that you need to change the domain model (which results in altering the DB schema) later in the project. So how do you synchronize your development database with QA and then production?</p>
<p>If you had started using liquibase early, it would not be a problem. You would update the changle log, and generate SQL using grails migrate-sql command. You would then take the sql file and run it against QA and production databases.</p>
<p>Suppose you change the schema of your development database.  It could be that you created or dropped a column or any other modification. You will have to alter QA and Production databases in exact same way. If you have a proper SQL to do it, then it shouldn&#8217;t be a problem. If, for example, you change a domain class in Grails, GORM will alter the database for you. So you need a way to apply these changes to other databases. Liquibase can help you here. Follow these steps set up liquibase and alter the schema.</p>
<p><strong>Generate change log file</strong></p>
<p>Run grails generate-changelog command against your development database to generate a changelog xml file. The changelog will contain a number of &#60;changeSet&#62;s to fully describe your database schema.</p>
<p><strong>Synchronize the change log</strong></p>
<p>This step is very important since you don&#8217;t want liquibase to generate SQL to create your tables again. The idea is that liquib base created databasechangelog and databasechangeloglock tables to keep track of what changes have been applied. When you start using liquibase later in your project, you won&#8217;t have them. The way to create them is to synchronize the change log. If you execute grails <strong>changelog-sync</strong>, liquibase will create databasechangelog and databasechangeloglock tables, and insert all the changes sets making them marked as applied. There is also grails <strong>changelog-sync-sql</strong> command which is used to generated SQL code. This is useful when you want to review what SQL liquib base is going to execute or create a SQL file to execute against a database on another computer.</p>
<p><strong>Migrate changes</strong></p>
<p>Once you&#8217;ve compoleted the first 2 steps, you&#8217;re ready to migrate changes. Run grails migrate-sql to see the liquib base generated SQL.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Grails files upload]]></title>
<link>http://maxkorytko.wordpress.com/2009/11/03/grails-files-upload/</link>
<pubDate>Tue, 03 Nov 2009 01:48:26 +0000</pubDate>
<dc:creator>maxkorytko</dc:creator>
<guid>http://maxkorytko.wordpress.com/2009/11/03/grails-files-upload/</guid>
<description><![CDATA[Grails provides a &lt;g:uploadForm&gt; tag to work with file upload. If for some reason you need to ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Grails provides a &#60;g:uploadForm&#62; tag to work with file upload. If for some reason you need to use HTML &#60;form&#62; tag, make sure to set the <strong>enctype</strong> attritbute to <strong>multipart/form-data</strong>.</p>
<p>Suppose you have a form to upload a file like the one below:</p>
<pre>

&#60;g:uploadForm action="some" controller="some"&#62;
    Choose a file: &#60;input type="file" name="uploadedFile" /&#62;
    &#60;g:submitButton name="doUploadBtn" value="Upload" /&#62;
&#60;/g:form&#62;
</pre>
<p>Grails automatically creates a request object of type org.springframework.web.multipart.MultipartHttpServletRequest. This means that in your actions you&#8217;ll be able to do stuff like this:</p>
<pre>
  // get the list of uploaded files
  request.getFileNames().each{fileName-&#62;
      MultipartFile file request.getFile(fileName)
      file.transferTo(new File("/home/user/uploads/${file.getOriginalFilename()}"))
  }
</pre>
<p>That&#8217;s not the end of the story yet. The params map will also contain files being uploaded represented by the org.springframework.web.multipart.MultipartFile objects.</p>
<pre>
    // example using the params object
    if (params.uploadedFile.isEmpty())
        params.uploadedFile.transferTo(new File("destination"))
</pre>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Grails Acegi Plugin and Securing Multiple Resources using Basic Authentication]]></title>
<link>http://johnnywey.wordpress.com/2009/10/29/grails-acegi-plugin-and-securing-multiple-resources-using-basic-authentication/</link>
<pubDate>Fri, 30 Oct 2009 01:47:09 +0000</pubDate>
<dc:creator>johnnywey</dc:creator>
<guid>http://johnnywey.wordpress.com/2009/10/29/grails-acegi-plugin-and-securing-multiple-resources-using-basic-authentication/</guid>
<description><![CDATA[Grails is pretty awesome. Not only does it use Groovy as its main language, but it also provides nic]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><a href="http://www.grails.org">Grails</a> is pretty awesome.  Not only does it use <a href="http://groovy.codehaus.org">Groovy</a> as its main language, but it also provides nice <a href="http://en.wikipedia.org/wiki/Domain-specific_language">DSL</a> access to <a href="http://www.springsource.org/about">Spring</a> settings.</p>
<p>Securing a website is something that can often be fairly complex and easy to get wrong.  Grails provides a plugin for the state-of-the-art security model <a href="http://www.acegisecurity.org/">Spring Security (also called Acegi)</a> (plugin can be found <a href="http://grails.org/plugin/acegi">here</a>).</p>
<p>Everything was all well and good until I tried to use two different security models simultaneously: a form-based login for human beings and an http basic authentication login for machines consuming an API.</p>
<p>This turned out to be pretty hard.  The plugin requires setting the following in the resources.groovy file to work with basic authentication at all:</p>
<pre class="brush: java;">
beans = {
  authenticationEntryPoint(org.springframework.security.ui.basicauth.BasicProcessingFilterEntryPoint) {
    realmName = 'Grails Realm'
  }
}
</pre>
<p>(The plugin is supposed to automatically do this by setting the <code>basicProcessingFilter = true</code> flag in the SecurityConfigure.groovy file, but there is a bug as of version 0.5.2 which is, as of now, the latest production release.)  This worked for basic authentication, but would no longer redirect users to the form-based login.</p>
<p>Back to the drawing board.</p>
<p>What I discovered was that I could change between using the form-based login or the http headers authentication but not use them both.  (I should clarify this by saying that I could shove the headers into the request and it would work, but a challenge response of 401 was not being sent back to the client which technically breaks the http authentication spec.)  I found <a href="http://www.nabble.com/ACEGI-tc20480575.html">this</a> thread (with contributions from the author of the Acegi plugin itself) but, while it pointed me in a nice direction, it didn&#8217;t answer the question fully.  What I really needed was a way to use the URL to decide how to authenticate.</p>
<p>I finally discovered that the ExceptionTranslationFilter was not unique for the URLs I was using.  In short, if the URL looked like: <code>http://www.test.com/application/api/user/show/1</code>, I wanted to use basic authentication and if the URL was <code>http://www.test.com/application/user/show/1</code>, I wanted to use the form-based authentication.  The redirect is controlled by the ExceptionTranslationFilter and there was only one (so only one model would work at a time).</p>
<p>All I ended up having to do is create my own ExceptionTranslationFilter and wire it to the API URL.  The final code in resources.groovy looks as follows:</p>
<pre class="brush: java;">
import org.springframework.security.util.FilterChainProxy
import org.codehaus.groovy.grails.plugins.springsecurity.GrailsAccessDeniedHandlerImpl
import org.springframework.security.ui.ExceptionTranslationFilter

// Place your Spring DSL code here
beans = {
  basicAuthenticationEntryPoint(org.springframework.security.ui.basicauth.BasicProcessingFilterEntryPoint) {
    realmName = 'Grails Realm'
  }

  basicExceptionTranslationFilter(ExceptionTranslationFilter) {
    authenticationEntryPoint = ref('basicAuthenticationEntryPoint')
    accessDeniedHandler = ref('accessDeniedHandler')
    portResolver = ref('portResolver')
  }

  springSecurityFilterChain(FilterChainProxy) {
    filterInvocationDefinitionSource = &#34;&#34;&#34;
         CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
         PATTERN_TYPE_APACHE_ANT
         /xml*/**=authenticationProcessingFilter,basicProcessingFilter,securityContextHolderAwareRequestFilter,anonymousProcessingFilter,basicExceptionTranslationFilter,filterInvocationInterceptor
         /**=httpSessionContextIntegrationFilter,logoutFilter,authenticationProcessingFilter,securityContextHolderAwareRequestFilter,rememberMeProcessingFilter,anonymousProcessingFilter,exceptionTranslationFilter,filterInvocationInterceptor
         &#34;&#34;&#34;
  }
}
</pre>
<p>Now, visiting any URL that prefixed by a <code>/xml/</code> will be a call to the basic authentication headers and every other prefix will be a standard form-based login.</p>
<p>Since I <a href="http://en.wiktionary.org/wiki/yak_shaving">shaved a serious yak</a> figuring this out, I hope it helps someone!</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Novo endereço]]></title>
<link>http://edersonmelo.wordpress.com/2009/10/27/novo-endereco/</link>
<pubDate>Tue, 27 Oct 2009 12:54:10 +0000</pubDate>
<dc:creator>edersonmelo</dc:creator>
<guid>http://edersonmelo.wordpress.com/2009/10/27/novo-endereco/</guid>
<description><![CDATA[Peço a todos desculpas pela falta de postagem recentemente, mas o motivo foi nobre, a troca de ender]]></description>
<content:encoded><![CDATA[Peço a todos desculpas pela falta de postagem recentemente, mas o motivo foi nobre, a troca de ender]]></content:encoded>
</item>
<item>
<title><![CDATA[SpringOne/2GX - My Groovy and Grails Experience]]></title>
<link>http://toinfinity.wordpress.com/2009/10/24/springone2gx-my-groovy-and-grails-experience/</link>
<pubDate>Sun, 25 Oct 2009 03:28:55 +0000</pubDate>
<dc:creator>gdjsky01</dc:creator>
<guid>http://toinfinity.wordpress.com/2009/10/24/springone2gx-my-groovy-and-grails-experience/</guid>
<description><![CDATA[Some Thoughts on the springOne 2GX Conference It’s been a very long time indeed since I went to any ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><h2>Some Thoughts on the springOne 2GX Conference</h2>
<p>It’s been a very long time indeed since I went to any conference. For quite some time I simply did not have the wherewithal to advance my employers that amount of cash. Hard to believe perhaps but true nonetheless. So this was my first conference in quite some time and therefore my first 2GX. Yes yes i know it’s springOne 2GX. It would not surprise me if Rod Johnson and SpringSource at some point drops the 2GX name. To me it was mostly about Groovy and Grails. Spring is not a paradigm shift. Groovy and Grails is in my opinion.</p>
<p>Let me get this out of the way, I am <em>opinionated</em>. If you are easily offended, then you should move on to another blog. However I am also quite capable of stating I was <span style="text-decoration:underline;">wrong</span>. So feel free to comment. I get the feeling SpringSource would prefer springOne 2GX be more about Enterprise’ish Spring. I love Spring&#8230; kind of&#8230; like most Java/XML/Annotations gorging technologies, it is a love/hate relationship.</p>
<h3>The City</h3>
<p>Whoever decided to hold 2GX in New Orleans<em> ought get a raise</em>! Keep those ideas coming! <em>Fabulous city.</em> My wife and I were very lucky to spend 6 non-conference days as well as the four conference days there. We barely scratched the surface of places to see and thing to do  We loved the architecture, the fabulous food (we are foodies), and the great party atmosphere. Oh my goodness did we adore the restaurants!</p>
<h3>First Impressions of the Conference</h3>
<p>Well can I be frank? Or Jeff? Here comes the first controversial comment&#8230; Was putting Rod Johnson on the T-shirts a good idea? Really?  Come on. Maybe it was supposed to be funny, idiomatic, but to me,  it’s a egotistical misstep &#8211; even if it was not Rod Johnson&#8217;s idea. And the Rod Johnson bobble-head? Give me a break. Again, maybe it’s an inside ‘SpringSource’ joke, but if so, I don’t get it. Maybe someone will explain it?</p>
<p>So I have a collector’s item t-shirt cause I am not wearing Rod Johnson on my chest just like I would not wear Steve Jobs or Larry Ellison on my chest. A shirt with Groovy on it would have been better. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h3>The SWAG</h3>
<p>I don’t go to conferences for the SWAG of course. However the presenters got nice tasteful springOne 2Gx golf shirts which would have been a nice memento. We got ‘Rod Johnson’ t-shirts and bobble-heads. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  And the stated backpacks were no shows. Oh well. The portfolio is ok. All in all, I’ve seen others come back from conferences with better. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h3>Conference Food</h3>
<p>Excellent. ‘nuff said. Breakfast, lunch, and dinner were included. That was awesome. I am not sure if that is how all conferences go, but given the conference cost, it was quite nice. I will admit though I did not partake of dinner as I’d be damned if I was going to eat a buffet (albeit a good one) when there was  <em>world class food within walking distance!! </em>And of course my wife was with me. My one critique was the last day there was no more coffee for the final sessions and was unceremoniously told that by one female attendant.</p>
<h3>Organization</h3>
<p>Excellent. Kudos to the organizers. I thought it all went off splendidly. Almost transparent to the attendees. Things just seemed to work. <em>Bravo</em>!</p>
<h3>Keynote</h3>
<p>Well I don’t remember much other than thinking, <em>&#8220;Note to keynote speakers: Do not do demos in your speech!!!!!&#8221;</em> It is the fastest way to <em>bore</em> your audience. When you lose your audience you lose your impact. Speaking 101. Leave the demos for sessions or ‘technical keynotes’. I ducked out after the second demo. It was getting late my wife and I needed to get to dinner before things closed (which they do on Mondays). It would have been a non-issue except the speech went longer than stated in part because of the demos! Also, though I left early, I do not think Guillaume Laforge was called upon. In my opinion, if you call on Graeme Rocher to talk, which is great, you should call on the Groovy Project Lead as Groovy is the great enabler. And far more important I think, than a chat program written in FLEX. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  It&#8217;s not that I am putting down FLEX&#8230; okay&#8230; lied&#8230; I am&#8230; <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<h3>The Speakers</h3>
<p>I can’t say enough about how <em>good</em> the speakers were. I <em>do</em> know how hard it is to prepare&#8230; which brings me to several points, I suppose true of most conferences, but this was my first in a long time&#8230;</p>
<p>There were obviously a hierarchy of presenters.</p>
<ol>
<li> <em>Those that prepared</em></li>
<li><em> Those that did not</em></li>
</ol>
<p>The first group fell into two classes.</p>
<ul>
<li> Those that rehearsed or had given their presentations beforehand</li>
</ul>
<p style="padding-left:60px;">These speakers were fluid and never dwell too long on any one slide. They knew the pace of their presentation and what it would take to get through it. I assume some used timers on their phones or screens. Well done!! (In fairness one presenter was honest about not being able to get through every slide as the presentation was meant to be more than 1.5 hours.)</p>
<p style="padding-left:30px;">
<ul>
<li> Those that prepared but did not rehearse.</li>
</ul>
<p style="padding-left:60px;">These presenters knew what they want to say, had prepared slides, but had not thought about how long it would take to get through them. They would dwell upon items too long and too early in the presentation. This caused them to only get through a third to two thirds of their presentation. This resulted in the final third being whizzed through in the last 5 to 10 minutes. Also,<em> please don&#8217;t read off the slides</em>. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Have notes in front of you that explain the points.</p>
<p>The second group fell into two classes</p>
<ul>
<li> Those that did not prepare because they are completely natural speakers. They have such a rich background in the subject matter that they can ad-lib their way through and be totally coherent.  Several of the Groovy Rockstars obviously were in this realm.</li>
</ul>
<ul>
<li> Those that did not prepare, thought they knew what they were going to say and type, thought they were natural speakers, thought they could ad-lib, spent lots of time looking at their screens, and lost their audience. There were only one or two of these. They were rare.</li>
</ul>
<p>Take away&#8230; should I ever be a presenter I will :</p>
<ul>
<li> Have slides because in my opinion, it’s the right thing to do.</li>
<li>If I am going to live code, make sure I have<em> working and tested code</em> in another project as a ‘backup’ and test it again just before my talk just in case ‘something goes wrong’. Don&#8217;t depend on network connectivity. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </li>
<li>Make sure I rehearse back at my company and get the timing of the slides right.</li>
<li>And, <em>I won’t read off the slides!!! <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
</em></li>
</ul>
<p>Oh and don’t spend a lot of time talking <em>off topic</em> unless you put in the conference summary you tend to go off topic. It’s not fair to the attendees.</p>
<h3>The Content</h3>
<p>I have a few comments.</p>
<ol>
<li>I’d love to see more depth. Who wouldn&#8217;t want to be taught by <em>the</em> domain experts?! Now I know people make good livings consulting, (or at least make a living).  I am not asking anyone to give away that which they could get paid for, but I’d love to have seen some 3 or 4 hour deep dives for those that were willing to forgo ‘overviews’.  I called this the “more depth, less breadth track’.</li>
<li>There was almost no session I did not learn something in. That is after all why one goes.</li>
<li>Some sessions should be marked, &#8220;Must already know Groovy (or GRAILS)&#8221;. Why? Because it&#8217;s 10 or 15 minutes that could be spent digging in.</li>
</ol>
<p>I must say many of the presenters gave outstanding content and are obviously domain experts. <em>Paul King, Burt Beckwith, Guillaume Laforge, Scott Brown</em>, to name a few were marvelous. I learned a tasty morsel or more in each presentation just as I had hoped.</p>
<p>Those were people I knew coming to the conference I wanted to listen to. However there were others I had never heard of before. <em>Chris Richardson</em>&#8217;s talk on Amazon Web Services IMO was a real eye opener. In someways his talk was THE wave of the future for scalable systems. Not the cloud. But the concepts you need to wrap your head around to code in a high availability replicated environment.</p>
<p>Then comes the <em>Terminator of Talkers</em>: <em>Venkat Subramaniam</em>! He is an expert <em>and</em> a showman. That makes a powerful and memorable impression! His <em>patterns</em> presentation really was nothing tricky that you could not learn on your own &#8211; given time and experience. However his <em>masterful presentation</em> and the way he grabs his audience at the start and never lets go means I had a lot of  <em>&#8220;&#8216;Ah ha!&#8221;</em> light bulb turning on in my head moments.</p>
<p>Bottom line, <em>mostly very good</em>, some good, some could use a tweak or two.</p>
<h3><em>Most Hype</em></h3>
<p><a href="http://www.springsource.org/roo" target="_blank">Roo</a>. I did not attend the Roo sessions but my colleagues did. They were <em>impressed</em> to say the least! I heard more about <a href="http://www.springsource.org/roo" target="_blank">Roo</a> than almost anything else. Though <a href="http://www.springsource.org/roo" target="_blank">Roo</a> and <a href="http://grails.org/" target="_blank">Grails</a> are siblings, real siblings fight occasionally. I wonder where this will lead&#8230;</p>
<h3>The Community</h3>
<p>I was nearly the oldest person in the rooms if not the oldest. That felt weird. It is sobering to say the least. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  I was pleasantly surprised that most of the <a href="http://groovy.codehaus.org/" target="_blank">Groovy</a> and <a href="http://grails.org/" target="_blank">Grails</a> <a href="http://glaforge.free.fr/weblog/" target="_blank">rockstars</a> are VERY approachable and gracious. You all <a href="http://www.asert.com/" target="_blank">know</a> who <a href="http://burtbeckwith.com/blog/" target="_blank">you</a> are (if <a href="http://www.agiledeveloper.com/blog/" target="_blank">you</a> are reading this). In any community there are always a few that take themselves too seriously. And there are those perhaps that are generally uncomfortable with too much attention and shun the limelight. I think there were a few of those as well. No one was downright rude to me! LOL! And nobody (yet) called me ‘pops’. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h3>Happiness and Wishes</h3>
<p>When I get out and talk to other developers I am always really thankful for the job I have. Many of those I talk with are locked into technologies because of their corporate policies or their client&#8217;s policies. Also some I meet can&#8217;t (or worse won&#8217;t) explored new items. To paraphrase a Venkat quip, &#8220;<em>Does your old technology know you are seeing new technology?&#8221;</em></p>
<p><em>I am lucky.</em> If I can make it perform (see next paragraph) I can make it to production. Use the best tool (balanced with productivity) for the job.</p>
<p>For all the interesting things I heard at 2GX the <em>issues of performance</em> were the<em> least understood</em> and the least covered. Perhaps that is off topic for 2GX. I think there was maybe a session or so about <a href="http://www.terracotta.org/" target="_blank">terracotta</a>. And of course Burt Beckworth&#8217;s talk on clustering. However: I work on a site that gets 100&#8217;s of thousands of logins a day. 30+ million page views a day. 100&#8217;s of millions of service calls. Where does Groovy and Grails fit there? Or don&#8217;t they? Where are papers on sites bigger than a big blogging app? Or an internal CRM app? Anything I use either has to be fast out of the box or easily scaled horizontally. That&#8217;s why I liked Scott Brown&#8217;s talk on GRAILS without a UI. I am all over that, just have to crank up a <a href="http://faban.sunsource.net/" target="_blank">Faban</a> test and benchmark / load test it.</p>
<p>Finally, should this community lead the charge away from RDBM&#8217;s? GRAILS makes CRUD easy. But CRUD is still the bottleneck any high traffic site will get to. And look at all the under the covers cruft CRUD requires. That&#8217;s what was cool about Chris Richardson&#8217;s session. He was pointing the way. You don&#8217;t need real time CRUD. You can design for <em>eventually consistency</em>. And you often don&#8217;t need to normalize data anymore. Is that not the next <em>simplify our apps</em> direction? Key Value stores, HBASE, no SQL&#8230;</p>
<p>That&#8217;s where I am headed. GRAILS in the service layer with multi-threaded, simultaneous calls to DBs (until I can ditch them), distributed read-repair caches (like <a href="http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf" target="_blank">Amazon Dynamo</a>), and other services. Maybe on to NoSQL. Should be fun. I&#8217;ll keep you posted here. Who knows, maybe I&#8217;ll be I&#8217;ll get my own  cool springOne 2GX golf shirt next year!!</p>
<hr />
<h3>The Hotel</h3>
<p>You can stop right here as the rest of this is probably <em>even less</em> interesting than the stuff above.</p>
<p>This is going to come as a shock to some of you, but as a 4 star hotel the Roosevelt left much to be desired. As a conference venue it was fine. But as a <a href="http://en.wikipedia.org/wiki/Four_star_hotel#Hotel_ratings" target="_blank">4 star hotel </a>the staff has a long way to go.</p>
<ul>
<li>After booking me on one floor, they made my wife and I move because the floor <em>was taken by a football team</em> (the <a href="http://www.giants.com/index.html" target="_blank">Giants</a> if you must know). However when we checked in we were told it was no problem and we <em>should not</em> have to move. So we completely unpacked. After all we were staying 10 days. When we checked in at the front desk surely someone knew the Giants were coming that weekend oui?</li>
<li>They made us move to a <em>smaller</em> room with broken items, doors that did not shut, and a shower and toilet that were coupled such that using one backed up the other.</li>
<li>They mis-charged my credit card when the room was already paid for and thus for a day <em>maxed out</em> my credit card. Thus we were cash and carry for a day. Good thing we had enough. Oh and at the time, they were <em>completely ‘unapologetic’</em> insisting they had done nothing wrong.</li>
<li>We were charge $31 for the minibar because my wife placed her meds on top of some items where they would stay cool. We used nothing, but they don’t check. They just charge. That got reversed. Cute aside: The front desk told me <em>“The minibar does not get cold.”</em> Precious. It took 2 refrigerators and 3 calls to get a one that worked.</li>
<li> At first they knew nothing about free internet in the room. Those charges also eventually got reversed.</li>
<li>Even after that, several times the room went unmade up and took several calls to get someone up to do it. When it was made up sometime things like bathroom tissue were not replenished, dirty glasses left, etc.</li>
<li>After some rather frank exchanges with my assistant back at the office and their management we were moved to a suite, comp’d a night, and our bill reduced</li>
<li>So while I kept hearing all this gushing from attendees about how great the hotel was, I could only think, <em>“Well, maybe most conference hotels are generally a lot worse than this?”</em> However this is supposed to be a four star hotel where <em>service is king</em>. Otherwise it’s just a luxurious and expensive Motel 6. I guess people have a different expectation of what a luxury hotel should be than me&#8230; or maybe I&#8217;ve stayed in a few in my day&#8230; <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </li>
</ul>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[SpringOne 2GX final thoughts]]></title>
<link>http://kousenit.wordpress.com/2009/10/23/springone-2gx-final-thoughts/</link>
<pubDate>Fri, 23 Oct 2009 15:42:19 +0000</pubDate>
<dc:creator>Ken Kousen</dc:creator>
<guid>http://kousenit.wordpress.com/2009/10/23/springone-2gx-final-thoughts/</guid>
<description><![CDATA[I wound up too busy to maintain my daily reports, but here are a couple of items I want to highlight]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>I wound up too busy to maintain my daily reports, but here are a couple of items I want to highlight as important take-aways from <a href="http://www.springone2gx.com">SpringOne 2GX</a>.  Rather than just recap sessions or dole out marketing-type praise, I&#8217;m going to focus on some things I learned that I didn&#8217;t necessarily expect.</p>
<ol>
<li>A lot of people who advocate Scala or Clojure over Groovy emphasize their scalability and features like immutable objects.  Groovy&#8217;s <code>@Immutable</code> annotation takes care of the latter, and the <a href="http://gpars.codehaus.org/">gpars</a> project handles the rest.  You can use <code>@Immutable</code> right away.  The <strong>gpars</strong> project is still pretty early in its lifecycle, but <strong>it&#8217;s going to be HUGE</strong>.</li>
<li>By the way, despite the fact it looks like it&#8217;s pronounced &#8220;Gee-Pars&#8221; (and Paul King kept calling it that), I love the way Scott Davis kept referring to it as &#8220;<em>jeepers</em>&#8221; <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
<li>T<strong>witter has reached &#8220;essential&#8221; status at conferences</strong>.  This is the first conference I attended where I would have missed half of what was going on if I hadn&#8217;t been using my Twitter client the whole time (I use <a href="http://www.twhirl.org/">twhirl</a>, btw, but I&#8217;m open to other possibilities).  Most of the presenters (@glaforge, @graemerocher, @paulk_asert, @daveklein, @jeffscottbrown, @scottdavis99, @aalmiray, and several others that would come to mind if I thought harder about it) were continually tweeting good info.  As a company, @ManningBooks did an excellent job, especially with their #hideandtweet game.</li>
<li>As a totally unexpected (to me) underlying theme, the <strong>rise of non-relational databases</strong> is striking.  Apparently, the major cloud providers (<a href="http://code.google.com/appengine/">Google AppEngine</a>, <a href="http://aws.amazon.com/simpledb/">Amazon SimpleDB</a>) have decided that relational simply doesn&#8217;t scale, so they&#8217;re going with &#8220;schemaless&#8221; solutions.  I had no idea how significant that was until I heard enthusiastic support for the idea from the audience of one of the Amazon cloud computing sessions.  I know a lot of DBAs who are in for quite a shock.  So is Oracle, too, and that&#8217;s got to be a Good Thing.</li>
<li>Like Grails recently and Ruby on Rails before that, <strong>the new <a href="http://www.springsource.org/roo">Spring Roo</a></strong><strong> project makes existing web development approaches look antiquated</strong>.  Roo and <a href="http://grails.org">Grails</a> are siblings that will learn a lot from each other as they continue to grow.  For example, Grails has an interactive console, but it isn&#8217;t nearly as cool as Roo&#8217;s.  I&#8217;m sure that&#8217;ll change soon enough.</li>
<li>The extraordinarily <strong>humility and friendliness of the Groovy and Grails core teams</strong> is charming.  Everyone I met seems almost embarrassed to be having so much fun working on something they like so much.  There&#8217;s none of the arrogance or elitism that characterizes so many other revolutionary groups, and they always go out of their way to help and answer questions.  I love talking to them and really hope to be included as one of them some day.</li>
<li>Speaking of that, sometimes timing is everything.  I told Guillaume Laforge (<a href="http://groovy.codehaus.org">Groovy</a> team lead, for those who don&#8217;t know) that he was one of my personal heroes and nearly made him <strong>spit up his drink</strong>. Sorry, I didn&#8217;t get a picture. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
<li><a href="http://griffon.codehaus.org">G</a><strong><a href="http://griffon.codehaus.org">riffon</a></strong><strong> made several fans</strong> at the conference, especially among the existing Groovy people.  I still think it&#8217;s a bit early for mainstream practice, but all the signs are favorable.</li>
<li><strong>October is definitely the right time to visit New Orleans.</strong></li>
</ol>
<p>I had a very good time at the conference and am already looking forward to the next one.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Grails Liquibase plugin commands]]></title>
<link>http://maxkorytko.wordpress.com/2009/10/22/grails-liquibase-plugin-commands/</link>
<pubDate>Thu, 22 Oct 2009 18:58:01 +0000</pubDate>
<dc:creator>maxkorytko</dc:creator>
<guid>http://maxkorytko.wordpress.com/2009/10/22/grails-liquibase-plugin-commands/</guid>
<description><![CDATA[Here is the list of commands available after installing LiquiBase: grails changelog-sync grails chan]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Here is the list of commands available after installing LiquiBase:</p>
<p>grails changelog-sync<br />
grails changelog-sync-sql<br />
grails clear-checksums<br />
grails db-diff<br />
grails db-doc<br />
grails drop-all<br />
grails future-rollback-sql<br />
grails generate-changelog<br />
grails liquibase-setup<br />
grails list-locks<br />
grails migrate<br />
grails migrate-count<br />
grails migrate-sql<br />
grails release-locks<br />
grails rollback<br />
grails rollback-count<br />
grails rollback-count-sql<br />
grails rollback-sql<br />
grails rollback-to-date<br />
grails rollback-to-date-sql<br />
grails status<br />
grails tag<br />
grails validate-changelog</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Grails to iFreeTools CRM]]></title>
<link>http://rrajkumar.wordpress.com/2009/10/21/grails-to-ifreetools-crm/</link>
<pubDate>Wed, 21 Oct 2009 14:51:19 +0000</pubDate>
<dc:creator>rrajkumar</dc:creator>
<guid>http://rrajkumar.wordpress.com/2009/10/21/grails-to-ifreetools-crm/</guid>
<description><![CDATA[Had to gain some domain knowledge on CRM/SFA (Sales Force Automation) and provide a solution for a c]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Had to gain some domain knowledge on CRM/SFA (Sales Force Automation) and provide a solution for a client, to host in their premises.</p>
<p>My client was not so interested in Python and preferred the use of Java for the solution, more so after knowing my past experience. So after more than a year into Python was back into Java, evaluating frameworks for use in the project.</p>
<p>The search lead me to <a rel="nofollow" href="http://grails.org/">Grails</a>.</p>
<p>The &#8220;<a rel="nofollow" href="http://en.wikipedia.org/wiki/Convention_over_configuration">Convention over Configuration</a>&#8221; and &#8220;<a rel="nofollow" href="http://en.wikipedia.org/wiki/Don't_Repeat_Yourself">Don&#8217;t repeat yourself</a>&#8221; approach which Grails enables was a pleasure to work with. (Except, where I believed that grails was against the DRY principles &#8211; having to define &#8220;constraints&#8221;, even for the sake of maintaining the order of properties.)</p>
<p>But, it was a lot better than having to code XML configuration files. One could easily configure/code Servlet Mappings, Filters and Tags, without having to add/modify a single XML entry. And even better, one could get a compiled war (with all those XML files) and deploy it in any servlet container !!</p>
<p>In the next week or so, building a CRM/SFA prototype using Grails helped me pickup stuff from both the domains. And, the way in which Grails works, made me want to approach Python programming for Google AppEngine with the &#8220;Convention over Configuration&#8221; and &#8220;Don&#8217;t repeat yourself&#8221; approach.</p>
<p>Though Django enables such features, I was a bit biased against using the full pack, since that would require packaging a &#8220;lot of files&#8221; &#8211; so much that it exceeded the file limits of initial Google AppEngine hosting and needed a new feature (zip packaging) to enable those features. I am allergic to &#8220;lot of files&#8221;, especially if I will have to modify a few of them to have it working my way.</p>
<p>And with the meta programming features available in python, I believed that it could be easier to implement a simple version for my requirements.</p>
<p>The result of that effort is : <a href="http://ifreetools.blogspot.com/2009/10/ifreetools-crm-alpha-version.html">iFreeTools CRM (Alpha)</a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Service w grails]]></title>
<link>http://nyfi.wordpress.com/2009/10/20/service-w-grails/</link>
<pubDate>Tue, 20 Oct 2009 15:19:52 +0000</pubDate>
<dc:creator>nyfi</dc:creator>
<guid>http://nyfi.wordpress.com/2009/10/20/service-w-grails/</guid>
<description><![CDATA[Nie długi rozdział książki Definitive guide to grails, tym razem podejmuje tematykę serwisów. Często]]></description>
<content:encoded><![CDATA[Nie długi rozdział książki Definitive guide to grails, tym razem podejmuje tematykę serwisów. Często]]></content:encoded>
</item>
<item>
<title><![CDATA[SpringOne 2GX Day 0]]></title>
<link>http://kousenit.wordpress.com/2009/10/20/springone-2gx-day-0/</link>
<pubDate>Tue, 20 Oct 2009 13:58:02 +0000</pubDate>
<dc:creator>Ken Kousen</dc:creator>
<guid>http://kousenit.wordpress.com/2009/10/20/springone-2gx-day-0/</guid>
<description><![CDATA[I&#8217;m at the SpringOne2GX conference (http://www.springone2gx.com) in New Orleans this week. Mon]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>I&#8217;m at the SpringOne2GX conference (http://www.springone2gx.com) in New Orleans this week.  Monday (which they&#8217;re calling day 1 but I&#8217;m referring to here as day 0) consisted only of registration plus a reception and finally a keynote by Rod Johnson.</p>
<p>As a frequent NFJS attendee, the &#8220;reception&#8221; was a bit of a culture shock.  One of the great appeals of No Fluff, Just Stuff is that there are no vendors present.  This reception turned out to be purely a vendor reception, with wine and beer and light munchies.  The vendors were all talking about Spring, of course, not Groovy or Grails.  I didn&#8217;t find any of them particularly overwhelming.</p>
<p>The most amusing part is that one of the Platinum Sponsors was, of all companies, Microsoft.  The Microsoft rep was sitting at a table by himself, with no posters or anything.  He was sitting in front of a Mac (!).</p>
<p>When I asked him about the Mac, he showed me that it was running VMWare and a Windows 7 pre-release version.  Then I asked him about he platinum status, in a rather obnoxious way.</p>
<p>&#8220;I can understand why Microsoft might want to be here,&#8221; I said, &#8220;but Platinum Sponsor?  What&#8217;s up with that?  What&#8217;s your goal?&#8221;</p>
<p>&#8220;We&#8217;re talking about our integration story,&#8221; he said.</p>
<p>&#8220;You mean web services?&#8221;</p>
<p>&#8220;No,&#8221; he said, and then proceeded to describe accessing MS apps via RESTful web services (or maybe just GETful &#8212; I didn&#8217;t get the details).  He also mentioned some MS product I&#8217;d never heard of.</p>
<p>When I prodded again about the platinum sponsorship, he confessed that this isn&#8217;t really a large conference for MS, so the platinum sponsorship really wasn&#8217;t much money to them.  Must be nice.</p>
<p>I also asked him why he didn&#8217;t have any posters or anything.  He said that MS has a major developer conference coming up in a couple of weeks.  When he went to get the stuff he needed for this conf, it turned out everything was already packed away. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>The other big event of the evening was Rod Johnson&#8217;s keynote.  That turned out to be a mixed bag, at least from my point of view.  He spent the first 20 minutes or so reviewing the glorious history of Spring, focusing on a timeline and all the enthusiasm in the developer community.  Now, I&#8217;ve been using (and teaching) Spring for years and I really like it, but this felt like a &#8220;fire up the troops&#8221; talk as though we were marketeers.</p>
<p>He did break for demos of Spring Integration, and tc server with the cool performance monitoring stuff, and a review of what&#8217;s new in 3.0.  Then he set up the demo by Graeme Rocher, the extremely impressive lead of the Grails project.</p>
<p>To introduce the topic of Grails, Rod made an extremely odd segue.  He mentioned how he was able to get &#8220;bacon ice cream&#8221; in the hotel (a real, of strange product).  He somehow related that to a picture of three pigs, and said that pigs build brick houses, and that Grails is built on a brick foundation.  That foundation included Spring of course, but he forgot to say anything about Hibernate. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Graeme, wisely IMHO, ignored all that.  He showed how the latest version of STS (SpringSource Tool Suite) had very good Grails support.  The version he showed will be released Wednesday.  Graeme was great, as usual.  The only problem I ever have with him is that he tends to make everything look easy, which can be a tad misleading.  Still, the support looked solid, and as a community we desperately need that.</p>
<p>The one practical point I took from Rod is that apparently there&#8217;s going to be a developer version of tc server.  I was really looking forward to checking into tc server, until I found you have to pay for it.  I can&#8217;t justify that, especially when GlassFish has improved so much over the past few years and JBoss still works, too.  Now if there&#8217;s a free dev version, maybe I&#8217;ll try it.</p>
<p>The biggest message I got from the whole evening, though, is that so far this is a Spring conference, not a Groovy/Grails conference.  I hope that doesn&#8217;t carry through the whole way.</p>
<p>For me, the best part was finally getting to meet Guillaume Laforge, Paul King, and Robert Fischer in person.  I also re-connected with Dave Klein and the indefatigable Andres Almiray.  That rocked.  The Groovy/Grails/Griffon (!) community is filled with great people.</p>
<p>I&#8217;ll try to update this blog periodically as the conference goes on.  Any comments, of course, are welcome and appreciated.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Zend REST client and grails REST server]]></title>
<link>http://pascaldevink.wordpress.com/2009/10/18/zend-rest-client-and-grails-rest-server/</link>
<pubDate>Sun, 18 Oct 2009 20:28:06 +0000</pubDate>
<dc:creator>pascaldevink</dc:creator>
<guid>http://pascaldevink.wordpress.com/2009/10/18/zend-rest-client-and-grails-rest-server/</guid>
<description><![CDATA[It can sometimes be hard to find out how different systems work are able to work together. Take for ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>It can sometimes be hard to find out how different systems work are able to work together. Take for example a grails application which features some REST interface.<br />
And for that same example, let&#8217;s take a PHP application made with the excellent Zend framework, which wants to use the aforementioned grails application to retrieve some data, or, add some data.<br />
Without further ado, here are the important code snippets for both applications, starting with the server-side. To find out more about grails and REST, look <a href="http://grails.org/doc/latest/guide/13.%20Web%20Services.html#13.1 REST">here</a>. To find out more about Zend and REST, look <a href="http://framework.zend.com/manual/en/zend.rest.html">here</a>.<br />
<!--more--><br />
Let&#8217;s say we have a grails controller called Signup, which has a save function:<br />
<code><br />
def save = {<br />
def sdfh = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss")<br />
params.signupdate = sdfh.parse(params.signupdate)<br />
def u = new Signup()<br />
u.properties = params<br />
if (u.save()) {<br />
render u as XML<br />
} else {<br />
render u.errors as XML<br />
}<br />
}<br />
</code></p>
<p>And a form with a couple of fields which eventually calls this method:<br />
<code><br />
public function signupAction() {<br />
$this-&#62;view-&#62;title = 'Signup';<br />
$form = new SignupForm('/user/signup');<br />
$this-&#62;view-&#62;formResponse = '';<br />
if ($this-&#62;_request-&#62;isPost()) {<br />
if ($form-&#62;isValid($_POST)) {<br />
$signupdate = new Zend_Date();<br />
$client = new Zend_Rest_Client('http://localhost:8080');<br />
$data = array('surname'=&#62;$this-&#62;_getParam('firstname'),<br />
'infix'=&#62;$this-&#62;_getParam('infix'),<br />
'lastname'=&#62;$this-&#62;_getParam('lastname'),<br />
'email'=&#62;$this-&#62;_getParam('email'),<br />
'signupdate' =&#62; $signupdate-&#62;toString('yyyy-MM-dd hh:mm:ss'));<br />
$response = $client-&#62;restPost('/yourapp/signups', $data);<br />
} else {<br />
$this-&#62;view-&#62;formResponse = 'Sorry';<br />
}<br />
}<br />
$this-&#62;view-&#62;form = $form;<br />
}<br />
</code></p>
<p>This should not be too hard to use in your own application. If you need more explanation or more of the code I used, please ask in the comments.</p>
<p>Edit: I see wordpress messed up the code blocks, so for a more easy-to-read version, check the <a href="http://gist.github.com/212825">both</a> <a href="http://gist.github.com/212827">gist</a> files</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Circus Music: Grails]]></title>
<link>http://swellco2000.wordpress.com/2009/10/18/circus-music-grails/</link>
<pubDate>Sun, 18 Oct 2009 12:46:17 +0000</pubDate>
<dc:creator>swellco2000</dc:creator>
<guid>http://swellco2000.wordpress.com/2009/10/18/circus-music-grails/</guid>
<description><![CDATA[Click to Enlarge Christina Aguilera is not a member of Grails Today it&#8217;s cold and rainy. It]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Click to Enlarge<br />
<a href="http://swellco2000.wordpress.com/files/2009/10/grails.jpg"><img class="alignnone size-thumbnail wp-image-1268" title="swellco &#38; swellco" src="http://swellco2000.wordpress.com/files/2009/10/grails.jpg?w=150" alt="swellco &#38; swellco" width="136" height="136" /></a><a href="http://swellco2000.wordpress.com/files/2009/10/trr144.jpg"><img class="alignnone size-thumbnail wp-image-1269" title="swellco &#38; swellco" src="http://swellco2000.wordpress.com/files/2009/10/trr144.jpg?w=150" alt="swellco &#38; swellco" width="136" height="136" /></a><a href="http://swellco2000.wordpress.com/files/2009/10/l_698fc2c703d544c3bd5055d504d46219.jpg"><img class="alignnone size-thumbnail wp-image-1270" title="swellco &#38; swellco" src="http://swellco2000.wordpress.com/files/2009/10/l_698fc2c703d544c3bd5055d504d46219.jpg?w=111" alt="swellco &#38; swellco" width="101" height="136" /></a><a href="http://swellco2000.wordpress.com/files/2009/10/l_d5151b9b75ee41f89b4899a5ed7bc16c.jpg"><img class="alignnone size-thumbnail wp-image-1271" title="swellco &#38; swellco" src="http://swellco2000.wordpress.com/files/2009/10/l_d5151b9b75ee41f89b4899a5ed7bc16c.jpg?w=95" alt="swellco &#38; swellco" width="87" height="136" /></a></p>
<div id="attachment_1272" class="wp-caption alignleft" style="width: 153px"><a href="http://swellco2000.wordpress.com/files/2009/10/christina-aguilera07a.jpg"><img class="size-medium wp-image-1272" title="christina-aguilera07a" src="http://swellco2000.wordpress.com/files/2009/10/christina-aguilera07a.jpg?w=227" alt="christina-aguilera07a" width="143" height="188" /></a><p class="wp-caption-text">Christina Aguilera is not a member of Grails</p></div>
<p>Today it&#8217;s cold and rainy. It&#8217;s my turn to write a blog for this video circus experiment thingie even though it&#8217;s my day off. I&#8217;m not even getting paid for this. In the past, on a day with this much gloom, I would either have downed a pint of vodka and let the neighbor come over and fuck me, or I would curl up in bed, put on the Grails and boot up enough smack to kill Keith Richards. But now every time I do either of those things I get depressed instead of happy and depression has been a real issue for me. I have been stuck in a horribly emotional and physically damaging depression for a little over a year now. It has progressed so much. It started out two years ago (I&#8217;m 48 now) when I began losing weight &#38; got obsessed with it. I then became mildly anorexic and bulimic (by TONS of exercise and taking laxatives). Now the anti depression pills I&#8217;m on make me constipated and I always feel like there is a brick in my colon. Instead of listening to the Grails, I&#8217;m going to put on some Christina Aguilera and make my boyfriend explain why he loves me.</p>
<p>but still check out the <a href="http://www.grailsongs.com/" target="_blank">Grails site</a></p>
<p>Felicia Jackson Swellco &#38; Swellco 22397b</p>
<p><span style='text-align:center; display: block;'><object width='425' height='350'><param name='movie' value='http://www.youtube.com/v/HEoA6T0Qt0M&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;hd=0' /><param name='allowfullscreen' value='true' /><param name='wmode' value='transparent' /><embed src='http://www.youtube.com/v/HEoA6T0Qt0M&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;hd=0' type='application/x-shockwave-flash' allowfullscreen='true' width='425' height='350' wmode='transparent'></embed></object></span></p>
<p><a href="http://twitter.com/swellco2000" target="_blank">Join us on Twitter</a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[The frustration experience of using integration testing for Grails application]]></title>
<link>http://apetrenko.wordpress.com/2009/10/16/writing-integration-tests-for-grails-applicationgo/</link>
<pubDate>Fri, 16 Oct 2009 19:12:04 +0000</pubDate>
<dc:creator>apetrenko</dc:creator>
<guid>http://apetrenko.wordpress.com/2009/10/16/writing-integration-tests-for-grails-applicationgo/</guid>
<description><![CDATA[After digging test capabilities of Grails I was found that it&#8217;s in really crude stage. Frankly]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>After digging test capabilities of Grails I was found that it&#8217;s in really crude stage. Frankly said I expected little bit more&#8230;I think if you don&#8217;t have normal  tool for testing application then you can&#8217;t use it for seriously tasks.<br />
After some complains I try to explain what annoying things I was bumped into.</p>
<p>It was strange that my favorite IDE (Intelij Idea) doesn&#8217;t have normal functionalities for running integration test for Grails application. I understand that it&#8217;s not problems of Grails application It&#8217;s just probably the guys from Idea doesn&#8217;t see any reason for implementing one. But it&#8217;s more disadvantage for Grails then for IDEA.<br />
After googling this problem I have found some workaround. <a href="http://jira.codehaus.org/browse/GRAILS-4569">The guys from Grails advise</a>  to run like </p>
<p><code>mvn grails:exec -Dcommand=test-app -Dargs="-integration"</code></p>
<p>Hence, it should be created mvn run configuration in IDEA with goal </p>
<p><code>grails:exec -Dcommand=test-app -Dargs="-integration"</code></p>
<p>but unfortunatelly it doesn&#8217;t perfect work for me as it runs unit and integration test. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' />  Let&#8217;s go further. the time for running two really simple test takes about 31 seconds. Come on&#8230;it&#8217;s awful the integration testing unbelievable slow. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' />  Moreover, I can run only one test from test case it&#8217;s awful..</p>
<p>As a result that I can say about integration testing. it&#8217;s developed like possibility that will use on (pre-)production environment for tracking application before deploying. But it&#8217;s really bad for test-driven development. </p>
</div>]]></content:encoded>
</item>

</channel>
</rss>
