<?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; fun</title>
	<atom:link href="http://www.blog.project13.pl/index.php/category/fun/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>[fun] &#8220;Holy turnaround, Batman!&#8221;</title>
		<link>http://www.blog.project13.pl/index.php/fun/1385/fun-holy-turnaround-batman/</link>
		<comments>http://www.blog.project13.pl/index.php/fun/1385/fun-holy-turnaround-batman/#comments</comments>
		<pubDate>Thu, 10 Nov 2011 00:22:03 +0000</pubDate>
		<dc:creator>Ktoso</dc:creator>
				<category><![CDATA[english]]></category>
		<category><![CDATA[fun]]></category>
		<category><![CDATA[deploy]]></category>
		<category><![CDATA[glassfish]]></category>
		<category><![CDATA[jboss]]></category>
		<category><![CDATA[jee]]></category>
		<category><![CDATA[jrebel]]></category>
		<category><![CDATA[spring]]></category>
		<category><![CDATA[tomcat]]></category>

		<guid isPermaLink="false">http://www.blog.project13.pl/?p=1385</guid>
		<description><![CDATA[&#160; I&#8217;ve been featured in the JRebel Blog for my killer tweeting skillz&#8230; ;-) Thanks guys for the cool tool and for being so cool to the community! :-) http://zeroturnaround.com/blog/bazinga-rebellions-on-twitter-on-the-road-and-some-more-exciting-news/]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p>I&#8217;ve been featured in the <a title="JRebel Blog" href="http://zeroturnaround.com/blog/bazinga-rebellions-on-twitter-on-the-road-and-some-more-exciting-news/" onclick="urchinTracker('/outgoing/zeroturnaround.com/blog/bazinga-rebellions-on-twitter-on-the-road-and-some-more-exciting-news/?referer=');">JRebel Blog</a> for my killer tweeting skillz&#8230; ;-)<br />
Thanks guys for the cool tool and for being so cool to the community! :-)</p>
<p style="text-align: center;"><a href="http://www.blog.project13.pl/wp-content/uploads/2011/11/zero_turnaround_ktoso.png"><img class="aligncenter size-medium wp-image-1386" title="zero_turnaround_ktoso" src="http://www.blog.project13.pl/wp-content/uploads/2011/11/zero_turnaround_ktoso-300x290.png" alt="" width="370" /></a></p>
<p style="text-align: center;"><a href="http://zeroturnaround.com/blog/bazinga-rebellions-on-twitter-on-the-road-and-some-more-exciting-news/" onclick="urchinTracker('/outgoing/zeroturnaround.com/blog/bazinga-rebellions-on-twitter-on-the-road-and-some-more-exciting-news/?referer=');">http://zeroturnaround.com/blog/bazinga-rebellions-on-twitter-on-the-road-and-some-more-exciting-news/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.project13.pl/index.php/fun/1385/fun-holy-turnaround-batman/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[release] Sidewinder X6 MacroKeys on GNU/Linux</title>
		<link>http://www.blog.project13.pl/index.php/fun/1333/1333/</link>
		<comments>http://www.blog.project13.pl/index.php/fun/1333/1333/#comments</comments>
		<pubDate>Wed, 27 Jul 2011 22:30:03 +0000</pubDate>
		<dc:creator>Ktoso</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[freedom]]></category>
		<category><![CDATA[fun]]></category>
		<category><![CDATA[terminal heroes]]></category>
		<category><![CDATA[keystroke]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[macro]]></category>
		<category><![CDATA[sidewinder]]></category>
		<category><![CDATA[sidewinder x6 linux]]></category>
		<category><![CDATA[xdotool]]></category>

		<guid isPermaLink="false">http://www.blog.project13.pl/?p=1333</guid>
		<description><![CDATA[I&#8217;ve released my keyboard event mapper for the Microsoft Sidewinder X6 in an quite usable state right now. Take a look at sidewinder-x6-linux-macro-key-events on github. Here&#8217;s a quick description what it does: As the Sidewinder is an Microsoft keyboard, it obviously does all it can to not work at it&#8217;s full potential on GNU/Linux systems [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve released my keyboard event mapper for the <a href="http://www.microsoft.com/poland/hardware/gaming/productdetails.aspx?pid=102" onclick="urchinTracker('/outgoing/www.microsoft.com/poland/hardware/gaming/productdetails.aspx?pid=102&amp;referer=');">Microsoft Sidewinder X6</a> in an quite usable state right now. Take a look at <a href="https://github.com/ktoso/sidewinder-x6-linux-macro-key-events" onclick="urchinTracker('/outgoing/github.com/ktoso/sidewinder-x6-linux-macro-key-events?referer=');">sidewinder-x6-linux-macro-key-events</a> on github. Here&#8217;s a quick description what it does:</p>
<p><a href="http://www.blog.project13.pl/wp-content/uploads/2011/07/sidewinder-x6-macro-keys.jpg"><img class="aligncenter size-full wp-image-1334" title="sidewinder-x6-macro-keys" src="http://www.blog.project13.pl/wp-content/uploads/2011/07/sidewinder-x6-macro-keys.jpg" alt="" width="500" height="375" /></a>As the Sidewinder is an Microsoft keyboard, it obviously does all it can to not work at it&#8217;s full potential on GNU/Linux systems ;-) What my script does is watch for usb events, using <strong>usbmon</strong>, then it filters it searching for events from this keyboard, and then it filters out the discrete keystrokes for them. When such keystroke is found, we launch an bash script located in <strong>actions/S##.sh </strong>which can then do anything you want it to do &#8211; fire up intellij, or send keystrokes. I&#8217;d advice the second idea &#8211; use <a href="http://www.semicomplete.com/projects/xdotool/" onclick="urchinTracker('/outgoing/www.semicomplete.com/projects/xdotool/?referer=');">xdotool</a> to send keyboard events, which you then map in Intellij or Netbeans or KDE/GNOME. Such keycode send looks like this:</p>
<p><code>xdotool key --clearmodifiers ctrl+shift+F1</code></p>
<p>That&#8217;s about it. I also wanted to thank some guys on github, who found my project and it really helped them out :-) Just to cite my fav email:</p>
<blockquote><p>
[...]<br />
I&#8217;m amazed to see that somebody made this keyboard work under linux, I was beggining to lose hope. Great job!<br />
[...]
</p></blockquote>
<p>Thanks for the feedback, it&#8217;s what keeps me going with opensourceing projects like this :-)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.project13.pl/index.php/fun/1333/1333/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Me] Git @ Academic IT Festival (SFI) 2011</title>
		<link>http://www.blog.project13.pl/index.php/project13/1304/me-git-academic-it-festival-2011/</link>
		<comments>http://www.blog.project13.pl/index.php/project13/1304/me-git-academic-it-festival-2011/#comments</comments>
		<pubDate>Fri, 06 May 2011 21:31:58 +0000</pubDate>
		<dc:creator>Ktoso</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[fun]]></category>
		<category><![CDATA[polish]]></category>
		<category><![CDATA[Project13]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[konrad malawski]]></category>
		<category><![CDATA[live coding]]></category>
		<category><![CDATA[presentation]]></category>
		<category><![CDATA[SCM]]></category>
		<category><![CDATA[sfi]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.blog.project13.pl/?p=1304</guid>
		<description><![CDATA[It&#8217;s been a long time since the Academic IT Festival 2011 but I didn&#8217;t have the time to post about it somehow. Anyways, now just a quick recap about it :-) Aparently some people did really like it, see tweets bellow :-) I also got feedback that &#8220;not yet real programmers&#8221;, that is students, didn&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been a long time since the <a href="http://sfi.org.pl/edition-2011/" onclick="urchinTracker('/outgoing/sfi.org.pl/edition-2011/?referer=');">Academic IT Festival 2011</a> but I didn&#8217;t have the time to post about it somehow. Anyways, now just a quick recap about it :-)</p>
<p>Aparently some people did really like it, see tweets bellow :-) I also got feedback that &#8220;not yet real programmers&#8221;, that is students, didn&#8217;t really get what I was talking about. Well, most of them still uses SVN (well, if they do it&#8217;s a success anyways) as an SCP replacement so there&#8217;s not much they could complain in SVN about if they&#8217;re not making it work anyhow besides just storing files. :-) Some students apparoached me after the lecture and training (yeah, we also did a little git intro with laptops later on) and they were really fired up about it &#8211; even if not yet grasping git&#8217;s power, they felt something&#8217;s on and I am very happy to have invluenced even just a small group to such feelings and thinking.</p>
<p style="text-align: center;"><a href="http://www.blog.project13.pl/wp-content/uploads/2011/05/git_yay1.png"><img class="aligncenter size-full wp-image-1305" title="git_yay1" src="http://www.blog.project13.pl/wp-content/uploads/2011/05/git_yay1.png" alt="" width="501" height="277" /></a></p>
<p><a href="http://sfi.org.pl/edition-2011/speakers" onclick="urchinTracker('/outgoing/sfi.org.pl/edition-2011/speakers?referer=');">I have been invited</a> (via the Call for Papers I participated in) to present a polished up &#8220;Git. Tak. Po prostu.&#8221; speech <a href="http://sfi.org.pl/edition-2011/agenda-2011#git-tak-po-prostu" onclick="urchinTracker('/outgoing/sfi.org.pl/edition-2011/agenda-2011_git-tak-po-prostu?referer=');">at this years IT Festival</a>. It was a really great opportunity to show lot&#8217;s of people (primarily students, and to-be-students but also some currently working people) the joy and beauty of Git. The event was really nice (it&#8217;s constantly improving, since the last few editions I think) and I&#8217;ve had some fun with my pal from work etc. I&#8217;ve also got to know some of the speakers &#8211; really nice guys :-) Anyways, find bellow the video from the presentation recorded by my newly met pal <a href="http://kzubik.cba.pl" onclick="urchinTracker('/outgoing/kzubik.cba.pl?referer=');">kzubik</a> and the polished up slides (they&#8217;re a lot better than the previous ones).</p>
<p>Video:</p>
<p><iframe src="http://player.vimeo.com/video/22299510?portrait=0" width="551" height="413" frameborder="0"></iframe><br />
<a href="http://vimeo.com/22299510" onclick="urchinTracker('/outgoing/vimeo.com/22299510?referer=');">The video is uploaded to Vimeo</a></p>
<p>Slides:</p>
<p><iframe src="http://www.slideshare.net/slideshow/embed_code/7244954" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe> </p>
<p><a href="http://www.slideshare.net/ktoso/git-tak-po-prostu-sfi-version" onclick="urchinTracker('/outgoing/www.slideshare.net/ktoso/git-tak-po-prostu-sfi-version?referer=');">http://www.slideshare.net/ktoso/git-tak-po-prostu-sfi-version</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.project13.pl/index.php/project13/1304/me-git-academic-it-festival-2011/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[review] CodeRetreat.SCKRK.com</title>
		<link>http://www.blog.project13.pl/index.php/fun/1230/review-coderetreat-sckrk-com/</link>
		<comments>http://www.blog.project13.pl/index.php/fun/1230/review-coderetreat-sckrk-com/#comments</comments>
		<pubDate>Tue, 12 Apr 2011 09:18:06 +0000</pubDate>
		<dc:creator>Ktoso</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[fun]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[clean code]]></category>
		<category><![CDATA[clojure]]></category>
		<category><![CDATA[coderetreat]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[meeting]]></category>
		<category><![CDATA[objective-c]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[scala]]></category>
		<category><![CDATA[TDD]]></category>

		<guid isPermaLink="false">http://www.blog.project13.pl/?p=1230</guid>
		<description><![CDATA[This Saturday we&#8217;ve (the Software Craftsmanship in Cracow guys) organized a Code Retreat, right after AgileCE. We&#8217;ve invited Corey Haines to join us and facilitate this meetup, and later on even Alexandru Bolboaca AND Maria Diaconu joined us in facilitating the event and so it got even better :-) Before we start, just a quick reminder [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://www.blog.project13.pl/wp-content/uploads/2011/04/cr-sckrk.gif"><img class="aligncenter size-full wp-image-1261" title="Code Retreat . SCKRK .com" src="http://www.blog.project13.pl/wp-content/uploads/2011/04/cr-sckrk.gif" alt="" width="520" /></a></p>
<p>This Saturday we&#8217;ve (the <a href="http://sckrk.com" onclick="urchinTracker('/outgoing/sckrk.com?referer=');">Software Craftsmanship in Cracow</a> guys) organized a <a href="http://www.coderetreat.com/" onclick="urchinTracker('/outgoing/www.coderetreat.com/?referer=');">Code Retreat</a>, <strong>right after AgileCE</strong>. We&#8217;ve invited <a href="http://www.coreyhaines.com/" onclick="urchinTracker('/outgoing/www.coreyhaines.com/?referer=');"><strong>Corey Haines</strong></a> to join us and facilitate this meetup, and later on even <a href="http://www.alexbolboaca.ro/" onclick="urchinTracker('/outgoing/www.alexbolboaca.ro/?referer=');"><strong>Alexandru Bolboaca</strong></a> AND <strong><a href="https://twitter.com/#!/fireladym" onclick="urchinTracker('/outgoing/twitter.com/_/fireladym?referer=');">Maria Diaconu</a> </strong> joined us in facilitating the event and so it got <strong>even better</strong> :-)</p>
<div class="wp-caption aligncenter" style="width: 557px"><img class=" " src="https://lh4.googleusercontent.com/_R79BchylD5A/TaI4-NlZY9I/AAAAAAAASrw/A7wNhXDuTd0/s1024/IMG_9268.jpg" alt="Corey doing the introductional Keynote" width="547" /><p class="wp-caption-text">Corey doing the introductional Keynote</p></div>
<p>Before we start, just a quick reminder what a CodeRetreat actually is (for the sake of everyone reading this blog not knowing what the hell I&#8217;m so excited about ;-)). The rules are really easy, take a bynch of passionate programmers, put them in a room for 1 whole day and tell them to code the game of life. There are about 6 sessions, where each time you&#8217;d <strong>pair up with another person </strong>and code away. After <strong>45 minutes you have to delete the code you&#8217;ve written</strong>, then after a 15m pause to talk about your results you find a new pair and code it again from scratch. It&#8217;s important to embrace the code deleting part &#8211; it&#8217;s somewhat like catharsis&#8230; :-) No matter how bad (or great) the code you&#8217;ve written was, on average in 22.5 minutes it will go away :-)  The idea is to embrace that you most probably won&#8217;t finish the problem in time, so you can just focus on honing your skills in TDD, pairing, IDE usage and generale code style and skillz. There&#8217;s no better way to learn these skills than to confront them with someone else&#8217;s &#8211; that way you both can learn new tricks or find out why some ol tricks you used actually suck :-) In the end of the day, you&#8217;ve become a better programmer&#8230; and will hopefully take these new skills into your workplace and <strong>improve the code quality</strong> there :-)</p>
<div class="wp-caption aligncenter" style="width: 557px"><img class=" " src="https://lh6.googleusercontent.com/_R79BchylD5A/TaI5H7DwO6I/AAAAAAAASsc/JuG5XZ0j8lA/s912/P1020923.jpg" alt="" width="547" height="410" /><p class="wp-caption-text">Happy hacking!</p></div>
<p>The response to our CR was really amazing. We&#8217;ve had quite a few sponsors &#8211; LunarLogic, AppliCake, ABB, Sii&#8230; and the PolishJUG helped out as well as it could with organizing the whole thing :-) Oh, and I hope you&#8217;ve seen our <a href="http://coderetreat.sckrk.com" onclick="urchinTracker('/outgoing/coderetreat.sckrk.com?referer=');">nice website</a> created by Olga from LLP? The interest from participants was equally big &#8211; all places where <strong>&#8220;sold out&#8221;</strong> <strong>in just about 3 hours</strong>&#8230; ;-) We where around 50 people in total and I think that&#8217;s a perfect number of coders for such an event. Some coded in <strong>Java</strong>, some in <strong>.NET</strong> and others in <strong>Ruby</strong> or <strong>Python</strong>, oh and there was an <strong>Objective-C</strong> and <strong>Scala</strong> team too. One of the nive things during a CR is being able to try out a new language, so the Ruby guys where really overflown by people wanting to try Ryby for example ;-) I&#8217;ve spent the rest of my sessions (4/5) coding in <strong>Java</strong> and just once had to lay hands on Eclipse&#8230; ;-) During one session I tried out ruby (<strong>ルビ</strong>) with Adam from SCKRK, which was fun as I did read some books/articles about it and really enjoyed the<strong> BDD</strong> that <strong>rspec</strong> uses. I also noticed that scala test seems to have derrived from it (or the other way arround :p)&#8230; :-)</p>
<div class="wp-caption aligncenter" style="width: 557px"><img src="https://lh6.googleusercontent.com/_R79BchylD5A/TZy8APe9mVI/AAAAAAAASlY/W2immHPMbrw/s912/P1000737.JPG" alt="The 2nd room was also full" width="547" height="410" /><p class="wp-caption-text">The 2nd room was also full</p></div>
<p style="text-align: left;">After two sessions we had <strong>nice long lunch</strong>, to relinquish our coding skills and ideas (we&#8217;ve ordered from <a href="http://thaisty.pl/" onclick="urchinTracker('/outgoing/thaisty.pl/?referer=');">thaist</a>y). And then a next set of 3 sessions followed. This time more focused on experimentation etc. For example one session we managed to <strong>not use if&#8217;s and for&#8217;s at all</strong> (sigh, upto one place but the time ran out then..). Google Guava was a great help there :-) On another sessions we&#8217;ve focused on <strong>Mockito</strong> and the more advanced mocking techniques such as parameter catching etc&#8230; In the end we really knew how much over engeenired it was but nevertheless it was really <strong>interesting to learn and play</strong> with these thoughts &#8211; that&#8217;s what CR is about.</p>
<div class="wp-caption aligncenter" style="width: 557px"><img class="  " title="Final Wrap Up" src="https://lh5.googleusercontent.com/_R79BchylD5A/TaI5gGby0xI/AAAAAAAAStU/vrCo3rVcnq4/s1024/IMG_9249.jpg" alt="" width="547" />1<p class="wp-caption-text">Final Wrap Up</p></div>
<p>Later on we&#8217;ve sent out a questionary on how much you enjoyed the CR and the response was also really positive. We&#8217;ll think about coffee next time &#8211; promissed. :-)</p>
<p>Stanley just pulled in my quick gallery commit to our website <strong>git</strong> repo a moment ago, so you can now visit <a href="http://coderetreat.sckrk.com/gallery/" onclick="urchinTracker('/outgoing/coderetreat.sckrk.com/gallery/?referer=');"><strong>coderetreat.</strong>sckrk.com/<strong>gallery</strong></a> and look for yourself on the pics :-) They&#8217;re fetched from <a href="https://picasaweb.google.com/ktosopl/CodeRetreat2011#" onclick="urchinTracker('/outgoing/picasaweb.google.com/ktosopl/CodeRetreat2011?referer=');">my picasa</a> so if you&#8217;d rather download them all from there, please do so :-)</p>
<div id="attachment_1274" class="wp-caption aligncenter" style="width: 557px"><a href="http://www.blog.project13.pl/wp-content/uploads/2011/04/P1020931.jpg"><img class="size-full wp-image-1274 " title="group photo coderetreat" src="http://www.blog.project13.pl/wp-content/uploads/2011/04/P1020931.jpg" alt="" width="547" height="410" /></a><p class="wp-caption-text">Group Photo</p></div>
<p>All in all&#8230; I&#8217;m really happy and proud to have been part of this event. It&#8217;s really been one of a kind and I hope all of you feel the same way about it. Well, it would certainly seem so after the opinions on the final wrap up and questionary later on. :-) So, once again, <strong>thank you for participating</strong> and see you soon on most major coding events :-) (ps: <a href="http://2011.geecon.org" onclick="urchinTracker('/outgoing/2011.geecon.org?referer=');"><strong>GeeCON</strong></a> is one of them).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.project13.pl/index.php/fun/1230/review-coderetreat-sckrk-com/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[review] AgileCE 2011</title>
		<link>http://www.blog.project13.pl/index.php/fun/1228/review-agilece-2011/</link>
		<comments>http://www.blog.project13.pl/index.php/fun/1228/review-agilece-2011/#comments</comments>
		<pubDate>Tue, 05 Apr 2011 23:37:09 +0000</pubDate>
		<dc:creator>Ktoso</dc:creator>
				<category><![CDATA[fun]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[ace]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[agilece]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[kanban]]></category>
		<category><![CDATA[lunar logic]]></category>
		<category><![CDATA[scrum]]></category>

		<guid isPermaLink="false">http://www.blog.project13.pl/?p=1228</guid>
		<description><![CDATA[This conference review will be a little different from what I&#8217;m usually posting. The thing is that ACE was really most about the networking and exchanging ideas with other interesting people. It really felt &#8220;open&#8221; (no, I won&#8217;t be overusing the word &#8220;agile&#8221; here &#8211; don&#8217;t worry ;-)). The speaches where also on a very [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://agilece.com" onclick="urchinTracker('/outgoing/agilece.com?referer=');"><img class="alignleft size-full wp-image-1234" style="margin: 5px;" title="AgileCE" src="http://www.blog.project13.pl/wp-content/uploads/2011/04/acelogo_sm.png" alt="ACE!" width="115" height="167" /></a></p>
<p>This conference review will be a little different from what I&#8217;m usually posting. The thing is that ACE was really most about the networking and exchanging ideas with other interesting people. It really felt &#8220;open&#8221; (no, I won&#8217;t be overusing the word &#8220;agile&#8221; here &#8211; don&#8217;t worry ;-)). The speaches where also on a very good level and none of them was actually boring &#8211; which actually was one of the problems of this years JDD for example. The reason for this is the new session formula &#8211; just one track, but very short talks (30m) with no Q/A at the end of each of them. Questions can be asked then later on during the open space sessions.</p>
<div id="attachment_1250" class="wp-caption aligncenter" style="width: 209px"><a href="http://www.blog.project13.pl/wp-content/uploads/2011/04/5589213546_a9e7a45d6b_b.jpg"><img class="size-medium wp-image-1250" title="Paul Klipp" src="http://www.blog.project13.pl/wp-content/uploads/2011/04/5589213546_a9e7a45d6b_b-199x300.jpg" alt="" width="199" height="300" /></a><p class="wp-caption-text">Paul Klipp @ ACE</p></div>
<p>The first day was really crazy for me&#8230; Just the day before I thought I won&#8217;t be going to ACE and had 2 exams scheduled the conference&#8217;s first day. Later that evening I&#8217;ve discovered that I&#8217;ll be able to go, thanks to a last minute quick response from <a href="http://paulklipp.com" onclick="urchinTracker('/outgoing/paulklipp.com?referer=');">Paul Klipp</a> (<em>thank you!</em>) &#8211; and I sure am happy I was able to participate! Well, coming back to this day being &#8220;crazy&#8221; for me &#8211; I had to evacuate from ACE for a little before lunch to go and write one of these exams, and then run back to ACE in order to make it for the Open Space sessions (facilitated by <a href="http://wizewerx.com/" onclick="urchinTracker('/outgoing/wizewerx.com/?referer=');">Mike Sutton</a>)&#8230; :-) Hopefully I&#8217;ve passed it (got a good feeling about it ;-)).</p>
<div id="attachment_1242" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.blog.project13.pl/wp-content/uploads/2011/04/5586137459_b3e31fa93a_b-1.jpg"><img class="size-medium wp-image-1242" title="Corey Haines" src="http://www.blog.project13.pl/wp-content/uploads/2011/04/5586137459_b3e31fa93a_b-1-300x200.jpg" alt="" width="300" height="200" /></a><p class="wp-caption-text">Corey Haines</p></div>
<p>One interesting thing is that with the open space formula &#8220;if it doesn&#8217;t happen&#8230; it doesn&#8217;t happen&#8221; and so not all open spaces where full or held using the same formula (well, mine ended up just as a talk among newly met friends :-)). The nice thing is that on the after party the topic I wanted to talk about actually came back to me from another participant and we&#8217;ve had a nice talk about it (&#8220;hard to convince co workers and how to deal with them&#8221;). The answer we came up with was &#8220;just do your thing and enjoy it&#8221;. It&#8217;s a fun effect we discussed on SCKRK once &#8211; if someone sees you being happy thanks to doing TDD, they&#8217;re more likely to give it a try than you convincing them. (Bear in mind this is a nice approach for people not willing to pair-program or discover new things). So in the end, Mike was right, &#8220;no question will be left without an anwser&#8221; when sticking to the open space formula.</p>
<p style="text-align: center;">
<div id="attachment_1247" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.blog.project13.pl/wp-content/uploads/2011/04/5586133053_d724f0e616_b.jpg"><img class="size-medium wp-image-1247" title="Andrea Provaglio" src="http://www.blog.project13.pl/wp-content/uploads/2011/04/5586133053_d724f0e616_b-300x200.jpg" alt="Andrea Provaglio" width="300" height="200" /></a><p class="wp-caption-text">Andrea Provaglio</p></div>
<p>I won&#8217;t really list which talks I liked the most and which not &#8211; as, for one thing, each of them had it&#8217;s moments. But the talks certainly worth mentioning where the ones by <a href="http://www.coreyhaines.com/" onclick="urchinTracker('/outgoing/www.coreyhaines.com/?referer=');">Corey Haines</a> (the same Corey we&#8217;ve organized a <strong><a href="http://coderetreat.sckrk.com" onclick="urchinTracker('/outgoing/coderetreat.sckrk.com?referer=');">Code Retreat</a></strong> with later on this weekend :-)) about what <strong>Software Craftsmanship</strong> and Agile REALLY are about &#8211; <strong><em>&#8220;shortening the feedback loop&#8221;</em></strong> and, as highlighted in later talks, <strong><em>&#8220;continuous improvement&#8221;</em></strong>. One cool thing we got to talk about it that I&#8217;ve been using Corey&#8217;s new app for quite some time now &#8211; <a href="http://mercuryapp.com" onclick="urchinTracker('/outgoing/mercuryapp.com?referer=');"><strong>mercuryapp</strong>.com</a> and I recommend you check it out too! I&#8217;ve also really enjoyed <a href="http://andreaprovaglio.com/blog/" onclick="urchinTracker('/outgoing/andreaprovaglio.com/blog/?referer=');">Andrea Provaglio</a>&#8216;s talk about how to improve one self to enable self organizing at all. I mean, we always talk about it, but there are quite a few problems with self organizing teams if the team is for example judging other team members etc etc. It was a really great talk &#8211; which he has already given at GeeCON 2010 but there in a longer format &#8211; nevertheless it&#8217;s really inspireing and always a pleasure to listen to &#8220;as a reminder&#8221;.</p>
<div id="attachment_1244" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.blog.project13.pl/wp-content/uploads/2011/04/P1160119.jpg.scaled.1000.jpg"><img class="size-medium wp-image-1244" title="Paweł Wrzeszcz" src="http://www.blog.project13.pl/wp-content/uploads/2011/04/P1160119.jpg.scaled.1000-300x200.jpg" alt="Paweł Wrzeszcz" width="300" height="200" /></a><p class="wp-caption-text">Paweł Wrzeszcz</p></div>
<p>There was quite an amount of <strong>Kanban</strong> sessions, and I grasped a little more about it thanks to these sessions. The most interesting though that came to me was that <strong>a Kanban board is more &#8220;pull based&#8221;</strong> <em>(yay, just like most git flows! ;-)) </em> whereas SCRUM is more like &#8220;assign this task to this person _now_&#8221; . The trick with kanban is marking things as &#8220;done&#8221; and waiting for them to be pulled to the next phase by other team members. Kanban is very lightweight when compared to <strong>SCRUM</strong>, which actually has quite a lot of rules to which teams not always stick anyways. During Nick Oostvogel&#8217;s talk he mentioned that using SCRUM while a project is still &#8220;young&#8221; and then switching to kanban for a more effective &#8220;bug fixing flow&#8221; is also a good idea. I think I agree with this and would like to try it out sometime.</p>
<div id="attachment_1249" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.blog.project13.pl/wp-content/uploads/2011/04/5586139047_70d52bd04f_b.jpg"><img class="size-medium wp-image-1249" title="Open Space" src="http://www.blog.project13.pl/wp-content/uploads/2011/04/5586139047_70d52bd04f_b-300x200.jpg" alt="" width="300" height="200" /></a><p class="wp-caption-text">Open Space</p></div>
<p>The best thing about ACE! was the networking, definitely. I&#8217;ve met a whole bunch of new friends, refreshed some relationships. This was really easy as everyone was really open and welcoming &#8211; I think this might have been because of both the general atmosphere of ACE and the topics mentioned on it. No hard tech stuff seems to keep people more focused on human interactions :-) Another good thing for socializing was the &#8220;<strong>Not-So-After Party</strong>&#8221; which took place after the first day, and not the second one as some conferences organize them. The upside was that more people where able to come since they didn&#8217;t have to go back to their hometowns etc. The party ended a little after 3AM for us and I was among the few last participants &#8211; we&#8217;ve had a great time talking &#8217;bout stuff on this party&#8230; :-)</p>
<div id="attachment_1243" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.blog.project13.pl/wp-content/uploads/2011/04/P1160110.jpg.scaled.1000.jpg"><img class="size-medium wp-image-1243" title="Agile Meetup and Open Space explaination" src="http://www.blog.project13.pl/wp-content/uploads/2011/04/P1160110.jpg.scaled.1000-300x200.jpg" alt="" width="300" height="200" /></a><p class="wp-caption-text">Agile Meetup and Open Space explanation</p></div>
<p>I&#8217;m once again getting carried away with my writing (whoops &gt; 900 words) so even though I&#8217;ve barely scratched the surface I&#8217;ll be ending this blog post now by inviting you to join me on <a href="http://agilece.com" onclick="urchinTracker('/outgoing/agilece.com?referer=');">AgileCE 2012</a>! :-)</p>
<p>PS: Next up will be my summary of the Code Retreat we&#8217;ve organized the day after AgileCE, so keep your eyes peeled! :-)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.project13.pl/index.php/fun/1228/review-agilece-2011/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[terminal heroes] Display git branch in shell prompt (PS1)</title>
		<link>http://www.blog.project13.pl/index.php/fun/1198/terminal-heroes-display-git-branch-in-shell-prompt-ps1/</link>
		<comments>http://www.blog.project13.pl/index.php/fun/1198/terminal-heroes-display-git-branch-in-shell-prompt-ps1/#comments</comments>
		<pubDate>Sat, 26 Feb 2011 22:29:01 +0000</pubDate>
		<dc:creator>Ktoso</dc:creator>
				<category><![CDATA[english]]></category>
		<category><![CDATA[fun]]></category>
		<category><![CDATA[guide]]></category>
		<category><![CDATA[terminal heroes]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[branch]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[prompt]]></category>
		<category><![CDATA[ps1]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[tricks]]></category>

		<guid isPermaLink="false">http://www.blog.project13.pl/?p=1198</guid>
		<description><![CDATA[I don&#8217;t think I&#8217;ve blogged about this but I&#8217;ve seen this sometime ago and now decided to add it to my .bashrc for good. It&#8217;s a simple trick to make an awesome PS1 shell prompt, displaying the branch you are currently on (if you&#8217;re in a git versioned directory). Not that I&#8217;m forgetting what branch [...]]]></description>
			<content:encoded><![CDATA[<p>I don&#8217;t think I&#8217;ve blogged about this but I&#8217;ve seen this sometime ago and now decided to add it to my .bashrc for good. It&#8217;s a simple trick to make an awesome PS1 shell prompt, displaying the branch you are currently on (if you&#8217;re in a git versioned directory). Not that I&#8217;m forgetting what branch I&#8217;m on, but I hope it&#8217;ll make me create more branches more often and never &#8220;just work on master&#8221; :-)</p>
<p><a href="http://www.blog.project13.pl/wp-content/uploads/2011/02/awesome-git-branch-in-shell.png"><img src="http://www.blog.project13.pl/wp-content/uploads/2011/02/awesome-git-branch-in-shell.png" alt="" title="awesome-git-branch-in-shell" width="530" class="aligncenter size-full wp-image-1211" /></a></p>
<p>The code comes from <a href="http://arnorehn.de/cgi-bin/weblog_basic/index.php?p=34" onclick="urchinTracker('/outgoing/arnorehn.de/cgi-bin/weblog_basic/index.php?p=34&amp;referer=');">http://arnorehn.de/cgi-bin/weblog_basic/index.php?p=34</a> so big kudos too him :-)</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="co0"># in your ~/.bashrc for example</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">alias</span> <span class="re2">gitka=</span><span class="st0">&#39;gitk &#8211;all&#39;</span> <span class="co0">#unrelated to this post, but very useful :-)</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">function</span> formattedGitBranch <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re2">_branch=</span><span class="st0">&quot;$(git branch 2&gt;/dev/null | sed -e &quot;</span><span class="sy0">/</span>^\s<span class="sy0">/</span>d<span class="st0">&quot; -e &quot;</span>s<span class="sy0">/</span>^\<span class="sy0">*</span>\s<span class="sy0">//</span><span class="st0">&quot;)&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw3">test</span> -n <span class="st0">&quot;$_branch&quot;</span> <span class="sy0">&amp;&amp;</span> <span class="kw3">echo</span> -e <span class="st0">&quot; @<span class="es0">\e</span>[0;32m $_branch&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co0">#export PS1=&quot;\u@\h \W \[\e[m\]\$(formattedGitBranch) \[\e[1;32m\]\$ \[\e[m\]\[\e[0m\]&quot; </span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">export</span> <span class="re2">PS1=</span><span class="st0">&quot;<span class="es0">\u</span>@<span class="es0">\h</span> <span class="es0">\W</span><span class="es0">\[</span><span class="es0">\e</span>[m<span class="es0">\]</span><span class="es0">\$</span>(formattedGitBranch)<span class="es0">\[</span><span class="es0">\e</span>[0m<span class="es0">\]</span> <span class="es0">\$</span> &quot;</span></div>
</li>
</ol>
</div>
<p>Cheers and <b>happy hacking</b>!</p>
<p>PS: I&#8217;m waiting for my T-shirt and stickers (for training participants) to arrive from github. I&#8217;d love they make it in time for <a href="http://www.sfi.org.pl" onclick="urchinTracker('/outgoing/www.sfi.org.pl?referer=');">SFI</a> but I&#8217;m not sure if it&#8217;s even possible hmmm&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.project13.pl/index.php/fun/1198/terminal-heroes-display-git-branch-in-shell-prompt-ps1/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>[review] Devmeeting &#8211; Javascript Game Development</title>
		<link>http://www.blog.project13.pl/index.php/fun/1181/review-devmeeting-javascript-game-development/</link>
		<comments>http://www.blog.project13.pl/index.php/fun/1181/review-devmeeting-javascript-game-development/#comments</comments>
		<pubDate>Sun, 20 Feb 2011 23:21:12 +0000</pubDate>
		<dc:creator>Ktoso</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[freedom]]></category>
		<category><![CDATA[fun]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[clientside]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[meeting]]></category>
		<category><![CDATA[node.js]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[serverside]]></category>
		<category><![CDATA[TDD]]></category>
		<category><![CDATA[training]]></category>

		<guid isPermaLink="false">http://www.blog.project13.pl/?p=1181</guid>
		<description><![CDATA[Yesterday and today I&#8217;ve been hacking some JavaScript during a free training organized by http://releasingforce.com/ although they&#8217;re not really braging that it&#8217;s them who do these meetings, more precisely: http://www.devmeetings.pl/ :-) As I&#8217;m coding quite a lot GWT and JS has also become quite powerfull in the last years I enlisted the training to learn [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday and today I&#8217;ve been hacking some JavaScript during a free training organized by <a href="http://releasingforce.com/" onclick="urchinTracker('/outgoing/releasingforce.com/?referer=');">http://releasingforce.com/</a> although they&#8217;re not really braging that it&#8217;s them who do these meetings, more precisely: <a href="http://www.devmeetings.pl/" onclick="urchinTracker('/outgoing/www.devmeetings.pl/?referer=');">http://www.<strong>devmeetings</strong>.pl/</a> :-)</p>
<p>As I&#8217;m coding quite a lot GWT and JS has also become quite powerfull in the last years I enlisted the training to learn more about JS optimalization and add some more tricks to my toolbox. Also some real life use scenarios would be very welcome. Turns out Tanadu (a polish &#8220;heroes-like&#8221; browser game) was implemented 100% in plain JS. Which is quite shocking and as we later agreed on developing such code can really be a pain in the neck. &#8220;Use GWT&#8221; would be my anwser to such an use case I guess &#8211; you wouldn&#8217;t loose the refactoring tooling Java gives you and could still fallback to JSNI if really needed. <strong>Did the &#8220;training&#8221; meet my expectations? Yup. Want more details? Read on&#8230; :-)</strong></p>
<p>It was really fun and I&#8217;ve even (and unexpectedly) met a friend of mine with whom (and one other developer) we&#8217;ve paired up and were coding a JS Mortal Kombat in JavaScript for those two days. We&#8217;ve learnt how to use CSS3 *-animation, *- transition and other cool new features (well, most of them &#8220;webkit only&#8221; but very cool nevertheless). Then we&#8217;ve coded a little and went on to dinner ate Jeff&#8217;s where I&#8217;ve lead the group to :-) Sadly dinner took a little too much time and we had less time to code than Poznań during their meeting a few weeks ago.</p>
<p>By the way&#8230; MVC in JavaScript is quite weird (<em>hey, most of the teams ended up with GodObjects anyways! ;-)</em>), as is any acting &#8220;hey, let&#8217;s just say we can have classess and inherit them blabla&#8230;&#8221;. We&#8217;ve seen quite a few examples on how to <strong>emulate OOP</strong> <strong>in JavaScript</strong> which was both: really weird and interesting at the same time. In the end, the thought &#8220;if you have no type system, in the end you develop your own&#8221; seems really true here. I believe this was said by someone from twitter about their Ruby code, which had a hell lot of assertions in it just to be sure &#8220;abc is really of type AbcType&#8221;. That&#8217;s why I&#8217;m more for Scalas apparoach than Groovy&#8217;s or Javascript/Ruby/Php, but I&#8217;m not that advanced in Scala yet to judge it as &#8220;super perfect&#8221;&#8230; ;-)</p>
<div id="attachment_1188" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.blog.project13.pl/wp-content/uploads/2011/02/mk1.png"><img class="size-medium wp-image-1188" title="mk1" src="http://www.blog.project13.pl/wp-content/uploads/2011/02/mk1-300x167.png" alt="" width="300" height="167" /></a><p class="wp-caption-text">MK in Javascript using Node.js</p></div>
<p>On the next day we implemented the serverside stuff, using <strong>node.js</strong> and <strong>socket.io</strong> for the clientside wich worked really well I have to addmit. Although I&#8217;m still wondering how I&#8217;d handle auth/security to be _really_ secure using such server instances (&#8220;nodes&#8221; ;-))&#8230; Finally our game had a very nice and developed state machine for all basic mortal kombat moves (including high/low punch etc, how much such state is blocking and which sprite to use for it, jumping etc.). As this state manipulation took most of our time, our server didn&#8217;t support an infinite number of players as some other implementations did but as a trade off they didn&#8217;t have any combo/move logic in their games :-) Of course the game was playable (well, &#8220;almost playable&#8221; &#8211; both players think they&#8217;re &#8220;on the left&#8221;, but we&#8217;d fix that very quick if needed&#8230; ;-)). A quick finishing talk touched some performance tweaks &#8211; quite some we should have used in mSejf etc &#8211; so I feel a little smarter than before :-) Sadly we didn&#8217;t talk too much about TDD using JavaScript which may be really a good idea (ugh this loose typing can make you mad sometimes&#8230; ;-)).</p>
<div id="attachment_1182" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.blog.project13.pl/wp-content/uploads/2011/02/mk2.png"><img class="size-medium wp-image-1182" title="mk2" src="http://www.blog.project13.pl/wp-content/uploads/2011/02/mk2-300x169.png" alt="mortal kombat" width="300" height="169" /></a><p class="wp-caption-text">Our mortal kombat game ;-)</p></div>
<p><strong>What could be definitely improved</strong> is the internet connection (well, &#8220;organization&#8221; as a whole I guess) as we had quite a lot problems with it (choose a hotel which is no noob in terms of IT meetings :-)) and the lead&#8217;s knowlage about git. Since it&#8217;s quite an deep tool, and we&#8217;re not here to focus on it but on JavaScript some quick info about how to use it and more developers who aren&#8217;t using it the first time in their lifes would have been really helpful. But fear not, I&#8217;ve helped out all the teams with learning git and all merges, push/pull flows and other weird problems :-) So it became quite an hybrid training where some of the participants learnt quite a lot about git :-) Some may actually like it in spite of the difficulties we encountered in our very chaotic flow during our hack sessions&#8230; :-) On the other hand, any way of introducing git to new people is a good thing, but I fear some may expierience some discomfort/distrust to a tool they&#8217;ve just &#8220;learnt&#8221; on a &#8220;fly by basis&#8221;, from&#8230; well, me &#8211; another participant. ;-)</p>
<p>From my perspective it was a great and fun meeting and I&#8217;d like to attend more such meetings, sharing the same  formula, or slightly improved. What I loved was of course the hacking and fun of working in a team + teaching people git&#8230; :-) If you&#8217;re hungry for some team coding you may want to checkout one of the upcomming meetings or wait for <strong>SCKRK</strong>s + <strong>PolishJUG</strong>s &#8220;<strong>Code Retreat</strong>&#8221; that we&#8217;ll be announcing really soon&#8230; :-)</p>
<p>PS: I&#8217;ve pushed our game implementation (less than 8h of real coding (rest of the time was talking/presentations/eating etc ;-)) to github, here: <a href="https://github.com/ktoso/mk-javascript" target="_blank" onclick="urchinTracker('/outgoing/github.com/ktoso/mk-javascript?referer=');">https://github.com/ktoso/<strong>mk-javascript</strong></a> so you may want to take a look. Event out of pure curiosity :-)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.project13.pl/index.php/fun/1181/review-devmeeting-javascript-game-development/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>G73 keyboard backlight scripts</title>
		<link>http://www.blog.project13.pl/index.php/fun/1163/g73-keayboard-backlight-scripts/</link>
		<comments>http://www.blog.project13.pl/index.php/fun/1163/g73-keayboard-backlight-scripts/#comments</comments>
		<pubDate>Sat, 29 Jan 2011 19:09:42 +0000</pubDate>
		<dc:creator>Ktoso</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[freedom]]></category>
		<category><![CDATA[fun]]></category>
		<category><![CDATA[gaming]]></category>
		<category><![CDATA[guide]]></category>
		<category><![CDATA[terminal heroes]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[fsf]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[notebook]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[terminal]]></category>

		<guid isPermaLink="false">http://www.blog.project13.pl/?p=1163</guid>
		<description><![CDATA[I&#8217;ve upgraded my desktop and laptop last week. By &#8220;and&#8221; I mean that I&#8217;ve bought an desktop replacement class notebook &#8211; an Asus G73 series. Amongst many nice parts it has I&#8217;m very happy about the harddrives &#8211; Seagate Momentus XT, click the link to see an very interesting benchmark of it. Anyways, that&#8217;s not [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve upgraded my desktop and laptop last week. By &#8220;and&#8221; I mean that I&#8217;ve bought an desktop replacement class notebook &#8211; an <strong>Asus G73 </strong>series. Amongst many nice parts it has I&#8217;m very happy about the harddrives &#8211; <a href="http://www.tomshardware.com/reviews/seagate-momentus-xt-hybrid-hard-drive-ssd,2638.html" onclick="urchinTracker('/outgoing/www.tomshardware.com/reviews/seagate-momentus-xt-hybrid-hard-drive-ssd_2638.html?referer=');">Seagate Momentus XT</a>, click the link to see an very interesting benchmark of it. Anyways, that&#8217;s not what this post should be about.</p>
<p>The G73 has an backlit keyboard, which may come in handy while late night coding without lights on as I like to code sometimes. (I&#8217;m using a X6 Sidewinder, even with this Notebook so it&#8217;s not like it&#8217;s keyboard matters to me most of the time ;-)) As usual with such &#8220;super cool addons&#8221; the funtion keys regulating the keyboard backlight seemed to only work on Windows &#8211; which I&#8217;m only using for gaming (but rarely) and testing if the software I happened to write runs ok on it. Anyways, turns out that the keyboard does really well integrate with linux, and you just need a few simple commands to use it, I&#8217;ve made them available on github :-)</p>
<p><a href="https://github.com/ktoso/g73-keyboard-backlight-sh/" onclick="urchinTracker('/outgoing/github.com/ktoso/g73-keyboard-backlight-sh/?referer=');">https://github.com/ktoso/<strong>g73-keyboard-backlight-sh</strong></a> &lt;- Go here to check it out :-)</p>
<div class="geshi no markdown">
<div class="head">Asus G73 Keyboard Backlight GNU/Linux Scripts</div>
<ol>
<li class="li1">
<div class="de1">=============================================
</div>
</li>
<li class="li1">
<div class="de1">To enable the `Fn + F3` and `Fn + F4` shortcuts to work under linux and really
</div>
</li>
<li class="li1">
<div class="de1">manipulate the backlight brighntess on your *Asus G73* series notebook, follow theese simple steps:
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">1. Clone this repository to your home directory (or wherever you want to, I&#39;ll do this example for ~/ for simplicity)
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;cd
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;git clone git://github.com/ktoso/g73-keyboard-backlight-sh.git g73
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;
</div>
</li>
<li class="li1">
<div class="de1">2. Make sure all scripts are marked executable:
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;cd g73
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;chmod +x *.sh
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">3. Take a look at these scripts to make sure you trust them, why? Because they&#39;ll need root access,
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;without asking for the password. Now we&#39;ll add these scripts to allow `sudo`to run them without
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;asking for any password:
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;su -c &#39;visudo&#39; # or &#39;sudo visudo&#39; if you&#39;re a sudoer (on ubuntu etc)
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;There just add the following lines at the end of this file (or similar, with the script names etc).
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;Of course, replace `ktoso` and `/home/ktoso/` with your *username* and *your home directory*.
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;## allow running keyboard backlight scripts
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;ktoso ALL=(ALL) NOPASSWD:/home/ktoso/g73/*
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">4. Now all that&#39;s left is to setup the key bindings for the scripts. If you&#39;re on KDE4, just go to
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;*System Settings -&amp;gt; Shortcuts and Gestures -&amp;gt; Custom Shortcuts* and *edit -&amp;gt; import&#8230;* the file **~/g73/g73_keyboard.khotkeys**
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; which contains ready keybindings for these scripts.
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; Now you may use `Fn + F3` to make the keyboard backlight shine **less**, and the `Fn + F4` combination to make it shine **more**.</div>
</li>
</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.project13.pl/index.php/fun/1163/g73-keayboard-backlight-scripts/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>git-hacking: pre-commit hook and custom command</title>
		<link>http://www.blog.project13.pl/index.php/fun/1076/git-hacking-pre-commit-hook-and-custom-command/</link>
		<comments>http://www.blog.project13.pl/index.php/fun/1076/git-hacking-pre-commit-hook-and-custom-command/#comments</comments>
		<pubDate>Sun, 21 Nov 2010 02:07:39 +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[java]]></category>
		<category><![CDATA[terminal heroes]]></category>
		<category><![CDATA[#eclipse]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[intellij]]></category>
		<category><![CDATA[netbeans]]></category>
		<category><![CDATA[SCM]]></category>
		<category><![CDATA[tip]]></category>
		<category><![CDATA[xsolve]]></category>

		<guid isPermaLink="false">http://www.blog.project13.pl/?p=1076</guid>
		<description><![CDATA[As my team is using a kinda weird source eclipse code formatter setup, that other IDEs can&#8217;t emulate in 100% I sometimes found myself committing in a file with only a few changed spaces. Of course, I could use &#8220;external-formatter&#8221; plugins etc but that&#8217;s no good. Running eclipse&#8217;s formatter each time I want to format [...]]]></description>
			<content:encoded><![CDATA[<p>As my team is using a kinda weird source eclipse code formatter setup, that other IDEs can&#8217;t emulate in 100% I sometimes found myself committing in a file with only a few changed spaces. Of course, I could use &#8220;external-formatter&#8221; plugins etc but that&#8217;s no good. Running eclipse&#8217;s formatter each time I want to format my source (_very_ often) proved to be too slow and really getting on my nerves.</p>
<p>So&#8230; Since I&#8217;ve started using <strong>git</strong>-svn at work, I do have an possibility to make things better now! The answer lies in client-side-<strong>hooks</strong> and <strong>git aliases</strong> (&#8220;custom commands&#8221;). First let&#8217;s write this as an simple bash script, that we&#8217;ll locate in the <strong>.git/hooks/</strong> folder:<br />
<script src="https://gist.github.com/708972.js?file=gistfile1.sh"></script> It&#8217;s a fairly simple script, so I wont bore you explaining it in detail &#8211; if in doubt, feel free to ask. We only need to place this script as &#8220;<strong>.git/hooks/pre-commit</strong>&#8221; and make it executable and git will take care of the rest for us. Oh and in case you&#8217;re wondering where that <strong>org.eclipse.jdt.core.prefs</strong> came from. It&#8217;s created by eclipse into the .settings folder when you check some option to &#8220;use formatter per project&#8221; &#8211; that&#8217;s the only time I had to fire up and click around in eclipse to get it&#8217;s formatter running &#8220;headless&#8221;. Ok, let&#8217;s check if it works&#8230; <script src="https://gist.github.com/708982.js?file=gistfile1.java"></script><br />
<script src="https://gist.github.com/708976.js?file=gistfile1.sh"></script> <script src="https://gist.github.com/708981.js?file=gistfile1.java"></script><br />
Yup, you can agree or not with the formatting rules &#8211; but what matters is that the whole team decided on it and that we keep it consistent throughout the whole project. This hook will definitely help with this. :-)  Step two for me was changing this into a git command, so that I wouldn&#8217;t launch eclipse each time I just do some quick local commiting. The solution is to drop the hook idea (although it&#8217;s quite nice) and create an custom git command. We do this by doing an alias like that:</p>
<pre>git config --global alias.eclipse-formatter '!~/git-hook-eclipse-formatter'</pre>
<p>The <strong>!command </strong>alias<strong> </strong>support is with us in git since 1.5.0 and it enables us to launch any program/script as an git command. Great, just what I wanted! Let&#8217;s now see what this command really did:</p>
<p><script src="https://gist.github.com/708977.js?file=gistfile1.sh"></script><br />
As you can see, adding an alias is as simple as adding it to your<strong> ~/.gitconfig</strong> or, if you want to setup the alias &#8220;per project&#8221;, to <strong>.git/config</strong> &#8211; pretty cool, ay? Also, this command will be included in bash-autocompletition suggestions! :-)</p>
<p>That&#8217;s it for today&#8230; <em>happy hacking!</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.project13.pl/index.php/fun/1076/git-hacking-pre-commit-hook-and-custom-command/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

