<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">
  <title>Guillaume Laforge's blog feed</title>
  <subtitle>On all things Groovy!</subtitle>
  
  <updated>2012-05-16T22:14:43Z</updated>
  <generator uri="http://gaelyk.appspot.com" version="1.1">Gaelyk lightweight Groovy toolkit for Google App Engine</generator>
  <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/glaforge" /><feedburner:info uri="glaforge" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry>
    <id>vert-x-1-0-released-with-its-groovy-support</id>
    <title>Vert.x 1.0 released with its Groovy support</title>
    <link href="http://feedproxy.google.com/~r/glaforge/~3/KoQVhnDXeyU/vert-x-1-0-released-with-its-groovy-support" />
    <published>2012-05-10T10:25:00Z</published>
    <updated>2012-05-10T10:27:07Z</updated>
    <category term="Groovy" scheme="http://glaforge.appspot.com/category/Groovy" />
    <summary type="html">&lt;a href="https://twitter.com/#!/timfox" style="font-family: Arial, Verdana; font-size: 10pt; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; "&gt;Tim Fox&lt;/a&gt;&lt;span style="font-family: Arial, Verdana; font-size: 10pt; line-height: normal;"&gt; yesterday announced &lt;/span&gt;&lt;a href="http://vertxproject.wordpress.com/2012/05/09/vert-x-1-0-final-is-released/" style="font-family: Arial, Verdana; font-size: 10pt; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; "&gt;the release of Vert.x 1.0&lt;/a&gt;&lt;span style="font-family: Arial, Verdana; font-size: 10pt; line-height: normal;"&gt;.&lt;/span&gt;&lt;div style="font-family: Arial, Verdana; font-size: 10pt; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; "&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://vertx.io/" style="font-family: Arial, Verdana; font-size: 10pt; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; "&gt;Vert.x&lt;/a&gt;&lt;span style="font-family...&lt;img src="http://feeds.feedburner.com/~r/glaforge/~4/KoQVhnDXeyU" height="1" width="1"/&gt;</summary>
    <author>
      <name>Guillaume Laforge</name>
    </author>
  <feedburner:origLink>http://glaforge.appspot.com/article/vert-x-1-0-released-with-its-groovy-support</feedburner:origLink></entry>
  <entry>
    <id>why-coming-to-gr8conf</id>
    <title>Why coming to #GR8Conf?</title>
    <link href="http://feedproxy.google.com/~r/glaforge/~3/uIEe7A5evA4/why-coming-to-gr8conf" />
    <published>2012-05-10T09:54:00Z</published>
    <updated>2012-05-10T09:56:16Z</updated>
    <category term="Conference" scheme="http://glaforge.appspot.com/category/Conference" />
    <category term="Groovy" scheme="http://glaforge.appspot.com/category/Groovy" />
    <summary type="html">&lt;span style="font-size: 10pt;"&gt;&lt;img src="/media/gr8-conf-logo.png" align="right"&gt;&lt;/span&gt;&lt;span style="font-family: Arial, Verdana; font-size: 10pt; line-height: normal; "&gt;I was reading &lt;/span&gt;&lt;a href="http://gr8conf.eu/blog/Interview-with-MrHaki" style="font-family: Arial, Verdana; font-size: 10pt; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; "&gt;MrHaki's interview&lt;/a&gt;&lt;span style="font-family: Arial, Verdana; font-size: 10pt; line-height: normal; "&gt; on the &lt;a href="http://gr8conf.eu"&gt;GR8Conf website&lt;/a&gt; this morning, and he had some nice words and good points about why it's important to attend the conference. You get to meet the creators and developers of the projects you're interested in and have great content (emphasis mine):&lt;/span&gt;&lt;div style="font-family: Arial, Verdana; font-size: 10pt; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; "&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="fo...&lt;img src="http://feeds.feedburner.com/~r/glaforge/~4/uIEe7A5evA4" height="1" width="1"/&gt;</summary>
    <author>
      <name>Guillaume Laforge</name>
    </author>
  <feedburner:origLink>http://glaforge.appspot.com/article/why-coming-to-gr8conf</feedburner:origLink></entry>
  <entry>
    <id>slides-for-domain-specific-languages-in-groovy</id>
    <title>Slides for Domain-Specific Languages in Groovy</title>
    <link href="http://feedproxy.google.com/~r/glaforge/~3/NJ1WMPOxRTE/slides-for-domain-specific-languages-in-groovy" />
    <published>2012-05-03T14:48:00Z</published>
    <updated>2012-05-03T14:48:00Z</updated>
    <category term="Conference" scheme="http://glaforge.appspot.com/category/Conference" />
    <category term="Groovy" scheme="http://glaforge.appspot.com/category/Groovy" />
    <summary type="html">During the Cloud Foundry Open Tour conference in Moscow, I presented a new presentation of &lt;a href="http://www.slideshare.net/glaforge/going-to-mars-with-groovy-domainspecific-languages"&gt;Domain-Specific Languages in Groovy&lt;/a&gt;. I've already shared the link here and there (twitter, Google+, mailing-list), but not yet on my blog. So consder this fixed now. This new presentation is inspired from the beta DSL chapter from the second edition of Groovy in Action, where you'll learn how to create a DSL for a little Mars robot. This is a pretty practical approach, bottom-up, as you progressively build the DSL, rather than listing all the existing techniques and illustrate them. I feel the flow is a bit better that way. Anyway... enjoy:

&lt;div style="width:425px" id="__ss_12700368"&gt; &lt;strong style="display:block;margin:12px 0 4px"&gt;&lt;a href="http://www.slideshare.net/glaforge/going-to-mars-with-groovy-domainspecific-languages" title="Going to Mars with Groovy Domain-Specific Languages" target="_b...&lt;img src="http://feeds.feedburner.com/~r/glaforge/~4/NJ1WMPOxRTE" height="1" width="1"/&gt;</summary>
    <author>
      <name>Guillaume Laforge</name>
    </author>
  <feedburner:origLink>http://glaforge.appspot.com/article/slides-for-domain-specific-languages-in-groovy</feedburner:origLink></entry>
  <entry>
    <id>run-a-groovy-script-in-vi</id>
    <title>Run a Groovy script in Vi</title>
    <link href="http://feedproxy.google.com/~r/glaforge/~3/QvjmL0ZJ72I/run-a-groovy-script-in-vi" />
    <published>2012-04-23T11:13:00Z</published>
    <updated>2012-04-23T11:18:24Z</updated>
    <category term="Groovy" scheme="http://glaforge.appspot.com/category/Groovy" />
    <summary type="html">&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; font-family: Arial, Verdana; font-size: 10pt; line-height: normal; "&gt;In the Vi vs Emacs war, I'm in the Vi camp. I'm using Vim on the command-line to quickly edit files, and I'm also using MacVim on my Mac as my text editor. When I'm not using an IDE or the Groovy Console, I also want to be able to edit and run my Groovy scripts in my text editor. It's not too difficult to run a Groovy script from Vi, you can simply do:&lt;/span&gt;&lt;pre style="font-family: Arial, Verdana; font-size: 10pt; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; "&gt;:!groovy %&lt;/pre&gt;&lt;div style="font-family: Arial, Verdana; font-size: 10pt; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; "&gt;&lt;span style="font-family: Arial, Verdana; font-size: 10pt; font-style: normal; "&gt;You use the colon to enter the command mode, then use the bang to issue a shell command. Here, obviously, I'm...&lt;img src="http://feeds.feedburner.com/~r/glaforge/~4/QvjmL0ZJ72I" height="1" width="1"/&gt;</summary>
    <author>
      <name>Guillaume Laforge</name>
    </author>
  <feedburner:origLink>http://glaforge.appspot.com/article/run-a-groovy-script-in-vi</feedburner:origLink></entry>
  <entry>
    <id>groovy-at-devoxx-france</id>
    <title>Groovy at Devoxx France</title>
    <link href="http://feedproxy.google.com/~r/glaforge/~3/fGIG68YnMaY/groovy-at-devoxx-france" />
    <published>2012-04-23T08:22:00Z</published>
    <updated>2012-04-23T08:27:23Z</updated>
    <category term="Conference" scheme="http://glaforge.appspot.com/category/Conference" />
    <category term="Groovy" scheme="http://glaforge.appspot.com/category/Groovy" />
    <summary type="html">Last week saw the first edition of &lt;a href="http://www.devoxx.fr/display/FR12/Accueil" style="font-weight: normal; "&gt;Devoxx France&lt;/a&gt;. And what a success it was! The conference was sold out at 1200 persons. There was a great wealth of interesting topics and many passionate attendees to talk to. Overall, I come back home impressed that the first edition worked out so well, flawlessly, and was such a joy to attend. So a big thank you and congrats to all those involved in making Devoxx France such a great event!&lt;div style="font-weight: normal; "&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Along with &lt;a href="http://www.jroller.com/melix/"&gt;Cédric Champeau&lt;/a&gt;, I had the pleasure to present the &lt;span style="font-weight: bold;"&gt;novelties of Groovy 2.0&lt;/span&gt; (and a bit of retrospective on some of the key features of Groovy 1.8). We covered quickly the &lt;span style="font-weight: bold;"&gt;invoke dynamic support&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;modularization&lt;/span&gt;, and went into more depth into the &lt;span style="...&lt;img src="http://feeds.feedburner.com/~r/glaforge/~4/fGIG68YnMaY" height="1" width="1"/&gt;</summary>
    <author>
      <name>Guillaume Laforge</name>
    </author>
  <feedburner:origLink>http://glaforge.appspot.com/article/groovy-at-devoxx-france</feedburner:origLink></entry>
  <entry>
    <id>come-to-gr8conf-for-half-the-price</id>
    <title>Come to GR8Conf for half the price!</title>
    <link href="http://feedproxy.google.com/~r/glaforge/~3/b_qkUJKoArs/come-to-gr8conf-for-half-the-price" />
    <published>2012-04-13T10:32:00Z</published>
    <updated>2012-04-13T10:41:42Z</updated>
    <category term="Conference" scheme="http://glaforge.appspot.com/category/Conference" />
    <category term="Groovy" scheme="http://glaforge.appspot.com/category/Groovy" />
    <summary type="html">&lt;span style="font-weight: normal; "&gt;&lt;img src="/media/I+speak+at+GR8Conf+2012+badge.png" align="right" class="framed"&gt;This is this time of the year where all the &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Groovy hackers and fans are meeting together in Denmark&lt;/span&gt;, Copenhagen, for the &lt;a href="http://gr8conf.eu/" style="font-weight: normal; "&gt;GR8Conf conference&lt;/a&gt;. A conference dedicated to &lt;a href="http://groovy.codehaus.org"&gt;Groovy&lt;/a&gt;, Grails, Gradle, Griffon, Spock, GPars and all the Groovy ecosystem. If you're interested in these technologies or are already using them, this is the opportunity you shouldn't miss.&amp;nbsp;&lt;div style="font-weight: normal; "&gt;&lt;br&gt;&lt;/div&gt;&lt;div style="font-weight: normal; "&gt;Also, you're pretty lucky, because I have a ticket for half the price to offer you! But there's just one seat I can offer at that price. So if you're interested, please add a nice comment to this post, that may be fun, or explaining why you'd like to come, and in a few weeks, I'll tell you...&lt;img src="http://feeds.feedburner.com/~r/glaforge/~4/b_qkUJKoArs" height="1" width="1"/&gt;</summary>
    <author>
      <name>Guillaume Laforge</name>
    </author>
  <feedburner:origLink>http://glaforge.appspot.com/article/come-to-gr8conf-for-half-the-price</feedburner:origLink></entry>
  <entry>
    <id>bash-tip-find-and-grep-through-files</id>
    <title>bash tip: find and grep through files</title>
    <link href="http://feedproxy.google.com/~r/glaforge/~3/9ZuK7qBV6cg/bash-tip-find-and-grep-through-files" />
    <published>2012-03-29T09:18:00Z</published>
    <updated>2012-03-29T10:42:32Z</updated>
    <category term="Geek" scheme="http://glaforge.appspot.com/category/Geek" />
    <summary type="html">It happens once in a while that I want to find all files containing a certain string. I know command-line tools such as grep, cat, and find, but I never remember the right combination to achieve that task. So as to remember and reference it later, I write this small blog post to remind me how to do it:&lt;div style="font-weight: normal; "&gt;&lt;pre&gt;find . -type f -exec grep YOURSTRING /dev/null {} \;&lt;/pre&gt;&lt;/div&gt;The find . part will search from the current directory (and all its subdirectories), - type f to search for files (not directories or links, etc), -exec to use the grep command to find through the files, with YOURSTRING as query string, /dev/null to throw away the errors you don't care about, and {} is the current file to search into with grep.&lt;div style="font-weight: normal; "&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-weight: bold;"&gt;Update:&lt;/span&gt; a simple approach proposed in the comments is&lt;/div&gt;&lt;pre&gt;grep -r YOURSTRING *&lt;/pre&gt;&lt;img src="http://feeds.feedburner.com/~r/glaforge/~4/9ZuK7qBV6cg" height="1" width="1"/&gt;</summary>
    <author>
      <name>Guillaume Laforge</name>
    </author>
  <feedburner:origLink>http://glaforge.appspot.com/article/bash-tip-find-and-grep-through-files</feedburner:origLink></entry>
  <entry>
    <id>incomplete-string-regex-matching</id>
    <title>Incomplete string regex matching</title>
    <link href="http://feedproxy.google.com/~r/glaforge/~3/by_iBpzx4lc/incomplete-string-regex-matching" />
    <published>2012-03-27T15:19:00Z</published>
    <updated>2012-03-30T15:54:56Z</updated>
    <category term="Groovy" scheme="http://glaforge.appspot.com/category/Groovy" />
    <summary type="html">&lt;span&gt;Once in a while, I stumble upon the need of being able to tell whether a string could match a certain regular expression pattern, if it were given some more characters.&amp;nbsp;&lt;/span&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;For example, a user is typing a time in an input field, following the pattern of 2 digits, a colon, and 2 other digits. He enters the first two digits and the colon, and we're wondering if the time could be valid if he entered some more keystrokes.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;I found the &lt;a href="http://jregex.sourceforge.net/"&gt;JRegex&lt;/a&gt; project and its documentation about &lt;a href="http://jregex.sourceforge.net/gstarted-advanced.html#imatching"&gt;incomplete matching&lt;/a&gt; which showed me that it was possible to achieve such a goal. But using JRegex is adding another library on the classpath for such a small requirement, that I started wondering if there was a way to emulate that with Java's own regex support.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;We're used to methods like &lt;a href="http://docs.o...&lt;img src="http://feeds.feedburner.com/~r/glaforge/~4/by_iBpzx4lc" height="1" width="1"/&gt;</summary>
    <author>
      <name>Guillaume Laforge</name>
    </author>
  <feedburner:origLink>http://glaforge.appspot.com/article/incomplete-string-regex-matching</feedburner:origLink></entry>
  <entry>
    <id>groovy-2-0-presentation-at-33rd-degree</id>
    <title>Groovy 2.0 presentation at 33rd Degree</title>
    <link href="http://feedproxy.google.com/~r/glaforge/~3/KRH823SpGqI/groovy-2-0-presentation-at-33rd-degree" />
    <published>2012-03-21T10:05:00Z</published>
    <updated>2012-03-21T10:06:57Z</updated>
    <category term="Conference" scheme="http://glaforge.appspot.com/category/Conference" />
    <category term="Groovy" scheme="http://glaforge.appspot.com/category/Groovy" />
    <summary type="html">Here are the slides of the Groovy 2.0 presentation I've given at the 33rd Degree conference in Krakow.&lt;div&gt;&lt;br&gt;&lt;/div&gt;

&lt;div style="width:425px" id="__ss_12092341"&gt; &lt;strong style="display:block;margin:12px 0 4px"&gt;&lt;a href="http://www.slideshare.net/glaforge/whats-new-in-groovy-20" title="Whats new in Groovy 2.0?" target="_blank"&gt;Whats new in Groovy 2.0?&lt;/a&gt;&lt;/strong&gt; &lt;iframe src="http://www.slideshare.net/slideshow/embed_code/12092341" 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/glaforge" target="_blank"&gt;Guillaume Laforge&lt;/a&gt; &lt;/div&gt; &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/glaforge/~4/KRH823SpGqI" height="1" width="1"/&gt;</summary>
    <author>
      <name>Guillaume Laforge</name>
    </author>
  <feedburner:origLink>http://glaforge.appspot.com/article/groovy-2-0-presentation-at-33rd-degree</feedburner:origLink></entry>
  <entry>
    <id>speaking-of-groovy-2-0-at-33rd-degree-in-poland</id>
    <title>Speaking of Groovy 2.0 at 33rd Degree, in Poland</title>
    <link href="http://feedproxy.google.com/~r/glaforge/~3/Rbdc8fX9na0/speaking-of-groovy-2-0-at-33rd-degree-in-poland" />
    <published>2012-03-18T16:01:00Z</published>
    <updated>2012-03-18T16:03:01Z</updated>
    <category term="Conference" scheme="http://glaforge.appspot.com/category/Conference" />
    <category term="Groovy" scheme="http://glaforge.appspot.com/category/Groovy" />
    <summary type="html">&lt;span style="font-family: Arial, Verdana; font-size: 10pt; line-height: normal;"&gt;Tomorrow I'm flying to Krakow, in Poland, to &lt;/span&gt;&lt;a href="http://2012.33degree.org/talk/show/17" style="font-family: Arial, Verdana; font-size: 10pt; font-style: normal; font-variant: normal; line-height: normal; font-weight: normal; "&gt;speak about the upcoming Groovy 2.0&lt;/a&gt;&lt;span style="font-family: Arial, Verdana; font-size: 10pt; line-height: normal;"&gt; release, at the &lt;/span&gt;&lt;a href="http://2012.33degree.org/" style="font-family: Arial, Verdana; font-size: 10pt; font-style: normal; font-variant: normal; line-height: normal; font-weight: normal; "&gt;33rd Degree conference&lt;/a&gt;&lt;span style="font-family: Arial, Verdana; font-size: 10pt; line-height: normal;"&gt;. I'm looking forward to meeting some of you there!&lt;/span&gt;&lt;div style="font-family: Arial, Verdana; font-size: 10pt; font-style: normal; font-variant: normal; line-height: normal; font-weight: normal; "&gt;&lt;br&gt;&lt;/div&gt;&lt;div style="font-family: Arial, Verdana; f...&lt;img src="http://feeds.feedburner.com/~r/glaforge/~4/Rbdc8fX9na0" height="1" width="1"/&gt;</summary>
    <author>
      <name>Guillaume Laforge</name>
    </author>
  <feedburner:origLink>http://glaforge.appspot.com/article/speaking-of-groovy-2-0-at-33rd-degree-in-poland</feedburner:origLink></entry>
</feed>

