<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog.Project13.pl &#187; free software</title>
	<atom:link href="http://www.blog.project13.pl/index.php/tag/free-software/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.blog.project13.pl</link>
	<description>The Blog of a Coder</description>
	<lastBuildDate>Sun, 05 Feb 2012 02:28:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>[release] Kanbanery for IntelliJ (and Android!)</title>
		<link>http://www.blog.project13.pl/index.php/project13/1372/release-kanbanery-for-intellij-and-android/</link>
		<comments>http://www.blog.project13.pl/index.php/project13/1372/release-kanbanery-for-intellij-and-android/#comments</comments>
		<pubDate>Mon, 17 Oct 2011 01:08:56 +0000</pubDate>
		<dc:creator>Ktoso</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[Project13]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[free software]]></category>
		<category><![CDATA[intellij]]></category>
		<category><![CDATA[kanban]]></category>
		<category><![CDATA[kanbanery]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[release]]></category>

		<guid isPermaLink="false">http://www.blog.project13.pl/?p=1372</guid>
		<description><![CDATA[After not even one day of hacking, I&#8217;m releasing my first IntelliJ IDEA plugin. It enables &#8220;Tasks&#8221; (that default plugin in IntelliJ) to see tasks on the Kanbanery.com board. Thanks to this you&#8217;re able to commit always &#8220;refering to&#8221; some specific task. Using GitHub and Kanbanery such commits are linked back to the task on [...]]]></description>
			<content:encoded><![CDATA[<p>After not even one day of hacking, I&#8217;m releasing my first <strong>IntelliJ IDEA</strong> plugin. It enables &#8220;<strong>Tasks</strong>&#8221; (that default plugin in IntelliJ) to see tasks on the <strong><a href="http://www kanbanery.com" onclick="urchinTracker('/outgoing/www_kanbanery.com?referer=');">Kanbanery.com</a></strong> board.</p>
<p style="text-align: center;"><img class="aligncenter" title="Kanbanery and Intellij" src="https://github.com/ktoso/kanbanery-for-intellij/raw/master/doc/commit_github_task_id_kanbanery.png" alt="" width="546" height="265" /></p>
<p>Thanks to this you&#8217;re able to commit always &#8220;refering to&#8221; some specific task. Using <strong>GitHub</strong> and Kanbanery such commits are linked back to the task on the board, which makes code reviews very pleasant :-)</p>
<p style="text-align: center;"><img class="aligncenter" src="https://github.com/ktoso/kanbanery-for-intellij/raw/master/doc/switch_task_q_gives_a_nice_info.png" alt="" width="556" height="209" /></p>
<p style="text-align: left;">As we&#8217;re using Kanbanery in our team, I&#8217;ll hopefully have some time and ideas to make this plugin even more useful over time :-) So in case you&#8217;re interested just download the plugin from your IntelliJ or head to <a href="https://github.com/ktoso/kanbanery-for-intellij" onclick="urchinTracker('/outgoing/github.com/ktoso/kanbanery-for-intellij?referer=');">github to look at the source code</a> or <a href="plugins.intellij.net/plugin/edit/?pid=6363">vote for this plugin on it&#8217;s site</a>.</p>
<p style="text-align: center;"><img class="aligncenter" src="https://g0.gstatic.com/android/market/pl.project13.kanbanery/f-1024-0" alt="" width="517" height="252" /></p>
<p style="text-align: left;">Oh&#8230; Seems like I forgot to announce that I&#8217;ve also released a <strong><a title="Kanbanery for Android" href="https://market.android.com/details?id=pl.project13.kanbanery" target="_blank" onclick="urchinTracker('/outgoing/market.android.com/details?id=pl.project13.kanbanery&amp;referer=');">Android client for Kanbanery</a></strong> :-) Yup, that&#8217;s true, so got ahead and check it out if you&#8217;d like to. This one still needs some polishing, but the idea is to keep it in one codebase but develop for both, tablets and normal phones, so some things are a little bit tricky :-) I love to use it on my XOOM, but I&#8217;ll work hard to make the phone versions as awesome as the tablet one.</p>
<p style="text-align: center;"><img class="aligncenter" src="https://ssl.gstatic.com/android/market/pl.project13.kanbanery/ss-1280-7-0" alt="" width="523" height="327" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.project13.pl/index.php/project13/1372/release-kanbanery-for-intellij-and-android/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[alpha][release] ProtoDoc v1.0 (not production ready)</title>
		<link>http://www.blog.project13.pl/index.php/project13/1321/initial-release-protodoc-v1-0-not-production-ready/</link>
		<comments>http://www.blog.project13.pl/index.php/project13/1321/initial-release-protodoc-v1-0-not-production-ready/#comments</comments>
		<pubDate>Mon, 27 Jun 2011 12:00:45 +0000</pubDate>
		<dc:creator>Ktoso</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[Project13]]></category>
		<category><![CDATA[scala]]></category>
		<category><![CDATA[alpha]]></category>
		<category><![CDATA[free software]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[protocol buffers]]></category>
		<category><![CDATA[release]]></category>

		<guid isPermaLink="false">http://www.blog.project13.pl/?p=1321</guid>
		<description><![CDATA[I&#8217;ve finished a one could say major stepstone in my student project yesterday. I&#8217;ll be implementing this tool to be production ready over the next few months so keep your fingers crossed. But what is it actually? ProtoDoc, is for Google Protocol Buffers what JavaDoc is for Java. As simple as that. In order to [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve finished a one could say major stepstone in my student project yesterday. I&#8217;ll be implementing this tool to be production ready over the next few months so keep your fingers crossed. But what is it actually? <em>ProtoDoc, is for Google Protocol Buffers what JavaDoc is for Java.</em> As simple as that. In order to achieve this I needed to parse Protocol Buffer IDL files and then on top of that do some simple html generation. The tools I used for this are:</p>
<ul>
<li>Scala &#8211; the code is 100% scala</li>
<li>Scala <a href="http://www.google.pl/search?aq=f&#038;sourceid=chrome&#038;ie=UTF-8&#038;q=scala+parser+combinators+documentation" onclick="urchinTracker('/outgoing/www.google.pl/search?aq=f_038_sourceid=chrome_038_ie=UTF-8_038_q=scala+parser+combinators+documentation&amp;referer=');">Parser Combinators</a> &#8211; the &#8220;parser generation DSL&#8221; one might say, begind this parser. It&#8217;s very very amazing and pushing Scala to it&#8217;s best with some crazy implicit conversions flying around all the time :-)</li>
<li>Scarg &#8211; a simple tool for handling command line parameters, <a href="https://github.com/xfire/scarg" onclick="urchinTracker('/outgoing/github.com/xfire/scarg?referer=');">it&#8217;s on github</a></li>
<li>sbt &#8211; Simple Build Tool, let&#8217;s call it &#8220;what maven is for java&#8221; but with a Gradle-ish feel to it. A very nice build tool, actually my fav I&#8217;d say.</li>
<li><a href="http://scalate.fusesource.org/" onclick="urchinTracker('/outgoing/scalate.fusesource.org/?referer=');">Scalate &#8211; a template engine</a>, which implements <a href="http://mustache.github.com/" onclick="urchinTracker('/outgoing/mustache.github.com/?referer=');">Mustache</a> (which I used, as it&#8217;s a very clean lang, NO LOGIC in the view :-)) as one of it&#8217;s template languages</li>
<li>and of course <a href="www.scalatest.org">ScalaTest</a> &#8211; as &#8216;<em>thou shalt test thy code</em>&#8216; :-)</li>
</ul>
<p>It was a very pleasant expirience and I&#8217;m looking forward to implementing a 100% compatible Protocol Buffers parser in Scala&#8230; :-)</p>
<p>There is also a pdf I&#8217;ve written about this project but it&#8217;s not well written and in Polish (university requirements, bleh), but if you want to know more about Scala Parser Combinators, you can take a look at it here: <a href="https://github.com/ktoso/protodoc-scala/blob/master/doc/konrad_malawski_protodoc.pdf?raw=true" onclick="urchinTracker('/outgoing/github.com/ktoso/protodoc-scala/blob/master/doc/konrad_malawski_protodoc.pdf?raw=true&amp;referer=');">doc @ github.com</a>.</p>
<p>The project itself is of course Free Software and Open Source, licensed under the Apache 2 license, so feel free to <a href="https://github.com/ktoso/protodoc-scala" onclick="urchinTracker('/outgoing/github.com/ktoso/protodoc-scala?referer=');">fork protodoc-scala on github</a>!</p>
<p>I&#8217;ll just quote the README from the github page for the rest of the description:</p>
<hr />
Have you ever worked with a BIG Protocol Buffers based application? It would be awesome if it had some kind<br />
of tool like JavaDoc, to always know what each field exactly means, even without having the proto file at hand right now.</p>
<p><em>Oh, wait. That&#8217;s excatly what ProtoDoc is!</em> ProtoDoc is a tool very much like JavaDoc, which scans your proto files and generates<br />
an easily searchable and most informative website with all information about yout ProtoMessages.</p>
<p><strong>It&#8217;s currently not production ready, and allows only for basic Messages to be parsed.</strong> But it should most probably be finished and fully working quite soon.</p>
<p><strong>Live Demo</strong><br />
There is a <a href="http://www.up.project13.pl/protodoc/index.html" onclick="urchinTracker('/outgoing/www.up.project13.pl/protodoc/index.html?referer=');">live demo available here</a>.</p>
<p><strong>Coding notes</strong></p>
<ul>
<li>ProtoDoc is build by <strong>sbt</strong> so if you want to help out hacking, first download <strong>Scala 2.8.1</strong> and sbt :-)</li>
</ul>
<p><strong>Output screenshots</strong><br />
ProtoDoc takes this:</p>
<pre><code>
package pl.project13;

/**
 * This is a simple Message which has some Inner Message defined.
 * Also, note that it has a default value on the name property.
 */
message MessageWithInner {
    /**
     * A number is just a simple property
     */
    required int32 number = 1;

    /**
     * This can be a name of your likeing, the default value is "lorem ipsum" etc
     */
    required string name = 2 [default = "loremipsum"];

    /**
     * Whoa, this is a comment on an inner message!
     * ProtoDoc is so cool!
     */
    message InnerMessage {

        /**
         * This is a comment on an inner messages field, cool~
         * You may use it like this in your generated Java code:
         * setName("StringMyName");
         */
        optional string name = 3;
    }
}</code></pre>
<p>and generates this:</p>
<p><img src="https://raw.github.com/ktoso/protodoc-scala/master/doc/protodoc_main.png" alt="protodoc sample" style="width:420px"/></p>
<p>
Hooray!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.project13.pl/index.php/project13/1321/initial-release-protodoc-v1-0-not-production-ready/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[release] maven-git-commit-id-plugin</title>
		<link>http://www.blog.project13.pl/index.php/fun/1174/release-maven-git-commit-id-plugin/</link>
		<comments>http://www.blog.project13.pl/index.php/fun/1174/release-maven-git-commit-id-plugin/#comments</comments>
		<pubDate>Sun, 13 Feb 2011 15:25:18 +0000</pubDate>
		<dc:creator>Ktoso</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[freedom]]></category>
		<category><![CDATA[fun]]></category>
		<category><![CDATA[guide]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[#maven]]></category>
		<category><![CDATA[build]]></category>
		<category><![CDATA[free software]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[release]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[tricks]]></category>

		<guid isPermaLink="false">http://www.blog.project13.pl/?p=1174</guid>
		<description><![CDATA[Yup, today I&#8217;m releasing yet another piece of cool free software! It solves a problem we&#8217;ve had at our company, the tester tometimes tested stuff that wasn&#8217;t deployed yet, and the developers thought it was deployed and this caused some weird situations sometimes. Using the plugin I&#8217;ve written, we&#8217;re able to expose &#8220;which version is [...]]]></description>
			<content:encoded><![CDATA[<p>Yup, today I&#8217;m releasing yet another piece of cool free software! It solves a problem we&#8217;ve had at our company, the tester tometimes tested stuff that wasn&#8217;t deployed yet, and the developers thought it was deployed and this caused some weird situations sometimes. Using the plugin I&#8217;ve written, we&#8217;re able to expose &#8220;which version is this?&#8221; using repository information from<strong> git </strong>in our webapps. Yes there are maven plugins that do this, but none of them supported git &#8211; so I wrote my own and hope you guys will find it as useful as we do!</p>
<p><strong>UPDATE</strong><br />
The plugin is now available from <strong>Sonatype Nexus</strong>!</p>
<pre>
    <repository>
        <id>sonatype-releases</id>
        <name>Sonatype Releases</name>
        <url>https://oss.sonatype.org/content/repositories/releases/</url>
    </repository>
</pre>
<p><strong>END OF UPDATE</strong></p>
<p>Now I&#8217;ll be a bit lazy and just paste the README I&#8217;ve prepared for <strong><a href="https://github.com/ktoso/maven-git-commit-id-plugin/" target="_blank" onclick="urchinTracker('/outgoing/github.com/ktoso/maven-git-commit-id-plugin/?referer=');">maven-git-commit-id-plugin on github</a></strong>.</p>
<div id="readme">
<div>
<h2>Maven plugin: git-commit-id-plugin</h2>
<p><strong>git-commit-id-plugin</strong> is a plugin quite similar to <a href="https://fisheye.codehaus.org/browse/mojo/tags/buildnumber-maven-plugin-1.0-beta-4" target="_blank" onclick="urchinTracker('/outgoing/fisheye.codehaus.org/browse/mojo/tags/buildnumber-maven-plugin-1.0-beta-4?referer=');">build-number maven plugin</a> for example but as buildnumber only supports svn (which is very sad) and  cvs (which is even more sad, and makes bunnies cry) I had to quickly  develop an git version of such a plugin. For those who don&#8217;t know the  previous plugins, let me explain what this plugin does:</p>
<h3>Sample scenario why this plugin is useful</h3>
<p>If you develop your maven project inside an git repository (which you  hopefully already are docing) you may want to know exactly what changeset is currently deployed online. Why is this useful? Well,  the tester won&#8217;t come to you screaming &#8220;heeey that bug ain&#8217;t fixed&#8221; of  course you&#8217;d reply &#8220;but I fixed it this morning!&#8221; and after some  searching you notice &#8220;oh&#8230; it&#8217;ll be online after the next deployment,  sorry tester&#8230; :-(&#8220;.</p>
<p>This scenario keeps repeating sometimes, thus you can state which  commit fixes/closes the bug, note this in JIRA etc and then the tester  will know if it&#8217;s already online (by the commit date for example).</p>
<h2>Usage</h2>
<h3>Getting the plugin</h3>
<p>I&#8217;ll be trying to get this plugin out to sonatype for others to use if more simply, for now it&#8217;s quickest to just:</p>
<pre><code>  git clone git://github.com/ktoso/maven-git-commit-id-plugin.git maven-git-commit-id-plugin
  cd maven-git-commit-id-plugin
  mvn install
</code></pre>
<p>and you&#8217;re ready to use it ;-) I&#8217;m also thinking about making this  github repo a maven repository, which would make the above step not  needed &#8211; but first let&#8217;s wait if sonatype let me in with this project,  k? ;-)</p>
<h3>Using the plugin</h3>
<p>It&#8217;s really simple to setup this plugin, here&#8217;s a sample pom that you may base your <strong>pom.xml</strong> on:</p>
<pre><code>   &lt;?xml version="1.0" encoding="UTF-8"?&gt;
   &lt;project xmlns="http://maven.apache.org/POM/4.0.0"
            xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&gt;
       &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;

       &lt;groupId&gt;pl.project13.maven&lt;/groupId&gt;
       &lt;artifactId&gt;my-git-plugin-sample-app&lt;/artifactId&gt;
       &lt;packaging&gt;war&lt;/packaging&gt;
       &lt;version&gt;0.1&lt;/version&gt;
       &lt;name&gt;my-git-plugin-sample-app&lt;/name&gt;
       &lt;url&gt;http://www.blog.project13.pl&lt;/url&gt;

       &lt;parent/&gt;

       &lt;dependencies /&gt;

       &lt;build&gt;
           &lt;!-- GIT COMMIT ID PLUGIN CONFIGURATION --&gt;
           &lt;resources&gt;
               &lt;resource&gt;
                   &lt;directory&gt;src/main/resources&lt;/directory&gt;
                   &lt;filtering&gt;true&lt;/filtering&gt;
                   &lt;includes&gt;
                       &lt;include&gt;**/*.properties&lt;/include&gt;
                       &lt;include&gt;**/*.xml&lt;/include&gt;
                   &lt;/includes&gt;
               &lt;/resource&gt;
           &lt;/resources&gt;

           &lt;plugins&gt;
               &lt;plugin&gt;
                   &lt;groupId&gt;pl.project13.maven&lt;/groupId&gt;
                   &lt;artifactId&gt;git-commit-id-plugin&lt;/artifactId&gt;
                   &lt;version&gt;1.0-SNAPSHOT&lt;/version&gt;
                   &lt;executions&gt;
                       &lt;execution&gt;
                           &lt;goals&gt;
                               &lt;goal&gt;revision&lt;/goal&gt;
                           &lt;/goals&gt;
                       &lt;/execution&gt;
                   &lt;/executions&gt;
                   &lt;configuration&gt;
                       &lt;prefix&gt;git&lt;/prefix&gt; &lt;!-- that's the default value --&gt;
                       &lt;dateFormat&gt;dd.MM.yyyy '@' HH:mm:ss z&lt;/dateFormat&gt; &lt;!-- that's the default value --&gt;
                       &lt;verbose&gt;true&lt;/verbose&gt; &lt;!-- false is default for this --&gt;
                       &lt;dotGitDirectory&gt;${project.basedir}/../.git&lt;/dotGitDirectory&gt; &lt;!-- required, you have to specify this path --&gt;
                   &lt;/configuration&gt;
               &lt;/plugin&gt;
               &lt;!-- END OF GIT COMMIT ID PLUGIN CONFIGURATION --&gt;

               &lt;!-- other plugins --&gt;
           &lt;/plugins&gt;
       &lt;/build&gt;
   &lt;/project&gt;
</code></pre>
<p>Based on the above part of a working POM you should be able to figure out the rest, I mean you are a maven user after all&#8230; ;-) Note that the resources filtering is important for this plugin to work, don&#8217;t omit it!</p>
<p>Now you just have to include such a properties file in your project under <code>/src/main/resources</code> (and call it <strong>git.properties</strong> for example) and maven will put the appropriate properties in the placeholders:</p>
<pre><code> git.branch=${git.branch}

 git.build.user.name=${git.build.user.name}
 git.build.user.email=${git.build.user.email}
 git.build.time=${git.build.time}

 git.commit.id=${git.commit.id}
 git.commit.user.name=${git.commit.user.name}
 git.commit.user.email=${git.commit.user.email}
 git.commit.message.full=${git.commit.message.full}
 git.commit.message.short=${git.commit.message.short}
 git.commit.time=${git.commit.time}
</code></pre>
<p>The <code>git</code> prefix may be configured in the plugin declaration above.</p>
<h3>Maven resource filtering + Spring = GitRepositoryState Bean</h3>
<p>You&#8217;ll most probably want to wire these plugins somehow to get easy  access to them during runtime. We&#8217;ll use spring as an example of doing  this. Start out with with adding the above steps to your project, next paste  this <strong>git-bean.xml</strong> into the <code>/src/main/resources/</code> directory (or any other, just adjust the paths later on):</p>
<pre><code>&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"&gt;

    &lt;bean name="gitRepositoryInformation"&gt;
        &lt;property name="branch" value="${git.branch}"/&gt;
        &lt;property name="commitId" value="${git.commit.id}"/&gt;
        &lt;property name="commitTime" value="${git.commit.time}"/&gt;
        &lt;property name="buildUserName" value="${git.build.user.name}"/&gt;
        &lt;property name="buildUserEmail" value="${git.build.user.email}"/&gt;
        &lt;property name="commitMessageFull" value="${git.commit.message.full}"/&gt;
        &lt;property name="commitMessageShort" value="${git.commit.message.short}"/&gt;
        &lt;property name="commitUserName" value="${git.commit.user.name}"/&gt;
        &lt;property name="commitUserEmail" value="${git.commit.user.email}"/&gt;
    &lt;/bean&gt;

&lt;/beans&gt;
</code></pre>
<p>And here&#8217;s the source of the bean we&#8217;re binding here:</p>
<pre><code>package pl.project13.maven.example.git;

import org.codehaus.jackson.annotate.JsonWriteNullProperties;

/**
 * A spring controlled bean that will be injected
 * with properties about the repository state at build time.
 * This information is supplied by my plugin - &lt;b&gt;pl.project13.maven.git-commit-id-plugin&lt;/b&gt;
 *
 * @author Konrad Malawski
 */
@JsonWriteNullProperties(true)
public class GitRepositoryState {
  String branch;                  // =${git.branch}
  String commitId;                // =${git.commit.id}
  String buildUserName;           // =${git.build.user.name}
  String buildUserEmail;          // =${git.build.user.email}
  String buildTime;               // =${git.build.time}
  String commitUserName;          // =${git.commit.user.name}
  String commitUserEmail;         // =${git.commit.user.email}
  String commitMessageFull;       // =${git.commit.message.full}
  String commitMessageShort;      // =${git.commit.message.short}
  String commitTime;              // =${git.commit.time}

  public GitRepositoryState() {
  }

  /* Generate setters and getters here */
}
</code></pre>
<p>The source for it is also on the repo of this plugin. Of course, <em>feel free to drop out the jackson annotation</em> if you won&#8217;t be using it.</p>
<p>The last configuration related thing we need to do is to load up this bean in your appContext, so open up your <strong>applicationContext.xml</strong> or whatever you call it in your project and add these lines in the  section:</p>
<pre><code>&lt;context:property-placeholder location="classpath:*.properties" /&gt;
&lt;import resource="classpath:/git-bean.xml"/&gt;
</code></pre>
<p>Of course, you may adjust the paths and file locations as you please, no problems here&#8230; :-) <em>Now you&#8217;re ready to use your GitRepositoryState Bean!</em> Let&#8217;s create an sample <strong>Spring MVC Controller</strong> to test it out:</p>
<pre><code> @Controller
 @RequestMapping("/git")
 public class GitService extends BaseWebService {

     @Autowired
     GitRepositoryState gitRepoState;

     @RequestMapping("/status")
     public ModelAndView checkGitRevision() throws WebServiceAuthenticationException {
       ServerResponse&lt;GitRepositoryState&gt; response = new ServerResponse&lt;GitRepositoryState&gt;(gitRepoState);
       return createMAV(response);
     }
 }
</code></pre>
<p>Don&#8217;t mind the createMAV and responses stuff, it&#8217;s just example code.  And feel free to use constructor injection, it&#8217;s actually a better idea  ;-)</p>
<p>In the end <em>this is what this service would return</em>:</p>
<pre><code> {
     "branch" : "testing-maven-git-plugin",
     "commitTime" : "06.01.1970 @ 16:16:26 CET",
     "commitId" : "787e39f61f99110e74deed68ab9093088d64b969",
     "commitUserName" : "Konrad Malawski",
     "commitUserEmail" : "konrad.malawski@java.pl",
     "commitMessageFull" : "releasing my fun plugin :-)
                            + fixed some typos
                            + cleaned up directory structure
                            + added license etc",
     "commitMessageShort" : "releasing my fun plugin :-)",
     "buildTime" : "06.01.1970 @ 16:17:53 CET",
     "buildUserName" : "Konrad Malawski",
     "buildUserEmail" : "konrad.malawski@java.pl"
 }
</code></pre>
<p>That&#8217;s all folks! <strong>Happy hacking!</strong></p>
<h2>Configuration details</h2>
<p>Just a short recap of the available parameters&#8230;</p>
<p>Required parameters:</p>
<ul>
<li> <strong>dotGitDirectory</strong> &#8211; (required) the location of your .git  folder. Try to use ${project.basedir} as root for this, and navigate  using ../ to higher up folder to easily use this plugin in multi module  enviroments etc. An example would be: <code>${project.basedir}/../.git</code></li>
</ul>
<p>Optional parameters:</p>
<ul>
<li> <strong>prefix</strong> &#8211; (default: git) is the &#8220;namespace&#8221; for all exposed properties</li>
<li> <strong>dateFormat</strong> &#8211; (default: dd.MM.yyyy &#8216;@&#8217; HH:mm:ss z) is a  normal SimpleDateFormat String and will be used to represent  git.build.time and git.commit.time</li>
<li> <strong>verbose</strong> &#8211; (default: false) if true the plugin will print a summary of all collected properties when it&#8217;s done</li>
</ul>
<h2>License</h2>
<p>I&#8217;m releasing this plugin under the <strong>GNU Lesser General Public License 3.0</strong>. You&#8217;re free to use it as you wish, the license text is attached in the LICENSE file. You may contact me if you want this to be released on a different license, just send me an email konrad.malawski@java.pl :-)</p>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.project13.pl/index.php/fun/1174/release-maven-git-commit-id-plugin/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>GWT Firefox 3.6+ plugin on 64bit Fedora 13</title>
		<link>http://www.blog.project13.pl/index.php/coding/760/gwt-firefox-3-6-plugin-on-64bit-fedora-13/</link>
		<comments>http://www.blog.project13.pl/index.php/coding/760/gwt-firefox-3-6-plugin-on-64bit-fedora-13/#comments</comments>
		<pubDate>Sat, 10 Jul 2010 12:17:49 +0000</pubDate>
		<dc:creator>Ktoso</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[guide]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[free software]]></category>
		<category><![CDATA[gwt]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[xsolve]]></category>

		<guid isPermaLink="false">http://www.blog.project13.pl/?p=760</guid>
		<description><![CDATA[Hi again, this time a short code snippet &#8211; but a very useful one. At work I&#8217;m working on an Ubuntu 10.4 (love you guys for getting me a PC with Linux without making a fuss about it!) my laptop is on Fedora 13 i586 and my home PC is running Fedora 13 x64. Thank [...]]]></description>
			<content:encoded><![CDATA[<p>Hi again, this time a short code snippet &#8211; but a very useful one.</p>
<p>At work I&#8217;m working on an Ubuntu 10.4 (<em>love you guys for getting me a PC with Linux without making a fuss about it!</em>) my laptop is on Fedora 13 i586 and my home PC is running <strong>Fedora 13 x64</strong>. Thank goodnes they&#8217;re all linux&#8230; ;-) The problem <span style="text-decoration: line-through;">is</span> was that the <strong>Google Web Toolkit</strong> plugin isn&#8217;t working with Firefox 3.6.4 on an x64 system on linux! So&#8230; can&#8217;t I develop GWT stuff on my super powerful home PC? Of course I can, the only thing I needed to do, is to get the latest sources for the plugin and <strong>compile it for myself</strong> ;-) Here&#8217;s how:</p>
<div class="geshi no bash">
<div class="head">mkdir gwt-source</div>
<ol>
<li class="li1">
<div class="de1"><span class="kw3">cd</span> gwt-<span class="kw3">source</span></div>
</li>
<li class="li1">
<div class="de1">svn checkout http:<span class="sy0">//</span>google-web-toolkit.googlecode.com<span class="sy0">/</span>svn<span class="sy0">/</span>trunk<span class="sy0">/</span> trunk</div>
</li>
<li class="li1">
<div class="de1">svn checkout http:<span class="sy0">//</span>google-web-toolkit.googlecode.com<span class="sy0">/</span>svn<span class="sy0">/</span>plugin-sdks<span class="sy0">/</span> plugin-sdks</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">cd</span> trunk<span class="sy0">/</span>plugins<span class="sy0">/</span>xpcom</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">export</span> <span class="re2">BROWSER=</span>ff36</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">export</span> <span class="re2">DEFAULT_FIREFOX_LIBS=</span><span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>xulrunner-devel<span class="nu0">-1.9</span><span class="nu0">.2</span><span class="sy0">/</span>sdk<span class="sy0">/</span>lib<span class="sy0">/</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">make</span> clean</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">make</span></div>
</li>
<li class="li1">
<div class="de1">firefox prebuilt<span class="sy0">/</span>gwt-dev-plugin.xpi</div>
</li>
</ol>
</div>
<p>And we&#8217;re done &#8212; off to GWT development!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.project13.pl/index.php/coding/760/gwt-firefox-3-6-plugin-on-64bit-fedora-13/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>GitHub Diff in Gmail</title>
		<link>http://www.blog.project13.pl/index.php/fun/724/github-diff-in-gmail/</link>
		<comments>http://www.blog.project13.pl/index.php/fun/724/github-diff-in-gmail/#comments</comments>
		<pubDate>Tue, 22 Jun 2010 14:32:14 +0000</pubDate>
		<dc:creator>Ktoso</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[fun]]></category>
		<category><![CDATA[free software]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[gmail]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[webdeveloper]]></category>

		<guid isPermaLink="false">http://www.blog.project13.pl/?p=724</guid>
		<description><![CDATA[Hi there, below is the (horribly trashy and chaotic &#8211; as it was hacked up in about 2/3 hours) source for my Google Gmail Contextual Gadget. It extends Gmail by parsing all links passed in an email, and if an github commit link is found it displays the diff for this commit. With coloring etc [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://github.com/ktoso/GitHubDiff/raw/master/screenshot.png" onclick="urchinTracker('/outgoing/github.com/ktoso/GitHubDiff/raw/master/screenshot.png?referer=');"><img class="aligncenter" title="github diff in gmail" src="http://github.com/ktoso/GitHubDiff/raw/master/screenshot.png" alt="" width="500" /></a></p>
<p style="text-align: left;">Hi there, below is the (horribly trashy and chaotic &#8211; as it was hacked up<strong> in about 2/3 hours</strong>) source for my <em>Google Gmail Contextual Gadget</em>.</p>
<p>It<strong> extends Gmail </strong>by <em>parsing all links passed in an email, and if an github commit link is found it displays the diff for this commit.</em> <strong>With coloring</strong> etc &#8211; just as github would. It&#8217;s really fairly easy to get this kind of things going, and if your working with Google Apps (using gmail in your domain etc) you can use this, and many more gadgets (though I didn&#8217;t find much of them really useful &#8211; that&#8217;s why I&#8217;ve written this one).</p>
<p>The source can be downloaded, and fixed (which I hopefuly will have time to do! As it&#8217;s a mess, let&#8217;s say, &#8220;proof of concept&#8221;): <a href="http://github.com/ktoso/GitHubDiff" onclick="urchinTracker('/outgoing/github.com/ktoso/GitHubDiff?referer=');">http://github.com/ktoso/GitHubDiff</a> (It&#8217;s on the <strong>MIT license</strong>).</p>
<p><span class="youtube">
<object width="425" height="355">
<param name="movie" value="http://www.youtube.com/v/bJIhKxNDNKg&amp;color1=3a3a3a&amp;color2=999999&amp;border=0&amp;fs=1&amp;hl=en&amp;autoplay=0&amp;showinfo=0&amp;iv_load_policy=3&amp;showsearch=0?rel=1" />
<param name="allowFullScreen" value="true" />
<embed wmode="transparent" src="http://www.youtube.com/v/bJIhKxNDNKg&amp;color1=3a3a3a&amp;color2=999999&amp;border=0&amp;fs=1&amp;hl=en&amp;autoplay=0&amp;showinfo=0&amp;iv_load_policy=3&amp;showsearch=0?rel=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="355"></embed>
<param name="wmode" value="transparent" />
</object>
</span><p><a href="http://www.youtube.com/watch?v=bJIhKxNDNKg" onclick="urchinTracker('/outgoing/www.youtube.com/watch?v=bJIhKxNDNKg&amp;referer=');"><img src="http://img.youtube.com/vi/bJIhKxNDNKg/default.jpg" width="130" height="97" border=0></a></p></p>
<p>Read the full story to see instalation instructions as well as documentation links&#8230;<br />
<span id="more-724"></span></p>
<p><strong>HOW TO INSTALL:</strong><br />
It can be installed by your own into gmail, if you&#8217;re running on Google Apps -just by creating an new Application on the Market and then adding it to your Account. If you&#8217;d like me to polish and publish this to the Google Enterprise Market &#8211; you&#8217;d have to fund me the publish fee, 100$&#8230; ;-)</p>
<p><strong>DOCUMENTATION:</strong><br />
Contextual Gadgets: <a href="http://code.google.com/apis/gmail/gadgets/contextual/" onclick="urchinTracker('/outgoing/code.google.com/apis/gmail/gadgets/contextual/?referer=');">http://code.google.com/apis/gmail/gadgets/contextual/</a></p>
<p>jQuery &#8211; getJSON: <a href="http://api.jquery.com/jQuery.getJSON/" onclick="urchinTracker('/outgoing/api.jquery.com/jQuery.getJSON/?referer=');">http://api.jquery.com/jQuery.getJSON/</a><br />
GitHub API &#8211; <a href="http://develop.github.com/p/commits.html" onclick="urchinTracker('/outgoing/develop.github.com/p/commits.html?referer=');">http://develop.github.com/p/commits.html</a></p>
<p><strong>LICENSE:</strong><br />
The source is MIT licensed, feel free to use it as a base for your own projects etc. It&#8217;s nothing particularly well written etc ;-)</p>
<p>Enjoy<strong> github</strong> in your <strong>gmail</strong> &#8211; two amazing webapps in one&#8230; :-)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.project13.pl/index.php/fun/724/github-diff-in-gmail/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Installing Git with Gitosis</title>
		<link>http://www.blog.project13.pl/index.php/project13/477/installing-git-with-gitosis/</link>
		<comments>http://www.blog.project13.pl/index.php/project13/477/installing-git-with-gitosis/#comments</comments>
		<pubDate>Sun, 07 Mar 2010 15:22:40 +0000</pubDate>
		<dc:creator>Ktoso</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[guide]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[Project13]]></category>
		<category><![CDATA[free software]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[gitosis]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[terminal]]></category>
		<category><![CDATA[webdeveloper]]></category>

		<guid isPermaLink="false">http://www.blog.project13.pl/?p=477</guid>
		<description><![CDATA[Git is really simple and VERY powerfull. It makes svn look like an idiot &#8211; but that&#8217;s just my personal opinion ;-) Anyways, I&#8217;m using github most of the time, but now I&#8217;d like to hava a non public repository (yet remote) for some small project. I&#8217;ve been commiting to a local git instance from [...]]]></description>
			<content:encoded><![CDATA[<p>Git is really simple and VERY powerfull. It makes svn look like an idiot &#8211; but that&#8217;s just my personal opinion ;-)</p>
<p>Anyways, I&#8217;m using github most of the time, but now I&#8217;d like to hava a non public repository (yet remote) for some small project. I&#8217;ve been commiting to a local git instance from the begining of this project so just pushing it into a new repo will be really simple.</p>
<p>I wanted to have som easy to administer localozed git to serve hit hosting for my friends etc. So this is how I did it:</p>
<p>On server:</p>
<div class="geshi no bash">
<div class="head"># do this as root of course</div>
<ol>
<li class="li1">
<div class="de1"><span class="kw3">cd</span> ~<span class="sy0">/</span>src</div>
</li>
<li class="li1">
<div class="de1">git clone git:<span class="sy0">//</span>eagain.net<span class="sy0">/</span>gitosis.git</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">cd</span> gitosis</div>
</li>
<li class="li1">
<div class="de1">.<span class="sy0">/</span>setup.py <span class="kw2">install</span></div>
</li>
<li class="li1">
<div class="de1">useradd git</div>
</li>
<li class="li1">
<div class="de1"><span class="co0">#end of obvious stuff</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">gitosis-init <span class="sy0">&lt;</span> <span class="sy0">/</span>location<span class="sy0">/</span>of<span class="sy0">/</span>administrators<span class="sy0">/</span>public<span class="sy0">/</span>id_rsa.pub <span class="co0">#this will allow you to administer gitosis remotely</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">sudo</span> <span class="kw2">chmod</span> <span class="nu0">755</span> <span class="sy0">/</span>home<span class="sy0">/</span>git<span class="sy0">/</span>repositories<span class="sy0">/</span>gitosis-admin.git<span class="sy0">/</span>hooks<span class="sy0">/</span>post-update <span class="co0"># in case gitosis-init didn&#39;t do this already</span></div>
</li>
</ol>
</div>
<p>Now we can do all the administration without being logged in into our server &#8211; just by using git!
</pre>
<div class="geshi no bash">
<div class="head">#all of the following is done LOCALLY!</div>
<ol>
<li class="li1">
<div class="de1">git clone git<span class="sy0">@</span>stratos:gitosis-admin.git</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">cd</span> gitosis-admin</div>
</li>
<li class="li1">
<div class="de1">vim gitosis.conf <span class="co0">#edit groups and repositories</span></div>
</li>
<li class="li1">
<div class="de1">writable = bla is responsible <span class="kw1">for</span> the repositories</div>
</li>
<li class="li1">
<div class="de1"><span class="co0">#for example you could setup:</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co0">#then just do the stuff you would normally do with git:</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co0">#[group secret-group]</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co0">#writable = bla</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co0">#members = ktoso@homunculus ktoso@protos</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co0">#here&#39;s how your dir structure should look like</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co0">#├── gitosis.conf #repository configuration</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co0">#└── keydir #put all (ssh) public keys of your users in here</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co0"># &nbsp; &nbsp;├── ktoso@homunculus.pub</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co0"># &nbsp; &nbsp;└── ktoso@protos.pub</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co0">#now just do what you would normally do with a git repository</span></div>
</li>
<li class="li1">
<div class="de1">git add .</div>
</li>
<li class="li1">
<div class="de1">git commit -m <span class="st0">&#39;new repo: bla&#39;</span></div>
</li>
<li class="li1">
<div class="de1">git push</div>
</li>
</ol>
</div>
<p>You can then just pull/clone this repo:</p>
<pre lang="bash">git clone git://stratos/bla.git</pre>
<p>Yeah, this post isn't much of an discovery - yet I wanted to show you how SIMPLE and SCALABLE a simple git repository can be. For mor information about git and gitosis see: <a href="http://www.google.com/search?q=google+gitosis" onclick="urchinTracker('/outgoing/www.google.com/search?q=google+gitosis&amp;referer=');">a simple google search</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.project13.pl/index.php/project13/477/installing-git-with-gitosis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>YES! Native Zen coding in Intellij IDEA EAP 9.0.2</title>
		<link>http://www.blog.project13.pl/index.php/fun/465/yes-native-zen-coding-in-intellij-eap-9-0-2/</link>
		<comments>http://www.blog.project13.pl/index.php/fun/465/yes-native-zen-coding-in-intellij-eap-9-0-2/#comments</comments>
		<pubDate>Mon, 01 Mar 2010 21:30:52 +0000</pubDate>
		<dc:creator>Ktoso</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[fun]]></category>
		<category><![CDATA[free software]]></category>
		<category><![CDATA[ide]]></category>
		<category><![CDATA[IDEA]]></category>
		<category><![CDATA[intellij]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[tip]]></category>
		<category><![CDATA[webdeveloper]]></category>
		<category><![CDATA[zen]]></category>

		<guid isPermaLink="false">http://www.blog.project13.pl/?p=465</guid>
		<description><![CDATA[Zen points directly to the human heart, see into your nature and become Buddha. - Hakuin Ekaku (1685–1768) For those who don&#8217;t know about zen coding (where have you been guys?) here&#8217;s a little sample: Instead of writing: &#60;form class="form-comment" id="comment"&#62; &#60;fieldset&#62; &#60;input id="myid" name="name" type="" /&#62; &#60;input onclick="hideMe()" type="" /&#62; &#60;/fieldset&#62; &#60;/form&#62; You write [...]]]></description>
			<content:encoded><![CDATA[<blockquote>
<p style="text-align: right;"><em><strong>Zen points directly to the human heart,<br />
see into your nature and become Buddha.</strong><br />
</em>- Hakuin Ekaku (1685–1768)</p>
</blockquote>
<p>For those who don&#8217;t know about zen coding (where have you been guys?) here&#8217;s a little sample:</p>
<p>Instead of writing:<br />
<code>&lt;form class="form-comment" id="comment"&gt;<br />
&lt;fieldset&gt;<br />
&lt;input id="myid" name="name" type="" /&gt;<br />
&lt;input onclick="hideMe()"</code><code> type=""</code><code> /&gt;<br />
&lt;/fieldset&gt;<br />
&lt;/form&gt;</code></p>
<p>You write<br />
<code><br />
form.form-comment#comment&gt;fieldset&gt;input#myid[name=name]&gt;input[onclick=hideMe()]</code></p>
<p>and hit [TAB].</p>
<p><em><strong>To understand zen, you must understand yourself. </strong></em>(yet I also strongly suggest watching <a href="http://vimeo.com/7405114" onclick="urchinTracker('/outgoing/vimeo.com/7405114?referer=');">this video</a>)<em><strong><br />
</strong></em></p>
<p>Links:<a href="http://confluence.jetbrains.net/display/IDEADEV/Maia+EAP" onclick="urchinTracker('/outgoing/confluence.jetbrains.net/display/IDEADEV/Maia+EAP?referer=');"></a><br />
<a href="http://confluence.jetbrains.net/display/IDEADEV/Maia+EAP" onclick="urchinTracker('/outgoing/confluence.jetbrains.net/display/IDEADEV/Maia+EAP?referer=');">http://confluence.jetbrains.net/display/IDEADEV/Maia+EAP</a> &#8211; IntelliJ IDEA Early Access Program<br />
<a href="http://code.google.com/p/zen-coding/" onclick="urchinTracker('/outgoing/code.google.com/p/zen-coding/?referer=');">http://code.google.com/p/zen-coding/</a> &#8211; zen coding website</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.project13.pl/index.php/fun/465/yes-native-zen-coding-in-intellij-eap-9-0-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Current small project: GWT-Crossword</title>
		<link>http://www.blog.project13.pl/index.php/fun/383/current-small-project-gwt-crossword/</link>
		<comments>http://www.blog.project13.pl/index.php/fun/383/current-small-project-gwt-crossword/#comments</comments>
		<pubDate>Mon, 11 Jan 2010 00:27:55 +0000</pubDate>
		<dc:creator>Ktoso</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[fun]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[free software]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[gpl]]></category>
		<category><![CDATA[gwt]]></category>
		<category><![CDATA[jee]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[study]]></category>
		<category><![CDATA[webdeveloper]]></category>

		<guid isPermaLink="false">http://www.blog.project13.pl/?p=383</guid>
		<description><![CDATA[I am currently working on a simple but still quite fun/interesting (as is any project with a new framework :-)) webapp using Google Web Toolkit (it&#8217;s basically Google&#8217;s JEE framework for creating RIA). The webapp is an online crossword generator. The goal is to provide crosswords online and allow users solving them online with a [...]]]></description>
			<content:encoded><![CDATA[<p>I am currently working on a simple but still quite fun/interesting (as is any project with a new framework :-)) webapp using <a href="http://code.google.com/intl/pl/webtoolkit/" onclick="urchinTracker('/outgoing/code.google.com/intl/pl/webtoolkit/?referer=');"><strong>Google Web Toolkit</strong></a> (it&#8217;s basically Google&#8217;s JEE framework for creating <a href="http://en.wikipedia.org/wiki/Rich_Internet_application" onclick="urchinTracker('/outgoing/en.wikipedia.org/wiki/Rich_Internet_application?referer=');">RIA</a>). The webapp is an online crossword generator. The goal is to provide crosswords online and allow users solving them online with a nice and intuitive GUI etc&#8230; It would be cool if I&#8217;d manage to create this as an &#8220;embed on any website&#8221; script, but I can&#8217;t guarantee this functionality.</p>
<p>I&#8217;m coding this project to get used to some of the basic <strong><acronym title="Java Enterprise Edition">JEE</acronym></strong> stuff, such as <a href="https://www.hibernate.org/" onclick="urchinTracker('/outgoing/www.hibernate.org/?referer=');"><strong>Hibernate</strong></a> for example (it is quite amazing and very <em>elegant</em> &#8211; especially HQL), and to have a good time while coding in Java&#8230;</p>
<p>The source is avaiable under the AGPLv3 on github: <a href="http://github.com/ktoso/gwt-crossword" onclick="urchinTracker('/outgoing/github.com/ktoso/gwt-crossword?referer=');">http://github.com/ktoso/gwt-crossword</a><br />
At some places it is still a mess so please keep in mind that it&#8217;s still under initial development (and I&#8217;m having a tough time at the uni and can&#8217;t code gwt-crossword everyday :\), that aside, feel free to take a look on the source!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.project13.pl/index.php/fun/383/current-small-project-gwt-crossword/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blender &#8211; 04 &#8211; Simple Present</title>
		<link>http://www.blog.project13.pl/index.php/fun/248/blender-04-simple-present/</link>
		<comments>http://www.blog.project13.pl/index.php/fun/248/blender-04-simple-present/#comments</comments>
		<pubDate>Mon, 21 Sep 2009 00:47:34 +0000</pubDate>
		<dc:creator>Ktoso</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[fun]]></category>
		<category><![CDATA[blender]]></category>
		<category><![CDATA[free software]]></category>
		<category><![CDATA[freedom]]></category>
		<category><![CDATA[gnu]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[render]]></category>
		<category><![CDATA[study]]></category>
		<category><![CDATA[tricks]]></category>

		<guid isPermaLink="false">http://www.blog.project13.pl/?p=248</guid>
		<description><![CDATA[With this simple box i&#8217;ve learned a little about the &#8220;wave&#8221; property in blender. This, a little subsurv and smooth subdivision can actually be quite OK for creating a simple ribbon like the one below:The final render looked like this:]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;">With this simple box i&#8217;ve learned a little about the &#8220;wave&#8221; property in blender. This, a little subsurv and smooth subdivision can actually be quite OK for creating a simple ribbon like the one below:<a href="http://www.blog.project13.pl/wp-content/uploads/2009/09/zrzut_ekranu-11.png"><img class="aligncenter size-medium wp-image-249" title="Ribbon" src="http://www.blog.project13.pl/wp-content/uploads/2009/09/zrzut_ekranu-11-300x187.png" alt="Ribbon" width="300" height="187" /></a><a href="http://www.blog.project13.pl/wp-content/uploads/2009/09/zrzut_ekranu-13.png"><img class="aligncenter size-medium wp-image-251" title="Ribbon &quot;how&quot;" src="http://www.blog.project13.pl/wp-content/uploads/2009/09/zrzut_ekranu-13-300x187.png" alt="Ribbon &quot;how&quot;" width="300" height="187" /></a>The final render looked like this:<a href="http://www.blog.project13.pl/wp-content/uploads/2009/09/denae_present.jpg"><img class="aligncenter size-medium wp-image-254" title="denae_present" src="http://www.blog.project13.pl/wp-content/uploads/2009/09/denae_present-300x225.jpg" alt="denae_present" width="300" height="225" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.project13.pl/index.php/fun/248/blender-04-simple-present/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blender &#8211; 03 &#8211; Wine/bottle/glass</title>
		<link>http://www.blog.project13.pl/index.php/fun/245/blender-03-winebottleglass/</link>
		<comments>http://www.blog.project13.pl/index.php/fun/245/blender-03-winebottleglass/#comments</comments>
		<pubDate>Mon, 21 Sep 2009 00:47:01 +0000</pubDate>
		<dc:creator>Ktoso</dc:creator>
				<category><![CDATA[freedom]]></category>
		<category><![CDATA[fun]]></category>
		<category><![CDATA[animation]]></category>
		<category><![CDATA[blender]]></category>
		<category><![CDATA[free software]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[render]]></category>
		<category><![CDATA[youtube]]></category>

		<guid isPermaLink="false">http://www.blog.project13.pl/?p=245</guid>
		<description><![CDATA[My first blender animation: The wine doesn&#8217;t look nor feel nor even behave like normal wine but it&#8217;s just my first animation so there&#8217;s still time left for me to improve&#8230; ;-)]]></description>
			<content:encoded><![CDATA[<p>My first blender animation:<br />
<span class="youtube">
<object width="480" height="360">
<param name="movie" value="http://www.youtube.com/v/EGEnVR_JSf8&amp;color1=3a3a3a&amp;color2=999999&amp;border=0&amp;fs=1&amp;hl=en&amp;autoplay=0&amp;showinfo=0&amp;iv_load_policy=3&amp;showsearch=0?rel=1&amp;hd=1" />
<param name="allowFullScreen" value="true" />
<embed wmode="transparent" src="http://www.youtube.com/v/EGEnVR_JSf8&amp;color1=3a3a3a&amp;color2=999999&amp;border=0&amp;fs=1&amp;hl=en&amp;autoplay=0&amp;showinfo=0&amp;iv_load_policy=3&amp;showsearch=0?rel=1&amp;hd=1" type="application/x-shockwave-flash" allowfullscreen="true" width="480" height="360"></embed>
<param name="wmode" value="transparent" />
</object>
</span><p><a href="http://www.youtube.com/watch?v=EGEnVR_JSf8&fmt=18" onclick="urchinTracker('/outgoing/www.youtube.com/watch?v=EGEnVR_JSf8_fmt=18&amp;referer=');"><img src="http://img.youtube.com/vi/EGEnVR_JSf8/default.jpg" width="130" height="97" border=0></a></p><br />
The wine doesn&#8217;t look nor feel nor even behave like normal wine but it&#8217;s just my first animation so there&#8217;s still time left for me to improve&#8230; ;-)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.project13.pl/index.php/fun/245/blender-03-winebottleglass/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

