<?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"
	>

<channel>
	<title>Pawel's Blog</title>
	<atom:link href="http://pawel.wrzesz.cz/blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://pawel.wrzesz.cz/blog</link>
	<description>beyond buzzword bingo</description>
	<pubDate>Thu, 17 May 2012 10:11:21 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.2</generator>
	<language>en</language>
			<item>
		<title>My Talk @ GeeCON 2012</title>
		<link>http://pawel.wrzesz.cz/blog/?p=143</link>
		<comments>http://pawel.wrzesz.cz/blog/?p=143#comments</comments>
		<pubDate>Thu, 17 May 2012 10:11:21 +0000</pubDate>
		<dc:creator>Paweł Wrzeszcz</dc:creator>
		
		<category><![CDATA[Agile]]></category>

		<category><![CDATA[Conferences]]></category>

		<category><![CDATA[Working Remotely]]></category>

		<guid isPermaLink="false">http://pawel.wrzesz.cz/blog/?p=143</guid>
		<description><![CDATA[Tomorrow I am giving a talk &#8220;Visibility Shift In Distributed Teams&#8221; on GeeCON conference in Poznań.

Presentation abstract
If you are one of the geeks attending this great Java conference, join me in Room 8 at 11:30 to learn how working remotely looks like and what happens when an agile team gets distributed.
See you there!
]]></description>
			<content:encoded><![CDATA[<p>Tomorrow I am giving a talk &#8220;Visibility Shift In Distributed Teams&#8221; on <a href="http://2012.geecon.org">GeeCON</a> conference in Poznań.</p>
<p><a href="http://pawel.wrzesz.cz/blog/wp-content/uploads/2012/05/geecon_logo_new.png"><img class="alignnone size-medium wp-image-145" src="http://pawel.wrzesz.cz/blog/wp-content/uploads/2012/05/geecon_logo_new.png" alt="" width="145" height="72" /></a></p>
<p><a href="http://2012.geecon.org/speakers/pawel-wrzeszcz">Presentation abstract</a></p>
<p>If you are one of the geeks attending this great Java conference, join me in Room 8 at 11:30 to learn how working remotely looks like and what happens when an agile team gets distributed.</p>
<p>See you there!</p>
]]></content:encoded>
			<wfw:commentRss>http://pawel.wrzesz.cz/blog/?feed=rss2&amp;p=143</wfw:commentRss>
		</item>
		<item>
		<title>Devoxx 2011 Quotes</title>
		<link>http://pawel.wrzesz.cz/blog/?p=127</link>
		<comments>http://pawel.wrzesz.cz/blog/?p=127#comments</comments>
		<pubDate>Mon, 05 Dec 2011 11:15:03 +0000</pubDate>
		<dc:creator>Paweł Wrzeszcz</dc:creator>
		
		<category><![CDATA[Conferences]]></category>

		<guid isPermaLink="false">http://pawel.wrzesz.cz/blog/?p=127</guid>
		<description><![CDATA[
A bunch of highlights from Devoxx this year that I would like to present here cannot be opened in any other way than this one:
“Don’t go to the conferences”&#160;&#160;&#160;&#160;&#160;&#160;- Martijn Verburg aka Diabolical Developer
The best way to improve your skills is through endless practice. For a programmer, working on code should be the main way [...]]]></description>
			<content:encoded><![CDATA[<p><center><img src="http://pawel.wrzesz.cz/blog/wp-content/uploads/2011/12/logodevoxx150dpi-300x112.jpg" alt=""  width="300" height="112" class="alignnone size-medium wp-image-137" /></center></p>
<div><span id="internal-source-marker_0.7384105024393648">A bunch of highlights from Devoxx this year that I would like to present here cannot be opened in any other way than this one:</span></p>
<blockquote><p>“Don’t go to the conferences”<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- <a href="http://martijnverburg.blogspot.com/">Martijn Verburg</a> aka Diabolical Developer</p></blockquote>
<p><span>The best way to improve your skills is through endless <em>practice</em>. For a programmer, working on code should be the main way to get better in his craft. So, make sure you learn at work, not only at conferences.</span></p>
<blockquote><p>“Stop sleeping, start awaiting!” - <a href="http://twitter.com/#!/johanhaleby">Johan Haleby</a></p></blockquote>
<p><span><a href="http://code.google.com/p/awaitility/">Awaitility</a> library demonstrated by Johan solves one problem with writing tests for asynchronous components and does it in a very elegant way. An example of friendly DSL that allows you to wait for an operation or condition instead of using Thread.sleep() looks like this:</span></p>
<pre name="code" class="java">

await().atMost(5, SECONDS).until(costumerStatusIsUpdated());
</pre>
<blockquote><p>“Have you ever bought bottled water?” - <a href="http://twitter.com/#!/brianleroux">Brian LeRoux</a></p></blockquote>
<p><span>The shortest answer ever for a question on how making money from open-source is possible.</span></p>
<blockquote><p>“Think in flows, not features” - <a href="http://joeracer.blogspot.com/">Joe Nuxoll</a> on UI design</p></blockquote>
<p><span>Cannot agree more. Even though this means taking much harder route than just designing screens, it is worth it.</span></p>
<blockquote><p>“We need to start at early stage” - <a href="http://mechanitis.blogspot.com/">Trisha Gee</a> on women in IT</p></blockquote>
<p><span>I am not sure about the exact wording - what counts here is that increasing number of women in IT is not about changing hiring policies at companies (there simply not a lot female programmers around now). Good question to ask is why majority of school age girls do not even consider Computer Science as their possible career path (image issue?). More on <a href="http://mechanitis.blogspot.com/2011/11/why-we-shouldnt-target-women.html">Trisha’s blog</a></span></p>
<p><span>Pawel</span></div>
]]></content:encoded>
			<wfw:commentRss>http://pawel.wrzesz.cz/blog/?feed=rss2&amp;p=127</wfw:commentRss>
		</item>
		<item>
		<title>JAXLondon - Lessons Learned</title>
		<link>http://pawel.wrzesz.cz/blog/?p=108</link>
		<comments>http://pawel.wrzesz.cz/blog/?p=108#comments</comments>
		<pubDate>Thu, 10 Nov 2011 20:58:57 +0000</pubDate>
		<dc:creator>Paweł Wrzeszcz</dc:creator>
		
		<category><![CDATA[Agile]]></category>

		<category><![CDATA[Conferences]]></category>

		<category><![CDATA[Scrum]]></category>

		<category><![CDATA[TDD]]></category>

		<guid isPermaLink="false">http://pawel.wrzesz.cz/blog/?p=108</guid>
		<description><![CDATA[Last week I have attended the JAX conference in London. Here is a couple of highlights that attracted my attention enough to write them down.


Product Backlog

Roman Pichler about the Product Backlog:
Low-priority backlog entries should be much less detailed than those on top.

When (and if) their time comes, they will be probably split into smaller stories. [...]]]></description>
			<content:encoded><![CDATA[<p>Last week I have attended the <a href="http://jaxlondon.com/">JAX conference in London</a>. Here is a couple of highlights that attracted my attention enough to write them down.</p>
<div>
<p><a href="http://pawel.wrzesz.cz/blog/wp-content/uploads/2011/11/jax-london-2010-logo.png"><img class="alignnone size-medium wp-image-113" src="http://pawel.wrzesz.cz/blog/wp-content/uploads/2011/11/jax-london-2010-logo-300x139.png" alt="" width="240" height="111" /></a></p>
<p><strong><span>Product Backlog</span><br />
</strong><br />
<span><a href="http://www.romanpichler.com/">Roman Pichler</a> about the Product Backlog:</span></div>
<div><em>Low-priority backlog entries should be much less detailed than those on top.<span><br />
</span></em><br />
<span>When (and if) their time comes, they will be probably split into smaller stories. This also shows that the backlog is something designed to be often changed (and reviewed!).</span></div>
<p><em>Why do you need to allocate time for gathering requirements/design/architecture work every iteration?</em></p>
<div>Think about the Waterfall approach and all the work done in the initial project phase, before coding. When following Scrum methodology this work <em>still remains</em>. The only difference is that it is now scattered among the iterations.</div>
<div>
<p><strong><span>Guess the number</span><br />
</strong><br />
<span><a href="http://codemanship.co.uk/parlezuml/blog/">Jason Gorman</a> came up with a great exercise during his Keynote. 2 teams were trying to guess the 4-digit number, taking turns.</span></p>
<blockquote>
<p style="text-align: center;" dir="ltr"><span>? ? ? ?</span></p>
</blockquote>
<p><span>One team was made to guess the whole number up front, while another one were free to guess it digit by digit.</span></p>
<p><span>Now, Dear Reader, guess who was able to figure out the number faster and which team represents the Waterfall and which one is Scrum <img src='http://pawel.wrzesz.cz/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </span></p>
<p><span>Jason also pointed out that when building a software solution </span><span>“how fast we learn is actually more important than how fast we deliver”</span><span>.</span></p>
<p><span><strong>Measuring effects of TDD</strong></span></p>
<p><span>In the introduction to </span><a href="http://www.slideshare.net/deimos/keith-braithwaite-measure-for-measure"><span>his talk</span></a><span>, Keith Braithwaite showed a </span><a href="http://www.enerjy.com/blog/?p=198"><span>correlation of Cyclomatic Complexity values against the probability of faults being found</span></a><span>, which I find really useful to convince myself to think twice before adding another “if” into code. And, yeah, at some point the probability reaches 100% <img src='http://pawel.wrzesz.cz/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </span></p>
<p><span>Keith’s analysis of Cyclomatic Complexity distribution in various open-source projects proved that in the tested code one can observe higher </span><span>preference</span><span> for less complex methods, though there still remain parts of code of high complexity.</span></p>
<p><span>What is more, a nicely TD-Designed project’s code needs somehow express the same behaviour as the codebase with lots of “if” statements. How is this richness achieved? Well, maybe we trade off here more interactions (and <em>greater coupling</em>!) for less “ifs”.</span></p>
<p><strong>We are all lazy</strong></p>
<p><span>Last but not least, I found one explanation on why writing tests leads to shorter methods really interesting. Long methods may not be hard to write, but they make testing difficult. Big tests are hard to write indeed. So, when it comes to writing (long) test cases, </span><span><em>your laziness</em> </span><span>forces you to&#8230; refactor for smaller methods, cause this will simplify testing!</span></p>
<p>The best presentation I have attended on the second day was <a href="http://agile-trac.org/blog/thinking_distributed_to_improve_agility">Thinking Distributed to Improve Agility</a> by Jamie Allsop, but&#8230; that is another story.</div>
]]></content:encoded>
			<wfw:commentRss>http://pawel.wrzesz.cz/blog/?feed=rss2&amp;p=108</wfw:commentRss>
		</item>
		<item>
		<title>Daily Scrum: The Fourth Question</title>
		<link>http://pawel.wrzesz.cz/blog/?p=89</link>
		<comments>http://pawel.wrzesz.cz/blog/?p=89#comments</comments>
		<pubDate>Thu, 08 Sep 2011 07:15:41 +0000</pubDate>
		<dc:creator>Paweł Wrzeszcz</dc:creator>
		
		<category><![CDATA[Agile]]></category>

		<category><![CDATA[Scrum]]></category>

		<guid isPermaLink="false">http://pawel.wrzesz.cz/blog/?p=89</guid>
		<description><![CDATA[Let’s face it - Daily Scrum happens to be boring meeting sometimes. In the long run it may turn out to be tiresome routine, even for a team that understands its importance.
To make our meetings at SoftwareMill more interesting, we have implemented the idea of The Fourth Question, which I want to share here.
What is [...]]]></description>
			<content:encoded><![CDATA[<div><span>Let’s face it - Daily Scrum happens to be boring meeting sometimes. In the long run it may turn out to be tiresome routine, even for a team that understands its importance.</span></p>
<p><span>To make our meetings at <a title="SoftwareMill" href="http://softwaremill.com">SoftwareMill</a> more interesting, we have implemented the idea of The Fourth Question, which I want to share here.</span></p>
<p><strong><span>What is the question today?</span><br />
</strong><br />
<span>Basically, apart from the usual three questions (Done yesterday. Plan for today. Blockers.) each member of the team answers additional one. What is the Fourth Question? Well, that is a good question <img src='http://pawel.wrzesz.cz/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </span></p>
<p><span>The question is announced by the ScrumMaster, who is free to come up with <em>any question they like</em>. This may be something connected with the project or personal.</span></p>
<p><span>Each day the question is different. Since in our team the person that leads the meetings changes every week, each member of the team has their chance to ask questions.</span></p>
<p><strong><span>Examples</span><br />
</strong><br />
<span>Here is a list of various questions that appeared on our Daily Scrums:</span></p>
<ul>
<li><span>How are you feeling today?</span></li>
<li><span>Which day is the most effective day for you?</span></li>
<li><span>How useful this meeting is for you?</span></li>
<li><span>What have you learned recently?</span></li>
<li><span>What is your favorite shortcut in our IDE?</span></li>
<li><span>What should we do with people coming late for Scrum?</span></li>
<li><span>What did you have for breakfast?</span></li>
<li><span>What is your favorite movie?</span></li>
<li><span>What board game did you play recently?</span></li>
<li><span>What gadget have you bought or received recently?</span></li>
<li><span>What sport did you practise recently? (And when it was? ;))</span></li>
<li><span>Ideas to spend time with a child in winter.</span></li>
</ul>
<p><span>Since we are a remote team, we have also asked each other questions like:</span></p>
<ul>
<li><span>What type of the office chair have you got?</span></li>
<li>What have you got on your desk that is not connected with your work?</li>
<li>Do you listen to the music when you work?</li>
<li>How are you making notes?</li>
</ul>
<p><span>(Authors: <a href="http://softwaremill.com/team.html">The </a></span><span><a href="http://softwaremill.com/team.html">Whole Team</a></span><span>)</span></p>
<p><strong><span>Areas of application</span><br />
</strong><br />
<span>This technique</span></p>
<ul>
<li><span>is useful for coaching</span></li>
<li><span>stimulates knowledge sharing</span></li>
<li><span>will help team members to get to know each other</span></li>
<li><span>will definitely introduce some fun and diversity <img src='http://pawel.wrzesz.cz/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </span></li>
</ul>
<p><span><strong>Guidelines</strong></span></p>
<p><span>Of course having one more question might lead to the longer meetings, but with a little bit of discipline it is still possible to keep 15 minutes limit (If this gets difficult you can always ask “What can we do to keep the limit?” ;)).</span></p>
<p><span>It is a good practice to announce the question some time before the Daily Scrum. People will then come with the answers ready.</span></p>
<p><span>We favor simple questions that can be answered in one sentence.</span></p>
<p><strong>Give it a try</strong></p>
<p><span>If you like this idea, do not hesitate and introduce it on your next Daily Scrum meeting. Let me know how it worked in your team and what were your questions.</span></p>
<p><span>Have fun with the Fourth Question!</span></p>
<p><span>-Paweł</span></div>
<p><span>PS See also <a href="http://dailylog.lenart.org.pl/2011/07/27/fourth-question/">Łukasz&#8217;s post</a> about this idea.</p>
]]></content:encoded>
			<wfw:commentRss>http://pawel.wrzesz.cz/blog/?feed=rss2&amp;p=89</wfw:commentRss>
		</item>
		<item>
		<title>Agile Central Europe 2011 Impressions</title>
		<link>http://pawel.wrzesz.cz/blog/?p=61</link>
		<comments>http://pawel.wrzesz.cz/blog/?p=61#comments</comments>
		<pubDate>Tue, 05 Apr 2011 07:49:45 +0000</pubDate>
		<dc:creator>Paweł Wrzeszcz</dc:creator>
		
		<category><![CDATA[Agile]]></category>

		<category><![CDATA[Conferences]]></category>

		<guid isPermaLink="false">http://pawel.wrzesz.cz/blog/?p=61</guid>
		<description><![CDATA[


Last week I had a pleasure of attending the Agile Central Europe 2011 conference and presenting my talk about working remotely there.

I felt that this conference would be special from the moment I received an invitation to join the open discussion on the way the event should be organized. What a fantastic idea!
The speakers, presentations [...]]]></description>
			<content:encoded><![CDATA[<p>
<div><img class="size-medium wp-image-67 aligncenter" src="http://pawel.wrzesz.cz/blog/wp-content/uploads/2011/04/ace-300x115.png" alt="" width="240" height="92" /></div>
</p>
<div><span>Last </span>week I had a pleasure of attending the <a href="http://agilece.com/">Agile Central Europe 2011</a> conference and presenting my talk about <a href="http://prezi.com/h8snvwrkksgl/remote-programmer-20/">working remotely</a> there.</div>
<div>
<p><span>I felt that this conference would be special from the moment I received an invitation to join the <a href="http://agilece.com/home/2010/12/9/we-want-to-hear-your-ideas.html">open discussion</a> on the way the event should be organized. What a fantastic idea!</span></p>
<p>The speakers, presentations and the way that the whole ACE! 2011 was organized were more than awesome. Here are the talks I liked most.</p>
<p><strong>Paweł Brodziński - &#8220;Kanban: Impro</strong><strong>vements when you don&#8217;t look for them&#8221;</strong></p>
<p><span>The presentation agenda displayed on a Kanban board served as a sort of an introduction (happening in the background) for those not familiar with the Kanban approach (including me). This way <a href="http://blog.brodzinski.com/">Paweł</a> allowed himself more time to go beyond just the basics.</span></p>
<p><span>I especially liked the way Kanban shortens the feature lifecycle. Working in 2-week Scrum iterations I sometimes feel that there are too many various features being developed  at the same time. Kanban helps to tackle this problem with it&#8217;s &#8220;Limit Work In Progress&#8221; approach.</span></p>
<p><strong>Andrea Provaglio - Overcoming Self-organization Blocks</strong></p>
<p><span>Probably the most psychological presentation at ACE! I really enjoyed the demonstration of rowing against the tide as well as the exercises led by <a href="http://andreaprovaglio.com/">Andrea</a> during the Open Space.</span></p>
<p><span> By the way Andrea&#8217;s Open Space session showed one of the Open Space Principles in action. </span><span>The session was so popular that the whole group decided to move to another room in order to have more space.</span><span> &#8220;</span><span>Whatever happens is the only thing that could have.&#8221;</span></p>
<p><strong>Marc Löffler - Kaboom - Blow up your watermelon</strong></p>
<p><span><a href="http://blog.scrumphony.com/">Marc</a>&#8217;s presentation was both entertaining and enlightening. The watermelon is indeed a perfect metaphor of what  happens pretty often in our industry when it comes to reporting to the management. What is red inside looks more like green when it reaches the top executives.</span></p>
<p><strong>Closing Keynote - Jurgen Appelo</strong></p>
<p><span>Both the insight and the way <a href="http://www.jurgenappelo.com/">Jurgen</a> presented the content were awesome. He definitely set a new standard for closing keynotes by quoting every single conference speaker in his talk.</span></p>
<p><span>I must admit I was impressed with how great this event was. Congratulations to Paul Klipp and all people involved in organizing the ACE! 2011 conference.</span></p>
<p><span>-Paweł</span></p>
<p><span>PS I am still thinking about the name for the software development method described by <a href="http://twitter.com/#!/fireladym">Maria Diaconu</a> and <a href="http://www.alexbolboaca.ro/wordpress/">Alexandru Bolboacă</a> in their talk &#8220;Yes, You Can Deploy Every Two Days!&#8221;.</span></div>
]]></content:encoded>
			<wfw:commentRss>http://pawel.wrzesz.cz/blog/?feed=rss2&amp;p=61</wfw:commentRss>
		</item>
		<item>
		<title>Seam-Guice is now part of Seam</title>
		<link>http://pawel.wrzesz.cz/blog/?p=32</link>
		<comments>http://pawel.wrzesz.cz/blog/?p=32#comments</comments>
		<pubDate>Fri, 31 Jul 2009 08:16:51 +0000</pubDate>
		<dc:creator>Paweł Wrzeszcz</dc:creator>
		
		<category><![CDATA[Guice]]></category>

		<category><![CDATA[JBoss]]></category>

		<category><![CDATA[Seam]]></category>

		<guid isPermaLink="false">http://pawel.wrzesz.cz/blog/?p=32</guid>
		<description><![CDATA[Google Guice support for Seam is now part of the Seam distribution!
It is available since the 2.1.2 release of Seam, as a part of the IoC module, but if you happen to need it, the best choice is to grab the latest 2.2.0.GA version which includes a fix for the disinjection issue.
Disinjection
The problem with disinjection [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://pawel.wrzesz.cz/blog/?p=4">Google Guice support for Seam</a> is now part of the Seam distribution!</p>
<p>It is available since the 2.1.2 release of Seam, as a part of the IoC module, but if you happen to need it, the best choice is to <a href="http://seamframework.org/Download">grab</a> the latest 2.2.0.GA version which includes a fix for the <a href="https://jira.jboss.org/jira/browse/JBSEAM-4245">disinjection issue</a>.</p>
<p><strong>Disinjection</strong></p>
<p>The problem with disinjection was that the implementation injected values to the fields annotated with @Inject, but did not clear those values after the method call. The disinjection step here is required for exactly the same reason that Seam itself performs it on @In- and @Out-jected fields - to prevent a long-scoped Seam component from holding a reference to a (possibly short-living) Guice component.</p>
<p>Also, the presence of disinjection allows you to @Inject non-serializable properties into serializable components without having to worry about making those properties transient.</p>
<p><strong>Configuration and Docs</strong></p>
<p>The configuration did not change, except for one detail, which is the &#8220;guice&#8221; namespace URL declaration in the components.xml file:</p>
<pre name="code" class="xml">

&lt;components
xmlns=&quot;http://jboss.com/products/seam/components&quot;
xmlns:guice=&quot;http://jboss.com/products/seam/guice&quot;&gt;
...
&lt;/components&gt;
</pre>
<p>All components are now in the <a href="http://anonsvn.jboss.org/repos/seam/branches/community/Seam_2_2/src/ioc/org/jboss/seam/ioc/guice/">org.jboss.seam.ioc.guice</a> package.</p>
<p>If you feel like checking the latest documentation of the Seam-Guice module, here is the link:<br />
<a href="http://docs.jboss.com/seam/2.2.0.GA/reference/en-US/html/guice.html">http://docs.jboss.com/seam/2.2.0.GA/reference/en-US/html/guice.html</a>.</p>
<p>Thanks to <a href="http://mojavelinux.com/">Dan Allen</a> who reviewed my code and spotted the disinjection issue.</p>
<p>-Pawel</p>
]]></content:encoded>
			<wfw:commentRss>http://pawel.wrzesz.cz/blog/?feed=rss2&amp;p=32</wfw:commentRss>
		</item>
		<item>
		<title>Seam Talk at GeeCON</title>
		<link>http://pawel.wrzesz.cz/blog/?p=15</link>
		<comments>http://pawel.wrzesz.cz/blog/?p=15#comments</comments>
		<pubDate>Mon, 04 May 2009 21:17:54 +0000</pubDate>
		<dc:creator>Paweł Wrzeszcz</dc:creator>
		
		<category><![CDATA[Conferences]]></category>

		<category><![CDATA[Seam]]></category>

		<guid isPermaLink="false">http://pawel.wrzesz.cz/blog/?p=15</guid>
		<description><![CDATA[
I am speaking at the GeeCON conference in Cracow this Friday.
The presentation is called &#8220;Seam for Spring Developers&#8221; and will be a fast-track introduction to Seam and a &#8220;Seamish&#8221; way of thinking for those already experienced with other Java web frameworks, like Spring.
If you are around, make sure to choose Room 5 at 12.15  [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.geecon.org/main/home"><img class="size-medium wp-image-16 alignright" src="http://pawel.wrzesz.cz/blog/wp-content/uploads/2009/05/geecon.png" alt="" width="120" height="46" /></a><br />
I am speaking at the <a href="http://www.geecon.org/main/home">GeeCON</a> conference in Cracow this Friday.</p>
<p>The presentation is called &#8220;Seam for Spring Developers&#8221; and will be a fast-track introduction to <a href="http://www.seamframework.org/">Seam</a> and a &#8220;Seamish&#8221; way of thinking for those already experienced with other Java web frameworks, like Spring.</p>
<p>If you are around, make sure to choose Room 5 at 12.15 <img src='http://pawel.wrzesz.cz/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>See you there.</p>
<p>-Pawel</p>
<p>Update: I&#8217;ve uploaded the <a href="http://pawel.wrzesz.cz/blog/wp-content/uploads/2009/05/seamforspringdevelopersgeecon2009.pdf">presentation slides</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://pawel.wrzesz.cz/blog/?feed=rss2&amp;p=15</wfw:commentRss>
		</item>
		<item>
		<title>Seam Exam (beta) @ JavaBlackBelt</title>
		<link>http://pawel.wrzesz.cz/blog/?p=12</link>
		<comments>http://pawel.wrzesz.cz/blog/?p=12#comments</comments>
		<pubDate>Sat, 13 Sep 2008 13:33:30 +0000</pubDate>
		<dc:creator>Paweł Wrzeszcz</dc:creator>
		
		<category><![CDATA[Exam]]></category>

		<category><![CDATA[JBoss]]></category>

		<category><![CDATA[Seam]]></category>

		<guid isPermaLink="false">http://pawel.wrzesz.cz/blog/?p=12</guid>
		<description><![CDATA[Together with Matthias Merz we created Seam - Basic Exam at JavaBlackBelt.
It verifies general understanding of the Seam 2.0 concepts, required to implement a simple Seam application.
The exam is now in the beta stage, which means it is available publicly and you can take the (beta) exam, which does not count for your belt progress. [...]]]></description>
			<content:encoded><![CDATA[<p>Together with <a href="http://www.javablackbelt.com/UserView.wwa?userId=4202187">Matthias Merz</a> we created <a href="http://www.javablackbelt.com/QuestionnaireDefDisplay.wwa?questPublicId=1620">Seam - Basic Exam</a> at <a href="http://www.javablackbelt.com">JavaBlackBelt</a>.</p>
<p>It verifies general understanding of the <a href="http://www.seamframework.org/">Seam</a> 2.0 concepts, required to implement a simple Seam application.</p>
<p>The exam is now in the beta stage, which means it is available publicly and you can <a href="http://www.javablackbelt.com/QuestionnairePerform.wwa?questDefId=8090960">take the (beta) exam</a>, which does not count for your belt progress. It will be released as soon as we collect enough stable questions in each category.</p>
<p>Like all exams available at <a href="http://www.javablackbelt.com">JavaBlackBelt</a>, it is free.</p>
<p>You are welcome to contribute your own questions and improve or rate existing ones.</p>
<p style="text-align: center;"><a href="http://www.javablackbelt.com/QuestionnaireDefDisplay.wwa?questPublicId=1620">Exam page</a></p>
<p style="text-align: center;"><a href="http://www.javablackbelt.com/QuestionnaireDefDisplay.wwa?questPublicId=1620"><img class="aligncenter" src="http://www.javablackbelt.com/imgs/logos/logo-javablackbelt.gif" alt="JavaBlackBelt Seam Exam" /></a></p>
<p>Cheers,<br />
-Pawel</p>
]]></content:encoded>
			<wfw:commentRss>http://pawel.wrzesz.cz/blog/?feed=rss2&amp;p=12</wfw:commentRss>
		</item>
		<item>
		<title>JBoss.org Project Statistics</title>
		<link>http://pawel.wrzesz.cz/blog/?p=7</link>
		<comments>http://pawel.wrzesz.cz/blog/?p=7#comments</comments>
		<pubDate>Thu, 21 Aug 2008 13:44:48 +0000</pubDate>
		<dc:creator>Paweł Wrzeszcz</dc:creator>
		
		<category><![CDATA[JBoss]]></category>

		<guid isPermaLink="false">http://pawel.wrzesz.cz/blog/?p=7</guid>
		<description><![CDATA[The JBoss.org Team is pleased to release JBoss.org Statistics, available at stats.jboss.org. We provide JIRA and Subversion statistics for projects hosted at JBoss.org.
JBoss.org Statistics are powered by Kosmos, created by Aron Gombas. They run on JBoss Portal.
They come with a couple of interesting charts, which let you easily find out the most active commiters of [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://www.jboss.org">JBoss.org</a> <a href="http://www.jboss.org/community/jbossORG.html">Team</a> is pleased to release <a href="http://stats.jboss.org">JBoss.org Statistics</a>, available at <a href="http://stats.jboss.org">stats.jboss.org</a>. We provide <a href="http://stats.jboss.org/dev/jira">JIRA</a> and <a href="http://stats.jboss.org/dev/svn">Subversion</a> statistics for projects hosted at JBoss.org.</p>
<p>JBoss.org Statistics are powered by <a href="http://jboss.org/kosmos">Kosmos</a>, created by <a href="http://www.midori.hu">Aron Gombas.</a> They run on <a href="http://jboss.org/jbossportal">JBoss Portal</a>.</p>
<p>They come with a couple of interesting charts, which let you easily find out the most active commiters of the <a href="http://jboss.org/jbossas">JBoss AS</a> project:</p>
<div class="img left" style="width:480px;">
	<a href="http://pawel.wrzesz.cz/blog/wp-content/uploads/2008/08/stats_jbossas.png"><img src="http://pawel.wrzesz.cz/blog/wp-content/uploads/2008/08/stats_jbossas.png" alt="" width="480" height="360" /></a>
	<div>JBoss Application Server - Most Active Commiters</div>
</div>
<p>or how new projects (like <a href="http://jboss.org/envers">Envers</a>) grow in size:</p>
<div class="img alignnone size-medium wp-image-9" style="width:480px;">
	<a href='http://pawel.wrzesz.cz/blog/wp-content/uploads/2008/08/stats_envers.png'><img src="http://pawel.wrzesz.cz/blog/wp-content/uploads/2008/08/stats_envers.png" alt="" width="480" height="360" /></a>
	<div>Envers project - Repository Entry History</div>
</div>
<p>Now, looking at the following chart, guess when the <a href="http://seamframework.org">Seam Freamework</a> releases occurred:</p>
<div class="img alignnone size-medium wp-image-10" style="width:480px;">
	<a href='http://pawel.wrzesz.cz/blog/wp-content/uploads/2008/08/stats_seam.png'><img src="http://pawel.wrzesz.cz/blog/wp-content/uploads/2008/08/stats_seam.png" alt="" width="480" height="360" /></a>
	<div>Seam Framework - Commit History</div>
</div>
<p>Well, 1.0 beta1 was out in September 2005, beta2 in February 2006, 1.0 GA in June. And so on <img src='http://pawel.wrzesz.cz/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> Here is <a href="https://jira.jboss.org/jira/browse/JBSEAM?report=com.atlassian.jira.plugin.system.project:versions-panel&#038;subset=-1">the full list</a>.</p>
<p>On the &#8220;Most Active Files&#8221; diagrams I quickly discovered that usually the most frequently changed files are&#8230; Maven files <img src='http://pawel.wrzesz.cz/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<div class="img alignnone size-medium wp-image-11" style="width:480px;">
	<a href='http://pawel.wrzesz.cz/blog/wp-content/uploads/2008/08/stats_mc.png'><img src="http://pawel.wrzesz.cz/blog/wp-content/uploads/2008/08/stats_mc.png" alt="JBoss Microcontainer - Most Active Files" width="480" height="360" /></a>
	<div>JBoss Microcontainer - Most Active Files</div>
</div>
<p>Needless to say, you will find more at <a href="http://stats.jboss.org">stats.jboss.org</a>.</p>
<p>Enjoy,<br />
-Pawel</p>
]]></content:encoded>
			<wfw:commentRss>http://pawel.wrzesz.cz/blog/?feed=rss2&amp;p=7</wfw:commentRss>
		</item>
		<item>
		<title>Guicy Seam</title>
		<link>http://pawel.wrzesz.cz/blog/?p=4</link>
		<comments>http://pawel.wrzesz.cz/blog/?p=4#comments</comments>
		<pubDate>Fri, 20 Jun 2008 08:50:56 +0000</pubDate>
		<dc:creator>Paweł Wrzeszcz</dc:creator>
		
		<category><![CDATA[Guice]]></category>

		<category><![CDATA[JBoss]]></category>

		<category><![CDATA[Seam]]></category>

		<guid isPermaLink="false">http://pawel.wrzesz.cz/blog/?p=4</guid>
		<description><![CDATA[Introducing @Guice annotation
You may already have heard about  Seam being a &#8220;deep integration framework&#8221; and Google Guice providing lightweight dependency injection. The news is that you can now easily use Seam together with Guice.
The WebBeans specification is built upon concepts from both of those frameworks. Since Seam provides Spring support in the IoC module, [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Introducing @Guice annotation</strong></p>
<p>You may already have heard about  <a title="seam" href="http://seamframework.org">Seam</a> being a &#8220;deep integration framework&#8221; and <a href="http://code.google.com/p/google-guice/">Google Guice</a> providing lightweight dependency injection. The news is that you can now easily use <a title="seam with guice" href="http://wiki.jboss.org/wiki/LabsSeamGuice">Seam together with Guice</a>.</p>
<p>The <a href="http://jcp.org/en/jsr/detail?id=299">WebBeans</a> specification is built upon concepts from both of those frameworks. Since Seam provides <a href="http://docs.jboss.com/seam/2.1.0.A1/reference/en/html/spring.html">Spring support</a> in the IoC module, why not to integrate Guice as well? Thinking this way I have implemented Guice support for Seam.</p>
<p><strong>Quick Howto</strong></p>
<p>The rule is fairly simple - if you want to use Guice injection in your Seam component, annotate it with the <a href="http://anonsvn.jboss.org/repos/labs/labs/jbosslabs/labs-3.0-build/integration/seam-guice/src/main/java/org/jboss/labs/seam/guice/Guice.java">@Guice</a> annotation.</p>
<pre name="code" class="java">

@Name(&quot;myGuicyComponent&quot;)
@Guice
public class MyGuicyComponent
{
  @Inject MyObject myObject
}
</pre>
<p>For all Seam components annotated with the @Guice annotation, Guice injection will be performed automatically.</p>
<p>Great, but wait&#8230; which Guice injector will be used? Well, the one you provide. Just edit components.xml:</p>
<pre name="code" class="xml">

&lt;components
xmlns=&quot;http://jboss.com/products/seam/components&quot;
xmlns:guice=&quot;http://jboss.org/jbosslabs/seam-guice&quot;&gt;
  ...
  &lt;guice:init injector=&quot;#{myGuiceInjector}/&gt;
  ...
&lt;/components&gt;
</pre>
<p><code>myGuiceInjector</code> should be a Seam component that implements the <a href="http://google-guice.googlecode.com/svn/trunk/javadoc/com/google/inject/Injector.html">Injector</a> interface.</p>
<p>You may want to create it <span class="wikiContent">from a list of <a href="http://google-guice.googlecode.com/svn/trunk/javadoc/com/google/inject/Module.html">modules</a>:</span></p>
<pre name="code" class="xml">

&lt;guice:injector name=&quot;myGuiceInjector&quot;&gt;
  &lt;guice:modules&gt;
    &lt;value&gt;com.example.guice.GuiceModule1&lt;/value&gt;
    &lt;value&gt;com.example.guice.GuiceModule2&lt;/value&gt;
  &lt;/guice:modules&gt;
&lt;/guice:injector&gt;
</pre>
<p>Of course you can also use an injector that is already used in other, possibly non-Seam, parts of you application. That was one of the reasons I implemented this integration - to tie other parts of an application that used Guice together with Seam.</p>
<p>To enable Seam and Guice integration, add <a title="seam-guice.jar" href="http://jboss.org/shotoku/downloads/other">seam-guice.jar</a> library to your application. Do not forget to put <a href="http://code.google.com/p/google-guice/downloads/list">guice-1.0.jar</a> in as well <img src='http://pawel.wrzesz.cz/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><strong>Give it a try!</strong></p>
<p>I have included more information on the <a href="http://wiki.jboss.org/wiki/LabsSeamGuice">wiki page</a>. You can <a href="http://jboss.org/shotoku/downloads/other">download seam-guice library</a> and browse the <a title="source code" href="http://anonsvn.jboss.org/repos/labs/labs/jbosslabs/labs-3.0-build/integration/seam-guice/src/main/java/org/jboss/labs/seam/guice/">source code</a>. It is implemented as a simple interceptor. Let me know if you find a bug or a place for improvement.</p>
<p>If you like this solution, you can <a title="seam guice vote" href="http://jira.jboss.com/jira/browse/JBSEAM-3044">vote</a> to make it part of the Seam project. You may also want to have a look at <a href="http://notdennisbyrne.blogspot.com/2007/09/integrating-guice-and-jsf.html">Guice and plain JSF integration</a> and the <a href="http://anonsvn.jboss.org/repos/jbossas/projects/microcontainer/trunk/guice-int/">Guice extension to JBoss Microcontainer</a>.</p>
<p>Many thanks to <a href="http://szimano.org">Tomek</a>, who introduced Guice to me, <a href="http://www.seamframework.org/Community/SeamComponentOutOfBoxGuiceJobssMC">Kamil</a>, for feedback and <a href="http://warski.org">Adam</a>, for encouraging me to blog about it <img src='http://pawel.wrzesz.cz/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>-Paweł</p>
]]></content:encoded>
			<wfw:commentRss>http://pawel.wrzesz.cz/blog/?feed=rss2&amp;p=4</wfw:commentRss>
		</item>
	</channel>
</rss>

