<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/" version="2.0">
  <channel>
    <title>ÜberConf</title>
    <link>http://uberconf.com</link>
    <description>The best value in the Java/Open Source conferencing space hands down</description>
    <item>
      <title>Perfection [Flickr]</title>
      <link>http://uberconf.com/blog/aaron_gustafson/2012/05/perfection_flickr_?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;&lt;a href="http://www.flickr.com/people/aarongustafson/"&gt;Aaron Gustafson&lt;/a&gt; posted a photo:&lt;/p&gt;
	
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/aarongustafson/7210277824/" title="Perfection"&gt;&lt;img src="http://farm8.staticflickr.com/7078/7210277824_7b1845ac9e_m.jpg" width="240" height="240" alt="Perfection" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/EasyReader/~4/XsukkcAHze0" height="1" width="1"/&gt;</description>
      <pubDate>Wed, 16 May 2012 16:00:22 CDT</pubDate>
      <guid isPermaLink="true">tag:flickr.com,2005:/photo/7210277824</guid>
      <dc:creator>Aaron Gustafson</dc:creator>
    </item>
    <item>
      <title>Windows Phone Export is Coming To Tiggzi App Builder</title>
      <link>http://uberconf.com/blog/max_katz/2012/05/windows_phone_export_is_coming_to_tiggzi_app_builder?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;Yes, this is pretty cool:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://mkblog.exadel.com/wp-content/uploads/2012/05/Selection_525-e1337029753994.png" alt="" title="Selection_525" width="600" height="241" class="alignnone size-full wp-image-4790" /&gt;&lt;/p&gt;
&lt;p&gt;Windows Phone export in &lt;a href="http://tiggzi.com" title="Tiggzi"&gt;Tiggzi&lt;/a&gt; will be available tomorrow. &lt;/p&gt;</description>
      <pubDate>Wed, 16 May 2012 13:02:30 CDT</pubDate>
      <guid isPermaLink="true">http://mkblog.exadel.com/?p=4789</guid>
      <dc:creator>Max Katz</dc:creator>
    </item>
    <item>
      <title>Programs and Technical Debt</title>
      <link>http://uberconf.com/blog/johanna_rothman/2012/05/programs_and_technical_debt?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;Once you have a program (a collection of interrelated projects focused on one business goal) and you have technical debt, you have a much bigger problem. Not just because the technical debt is likely bigger. Not just because you have more people. But because you also geographically distributed teams, and those teams are almost always separated by function and time zone.&lt;/p&gt;
&lt;p&gt;So, my nice example of a collocated team in &lt;a title="Thoughts on Infrastructructure, Technical Debt, and Automated Test Framework" href="http://www.jrothman.com/blog/mpd/2012/04/thoughts-on-infrastructructure-technical-debt-and-automated-test-framework.html" target="_blank"&gt;Thoughts on Infrastructure, Technical Debt, and Automated Test Framework&lt;/a&gt;, rarely occurs in a program, unless you have cross-functional teams collocated in a program. If they do, great. You know what to do.&lt;/p&gt;
&lt;p&gt;But let&amp;#8217;s assume you don&amp;#8217;t have them. Let&amp;#8217;s assume you have what I see in my consulting practice: an architecture group in one location, or an architect in one location and architects around the world; developers and &amp;#8220;their&amp;#8221; testers in multiple time zones; product owners separated from their developers and testers. The program is called agile because the program is working in iterations. And, because it&amp;#8217;s a program, the software pre-existed the existence of the agile transition in the organization, so you have legacy technical debt up the wazoo (the technical term). What do you do?&lt;/p&gt;
&lt;p&gt;Let&amp;#8217;s walk through an example, and see how it might work. Here&amp;#8217;s a story which is a composite from several clients; no clients were harmed in the telling of this story.&lt;/p&gt;
&lt;p&gt;Let&amp;#8217;s also assume you are working on release 5.0 of a custom email client. Release 4 was the previous release. Release 4 had trouble. It was late by 6 months and quite buggy. Someone sold agile as the way to make software bug-free and on-time.&lt;/p&gt;
&lt;p&gt;You do not have automated tests for much of the code, unit tests or system tests. You have a list of defects that make Jack the Ripper&amp;#8217;s list of killings look like child&amp;#8217;s play. But agile is your silver bullet.&lt;/p&gt;
&lt;p&gt;The program manager is based in London. The testers for the entire program are in Bangalore because management had previously fired all the testers and outsourced the testers. That was back in release 2. They have since hired all the Bangalore testers as employees of the Bangalore subsidiary. The program architect is based in San Francisco, and there is an architect team that is dispersed into 4 other teams: Denver, LA, Munich, and Paris. The developers are clustered in &amp;#8220;Development Centers of Excellence:&amp;#8221; Denver, LA, Cambridge, Paris, London, Munich, and Milan. That&amp;#8217;s 8 development teams.&lt;/p&gt;
&lt;p&gt;Oh, and if you think I&amp;#8217;m kidding with this scenario, I&amp;#8217;m not. This is what most of my clients with geographically distributed teams and programs face on a daily basis. They deserve your sympathy and empathy. Do not tell them, &amp;#8220;Don&amp;#8217;t go agile.&amp;#8221; That&amp;#8217;s nuts. They have a right to go agile. You can tell them, &amp;#8220;Don&amp;#8217;t go Scrum.&amp;#8221; That&amp;#8217;s reasonable. Scrum is for a cross-functional co-located team. Agile is for everyone. Scrum is for a specific subset.&lt;/p&gt;
&lt;p&gt;What do you do?&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Assign specific testers to specific development teams. No calling people resources; that allows managers to treat people like resources and plug-and-play them. You need to get rock-solid teams together. Once you have teams together, you can name them.&lt;/li&gt;
&lt;li&gt;Name teams so the teams reflect the feature groups they work on. What does an email product do? It gets email, it sorts email, it deletes, it forwards, it creates new mailboxes, and so on. The eight feature teams had to be named for the feature areas: Platform for the general features, Sort, Delete, Forward. There were two teams who worked on Platform. They were called Platform 1 and Platform 2. At one point, someone suggested they call themselves Thing1 and Thing2 from the &lt;a href="&amp;lt;a href=&amp;quot;http://www.amazon.com/gp/product/039480001X/ref=as_li_ss_tl?ie=UTF8&amp;amp;tag=rothmaconsulg-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=039480001X&amp;quot;&amp;gt;The Cat in the Hat&amp;lt;/a&amp;gt;&amp;lt;img src=&amp;quot;http://www.assoc-amazon.com/e/ir?t=rothmaconsulg-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=039480001X&amp;quot; width=&amp;quot;1&amp;quot; height=&amp;quot;1&amp;quot; border=&amp;quot;0&amp;quot; alt=&amp;quot;&amp;quot; style=&amp;quot;border:none !important; margin:0px !important;&amp;quot; /&amp;gt;" target="_blank"&gt;Dr. Seuss &lt;/a&gt;book.&lt;/li&gt;
&lt;li&gt;Make sure you have enough product owners so they can develop roadmaps for each feature area. With a roadmap, the teams know where they are going. Even more importantly, the architects know where the program is going.&lt;/li&gt;
&lt;li&gt;Architects think and provide just enough guidance ahead. In a small project, the architecture can probably evolve with the project. In a larger program, that risk is too large. You have too many people developing in parallel for the architecture to evolve on its own with no guidance. But I do not mean there should a Master Architect Who Knows All Handing Down the Architecture From On High. NO NO NO.&lt;br /&gt;
I want the architect who is a working member of the development team, who also is part of an architecture community of practice team, who curates the architecture, who guides the business value of the architecture. I do not want Big Architecture Up Front. But Thinking Up Front? Sure, that&amp;#8217;s a great idea. Stuck on only one idea? Bad. Willing to spike an idea? Great. Willing to play in a sandbox and debate several ideas? Great. I wrote about this before, in &lt;a title="How Agile Architects Lead" href="http://www.jrothman.com/blog/mpd/2011/07/how-agile-architects-lead.html" target="_blank"&gt;How Agile Architects Lead&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Decide what done means for every feature. You must have acceptance criteria for each feature. What does that mean? You need a product owner present for each team. You still need the conversations with each team to discuss what done means. Especially with a geographically distributed team, you need the conversation when you create the backlog at the beginning of the iteration.&lt;/li&gt;
&lt;li&gt;The US  development teams had trouble planning their iterations with their testers, because of the time zone differences with the testers. So, they asked their product owners if the product owner would write more than just a few phrases on the cards, because that would help them get through the iteration planning meeting faster. Someone was going to get up early or stay up late, and either way, someone was going to suffer. It made more sense to have a little bit more preparation than less sleep.&lt;/li&gt;
&lt;li&gt;Decide to do &lt;a href="http://www.jrothman.com/blog/mpd/2011/12/is-the-cost-of-continuous-integration-worth-the-value-on-your-program-part-3.html" target="_blank"&gt;continuous integration&lt;/a&gt; and stick with it. Especially if you know you have technical debt and you don&amp;#8217;t want to create more, you have to do continuous integration now. That prevents more technical debt.&lt;/li&gt;
&lt;li&gt;I have recommended to some teams that they have one-week iterations so that they stop the estimation nonsense and make their stories small. The point of estimation is so that you have an idea of what you can do as a team and not commit to more than that. The idea is that if you know what it takes to make your stories small, you will.&lt;br /&gt;
Instead, we have all these crazy rituals around estimation and management tracking velocity of all things. (Yes, I&amp;#8217;ve been drafting this post for a long time, and I wrote &lt;a title="Why Does Management Care About Velocity?" href="http://www.jrothman.com/blog/mpd/2012/05/why-does-management-care-about-velocity.html" target="_blank"&gt;Why Does Management Care About Velocity?&lt;/a&gt; last week.) You know, velocity is a little like weight. Only you and your doctor need to know your weight. If you are healthy, you are fine. If you are not, you need to change something.If your team velocity is not healthy, you, as a team, need to change it. But, your management has no business butting its head in. Only you can change it.&lt;/li&gt;
&lt;li&gt;When you limit the iteration length, you tend to have the team swarm around a story. This is a tendency, not a given. If I really was the Empress of the Universe, I would decree this, but I&amp;#8217;m not, so I won&amp;#8217;t. If you want to decrease technical debt, or even eliminate it on your program, explain that your team will only work on one story at a time until that story is done. That story will be polished and gleaming. Fast. You will not have to worry about what kinds of testing will be done. All if it will be done.&lt;/li&gt;
&lt;li&gt;Explicitly discuss what you will automate for testing and when. In a program, I assume we will have automated system tests first. I assume we will do exploratory tests later. That&amp;#8217;s because if you don&amp;#8217;t start building something for test automation when you start the program and refactor as you proceed, you can never catch up. I assume every time we fix a defect, we will have an automated test for it. I also assume we build these assumptions into how we develop :-)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;So far, this is all about preventing more technical debt, not what happens when you trip over technical debt as you enter code or tests you never looked at before.&lt;/p&gt;
&lt;p&gt;If you expected to walk into a closet, take out a shirt, and close the closet door, that&amp;#8217;s one thing. But now, you stepped into something out of one of those death-by-hoarding shows on TV, you have an obligation to do something. You can document the problem as you encounter it; you can let the product owner know; file a defect report; write a test so you can contain the debt; and maybe you have more options. Whatever you do, make sure you have done something. Do not open the door, see the mess inside and close the door on the mess. It&amp;#8217;s tempting. Oh my, it is tempting.&lt;/p&gt;
&lt;p&gt;See, on programs because of the size, everything is magnified. With more people and more teams, everything is harder. Things happen faster. If you have co-located cross-functional teams, no problem. But if you don&amp;#8217;t have co-located cross-functional teams, you have to work with what you have. And, if you already have a big legacy product, you want to address technical debt in small chunks, refactoring in small bits, integrating as you proceed.&lt;/p&gt;
&lt;p&gt;My philosophy is this: the bigger the program, the more you need to become accustomed to working in small chunks, integrating as you go. Fully implement a small story, integrate it on the mainline. Everyone on the program does that. If you need help from an integration team, so be it.&lt;/p&gt;
&lt;p&gt;But, if everyone only implements small stories, and everyone takes care of their own technical debt as they discover it, you don&amp;#8217;t need an army of integration people. You only need an army of integration people when you have technical debt around integration and release. Fix that, and everyone can become responsible for their own integration.&lt;/p&gt;
&lt;p&gt;And, if you can&amp;#8217;t release, that&amp;#8217;s where the architects should start. If you can&amp;#8217;t do continuous integration, that&amp;#8217;s where the architects should start. Because that&amp;#8217;s what&amp;#8217;s preventing you from making progress on the product. Work backwards from release, and then the architects can work on the rest of the product. Until you can release and build reliably, the rest of the product doesn&amp;#8217;t matter.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=oPNMSlgYw-I:LBeKfME1S8Y:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=oPNMSlgYw-I:LBeKfME1S8Y:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=oPNMSlgYw-I:LBeKfME1S8Y:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?i=oPNMSlgYw-I:LBeKfME1S8Y:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=oPNMSlgYw-I:LBeKfME1S8Y:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?i=oPNMSlgYw-I:LBeKfME1S8Y:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=oPNMSlgYw-I:LBeKfME1S8Y:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=oPNMSlgYw-I:LBeKfME1S8Y:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ManagingProductDevelopment/~4/oPNMSlgYw-I" height="1" width="1"/&gt;</description>
      <pubDate>Wed, 16 May 2012 11:00:32 CDT</pubDate>
      <guid isPermaLink="true">http://www.jrothman.com/blog/mpd/?p=11348</guid>
      <dc:creator>Johanna Rothman</dc:creator>
    </item>
    <item>
      <title>Tiggzi At AnDevCon Conference: Building Android Apps With Cloud-based Mobile App Builder</title>
      <link>http://uberconf.com/blog/max_katz/2012/05/tiggzi_at_andevcon_conference_building_android_apps_with_cloud_based_mobile_app_builder?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;&lt;a href="http://www.andevcon.com/"&gt;&lt;img src="http://mkblog.exadel.com/wp-content/uploads/2012/05/android_300x250.gif" alt="" title="android_300x250" width="300" height="250" class="alignleft size-full wp-image-4796" /&gt;&lt;/a&gt;&lt;br /&gt;
Wednesday and Thursday this week the &lt;a href="http://tiggzi.com"&gt;Tiggzi&lt;/a&gt; team will be at &lt;a href="http://www.andevcon.com/" target="_blank"&gt;AnDevCon&lt;/a&gt; conference in San Francisco. Stop by our stand and learn how to build Android apps, connected to any REST API using &lt;a href="http://tiggzi.com" title="Tiggzi"&gt;Tiggzi app builder&lt;/a&gt;. What&amp;#8217;s really nice is that you can build an app in Tiggzi, export the Android binary,  and instantly publish it to Google Play Store. &lt;/p&gt;</description>
      <pubDate>Wed, 16 May 2012 08:00:25 CDT</pubDate>
      <guid isPermaLink="true">http://mkblog.exadel.com/?p=4795</guid>
      <dc:creator>Max Katz</dc:creator>
    </item>
    <item>
      <title>This Week in Grails (2012-19)</title>
      <link>http://uberconf.com/blog/burt_beckwith/2012/05/this_week_in_grails_2012_19_?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;We&amp;#8217;re getting ready to release Grails 2.1, with a release candidate hopefully this week. The cache plugins I mentioned last week will be released around the same time, and the &amp;#8216;core&amp;#8217; cache plugin will be a default plugin in BuildConfig.groovy. I released an update of the &lt;a target="_blank" href="http://www.grails.org/plugin/database-migration"&gt;database-migration&lt;img src="/blog/images/pop.gif"/&gt;&lt;/a&gt; plugin to address some bugs that were keeping that from being a default plugin, so that will also be included by default in BuildConfig.groovy.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve been working on a &lt;a target="_blank" href="http://shop.oreilly.com/product/0636920024750.do"&gt;Grails book to be published this fall&lt;img src="/blog/images/pop.gif"/&gt;&lt;/a&gt;. The plan is that it will be an advanced book, and presume that you already have experience with Grails or another similar framework in Java or another language and are looking for more detail and best practices. It&amp;#8217;s going to be available soon in an early-access digital format so you can follow the progress and help the book by finding mistakes and making suggestions.&lt;/p&gt;
&lt;p&gt;A few more GR8Conf EU interviews:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a target="_blank" href="http://gr8conf.org//content/eu2012/blog/Interview-with-Russel-Winder"&gt;Russel Winder&lt;img src="/blog/images/pop.gif"/&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="http://gr8conf.eu/blog/Interview-with-MrHaki"&gt;Hubert Klein Ikkin, aka. MrHaKi&lt;img src="/blog/images/pop.gif"/&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="http://gr8conf.eu/blog/Inteview-with-Corinne-Krych"&gt;Corinne Krych&lt;img src="/blog/images/pop.gif"/&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr/&gt;
&lt;p&gt;If you want to keep up with these &amp;#8220;This Week in Grails&amp;#8221; posts you can access them directly via their &lt;a target="_blank" href="http://burtbeckwith.com/blog/?cat=32"&gt;category link&lt;img src="/blog/images/pop.gif"/&gt;&lt;/a&gt; or in an RSS reader with &lt;a target="_blank" href="http://feeds.feedburner.com/this-week-in-grails"&gt;the feed&lt;img src="/blog/images/pop.gif"/&gt;&lt;/a&gt; for just these posts.&lt;/p&gt;
&lt;hr/&gt;
&lt;p&gt;Translations of this post:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a target='_blank' href='http://www.javahispano.org/groovy-grails/2012/5/13/esta-semana-en-grails2012-19.html'&gt;Traducción al español&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='http://groovyq.net/content/grails%E6%AF%8F%E5%91%A8%E8%A7%82%E5%AF%9F%EF%BC%882012-19%EF%BC%89'&gt;Grails每周观察&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='http://remoteexception.blogspot.pt/2012/05/semana-grails-2012-19.html'&gt;Este artigo em Português&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='http://www.luca-canducci.com/2012/05/questa-settimana-in-grails-2012-19/'&gt;Traduzione Italiana&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='http://grails.jp/news/2012-19.html'&gt;今週のGrails日本語版&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr/&gt;
&lt;div class="toc"&gt;
&lt;img src="/blog/images/folder_go.png"/&gt;&amp;nbsp;&lt;a href="#miscellaneous"&gt;Miscellaneous Items&lt;/a&gt;&lt;br /&gt;
&lt;img src="/blog/images/folder_go.png"/&gt;&amp;nbsp;&lt;a href="#plugins"&gt;Plugins&lt;/a&gt;&lt;br /&gt;
&lt;img src="/blog/images/folder_go.png"/&gt;&amp;nbsp;&lt;a href="#tweets"&gt;Interesting Tweets&lt;/a&gt;&lt;br /&gt;
&lt;img src="/blog/images/folder_go.png"/&gt;&amp;nbsp;&lt;a href="#jobs"&gt;Jobs&lt;/a&gt;&lt;br /&gt;
&lt;img src="/blog/images/folder_go.png"/&gt;&amp;nbsp;&lt;a href="#meetups"&gt;User groups and Conferences&lt;/a&gt;
&lt;/div&gt;
&lt;hr/&gt;
&lt;div id="miscellaneous"&gt;
&lt;h2&gt;Miscellaneous Items&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a target='_blank' href='https://kousenit.wordpress.com/2012/05/09/from-now-on-im-calling-it-groovystring/'&gt;From now on, I’m calling it GroovyString&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='http://nagaimasato.blogspot.com/2012/05/restart-groovy-life-with-invokedynamic.html'&gt;Restart Groovy life with Invokedynamic&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='http://agrawalgagan.blogspot.in/2012/05/grails-rest-service-with-jaxb-parsing_09.html'&gt;Grails : Rest Service with JAXB parsing &amp;#8211; PART 2&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='https://vertxproject.wordpress.com/2012/05/09/vert-x-1-0-final-is-released/'&gt;Vert.x 1.0.final is released&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='https://vertxproject.wordpress.com/2012/05/09/vert-x-vs-node-js-simple-http-benchmarks/'&gt;Vert.x vs node.js simple HTTP benchmarks&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='https://plus.google.com/u/1/103253230648340196446/posts/DwbQhAeZwhY'&gt;Performance comparison of 1.3.7 with 2.0.3 with suggested improvements&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='http://coderberry.me/blog/2012/05/07/stupid-simple-post-slash-get-with-groovy-httpbuilder/'&gt;Stupid Simple POST/GET With Groovy HTTPBuilder&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='http://groovyflow.com/posts/103'&gt;Split Testing (A/B) with Grails using the Split Test plugin&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='https://github.com/domix/gorm-standalone'&gt;Using GORM outside Grails in a Spring application&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='http://refactr.com/blog/2012/05/grails-tips-deployment-tricks/'&gt;Grails Tips: Deployment Tricks&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='https://github.com/jeffbrown/wrapperdemo'&gt;A simple project which uses the Grails Wrapper (grailsw) feature which is to be included in Grails 2.1&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='http://blog.freeside.co/blog/2012/05/01/testing-callbacks-with-spock-mocks/'&gt;Testing Callbacks With Spock Mocks&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='http://blog.freeside.co/blog/2012/05/09/testing-with-embedded-vertx/'&gt;Testing With Embedded Vert.x&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id="plugins"&gt;
&lt;h2&gt;Plugins&lt;/h2&gt;
&lt;p&gt;There were 6 new plugins released:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a target='_blank' href='http://grails.org/plugin/closure-templates-resources'&gt;closure-templates-resources&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt; version 0.1. Supports server-side compilation of .soy template files to JavaScript files
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='http://grails.org/plugin/jquery-mobile-metro'&gt;jquery-mobile-metro&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt; version 0.1. Plugin jQuery mobile framework Metro UI theme resource files
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='http://grails.org/plugin/jrimum-bopepo'&gt;jrimum-bopepo&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt; version 0.2. Allows you to create Boletos Bancarios for Banks of Brazil using the Jrimum Bopepo library
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='http://grails.org/plugin/plastic-criteria'&gt;plastic-criteria&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt; version 0.1. Mock Grails Criteria for Unit Tests
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='http://grails.org/plugin/split-test'&gt;split-test&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt; version 0.4. An A/B testing framework designed to work with Grails
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='http://grails.org/plugin/spring-security-oauth'&gt;spring-security-oauth&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt; version 2.0.1.0. Adds OAuth-based authentication to the Spring Security plugin using the OAuth plugin
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;and 14 updated plugins:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a target='_blank' href='http://grails.org/plugin/asynchronous-mail'&gt;asynchronous-mail&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt; version 0.6. Send email asynchronously by storing them in the database and sending with a Quartz job
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='http://grails.org/plugin/cache'&gt;cache&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt; version 1.0.0.M2. Adds request, service method, and taglib caching
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='http://grails.org/plugin/cache-ehcache'&gt;cache-ehcache&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt; version 1.0.0.M2. An Ehcache-based implementation of the Cache plugin
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='http://grails.org/plugin/cache-redis'&gt;cache-redis&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt; version 1.0.0.M2. A Redis-based implementation of the Cache plugin
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='http://grails.org/plugin/database-migration'&gt;database-migration&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt; version 1.1. Official Grails plugin for database migrations
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='http://grails.org/plugin/external-config-reload'&gt;external-config-reload&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt; version 1.2.0. Polls for changes to external configuration files (files added to grails.config.locations), reloads the configuration when a change has occurred, and notifies specified plugins by firing the onConfigChange event in each
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='http://grails.org/plugin/faker'&gt;faker&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt; version 0.5. A port of Data::Faker from Perl, is used to easily generate fake data: names, addresses, phone numbers, etc.
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='http://grails.org/plugin/hibernate-search'&gt;hibernate-search&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt; version 0.6.1. Integrates Hibernate Search for domain classes
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='http://grails.org/plugin/lesscss-resources'&gt;lesscss-resources&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt; version 1.3.0.3. Optimises the use of &lt;a href="http://www.lesscss.org" target='_blank'&gt;http://www.lesscss.org&lt;/a&gt; css files, compiling .less files into their .css counterprt, and place the css into the processing chain to be available to the other resource plugin features
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='http://grails.org/plugin/pusher'&gt;pusher&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt; version 0.4. Wrapper for pusher.com REST api
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='http://grails.org/plugin/spring-batch'&gt;spring-batch&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt; version 0.2.2. Provides the Spring Batch framework and convention based Jobs
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='http://grails.org/plugin/spring-security-facebook'&gt;spring-security-facebook&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt; version 0.7.4. Plugin for Facebook Authentication, as extension to Grails Spring Security Core plugin
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='http://grails.org/plugin/spring-security-twitter'&gt;spring-security-twitter&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt; version 0.4.3. Twitter authentication as extension to the Spring Security Core plugin
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='http://grails.org/plugin/zkui'&gt;zkui&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt; version 0.5.1. Seamlessly integrates ZK with Grails&amp;#8217; infrastructures; uses the Grails&amp;#8217; infrastructures such as GSP, controllers rather than zk&amp;#8217;s zul as in ZKGrails plugin
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id="tweets"&gt;
&lt;h2&gt;Interesting Tweets&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a target='_blank' href='https://twitter.com/#!/CedricChampeau/status/199502987641626624'&gt;@CedricChampeau&lt;/a&gt;: &lt;a href='https://search.twitter.com/search?q=%23Groovy' target='_blank'&gt;#Groovy&lt;/a&gt; 2.0.0-beta-3 with &lt;a href='https://search.twitter.com/search?q=%23CompileStatic' target='_blank'&gt;#CompileStatic&lt;/a&gt; and &lt;a href='https://search.twitter.com/search?q=%23InvokeDynamic' target='_blank'&gt;#InvokeDynamic&lt;/a&gt; support is out! We need your feedback! &lt;a href="http://t.co/0zmf3gSm" target='_blank'&gt;http://t.co/0zmf3gSm&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='https://twitter.com/#!/cavneb/status/200098127200522240'&gt;@cavneb&lt;/a&gt;: I just launched a new site dedicated to sharing &lt;a href='https://search.twitter.com/search?q=%23Groovy' target='_blank'&gt;#Groovy&lt;/a&gt; and &lt;a href='https://search.twitter.com/search?q=%23Grails' target='_blank'&gt;#Grails&lt;/a&gt; articles along with free job listings. &lt;a href="http://t.co/ddLtQCL4" target='_blank'&gt;http://t.co/ddLtQCL4&lt;/a&gt; check it out
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='https://twitter.com/#!/pledbrook/status/200576915575291904'&gt;@pledbrook&lt;/a&gt;: Quick hack to get &lt;a href='https://search.twitter.com/search?q=%23vertx' target='_blank'&gt;#vertx&lt;/a&gt; running in a &lt;a href='https://search.twitter.com/search?q=%23grails' target='_blank'&gt;#grails&lt;/a&gt; application: &lt;a href="https://t.co/TXiaENd5" target='_blank'&gt;https://t.co/TXiaENd5&lt;/a&gt; &amp;#8211; modify 2 files in a new Grails project and add some jars
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='https://twitter.com/#!/rfletcherEW/status/201398999452884992'&gt;@rfletcherEW&lt;/a&gt;: Cool, my &lt;a href='https://twitter.com/#!/twbootstrap' target='_blank'&gt;@twbootstrap&lt;/a&gt; for &lt;a href='https://search.twitter.com/search?q=%23Grails' target='_blank'&gt;#Grails&lt;/a&gt; templates made this list of Bootstrap resources: &lt;a href="http://t.co/N8Z920qn" target='_blank'&gt;http://t.co/N8Z920qn&lt;/a&gt; /via &lt;a href='https://twitter.com/#!/designshack' target='_blank'&gt;@designshack&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='https://twitter.com/#!/marcoVermeulen/status/201418223453880322'&gt;@marcoVermeulen&lt;/a&gt;: Having fun with the &lt;a href='https://search.twitter.com/search?q=%23vertx' target='_blank'&gt;#vertx&lt;/a&gt; tutorial for &lt;a href='https://search.twitter.com/search?q=%23groovy' target='_blank'&gt;#groovy&lt;/a&gt;. Web development can&amp;#8217;t get easier than this. &lt;a href="http://t.co/wnScgY1U" target='_blank'&gt;http://t.co/wnScgY1U&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id="jobs"&gt;
&lt;h2&gt;Jobs&lt;/h2&gt;
&lt;hr/&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a target='_blank' href='http://seeker.dice.com/jobsearch/servlet/JobSearch?op=300&amp;#038;FREE_TEXT=grails&amp;#038;FRMT=0'&gt;Dice keyword search for Grails&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='http://jobsearch.monster.com/PowerSearch.aspx?q=grails'&gt;Monster keyword search for Grails&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='http://www.careerbuilder.com/Jobseeker/Jobs/JobResults.aspx?_ctl0%3A_ctl2%3AucQuickBar%3As_rawwords=grails'&gt;Careerbuilder keyword search for Grails&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='https://twitter.com/#!/SpringSourceJob'&gt;SpringSourceJob Twitter feed&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='http://jobs.vmware.com/search?q=springsource'&gt;SpringSource job search at jobs.vmware.com&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr/&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a target='_blank' href='http://www.meetup.com/Grails-Boston/boards/view/viewthread?thread=23066252'&gt;Grails or Java/Hibernate/Spring developers in Cambridge for a large scale financial web site&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='http://grails.1312388.n4.nabble.com/Grails-developers-for-new-project-td4614586.html'&gt;Grails developers for new project in Israel&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='http://jobs.citi.com/dallas/technology/jobid2411180-java-engineer-%28groovy_-grails%29-jobs?apstr=%26src%3DJB-14023'&gt;Java Engineer (Groovy/Grails) at Citi in Irving, TX&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='https://twitter.com/#!/fxthoorens/status/200584538357891073'&gt;@fxthoorens&lt;/a&gt;: Recherche un développeur &lt;a href='https://search.twitter.com/search?q=%23grails' target='_blank'&gt;#grails&lt;/a&gt; sur &lt;a href='https://search.twitter.com/search?q=%23paris' target='_blank'&gt;#paris&lt;/a&gt; pour un projet medical innovant asap. ping me. cc &lt;a href='https://twitter.com/#!/smaldini' target='_blank'&gt;@smaldini&lt;/a&gt; &lt;a href='https://twitter.com/#!/glaforge' target='_blank'&gt;@glaforge&lt;/a&gt; &lt;a href='https://twitter.com/#!/burtbeckwith' target='_blank'&gt;@burtbeckwith&lt;/a&gt; please RT
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='https://twitter.com/#!/aemamz/status/200596998997549056'&gt;@aemamz&lt;/a&gt;: Developers required (PHP,J2EE, Groovy, Grails, Android), GDs. Social Media/Business consultants to be part of a start up partnership,
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='https://twitter.com/#!/georgemcintosh/status/200587955516080129'&gt;@georgemcintosh&lt;/a&gt;: Any Grails devs out there with f/e skills looking for a contract in East London? &lt;a href='https://search.twitter.com/search?q=%23grails' target='_blank'&gt;#grails&lt;/a&gt; &lt;a href='https://search.twitter.com/search?q=%23grailsjobs' target='_blank'&gt;#grailsjobs&lt;/a&gt; &lt;a href='https://search.twitter.com/search?q=%23grailscontracts' target='_blank'&gt;#grailscontracts&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='https://twitter.com/#!/im_robsmith/status/200876414822645760'&gt;@im_robsmith&lt;/a&gt;: Looking for a Grails developer!! Strong Java and Front-end required.  Someone with a passion for Open Source would be ideal. Working for a …
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='http://www.eurojobs.com/en/candidate/jobs/228126.html'&gt;Java / Grails Developer, Hamburg&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='http://www.aplitrak.com/?adid=c2NvdHRnb3Jkb24uOTIxOTQudHdpQHZhY28uYXBsaXRyYWsuY29t'&gt;Groovy Developer(s) needed in Nashville, TN&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='http://javajob.it/annunci/6111-Java-Senior-Web-Developer'&gt;Java Senior Web Developer, Legnano&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='http://www.simplyhired.com/job-id/5gr2kgotzs/data-analytics-jobs/'&gt;Data analytics, Grails, Javascript, Mapquestapi, Mongodb at Elance.com in Washington, DC&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='http://mirchee.com/a/detail.do/id-6f67621a-2497-4402-8dfc-8f3ae24fe1da'&gt;Grails Developer, Bengaluru/Bangalore&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='http://www.linkedin.com/groups/Seeking-Grails-Developer-in-Tampa-39757.S.113935094?view=&amp;#038;gid=39757&amp;#038;type=member&amp;#038;item=113935094'&gt;Grails Developer in Tampa, FL (remote)&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='http://www.linkedin.com/groups/University-Utah-seeks-fulltime-Grails-39757.S.113935054?view=&amp;#038;gid=39757&amp;#038;type=member&amp;#038;item=113935054'&gt;Full-time Grails developer at the University of Utah&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='http://www.linkedin.com/groups/Specto-Design-in-Los-Angeles-39757.S.113934947?view=&amp;#038;gid=39757&amp;#038;type=member&amp;#038;item=113934947'&gt;Contract position for a Grails Developer at Specto Design in Los Angeles&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='http://www.linkedin.com/groups/Looking-Grails-Developer-experience-willing-67067.S.113378215?view=&amp;#038;gid=67067&amp;#038;type=member&amp;#038;item=113378215'&gt;Grails Developer in Costa Rica&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='http://www.linkedin.com/groups/Groovy-Grails-Developer-needed-ASAP-67067.S.113396217?view=&amp;#038;gid=67067&amp;#038;type=member&amp;#038;item=113396217'&gt;Groovy/Grails Developer needed ASAP for a short term engagement (100% remote)&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='http://www.linkedin.com/groupAnswers?viewQuestionAndAnswers=&amp;#038;discussionID=114702845&amp;#038;gid=76751'&gt;Urgently needed: Groovy/Grails consultant for a two year opportunity in CA&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='http://sonicnotify.com/jobs'&gt;Server Lead at SonicNotify in NYC&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id="meetups"&gt;
&lt;h2&gt;User groups and Conferences&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a target='_blank' href='http://gr8conf.us/'&gt;GR8Conf Europe 2012&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
June 6&lt;sup&gt;th&lt;/sup&gt;-8&lt;sup&gt;th&lt;/sup&gt; Copenhagen, Denmark
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='http://gr8conf.eu/'&gt;GR8Conf US 2012&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
July 29&lt;sup&gt;th&lt;/sup&gt;-31&lt;sup&gt;st&lt;/sup&gt; Minneapolis, MN
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='http://www.springone2gx.com/conference/washington/2012/10/home'&gt;SpringOne 2GX 2012&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
October 15&lt;sup&gt;th&lt;/sup&gt;-18&lt;sup&gt;th&lt;/sup&gt; Washington, DC
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr/&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a target='_blank' href='http://www.meetup.com/nl-gug/events/59221612/'&gt;Grails in the Cloud! &amp;#8211; May 8, 2012&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
nlgug &amp;#8211; Groovy and Grails User Group Netherlands
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='http://www.meetup.com/london-ggug/events/60775052/'&gt;Building Grails applications with MongoDB and Using MongoDB with Groovy in an enterprise application &amp;#8211; Wednesday, May 16, 2012&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
London Groovy &amp;#038; Grails User Group
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='http://www.meetup.com/Grails-Boston/events/62911232/'&gt;Lightning Talks II &amp;#8211; Thursday, May 17, 2012&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Boston Grails Users&amp;#8217; Group
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a target='_blank' href='http://www.meetup.com/java-161/events/58909832/'&gt;May 28, 2012&lt;img src='/blog/images/pop.gif'/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
SF Bay Groovy and Grails Meetup Group
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fburtbeckwith.com%2Fblog%2F%3Fp%3D1369&amp;amp;title=This%20Week%20in%20Grails%20%282012-19%29" id="wpa2a_2"&gt;&lt;img src="http://burtbeckwith.com/blog/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://burtbeckwith.com/blog/?flattrss_redirect&amp;amp;id=1369&amp;amp;md5=eb1bd90ba6753cbb0d263346fbb12837" title="Flattr" target="_blank"&gt;&lt;img src="https://burtbeckwith.com/blog/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/&gt;&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Tue, 15 May 2012 16:00:38 CDT</pubDate>
      <guid isPermaLink="true">http://burtbeckwith.com/blog/?p=1369</guid>
      <dc:creator>Burt Beckwith</dc:creator>
    </item>
    <item>
      <title>WTFWG</title>
      <link>http://uberconf.com/blog/tim_kadlec/2012/05/wtfwg?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;This morning, Ian Hickson &lt;a href="http://lists.w3.org/Archives/Public/public-whatwg-archive/2012May/0247.html"&gt;emailed the WHATWG mailing list&lt;/a&gt; mentioning that a attribute that was currently being discussed on the list (srcset) is now added to the &lt;a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/embedded-content-1.html#attr-img-srcset"&gt;draft of the spec&lt;/a&gt;. To understand why this sucks, a little background is needed.&lt;/p&gt;
&lt;p&gt;Responsive images are a difficult beast to tame: there really isn&amp;#8217;t a good solution for them today. As a result, some discussion started on the WHATWG mailing list months ago about what to do. The WHATWG pointed out that the list was for standardizing and suggested it would be better if the discussion were moved into a community group.&lt;/p&gt;
&lt;p&gt;So, obediently, &lt;a href="http://www.w3.org/community/respimg/"&gt;a community group chaired by Mat Marquis&lt;/a&gt; was started (in February). A lot of discussion took place about the appropriate way to handle responsive images and one solution, &lt;a href="http://www.w3.org/community/respimg/2012/03/07/14/"&gt;the new picture element&lt;/a&gt;, garnered the majority of support.&lt;/p&gt;
&lt;p&gt;On May 10th, the previously mentioned &lt;a href="http://lists.w3.org/Archives/Public/public-whatwg-archive/2012May/0138.html"&gt;srcset attribute was presented&lt;/a&gt; on the WHATWG mailing list by someone from Apple.&lt;/p&gt;
&lt;p&gt;That same day it was recommended to the list that they take a look at all the discussion that had taken place in the community group. A debate about the two solutions ensued.&lt;/p&gt;
&lt;p&gt;The feedback from developers was not particularly glowing. To &lt;a href="http://lists.w3.org/Archives/Public/public-whatwg-archive/2012May/0252.html"&gt;quote Matt Wilcox&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I do not see much potential for srcset. The result of asking the author community was overwhelmingly negative, indirection or no indirection.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It was &lt;a href="http://lists.w3.org/Archives/Public/public-whatwg-archive/2012May/0176.html"&gt;argued by Simon Pieters of Opera&lt;/a&gt; that the srcset attribute would be easier to implement and that as a result, that would help developers:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I think an attribute is simpler to implement and thus likely to result in fewer bugs in browsers, which in turn benefits Web developers.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This morning, the attribute was added to the spec.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve got my own opinion about the correct solution, but that&amp;#8217;s not really what&amp;#8217;s I think is most troubling here. Note what happened:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Developers got involved in trying to standardize a solution to a common and important problem.&lt;/li&gt;
&lt;li&gt;The WHATWG told them to move the discussion to a community group.&lt;/li&gt;
&lt;li&gt;The discussion was moved (back in February), a general consenus (not unanimous, but a majority) was reached about the picture element.&lt;/li&gt;
&lt;li&gt;Another (partial) solution was proposed directly on the WHATWG list by an Apple employee.&lt;/li&gt;
&lt;li&gt;A discussion ensued regarding the two methods, where they overlapped, and how the general opinions of each. The majority of developers favored the picture element and the majority of implementors favored the srcset attribute.&lt;/li&gt;
&lt;li&gt;While the discussion was still taking place, and only 5 days after it was originally proposed, the srcset attribute (but not the picture element) was added to the draft.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;What. The. Hell.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The developer community did everything asked of them. They followed procedure, they thoroughly discussed the options available. They were careful enough to consider what to do for browsers that wouldn&amp;#8217;t support the element—&lt;a href="https://github.com/scottjehl/picturefill"&gt;a working polyfill&lt;/a&gt; is readily available. Their solution even emulates the existing standardized audio and video elements.&lt;/p&gt;
&lt;p&gt;Meanwhile an Apple representative writes one email about a new attribute that only partially solves the problem and the 5 days later it&amp;#8217;s in the spec. (In case there&amp;#8217;s any doubt, I&amp;#8217;m not blaming him in anyway for the result of all of this.)&lt;/p&gt;
&lt;p&gt;In the draft of the &lt;a href="http://www.w3.org/TR/html-design-principles/"&gt;W3C HTML design principles&lt;/a&gt;, they clearly state the priority that should be given when determining standards:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In case of conflict, consider users over authors over implementors over specifiers over theoretical purity. In other words costs or difficulties to the user should be given more weight than costs to authors; which in turn should be given more weight than costs to implementors; which should be given more weight than costs to authors of the spec itself, which should be given more weight than those proposing changes for theoretical reasons alone.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Those levels of priority make a lot of sense to me and it&amp;#8217;s discouraging (to say the least!) to see them dismissed in this case. This kind of thing simply cannot happen. It&amp;#8217;s tough to get people to voice their opinions to begin with: to find that their opinion holds no weight won&amp;#8217;t make it any easier going forward.&lt;/p&gt;
&lt;p&gt;What message does it send when developers try to contribute their time, energy and effort to help solve a problem only to have it so casually dismissed?&lt;/p&gt;
&lt;p&gt;As Scott Jehl responded &lt;a href="https://twitter.com/#!/scottjehl/status/202378107502600192"&gt;on Twitter&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;insulting. Not to mention, that it can&amp;#8217;t work today. What was the purpose of our @w3c community group?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Insulting indeed. Not too surprising though. After all, we&amp;#8217;ve seen &lt;a href="http://adactio.com/journal/4982/"&gt;this sort of thing before.&lt;/a&gt;&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/timkadlec/~4/XNZRCQ7icZ0" height="1" width="1"/&gt;</description>
      <pubDate>Tue, 15 May 2012 13:00:23 CDT</pubDate>
      <guid isPermaLink="true">http://timkadlec.com/?p=1401</guid>
      <dc:creator>Tim Kadlec</dc:creator>
    </item>
    <item>
      <title>Graphs in the Cloud: Spring + Neo4j on Heroku</title>
      <link>http://uberconf.com/blog/james_ward2/2012/05/graphs_in_the_cloud_spring__neo4j_on_heroku?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;Last week I hosted a webinar about running Java apps on Heroku that use the Spring Framework and the &lt;a href="http://neo4j.org/"&gt;Neo4j graph database&lt;/a&gt;.  Here is the recording of that webinar:&lt;/p&gt;
&lt;p&gt;&lt;iframe id="video-player" title="Neo4j Videography Video Player" width="640" height="360" src="http://video.neo4j.org/player/DNgFF/native/" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt;In the webinar I began by deploying a copy of the Spring MVC + Hibernate template app from &lt;a href="http://heroku.com/java"&gt;heroku.com/java&lt;/a&gt; on Heroku.  Then I made a few modifications to the app to switch the persistence from Hibernate / JPA to Neo4j.  You can get the &lt;a href="https://github.com/jamesward/hello-java-spring-neo4j"&gt;full source code on GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Here is a quick recap of what I did to switch the template app to use Neo4j:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Added the &lt;a href="https://addons.heroku.com/neo4j"&gt;Neo4j Heroku Add-on&lt;/a&gt;:

&lt;div class="wp_syntax"&gt;&lt;div class="code"&gt;&lt;pre class="bash" style="font-family:monospace;"&gt;heroku addons:add neo4j&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;/li&gt;
&lt;li&gt;Added the Spring Data Neo4j dependencies (optionally you can remove the unused JPA dependencies) to the &amp;#8220;&lt;a href="https://github.com/jamesward/hello-java-spring-neo4j/blob/master/pom.xml"&gt;pom.xml&lt;/a&gt;&amp;#8221; Maven build descriptor:

&lt;div class="wp_syntax"&gt;&lt;div class="code"&gt;&lt;pre class="xml" style="font-family:monospace;"&gt;&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;dependency&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;groupId&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;org.springframework.data&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/groupId&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;artifactId&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;spring-data-neo4j-rest&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/artifactId&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;version&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;2.0.1.RELEASE&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/version&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/dependency&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;dependency&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;groupId&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;org.hibernate&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/groupId&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;artifactId&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;hibernate-validator&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/artifactId&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;version&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;4.2.0.Final&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/version&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/dependency&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;/li&gt;
&lt;li&gt;Modified the &amp;#8220;&lt;a href="https://github.com/jamesward/hello-java-spring-neo4j/blob/master/src/main/java/com/example/service/PersonService.java"&gt;src/main/java/com/example/service/PersonService.java&lt;/a&gt;&amp;#8221; interface to use the Neo4j GraphRepository:

&lt;div class="wp_syntax"&gt;&lt;div class="code"&gt;&lt;pre class="java" style="font-family:monospace;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;package&lt;/span&gt; &lt;span style="color: #006699;"&gt;com.example.service&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span style="color: #000000; font-weight: bold;"&gt;import&lt;/span&gt; &lt;span style="color: #006699;"&gt;com.example.model.Person&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
&lt;span style="color: #000000; font-weight: bold;"&gt;import&lt;/span&gt; &lt;span style="color: #006699;"&gt;org.springframework.data.neo4j.repository.GraphRepository&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;interface&lt;/span&gt; PersonService &lt;span style="color: #000000; font-weight: bold;"&gt;extends&lt;/span&gt; GraphRepository&lt;span style="color: #339933;"&gt;&amp;lt;&lt;/span&gt;Person&lt;span style="color: #339933;"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;/li&gt;
&lt;li&gt;Removed the unneeded &amp;#8220;src/main/java/com/example/service/PersonServiceImpl.java&amp;#8221; DAO.&lt;/li&gt;
&lt;li&gt;Modified the &amp;#8220;&lt;a href="https://github.com/jamesward/hello-java-spring-neo4j/blob/master/src/main/java/com/example/model/Person.java"&gt;src/main/java/com/example/model/Person.java&lt;/a&gt;&amp;#8221; POJO to be a &lt;strong&gt;@NodeEntity&lt;/strong&gt; (instead of JPA Entity) and switched the &amp;#8220;id&amp;#8221; primary key property to be a &lt;strong&gt;Long&lt;/strong&gt; annotated as a &lt;strong&gt;@GraphId&lt;/strong&gt;:

&lt;div class="wp_syntax"&gt;&lt;div class="code"&gt;&lt;pre class="java" style="font-family:monospace;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;package&lt;/span&gt; &lt;span style="color: #006699;"&gt;com.example.model&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span style="color: #000000; font-weight: bold;"&gt;import&lt;/span&gt; &lt;span style="color: #006699;"&gt;org.springframework.data.neo4j.annotation.GraphId&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
&lt;span style="color: #000000; font-weight: bold;"&gt;import&lt;/span&gt; &lt;span style="color: #006699;"&gt;org.springframework.data.neo4j.annotation.NodeEntity&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
&amp;nbsp;
@NodeEntity
&lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;class&lt;/span&gt; Person &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    @GraphId
    &lt;span style="color: #000000; font-weight: bold;"&gt;private&lt;/span&gt; &lt;span style="color: #003399;"&gt;Long&lt;/span&gt; id&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span style="color: #666666; font-style: italic;"&gt;// the rest is omitted&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;/li&gt;
&lt;li&gt;Modified the &amp;#8220;&lt;a href="https://github.com/jamesward/hello-java-spring-neo4j/blob/master/src/main/java/com/example/controller/PersonController.java"&gt;src/main/java/com/example/controller/PersonController.java&lt;/a&gt;&amp;#8221; Spring MVC controller to use the new &amp;#8220;PersonService&amp;#8221;, take a &lt;strong&gt;Long&lt;/strong&gt; parameter in the &amp;#8220;deletePerson&amp;#8221; method, and make the &amp;#8220;deletePerson&amp;#8221; and &amp;#8220;addPerson&amp;#8221; methods transactional:

&lt;div class="wp_syntax"&gt;&lt;div class="code"&gt;&lt;pre class="java" style="font-family:monospace;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;package&lt;/span&gt; &lt;span style="color: #006699;"&gt;com.example.controller&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span style="color: #000000; font-weight: bold;"&gt;import&lt;/span&gt; &lt;span style="color: #006699;"&gt;org.springframework.beans.factory.annotation.Autowired&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
&lt;span style="color: #000000; font-weight: bold;"&gt;import&lt;/span&gt; &lt;span style="color: #006699;"&gt;org.springframework.stereotype.Controller&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
&lt;span style="color: #000000; font-weight: bold;"&gt;import&lt;/span&gt; &lt;span style="color: #006699;"&gt;org.springframework.transaction.annotation.Transactional&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
&lt;span style="color: #000000; font-weight: bold;"&gt;import&lt;/span&gt; &lt;span style="color: #006699;"&gt;org.springframework.web.bind.annotation.ModelAttribute&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
&lt;span style="color: #000000; font-weight: bold;"&gt;import&lt;/span&gt; &lt;span style="color: #006699;"&gt;org.springframework.web.bind.annotation.PathVariable&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
&lt;span style="color: #000000; font-weight: bold;"&gt;import&lt;/span&gt; &lt;span style="color: #006699;"&gt;org.springframework.web.bind.annotation.RequestMapping&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
&lt;span style="color: #000000; font-weight: bold;"&gt;import&lt;/span&gt; &lt;span style="color: #006699;"&gt;org.springframework.web.bind.annotation.RequestMethod&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span style="color: #000000; font-weight: bold;"&gt;import&lt;/span&gt; &lt;span style="color: #006699;"&gt;com.example.model.Person&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
&lt;span style="color: #000000; font-weight: bold;"&gt;import&lt;/span&gt; &lt;span style="color: #006699;"&gt;com.example.service.PersonService&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span style="color: #000000; font-weight: bold;"&gt;import&lt;/span&gt; &lt;span style="color: #006699;"&gt;java.util.Map&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
&amp;nbsp;
@Controller
&lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;class&lt;/span&gt; PersonController &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    @Autowired
    &lt;span style="color: #000000; font-weight: bold;"&gt;private&lt;/span&gt; PersonService personService&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
&amp;nbsp;
    @RequestMapping&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;quot;/&amp;quot;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;
    &lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #003399;"&gt;String&lt;/span&gt; listPeople&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;Map&lt;span style="color: #339933;"&gt;&amp;lt;&lt;/span&gt;String, Object&lt;span style="color: #339933;"&gt;&amp;gt;&lt;/span&gt; map&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;
        map.&lt;span style="color: #006633;"&gt;put&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;quot;person&amp;quot;&lt;/span&gt;, &lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; Person&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
        map.&lt;span style="color: #006633;"&gt;put&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;quot;peopleList&amp;quot;&lt;/span&gt;, personService.&lt;span style="color: #006633;"&gt;findAll&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;.&lt;span style="color: #006633;"&gt;iterator&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
        &lt;span style="color: #000000; font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;&amp;quot;people&amp;quot;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
    &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    @RequestMapping&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;value &lt;span style="color: #339933;"&gt;=&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;&amp;quot;/add&amp;quot;&lt;/span&gt;, method &lt;span style="color: #339933;"&gt;=&lt;/span&gt; RequestMethod.&lt;span style="color: #006633;"&gt;POST&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;
    @Transactional
    &lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #003399;"&gt;String&lt;/span&gt; addPerson&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;@ModelAttribute&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;quot;person&amp;quot;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt; Person person&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;
        personService.&lt;span style="color: #006633;"&gt;save&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;person&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
        &lt;span style="color: #000000; font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;&amp;quot;redirect:/people/&amp;quot;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
    &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    @RequestMapping&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;quot;/delete/{personId}&amp;quot;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;
    @Transactional
    &lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #003399;"&gt;String&lt;/span&gt; deletePerson&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;@PathVariable&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;quot;personId&amp;quot;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #003399;"&gt;Long&lt;/span&gt; personId&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;
        personService.&lt;span style="color: #006633;"&gt;delete&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;personId&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
        &lt;span style="color: #000000; font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;&amp;quot;redirect:/people/&amp;quot;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
    &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;/li&gt;
&lt;li&gt;Then I modified the &amp;#8220;&lt;a href="https://github.com/jamesward/hello-java-spring-neo4j/blob/master/src/main/resources/applicationContext.xml"&gt;src/main/resources/applicationContext.xml&lt;/a&gt;&amp;#8221; Spring config file to use a file for local Neo4j storage in the &amp;#8220;default&amp;#8221; profile and then in the &amp;#8220;prod&amp;#8221; profile the &amp;#8220;NEO4J_REST_URL&amp;#8221;, &amp;#8220;NEO4J_LOGIN&amp;#8221;, and &amp;#8220;NEO4J_PASSWORD&amp;#8221; environment variables are used to connect to the Neo4j Heroku add-on service:

&lt;div class="wp_syntax"&gt;&lt;div class="code"&gt;&lt;pre class="xml" style="font-family:monospace;"&gt;&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;?xml&lt;/span&gt;  &lt;span style="color: #000066;"&gt;version&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span style="color: #000066;"&gt;encoding&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;UTF-8&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;beans&lt;/span&gt; &lt;span style="color: #000066;"&gt;xmlns&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;http://www.springframework.org/schema/beans&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;       &lt;span style="color: #000066;"&gt;xmlns:xsi&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;       &lt;span style="color: #000066;"&gt;xmlns:context&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;http://www.springframework.org/schema/context&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;       &lt;span style="color: #000066;"&gt;xmlns:tx&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;http://www.springframework.org/schema/tx&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;       &lt;span style="color: #000066;"&gt;xmlns:mvc&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;http://www.springframework.org/schema/mvc&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;       &lt;span style="color: #000066;"&gt;xmlns:neo4j&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;http://www.springframework.org/schema/data/neo4j&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;       &lt;span style="color: #000066;"&gt;xsi:schemaLocation&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd&lt;/span&gt;
&lt;span style="color: #009900;"&gt;                           http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd&lt;/span&gt;
&lt;span style="color: #009900;"&gt;                           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd&lt;/span&gt;
&lt;span style="color: #009900;"&gt;                           http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd&lt;/span&gt;
&lt;span style="color: #009900;"&gt;                           http://www.springframework.org/schema/data/neo4j http://www.springframework.org/schema/data/neo4j/spring-neo4j-2.0.xsd&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&amp;nbsp;
    &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;context:annotation-config&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;context:spring-configured&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;context:component-scan&lt;/span&gt; &lt;span style="color: #000066;"&gt;base-package&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;com.example&amp;quot;&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;
&amp;nbsp;
    &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;neo4j:repositories&lt;/span&gt; &lt;span style="color: #000066;"&gt;base-package&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;com.example.service&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;
&amp;nbsp;
    &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;mvc:annotation-driven&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;
&amp;nbsp;
    &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;bean&lt;/span&gt; &lt;span style="color: #000066;"&gt;id&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;jspViewResolver&amp;quot;&lt;/span&gt; &lt;span style="color: #000066;"&gt;class&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;org.springframework.web.servlet.view.InternalResourceViewResolver&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
        &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;property&lt;/span&gt; &lt;span style="color: #000066;"&gt;name&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;viewClass&amp;quot;&lt;/span&gt; &lt;span style="color: #000066;"&gt;value&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;org.springframework.web.servlet.view.JstlView&amp;quot;&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;
        &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;property&lt;/span&gt; &lt;span style="color: #000066;"&gt;name&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;prefix&amp;quot;&lt;/span&gt; &lt;span style="color: #000066;"&gt;value&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;/WEB-INF/jsp/&amp;quot;&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;
        &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;property&lt;/span&gt; &lt;span style="color: #000066;"&gt;name&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;suffix&amp;quot;&lt;/span&gt; &lt;span style="color: #000066;"&gt;value&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;.jsp&amp;quot;&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/bean&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&amp;nbsp;
    &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;tx:annotation-driven&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;
&amp;nbsp;
    &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;beans&lt;/span&gt; &lt;span style="color: #000066;"&gt;profile&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;default&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
        &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;neo4j:config&lt;/span&gt; &lt;span style="color: #000066;"&gt;storeDirectory&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;target/neo4j-db&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/beans&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&amp;nbsp;
    &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;beans&lt;/span&gt; &lt;span style="color: #000066;"&gt;profile&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;prod&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
        &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;bean&lt;/span&gt; &lt;span style="color: #000066;"&gt;class&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;org.springframework.data.neo4j.rest.SpringRestGraphDatabase&amp;quot;&lt;/span&gt; &lt;span style="color: #000066;"&gt;id&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;graphDatabaseService&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
            &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;constructor-arg&lt;/span&gt; &lt;span style="color: #000066;"&gt;index&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;0&amp;quot;&lt;/span&gt; &lt;span style="color: #000066;"&gt;value&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;#{systemEnvironment['NEO4J_REST_URL']}&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;
            &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;constructor-arg&lt;/span&gt; &lt;span style="color: #000066;"&gt;index&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;1&amp;quot;&lt;/span&gt; &lt;span style="color: #000066;"&gt;value&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;#{systemEnvironment['NEO4J_LOGIN']}&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;
            &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;constructor-arg&lt;/span&gt; &lt;span style="color: #000066;"&gt;index&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;2&amp;quot;&lt;/span&gt; &lt;span style="color: #000066;"&gt;value&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;#{systemEnvironment['NEO4J_PASSWORD']}&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;
        &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/bean&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&amp;nbsp;
        &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;neo4j:config&lt;/span&gt; &lt;span style="color: #000066;"&gt;graphDatabaseService&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;graphDatabaseService&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/beans&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&amp;nbsp;
&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/beans&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;/li&gt;
&lt;li&gt;After testing my changes locally (which actually didn&amp;#8217;t work in my webinar due to a problem with Eclipse) I committed my changes to the git repo and pushed them to Heroku:

&lt;div class="wp_syntax"&gt;&lt;div class="code"&gt;&lt;pre class="bash" style="font-family:monospace;"&gt;&lt;span style="color: #c20cb9; font-weight: bold;"&gt;git&lt;/span&gt; push heroku master&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If you want to just skip to a working example on the cloud, simply follow the instructions in the &lt;a href="https://github.com/jamesward/hello-java-spring-neo4j/blob/master/README.md"&gt;project README&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Hopefully that helps you get started with Neo4j and Java applications on the cloud!&lt;/p&gt;
&lt;p&gt;BTW: If you watched the webinar, you probably noticed that my Maven and Eclipse were misbehaving.  Turns out that M2E didn&amp;#8217;t read my Maven config and all I had to do was right-click on the project, select Maven, and then Update Project Configuration.  That got everything back in sync.  My excuse for not being able to figure that out during the demo&amp;#8230;  I usually use IntelliJ IDEA.  :)&lt;/p&gt;</description>
      <pubDate>Tue, 15 May 2012 11:00:37 CDT</pubDate>
      <guid isPermaLink="true">http://www.jamesward.com/?p=3318</guid>
      <dc:creator>James Ward</dc:creator>
    </item>
    <item>
      <title>Gorgeous view [Flickr]</title>
      <link>http://uberconf.com/blog/aaron_gustafson/2012/05/gorgeous_view_flickr_?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;&lt;a href="http://www.flickr.com/people/aarongustafson/"&gt;Aaron Gustafson&lt;/a&gt; posted a photo:&lt;/p&gt;
	
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/aarongustafson/7199798752/" title="Gorgeous view"&gt;&lt;img src="http://farm6.staticflickr.com/5338/7199798752_c7cce3ca71_m.jpg" width="240" height="240" alt="Gorgeous view" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/EasyReader/~4/ixTEAWLoRZQ" height="1" width="1"/&gt;</description>
      <pubDate>Tue, 15 May 2012 08:01:11 CDT</pubDate>
      <guid isPermaLink="true">tag:flickr.com,2005:/photo/7199798752</guid>
      <dc:creator>Aaron Gustafson</dc:creator>
    </item>
    <item>
      <title>PhoneGap Starter Project - Productivity</title>
      <link>http://uberconf.com/blog/terry_ryan/2012/05/phonegap_starter_project__productivity?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;&lt;img style="float: right;" src="/blog/assets/content/PhoneGap-Build.png" alt="" width="290" height="190" /&gt;A few weeks back &lt;a href="http://blog.digitalbackcountry.com/2012/04/the-phonegap-starter-project/"&gt;Ryan Stewart posted on his idea&lt;/a&gt; for &lt;a href="https://github.com/phonegap-starter"&gt;PhoneGap Starter&lt;/a&gt; projects. They were designed to take some of the grief out of getting started with various aspects of PhoneGap and PhoneGap Build projects.  I've contributed a project based on one of pet peeves with &lt;a href="https://build.phonegap.com/"&gt;PhoneGap Build&lt;/a&gt;, the lack of productivity.&lt;/p&gt;
&lt;p&gt;Don't get me wrong. I love PhoneGap Build.  I love not having to open multiple IDE's to work on mobile apps. I love working on HTML apps in HTML tools - but you lose a few things in the trade. You lose being able to click one button and have your work available on your device.  You miss being able to click and get a pop up that says your work is ready to view on the device.&lt;/p&gt;
&lt;p&gt;These things seem small, but having tried to build actual projects in PhoneGap Build, I found them critical.  I would go kick off a build, and then have to wait for the build to be complete.  I'd open a browser windows while I waited. 20 minutes later, I would cycle through my Chrome windows and remember that I was waiting for a build to complete.  &lt;/p&gt;
&lt;p&gt;A few months back I tried my hand and solving this and came up with a &lt;a href="/blog/post.cfm/one-click-phonegap-build-to-android-device-script"&gt;shell script that handled this for Android&lt;/a&gt;.  Over the past few weeks, I've added, improved, and modified it. I now have a solution in ANT that does the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Uploads files to PhoneGap Build triggering a rebuild&lt;/li&gt;
&lt;li&gt;Polls for IOS and Android to be finished&lt;/li&gt;
&lt;li&gt;Downloads ipa and apk files when ready&lt;/li&gt;
&lt;li&gt;Installs them onto connected iOS and Android devices&lt;/li&gt;
&lt;li&gt;Uses the "say" command to let you know when things are done.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;It takes the form of an ANT build file, some properties, and 2 shell scripts. I've posted the whole thing as &lt;a href="https://github.com/phonegap-starter/Productivity"&gt;PhoneGap Starter Productivity&lt;/a&gt; on github. As far as I know this will only work on OS X, which I hope isn't a huge problem for anyone, and I'm willing to collaborate with someone to make them more cross platform friendly.&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;Also I feel it's important to note, that while these scripts mean you don't have to use the IDE to accomplish these tasks, you still have to have Xcode and the Android SDK on your machine to use them. &lt;/div&gt;</description>
      <pubDate>Mon, 14 May 2012 16:00:23 CDT</pubDate>
      <guid isPermaLink="true">http://www.terrenceryan.com/blog/post.cfm/phonegap-starter-project-productivity</guid>
      <dc:creator>Terry Ryan</dc:creator>
    </item>
    <item>
      <title>Play 2 Java Tutorial</title>
      <link>http://uberconf.com/blog/james_ward2/2012/05/play_2_java_tutorial?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;I&amp;#8217;ve created a Play 2 Tutorial and &lt;a href="https://github.com/jamesward/play2torial/blob/master/JAVA.md"&gt;posted it on GitHub&lt;/a&gt;!  The tutorial covers how to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/jamesward/play2torial/blob/master/JAVA.md#create-a-play-app"&gt;Create a Play App&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/jamesward/play2torial/blob/master/JAVA.md#set-up-an-ide"&gt;Set up an IDE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/jamesward/play2torial/blob/master/JAVA.md#start-the-play-server"&gt;Start the Play Server&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/jamesward/play2torial/blob/master/JAVA.md#routes"&gt;Routes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/jamesward/play2torial/blob/master/JAVA.md#test-a-route"&gt;Test a Route&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/jamesward/play2torial/blob/master/JAVA.md#update-a-controller"&gt;Update a Controller&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/jamesward/play2torial/blob/master/JAVA.md#test-a-controller"&gt;Test a Controller&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/jamesward/play2torial/blob/master/JAVA.md#update-a-view"&gt;Update a View&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/jamesward/play2torial/blob/master/JAVA.md#test-a-view"&gt;Test a View&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/jamesward/play2torial/blob/master/JAVA.md#deploy-your-app-on-the-cloud-with-heroku"&gt;Deploy your app on the Cloud with Heroku&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/jamesward/play2torial/blob/master/JAVA.md#create-a-model"&gt;Create a Model&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/jamesward/play2torial/blob/master/JAVA.md#create-ui-for-adding-tasks"&gt;Create UI for Adding Tasks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/jamesward/play2torial/blob/master/JAVA.md#get-tasks-as-json"&gt;Get Tasks as JSON&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/jamesward/play2torial/blob/master/JAVA.md#display-the-tasks-via-coffeescript-and-jquery"&gt;Display the Tasks via CoffeeScript and jQuery&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/jamesward/play2torial/blob/master/JAVA.md#make-the-app-pretty-with-twitter-bootstrap"&gt;Make the App Pretty with Twitter Bootstrap&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/jamesward/play2torial/blob/master/JAVA.md#add-form-validation"&gt;Add Form Validation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/jamesward/play2torial/blob/master/JAVA.md#update-the-app-on-heroku"&gt;Update the App on Heroku&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Each section has a &lt;a href="https://github.com/jamesward/play2torial/branches"&gt;corresponding branch in git&lt;/a&gt; so you can diff against my version to see if you&amp;#8217;ve done everything correctly.  Right now this is just for Play 2 with Java and Ebean but I&amp;#8217;m working on doing this for Play 2 with Scala as well.&lt;/p&gt;
&lt;p&gt;You can see a live demo of the final app at:&lt;br /&gt;
&lt;a href="http://play2torial.herokuapp.com/"&gt;play2torial.herokuapp.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s a pretty simple app but it should get you started building Play 2 apps and deploying them on the cloud with Heroku.  If you want to take the shortcut to the end and get your own copy of the app running on Heroku then just do the following:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Install &lt;a href="http://git-scm.com/"&gt;git&lt;/a&gt; and the &lt;a href="http://toolbelt.heroku.com"&gt;Heroku Toolbelt&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://heroku.com/signup"&gt;Signup for an account on Heroku&lt;/a&gt;. (Don&amp;#8217;t worry, this stuff is free.)&lt;/li&gt;
&lt;li&gt;Clone the play2torial git repo:

&lt;div class="wp_syntax"&gt;&lt;div class="code"&gt;&lt;pre class="bash" style="font-family:monospace;"&gt;&lt;span style="color: #c20cb9; font-weight: bold;"&gt;git&lt;/span&gt; clone &lt;span style="color: #c20cb9; font-weight: bold;"&gt;git&lt;/span&gt;:&lt;span style="color: #000000; font-weight: bold;"&gt;//&lt;/span&gt;github.com&lt;span style="color: #000000; font-weight: bold;"&gt;/&lt;/span&gt;jamesward&lt;span style="color: #000000; font-weight: bold;"&gt;/&lt;/span&gt;play2torial.git&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;/li&gt;
&lt;li&gt;Login to Heroku:

&lt;div class="wp_syntax"&gt;&lt;div class="code"&gt;&lt;pre class="bash" style="font-family:monospace;"&gt;heroku &lt;span style="color: #c20cb9; font-weight: bold;"&gt;login&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;/li&gt;
&lt;li&gt;Create a new app on Heroku (from within the play2torial directory):

&lt;div class="wp_syntax"&gt;&lt;div class="code"&gt;&lt;pre class="bash" style="font-family:monospace;"&gt;heroku create &lt;span style="color: #660033;"&gt;--stack&lt;/span&gt; cedar&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;/li&gt;
&lt;li&gt;Upload the app to Heroku (from within the play2torial directory):

&lt;div class="wp_syntax"&gt;&lt;div class="code"&gt;&lt;pre class="bash" style="font-family:monospace;"&gt;&lt;span style="color: #c20cb9; font-weight: bold;"&gt;git&lt;/span&gt; push heroku java-heroku_update:master&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;/li&gt;
&lt;li&gt;Check out your app on the cloud:

&lt;div class="wp_syntax"&gt;&lt;div class="code"&gt;&lt;pre class="bash" style="font-family:monospace;"&gt;heroku open&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;/li&gt;
&lt;li&gt;If you want to run the app locally, &lt;a href="http://www.playframework.org/documentation/2.0.1/Installing"&gt;install Play 2&lt;/a&gt; and then run:

&lt;div class="wp_syntax"&gt;&lt;div class="code"&gt;&lt;pre class="bash" style="font-family:monospace;"&gt;&lt;span style="color: #c20cb9; font-weight: bold;"&gt;git&lt;/span&gt; checkout java-heroku_update
play ~run&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I hope this helps you learn Play 2!  Let me know if you have any questions or comments.  Thanks!&lt;/p&gt;</description>
      <pubDate>Mon, 14 May 2012 13:00:41 CDT</pubDate>
      <guid isPermaLink="true">http://www.jamesward.com/?p=3310</guid>
      <dc:creator>James Ward</dc:creator>
    </item>
    <item>
      <title>Tillandsia [Flickr]</title>
      <link>http://uberconf.com/blog/aaron_gustafson/2012/05/tillandsia_flickr_?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;&lt;a href="http://www.flickr.com/people/aarongustafson/"&gt;Aaron Gustafson&lt;/a&gt; posted a photo:&lt;/p&gt;
	
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/aarongustafson/7191769848/" title="Tillandsia"&gt;&lt;img src="http://farm8.staticflickr.com/7084/7191769848_61e941c578_m.jpg" width="240" height="240" alt="Tillandsia" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/EasyReader/~4/0orRe09M1hU" height="1" width="1"/&gt;</description>
      <pubDate>Mon, 14 May 2012 08:00:31 CDT</pubDate>
      <guid isPermaLink="true">tag:flickr.com,2005:/photo/7191769848</guid>
      <dc:creator>Aaron Gustafson</dc:creator>
    </item>
    <item>
      <title>Tiggzi Mobile App Builder Slides And Video from DC jQuery Meetup</title>
      <link>http://uberconf.com/blog/max_katz/2012/05/tiggzi_mobile_app_builder_slides_and_video_from_dc_jquery_meetup?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;&lt;iframe width="560" height="315" src="http://www.youtube.com/embed/nkRdrTAshKw" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;div style="width:425px" id="__ss_12899057"&gt; &lt;strong style="display:block;margin:12px 0 4px"&gt;&lt;a href="http://www.slideshare.net/maxkatz/tiggzi-at-dc-jquery" title="Tiggzi at DC jQuery Meetup" target="_blank"&gt;Tiggzi at DC jQuery Meetup&lt;/a&gt;&lt;/strong&gt; &lt;iframe src="http://www.slideshare.net/slideshow/embed_code/12899057" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"&gt;&lt;/iframe&gt;
&lt;div style="padding:5px 0 12px"&gt; View more &lt;a href="http://www.slideshare.net/" target="_blank"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/maxkatz" target="_blank"&gt;Max Katz&lt;/a&gt; &lt;/div&gt;
&lt;/p&gt;&lt;/div&gt;</description>
      <pubDate>Sat, 12 May 2012 08:00:54 CDT</pubDate>
      <guid isPermaLink="true">http://mkblog.exadel.com/?p=4783</guid>
      <dc:creator>Max Katz</dc:creator>
    </item>
    <item>
      <title>Heroku, Java, Play and Neo4j Presos: Denver JUG, Atlanta JUG, London Flash UG &amp; Webinar</title>
      <link>http://uberconf.com/blog/james_ward/2012/05/heroku_java_play_and_neo4j_presos_denver_jug_atlanta_jug_london_flash_ug__webinar?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;Over the next couple weeks I&amp;#8217;ll be doing two Java User Group presentations, a Flash Platform User Group presentation and one Webinar.  Hope to see you at one of these events:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Wednesday May 9 &amp;#8211; Denver Java User Group:&lt;br /&gt;
&lt;a href="http://www.denverjug.org/?p=585"&gt;Running Java, Play! and Scala Apps in the Cloud&lt;/a&gt;&lt;/li&gt;
&lt;li style="margin-top: 20px;"&gt;Thursday May 10 &amp;#8211; Webinar hosted by Neo4j:&lt;br /&gt;
&lt;a href="http://info.neotechnology.com/0510-cloud.html"&gt;Graphs in the Cloud: Neo4j and Heroku&lt;/a&gt;&lt;/li&gt;
&lt;li style="margin-top: 20px;"&gt;Tuesday May 15 &amp;#8211; Atlanta Java User Group:&lt;br /&gt;
&lt;a href="http://www.ajug.org/site/5964245/running-java-play-and-scala-apps-on-the-cloud"&gt;Running Java, Play! and Scala Apps on the Cloud&lt;/a&gt;&lt;/li&gt;
&lt;li style="margin-top: 20px;"&gt;Thursday May 24 &amp;#8211; London Flash Platform User Group:&lt;br /&gt;
&lt;a href="http://www.lfpug.com/24th-may-2012-24052012/"&gt;HTML5 Apps in Java &amp;#038; Scala with the Play Framework&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.lfpug.com/24th-may-2012-24052012/"&gt;Deploying Apps on the Cloud with Heroku&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <pubDate>Fri, 11 May 2012 11:02:58 CDT</pubDate>
      <guid isPermaLink="true">http://www.jamesward.com/?p=3300</guid>
      <dc:creator>James Ward</dc:creator>
    </item>
    <item>
      <title>Play 2 Java Tutorial</title>
      <link>http://uberconf.com/blog/james_ward/2012/05/play_2_java_tutorial?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;I&amp;#8217;ve created a Play 2 Tutorial and &lt;a href="https://github.com/jamesward/play2torial/blob/master/JAVA.md"&gt;posted it on GitHub&lt;/a&gt;!  The tutorial covers how to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/jamesward/play2torial/blob/master/JAVA.md#create-a-play-app"&gt;Create a Play App&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/jamesward/play2torial/blob/master/JAVA.md#set-up-an-ide"&gt;Set up an IDE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/jamesward/play2torial/blob/master/JAVA.md#start-the-play-server"&gt;Start the Play Server&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/jamesward/play2torial/blob/master/JAVA.md#routes"&gt;Routes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/jamesward/play2torial/blob/master/JAVA.md#test-a-route"&gt;Test a Route&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/jamesward/play2torial/blob/master/JAVA.md#update-a-controller"&gt;Update a Controller&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/jamesward/play2torial/blob/master/JAVA.md#test-a-controller"&gt;Test a Controller&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/jamesward/play2torial/blob/master/JAVA.md#update-a-view"&gt;Update a View&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/jamesward/play2torial/blob/master/JAVA.md#test-a-view"&gt;Test a View&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/jamesward/play2torial/blob/master/JAVA.md#deploy-your-app-on-the-cloud-with-heroku"&gt;Deploy your app on the Cloud with Heroku&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/jamesward/play2torial/blob/master/JAVA.md#create-a-model"&gt;Create a Model&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/jamesward/play2torial/blob/master/JAVA.md#create-ui-for-adding-tasks"&gt;Create UI for Adding Tasks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/jamesward/play2torial/blob/master/JAVA.md#get-tasks-as-json"&gt;Get Tasks as JSON&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/jamesward/play2torial/blob/master/JAVA.md#display-the-tasks-via-coffeescript-and-jquery"&gt;Display the Tasks via CoffeeScript and jQuery&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/jamesward/play2torial/blob/master/JAVA.md#make-the-app-pretty-with-twitter-bootstrap"&gt;Make the App Pretty with Twitter Bootstrap&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/jamesward/play2torial/blob/master/JAVA.md#add-form-validation"&gt;Add Form Validation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/jamesward/play2torial/blob/master/JAVA.md#update-the-app-on-heroku"&gt;Update the App on Heroku&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Each section has a &lt;a href="https://github.com/jamesward/play2torial/branches"&gt;corresponding branch in git&lt;/a&gt; so you can diff against my version to see if you&amp;#8217;ve done everything correctly.  Right now this is just for Play 2 with Java and Ebean but I&amp;#8217;m working on doing this for Play 2 with Scala as well.&lt;/p&gt;
&lt;p&gt;You can see a live demo of the final app at:&lt;br /&gt;
&lt;a href="http://play2torial.herokuapp.com/"&gt;play2torial.herokuapp.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s a pretty simple app but it should get you started building Play 2 apps and deploying them on the cloud with Heroku.  If you want to take the shortcut to the end and get your own copy of the app running on Heroku then just do the following:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Install &lt;a href="http://git-scm.com/"&gt;git&lt;/a&gt; and the &lt;a href="http://toolbelt.heroku.com"&gt;Heroku Toolbelt&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://heroku.com/signup"&gt;Signup for an account on Heroku&lt;/a&gt;. (Don&amp;#8217;t worry, this stuff is free.)&lt;/li&gt;
&lt;li&gt;Clone the play2torial git repo:

&lt;div class="wp_syntax"&gt;&lt;div class="code"&gt;&lt;pre class="bash" style="font-family:monospace;"&gt;&lt;span style="color: #c20cb9; font-weight: bold;"&gt;git&lt;/span&gt; clone &lt;span style="color: #c20cb9; font-weight: bold;"&gt;git&lt;/span&gt;:&lt;span style="color: #000000; font-weight: bold;"&gt;//&lt;/span&gt;github.com&lt;span style="color: #000000; font-weight: bold;"&gt;/&lt;/span&gt;jamesward&lt;span style="color: #000000; font-weight: bold;"&gt;/&lt;/span&gt;play2torial.git&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;/li&gt;
&lt;li&gt;Login to Heroku:

&lt;div class="wp_syntax"&gt;&lt;div class="code"&gt;&lt;pre class="bash" style="font-family:monospace;"&gt;heroku &lt;span style="color: #c20cb9; font-weight: bold;"&gt;login&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;/li&gt;
&lt;li&gt;Create a new app on Heroku (from within the play2torial directory):

&lt;div class="wp_syntax"&gt;&lt;div class="code"&gt;&lt;pre class="bash" style="font-family:monospace;"&gt;heroku create &lt;span style="color: #660033;"&gt;--stack&lt;/span&gt; cedar&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;/li&gt;
&lt;li&gt;Upload the app to Heroku (from within the play2torial directory):

&lt;div class="wp_syntax"&gt;&lt;div class="code"&gt;&lt;pre class="bash" style="font-family:monospace;"&gt;&lt;span style="color: #c20cb9; font-weight: bold;"&gt;git&lt;/span&gt; push heroku java-heroku_update:master&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;/li&gt;
&lt;li&gt;Check out your app on the cloud:

&lt;div class="wp_syntax"&gt;&lt;div class="code"&gt;&lt;pre class="bash" style="font-family:monospace;"&gt;heroku open&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;/li&gt;
&lt;li&gt;If you want to run the app locally, &lt;a href="http://www.playframework.org/documentation/2.0.1/Installing"&gt;install Play 2&lt;/a&gt; and then run:

&lt;div class="wp_syntax"&gt;&lt;div class="code"&gt;&lt;pre class="bash" style="font-family:monospace;"&gt;&lt;span style="color: #c20cb9; font-weight: bold;"&gt;git&lt;/span&gt; checkout java-heroku_update
play ~run&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I hope this helps you learn Play 2!  Let me know if you have any questions or comments.  Thanks!&lt;/p&gt;</description>
      <pubDate>Fri, 11 May 2012 08:00:49 CDT</pubDate>
      <guid isPermaLink="true">http://www.jamesward.com/?p=3310</guid>
      <dc:creator>James Ward</dc:creator>
    </item>
    <item>
      <title>Tiggzi – the Cloud-based jQuery Mobile App Builder At DC jQuery Users Group, May 10, 2012</title>
      <link>http://uberconf.com/blog/max_katz/2012/05/tiggzi__the_cloud_based_jquery_mobile_app_builder_at_dc_jquery_users_group_may_10_2012?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;I&amp;#8217;ll be speaking at &lt;a href="http://www.meetup.com/DC-jQuery-Users-Group/events/56964682/" target="_blank"&gt;DC jQuery Users Group&lt;/a&gt; this Thursday, May 10. I&amp;#8217;ll be showing &lt;a href="http://tiggzi.com" title="Tiggzi Mobile App Builder" target="_blank"&gt;Tiggzi&lt;/a&gt; &amp;#8211; the cloud-based jQuery Mobile and PhoneGap app builder, and how fast and easy it is to build jQuery Mobile apps connected to any REST API. &lt;/p&gt;</description>
      <pubDate>Thu, 10 May 2012 16:00:30 CDT</pubDate>
      <guid isPermaLink="true">http://mkblog.exadel.com/?p=4721</guid>
      <dc:creator>Max Katz</dc:creator>
    </item>
    <item>
      <title>Tiggzi At The AT&amp;T Mobile Hackathon In Palo Alto Recap</title>
      <link>http://uberconf.com/blog/max_katz/2012/05/tiggzi_at_the_at_t_mobile_hackathon_in_palo_alto_recap?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;This past weekend Oleksandr (Sasha) Piskun, chief mobile architect behind &lt;a href="http://tiggzi.com"&gt;Tiggzi&lt;/a&gt; and myself attended the &lt;a href="http://mobileapppa.eventbrite.com/" target="_blank"&gt;AT&amp;#038;T Mobile Hackathon&lt;/a&gt; at the AT&amp;#038;T Foundry in Palo Alto. The hackathon was also sponsored by Facebook. A big thank you to &lt;a href="http://twitter.com/alex_donn"&gt;Alex Donn&lt;/a&gt;, Ben Nelson and other AT&amp;#038;T team members for putting this awesome event together and including us in it. &lt;/p&gt;
&lt;p&gt;If you are not familiar with a hackathon format, it goes like this. The event usually starts Friday evening with what&amp;#8217;s called &amp;#8220;developer dating&amp;#8221; or simply networking. After about an hour, event sponsors and tool providers make a 5-10 minute presentation on their API&amp;#8217;s and tools. After that the attendees get a few minutes to pitch their app ideas. Once all the presentations are done, it&amp;#8217;s time to form teams and start building the apps. Team forming or app building goes until about midnight.  The next day the event restarts at about 10am, accompanied by breakfast and the teams start building and hacking. This goes until about 7pm at which point all development stops and teams get about 3 minutes to present their apps. Once everyone presented, the judges get together and decide on the winners.&lt;/p&gt;
&lt;p&gt;This was our fourth hackathon after attending hackathons in San Diego and Seattle (sponsored by AT&amp;#038;T) and one in San Francisco sponsored by Microsoft. The Palo Alto one was the biggest hackathon so far. This is probably because it was in the heart of Silicon Valley and sponsored by Facebook. &lt;/p&gt;
&lt;p&gt;We arrived at AT&amp;#038;T Foundry around 6pm on Friday, and the place was already pretty busy. AT&amp;#038;T Foundry is a great place for a hackathon, large area, large tables. The entire place was divided into small sections (but still open) which are perfect for teams working together. &lt;/p&gt;
&lt;p&gt;Alex Donn started the event around 7:30pm introducing himself, his team, AT&amp;#038;T and all the partners. He always shows this picture which shows all the various tools that attendees can use during the hackathon: &lt;/p&gt;
&lt;p&gt;&lt;figure id="attachment_4732" class="wp-caption alignnone" style="width: 600px"&gt;&lt;img src="http://mkblog.exadel.com/wp-content/uploads/2012/05/2012-04-13-19.18.54-e1336516266827.jpg" alt="" title="2012-04-13-19.18.54" width="600" height="450" class="size-full wp-image-4732" /&gt;&lt;figcaption class="wp-caption-text"&gt;Picture from Seattle hackathon&lt;/figcaption&gt;&lt;/figure&gt;&lt;span id="more-4728"&gt;&lt;/span&gt;&lt;br /&gt;
Next &lt;a href="https://twitter.com/#!/jamespearce"&gt;James Pearce&lt;/a&gt;, Head of Mobile Developer Relations at Facebook presented: &lt;/p&gt;
&lt;figure id="attachment_4737" class="wp-caption alignnone" style="width: 600px"&gt;&lt;img src="http://mkblog.exadel.com/wp-content/uploads/2012/05/2012-05-04-19.32.33-e1336516705410.jpg" alt="" width="600" height="450" class="size-full wp-image-4737" /&gt;&lt;figcaption class="wp-caption-text"&gt;James Pearce from Facebook&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;More companies presented after Facebook. There were presentations from Apigee UserGrid, AT&amp;#038;T mHealth, Mozilla and Viafo.  We (Tiggzi) also got a chance to present. We got about 3-4 minutes to show how to build an app in &lt;a href="http://tiggzi.com"&gt;Tiggzi&lt;/a&gt;. What&amp;#8217;s really amazing is that I built a Twitter search app in under 2 minutes! Yes &amp;#8211; that&amp;#8217;s how long it takes to build a simple app in Tiggzi. The app is jQuery Mobile on the UI and connects to Twitter&amp;#8217;s search REST API. &lt;/p&gt;
&lt;p&gt;I did run into a small glitch during the demo. My WiFi connection went down. Yes, even thought the event was happening at AT&amp;#038;T, WiFi connection was rather flaky. Most likely due to number of different devices (laptops, tablets, phones) in the same room, all trying to use the same network.  I haven&amp;#8217;t had any demo issues for a very long time so I guess it was just time. So, the next one is now far away! For about 1 minute I didn&amp;#8217;t have Internet connection and was about to give up but then I got reconnected and was able to finish the app. &lt;/p&gt;
&lt;p&gt;Anyone who wanted to use Tiggzi to build their app could get 2 months &lt;a href="http://tiggzi.com/pricing"&gt;Pro plan&lt;/a&gt;. In fact, any attendee could get the 2 months Pro plan. We also offered prizes to winning teams. 1st place best app built in Tiggzi gets 12 months Pro plan for the entire team. 2nd and 3rd places get 6 months Pro plan for the entire team. &lt;/p&gt;
&lt;p&gt;Sasha and I stayed at the hackathon until around midnight talking with people and telling them more about Tiggzi. We got home around 1:30am. &lt;/p&gt;
&lt;p&gt;Next morning we met around 9am and drove to Palo Alto getting there just after 10am. A good number of teams were already there and building their apps. We settled down in the main (first) room where people could easily find us. &lt;/p&gt;
&lt;figure id="attachment_4754" class="wp-caption alignnone" style="width: 600px"&gt;&lt;img src="http://mkblog.exadel.com/wp-content/uploads/2012/05/2012-05-05-19.29.14-e1336580782525.jpg" alt="" title="2012-05-05-19.29.14" width="600" height="450" class="size-full wp-image-4754" /&gt;&lt;figcaption class="wp-caption-text"&gt;Sasha explaining how to build apps with &lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;We counted about 10 teams (out of 29) using Tiggzi to build their apps. The rest of the day was very busy for us. I don&amp;#8217;t think we had more than 5 minutes of free time, both of us were helping different teams with Tiggzi questions as well as various API questions. It was busy but we had a lot of fun!&lt;/p&gt;
&lt;p&gt;To win the best app prize and $20,000 the app had to use Facebook Graph API. We came prepared to the hackathon and created a step-by-step &lt;a href="http://help.gotiggr.com/documentation/services/examples-connecting-to-mobile-back-ends/facebook"&gt;tutorial&lt;/a&gt; on how to build an app in Tiggzi that uses Facebook API. Note: turned out you can also use &lt;a href="http://developers.facebook.com/docs/authentication/client-side"&gt;client-only authentication&lt;/a&gt; which is a little bit simpler than described in the tutorial. &lt;/p&gt;
&lt;figure id="attachment_4753" class="wp-caption alignnone" style="width: 600px"&gt;&lt;img src="http://mkblog.exadel.com/wp-content/uploads/2012/05/2012-05-05-18.41.38-e1336580930487.jpg" alt="" title="" width="600" height="450" class="size-full wp-image-4753" /&gt;&lt;figcaption class="wp-caption-text"&gt;Hacking&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Everything was going well, and a number of teams started testing the app on the actual phones. Tiggzi comes with a really awesome test feature where at any moment you can launch the app in the browser for testing. To give a feeling of a real phone, the app opens inside a frame &amp;#8211; where the actual frame looks like a generic smart phone: &lt;/p&gt;
&lt;p&gt;&lt;img src="http://mkblog.exadel.com/wp-content/uploads/2012/05/Selection_476.png" alt="" title="Selection_476" width="300" height="444" class="alignnone size-full wp-image-4762" /&gt;&lt;/p&gt;
&lt;p&gt;When you open the same test URL on a mobile device, we detect the device and don&amp;#8217;t render the frame. The transition between frame and the non-frame version is done with a basic redirect. The redirect unfortunately caused a problem when testing the app on the actual mobile device. Facebook would do a callback to a page in Tiggzi app with query parameters that need to be saved. A redirect would happen (when testing the app on a mobile device) but the query parameters would be lost. An obvious solution was to use mobile only pages (for callback and in Facebook app settings). We found another problem, now with jQuery Mobile. The callback URL from Facebook uses # (instead of ?) to separate the start of query parameters and this caused jQuery Mobile fail to load. At the end we did find a workaround, and users were able to test on the actual mobile device. We are working on long term solution as well. For example, we are making the phone frame to be optional.  &lt;/p&gt;
&lt;p&gt;At 7pm development stopped and all the teams lined up to present their apps. All the teams that used Tiggzi presented the app running in desktop browser, the phone frame is a nice feature and mimics a real device. At the end, the bug wasn&amp;#8217;t such a big issue &amp;#8211; after all the teams did build the apps. &lt;/p&gt;
&lt;p&gt;Once all the presentations were done, we went to a separate room and picked the winners. We also picked best three apps built with Tiggzi. Best Tiggzi app 1st place (12 months Pro plan winners) was won by a team that didn&amp;#8217;t have any HTML or jQuery Mobile experience. &lt;/p&gt;
&lt;p&gt;The feedback was pretty much universal from all the teams, people are amazed how easy it is to build apps with Tiggzi. At the same time, we get a ton of feedback on improving Tiggzi builder. Here is what we are planning based on hackathon feedback: &lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Simplify project creation &amp;#8211; just one project type (the app can be either mobile web or PhoneGap app)&lt;/li&gt;
&lt;li&gt;Make the phone frame for testing optional. By default we will open the app link in full browser window. This might not look as &amp;#8220;nice&amp;#8221;, but technically it gives a better view of how the app looks and behaves. &lt;/li&gt;
&lt;/ol&gt;
&lt;figure id="attachment_4765" class="wp-caption alignnone" style="width: 600px"&gt;&lt;img src="http://mkblog.exadel.com/wp-content/uploads/2012/05/2012-05-05-21.23.54-e1336582198598.jpg" alt="" title="2012-05-05-21.23.54" width="600" height="450" class="size-full wp-image-4765" /&gt;&lt;figcaption class="wp-caption-text"&gt;Presentation time&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure id="attachment_4766" class="wp-caption alignnone" style="width: 600px"&gt;&lt;img src="http://mkblog.exadel.com/wp-content/uploads/2012/05/2012-05-05-19.45.59-e1336582237348.jpg" alt="" title="" width="600" height="450" class="size-full wp-image-4766" /&gt;&lt;figcaption class="wp-caption-text"&gt;One of the winning apps built with Tiggzi&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure id="attachment_4764" class="wp-caption alignnone" style="width: 600px"&gt;&lt;img src="http://mkblog.exadel.com/wp-content/uploads/2012/05/2012-05-05-21.26.32-e1336582266182.jpg" alt="" title="" width="600" height="450" class="size-full wp-image-4764" /&gt;&lt;figcaption class="wp-caption-text"&gt;Winners&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;We are looking forward to the next hackathon!&lt;/p&gt;
&lt;p&gt;I want to thank Sasha for spending the weekend helping build apps instead of being in Yosemite. I also want to thank the entire Tiggzi team for amazing job done. They are many more awesome features they are planning to release.&lt;/p&gt;</description>
      <pubDate>Thu, 10 May 2012 13:00:22 CDT</pubDate>
      <guid isPermaLink="true">http://mkblog.exadel.com/?p=4728</guid>
      <dc:creator>Max Katz</dc:creator>
    </item>
    <item>
      <title>Why coming to #GR8Conf?</title>
      <link>http://uberconf.com/blog/guillaume_laforge/2012/05/why_coming_to_gr8conf_?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description />
      <pubDate>Thu, 10 May 2012 11:00:30 CDT</pubDate>
      <guid isPermaLink="true">why-coming-to-gr8conf</guid>
      <dc:creator>Guillaume LaForge</dc:creator>
    </item>
    <item>
      <title>Vert.x 1.0 released with its Groovy support</title>
      <link>http://uberconf.com/blog/guillaume_laforge/2012/05/vert_x_1_0_released_with_its_groovy_support?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description />
      <pubDate>Thu, 10 May 2012 08:00:40 CDT</pubDate>
      <guid isPermaLink="true">vert-x-1-0-released-with-its-groovy-support</guid>
      <dc:creator>Guillaume LaForge</dc:creator>
    </item>
    <item>
      <title>D2WC Next Week</title>
      <link>http://uberconf.com/blog/terry_ryan/2012/05/d2wc_next_week?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;&lt;img style="float: right;" src="/blog/assets/content/d2wclogo.png" alt="" width="360" height="101" /&gt;Next week, I'll be speaking at &lt;a href="http://d2wc.com/"&gt;D2WC&lt;/a&gt;, a designer/developer workflow conference in Kansas City, Missouri. &lt;/p&gt;
&lt;p&gt;I'll be talking about Using PhoneGap Build to simplify your mobile development life. One of the great things about PhoneGap is that it allows you to use HTML JS and CSS to build your applications, but you still have to use native tools to build your apps. PhoneGap Build helps immensely with this, but you make some productivity sacrifices. This session will show you how to maximize your work, and touch as little of the IDE as possible. &lt;/p&gt;
&lt;p&gt;First time for me at this conference, but from what I understand it's a great conference that tackles a specific topic: getting development and design to work together better. Great goal, really looking forward to it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;D2WC&lt;/strong&gt;&lt;br /&gt; May 16-18&lt;br /&gt; Kansas City Marriott Country Club Plaza&lt;br /&gt; 4445 Main Street&lt;br /&gt; Kansas City, Missouri 64111 &lt;br /&gt; USA&lt;/p&gt;</description>
      <pubDate>Wed, 09 May 2012 16:00:22 CDT</pubDate>
      <guid isPermaLink="true">http://www.terrenceryan.com/blog/post.cfm/d2wc-next-week</guid>
      <dc:creator>Terry Ryan</dc:creator>
    </item>
    <item>
      <title>From now on, I’m calling it GroovyString</title>
      <link>http://uberconf.com/blog/kenneth_kousen/2012/05/from_now_on_i_m_calling_it_groovystring?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;I&amp;#8217;ve been doing a lot of introductory Groovy presentations lately, and an issue keeps coming up that I feel I have to address. I&amp;#8217;ve had to think hard about how to do this, though, because I don&amp;#8217;t want to be misunderstood. I&amp;#8217;m probably going to fumble it a bit, so please forgive me if I ramble.&lt;/p&gt;
&lt;p&gt;Lately there have been several episodes in the IT industry of boys behaving badly. &lt;a href="http://www.motherjones.com/media/2012/04/silicon-valley-brogrammer-culture-sexist-sxsw"&gt;A recent article in Mother Jones&lt;/a&gt; has a good summary. In short, a few guys in this industry have had a tendency to do and say things that have been particularly insensitive to women, for a variety of reasons ranging from simple foolishness to (potentially) outright bias.&lt;/p&gt;
&lt;p&gt;Maybe this isn&amp;#8217;t terribly surprising. After all, geeks aren&amp;#8217;t always the most agile of social butterflies, and one of the downsides of getting guys together in groups is that the collective IQ tends to be lower than the individual ones. Still, I don&amp;#8217;t want to rant about that, especially since lamenting poor behavior is almost as much of a cliche as the behavior itself.&lt;/p&gt;
&lt;p&gt;Instead, I want to focus on the Groovy programming language, and a decision made during its early formation that could easily have been avoided if more women developers had been available.&lt;/p&gt;
&lt;p&gt;As anyone who works with Groovy knows, the language has two types of strings. One uses single-quotes (&lt;code&gt;'this is a string'&lt;/code&gt;) and represents and instance of regular old &lt;code&gt;java.lang.String&lt;/code&gt;. The other uses double-quotes (&lt;code&gt;"this is a string with a ${variable}"&lt;/code&gt;), and allows for variables to be interpolated into it. The latter is a really useful class and comes up all the time.&lt;/p&gt;
&lt;p&gt;By all the standard conventions, the class representing double-quoted strings should be called &lt;code&gt;GroovyString&lt;/code&gt;. There are thirty or forty different classes in &lt;a href="http://groovy.codehaus.org/gapi/"&gt;the Groovy API&lt;/a&gt; that start with the word Groovy, including such common classes as &lt;code&gt;GroovyObject&lt;/code&gt;, &lt;code&gt;GroovyShell&lt;/code&gt;, &lt;code&gt;GroovyServlet&lt;/code&gt;, and &lt;code&gt;GroovyTestCase&lt;/code&gt;. A &lt;code&gt;GroovyString&lt;/code&gt; class would feel right at home there.&lt;/p&gt;
&lt;p&gt;Unfortunately, though, the original development team decided to call the class representing double-quoted strings &lt;code&gt;GString&lt;/code&gt;, because they thought it was funny. Even worse, since you substitute values into it using a $, the inevitable follow-up joke is that you do string interpolation by &amp;#8220;putting a dollar in a GString&amp;#8221;.&lt;/p&gt;
&lt;p&gt;Now, I&amp;#8217;m sure no malice was intended at the time. It was a joke, and I chuckled the first time I heard it too.  So have many women I know when they first hear it. It&amp;#8217;s actually a pretty clever joke.&lt;/p&gt;
&lt;p&gt;But that doesn&amp;#8217;t mean a name like that belongs in the standard library.&lt;/p&gt;
&lt;p&gt;I think of it this way. The name of that class is yet one more reason why we need more women in this field. I&amp;#8217;m sure that if a woman had been part of the core Groovy team at the time, she would have said something like, &amp;#8220;ha ha, very funny, guys, but let&amp;#8217;s not hard-wire that gag into the standard library, okay? You know, the same library that&amp;#8217;s going to be used by every Groovy developer ever?&amp;#8221; I fully expect that the rest of the team would have thought about it and almost certainly (if sheepishly) agreed. After all, it&amp;#8217;s the kind of joke that&amp;#8217;s funny once, and only for a few minutes. After that it&amp;#8217;s mostly a nuisance. It&amp;#8217;s hard enough to get a language named Groovy taken seriously by the Fortune 500 without going there, too.&lt;/p&gt;
&lt;p&gt;Please don&amp;#8217;t get me wrong, though. I&amp;#8217;m not blaming or condemning anybody. That&amp;#8217;s the sort of gag that comes up all the time. The mistake was making it part of the standard. Clearly there wasn&amp;#8217;t a woman available at the time to provide some perspective.&lt;/p&gt;
&lt;p&gt;I also draw a strong distinction between silly mistakes and outright bias. Everybody makes mistakes. I make them all the time. I try not to say anything offensive in class (or in life), partly because I really do try to respect people different from myself, and partly because I&amp;#8217;m pretty much of a coward and don&amp;#8217;t want to get in trouble. I certainly don&amp;#8217;t want to make anyone uncomfortable for no good reason.&lt;/p&gt;
&lt;p&gt;Oversensitivity leads to its own problems, too. I was an undergrad at MIT back in the 80&amp;#8242;s. Despite the popular image of the place, the actual male/female ratio there was about 55%/45%, which wasn&amp;#8217;t all that bad despite my complaints at the time. (The women there used to joke that the ratio of &amp;#8220;acceptable&amp;#8221; men to women was closer to 50/50.) The women at MIT tended to be pretty strong personalities, too, which I always thought was a good thing. I&amp;#8217;ve always welcomed the company of women I could take seriously, or men too for that matter. The problem was that like so many academic environments, MIT had a marked tendency to overreact to any accusation of bias. Once someone complained of bias, rationality went out the window and any hope of getting to the actual truth was completely lost.&lt;/p&gt;
&lt;p&gt;By the way, I believe this is partly what happened in the late 80&amp;#8242;s and early 90&amp;#8242;s, when oversensitivity to bias was labeled &amp;#8220;political correctness&amp;#8221; and summarily dismissed. I think we&amp;#8217;re still paying the price for that.&lt;/p&gt;
&lt;p&gt;That&amp;#8217;s really unfortunate, too, because every woman I&amp;#8217;ve ever met, without exception, has a story to tell that qualifies as bias or even harassment by any reasonable definition. Sometimes all you have to do is ask to hear stories that will make you shudder. Overreactions desensitize people against actual injustices that should cause outrage.&lt;/p&gt;
&lt;p&gt;I don&amp;#8217;t think the Groovy class in question qualifies on that scale. It&amp;#8217;s a mistake, in my opinion, and a natural result of having too few women in the field. I&amp;#8217;m not calling for a movement to rename the class or criticize anyone who uses the established name. But, then again, I&amp;#8217;m not a woman. It&amp;#8217;s entirely possible I don&amp;#8217;t &amp;#8220;get it&amp;#8221;.&lt;/p&gt;
&lt;p&gt;As a result, from now on I&amp;#8217;m going to call double-quoted strings &lt;code&gt;GroovyString&lt;/code&gt;s. It&amp;#8217;s easy enough for me to do, and while it may not change anything, hopefully it will make some women developers feel slightly more welcome. If you want to join me, great, but if not, that&amp;#8217;s fine too. I&amp;#8217;ve made my decision, though, and hopefully this post will make my reasons clear.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kousenit.wordpress.com/346/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kousenit.wordpress.com/346/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/kousenit.wordpress.com/346/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kousenit.wordpress.com/346/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/kousenit.wordpress.com/346/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/kousenit.wordpress.com/346/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/kousenit.wordpress.com/346/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/kousenit.wordpress.com/346/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/kousenit.wordpress.com/346/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kousenit.wordpress.com/346/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/kousenit.wordpress.com/346/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kousenit.wordpress.com/346/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/kousenit.wordpress.com/346/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kousenit.wordpress.com/346/" /&gt;&lt;/a&gt; &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kousenit.wordpress.com&amp;#038;blog=186706&amp;#038;post=346&amp;#038;subd=kousenit&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;</description>
      <pubDate>Wed, 09 May 2012 13:00:09 CDT</pubDate>
      <guid isPermaLink="true">http://kousenit.wordpress.com/?p=346</guid>
      <dc:creator>Kenneth Kousen</dc:creator>
    </item>
  </channel>
</rss>


