<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Peter Hendriks</title><link>http://blogs.infosupport.com/blogs/peterhe/default.aspx</link><description>beans on the move</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP1 (Build: 31106.3070)</generator><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/PeterHendriks" type="application/rss+xml" /><item><title>Returned from the RSC: back to the rest of the world</title><link>http://feedproxy.google.com/~r/PeterHendriks/~3/PLPRBHp9DYU/returned-from-the-rsc-back-to-the-rest-of-the-world.aspx</link><pubDate>Tue, 09 Jun 2009 10:46:00 GMT</pubDate><guid isPermaLink="false">56f6167b-0c51-4839-ab2d-34653eeb5c9c:16110</guid><dc:creator>peterhe</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.infosupport.com/blogs/peterhe/rsscomments.aspx?PostID=16110</wfw:commentRss><wfw:comment>http://blogs.infosupport.com/blogs/peterhe/commentapi.aspx?PostID=16110</wfw:comment><comments>http://blogs.infosupport.com/blogs/peterhe/archive/2009/06/09/returned-from-the-rsc-back-to-the-rest-of-the-world.aspx#comments</comments><description>&lt;p&gt;Well, the IBM Rational Software Conference 2009 is over again. It was once again a great conference with lots of interesting new developments and insights. The &lt;a href="http://jazz.net/"&gt;Jazz&lt;/a&gt; products are evolving very fast, and they really try to improve on weak points first and adding only features that are really useful and relevant in real life. I really like the &amp;quot;enterprise&amp;quot; focus of RSC, as much fun as dancing robots or spinning cubes are, it&amp;#39;s much more interesting to see how technology and tools can be applied in real scenarios. For fun and entertainment, comedian &lt;a href="http://www.mitchfatel.com/"&gt;Mitch Fatel&lt;/a&gt; cohosted with a &lt;a href="http://www.metacafe.com/watch/2702226/ibm_rsc2009_as_real_as_it_gets_reality_show/"&gt;reality show&lt;/a&gt; using real developers. Basically, just like on tv, the show was pretty corny, but fun when the developers started arguing and acting like idiots to win the discussion. Those developers were also attending/speaking, and it was funny to see some guy getting an evil eye all the time while doing lunch (tv will do that to you). The guys from &lt;a href="http://dsc.discovery.com/fansites/mythbusters/mythbusters.html"&gt;Mythbusters&lt;/a&gt; were special guests, although it was a shame that they could not blow anything up on stage because of the fire department regulations. They did provide some insight on risk management, the process of creating experiments, and space ships fueled with poo.&lt;/p&gt;
&lt;p&gt;When I was at the conference, I completely disconnected from the rest of the world to focus on all the content. Now that I am back, I am reading up on all the other interesting stuff that happened the last few weeks. European elections, &lt;a href="http://java.sun.com/javaone/"&gt;JavaOne&lt;/a&gt;, &lt;a href="http://code.google.com/events/io/"&gt;Google I/O&lt;/a&gt;, a lot happened in such a short time. Google is moving more and more into the Java space, with the &lt;a href="http://code.google.com/appengine/docs/java/overview.html"&gt;AppEngine Java&lt;/a&gt; offering and the exciting new &lt;a href="http://wave.google.com/"&gt;Google Wave&lt;/a&gt; initiative, fully based on &lt;a href="http://code.google.com/webtoolkit/"&gt;GWT&lt;/a&gt;. The Wave demos are a great showcase for GWT. A lot of the &lt;a href="http://code.google.com/events/io/sessions.html"&gt;Google I/O sessions&lt;/a&gt; are already up on the web, and I&amp;#39;ll soon here from my colleagues that visited JavaOne what happened over there. It&amp;#39;s great that despite the economic crisis, innovation still happens!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.infosupport.com/aggbug.aspx?PostID=16110" width="1" height="1"&gt;</description><category domain="http://blogs.infosupport.com/blogs/peterhe/archive/tags/Java/default.aspx">Java</category><category domain="http://blogs.infosupport.com/blogs/peterhe/archive/tags/Jazz/default.aspx">Jazz</category><category domain="http://blogs.infosupport.com/blogs/peterhe/archive/tags/RSDC/default.aspx">RSDC</category><feedburner:origLink>http://blogs.infosupport.com/blogs/peterhe/archive/2009/06/09/returned-from-the-rsc-back-to-the-rest-of-the-world.aspx</feedburner:origLink></item><item><title>Rational Software Conference 2009: Real, Smart and Green</title><link>http://feedproxy.google.com/~r/PeterHendriks/~3/sBFmpuuMGnw/rational-software-conference-2009-real-smart-and-green.aspx</link><pubDate>Tue, 02 Jun 2009 21:13:00 GMT</pubDate><guid isPermaLink="false">56f6167b-0c51-4839-ab2d-34653eeb5c9c:16062</guid><dc:creator>peterhe</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.infosupport.com/blogs/peterhe/rsscomments.aspx?PostID=16062</wfw:commentRss><wfw:comment>http://blogs.infosupport.com/blogs/peterhe/commentapi.aspx?PostID=16062</wfw:comment><comments>http://blogs.infosupport.com/blogs/peterhe/archive/2009/06/02/rational-software-conference-2009-real-smart-and-green.aspx#comments</comments><description>&lt;p&gt;After a year, we&amp;#39;re back in Orlando, home of Mickey Mouse, roller coasters, hamburgers and Coca Cola, and of course the IBM Rational Software Conference 2009. The conference is already well under way, it started last Sunday, but with an ever increasing count of sessions and events, my schedule does not permit a lot of blogging. The themes of the conference are Real, Smart and Green. Basically, Real is about practical, concrete value, Smart is about innovation and new areas of sofware usage, and Green is not wasting paper at the conference. The green part seems a bit funny when you hear it at the keynote: big plasma screens everywhere, airconditioning that requires wearing a sweater, even though outside it is 40 degrees celcius, and then a big show about how paper is saved and plastic bottles are banished.&lt;/p&gt;
&lt;p&gt;Several new announcements were made. IBM is coming with a new cloud initiative, which should support hosting all kinds of customer applications, as well as the Rational Jazz&amp;nbsp;based tools. This means new opportunities for management, monitoring and metering, as well as hosting and licensing models. The announcement is still very fresh, but it is an interesting model that will be interesting for lots of people, including smaller companies that don&amp;#39;t want the hassle of managing infrastructure, or really big organizations that would like additional metering and governance for internal billing of server usage.&lt;/p&gt;
&lt;p&gt;Also, IBM is expanding the portfolio with even more tools. The Tivoli systems management tools will now connect more and more with Rational, bridging the gap&amp;nbsp;between software development and the production support organization. And Rational Insight will provide &amp;quot;executive dashboards&amp;quot; for management to bring together metrics from all kinds of tools and data warehouses, with analysis built in to assess the health of projects at a broad level.&lt;/p&gt;
&lt;p&gt;Of course, lots of content on the development of existing products as well. Team Concert 2.0 has some exiting new features, and the work on the Jazz foundation means that the tooling integration will push to new levels in the upcoming Quality Manager and Requirements Composer releases. The Open Services Lifecycle Collaboration (OSLC) specification was just finalized at 1.0 last week. RTC 2.0 will comply with it, and there is a OSLC adapter for ClearQuest available as well. Interestingly, the Mylyn guys added support for OSLC to the Mylyn Eclipse plug-in. This means that everyone that supports OSLC will directly work with Mylyn. For Mylyn and the adopters, this could be a real winner, because right now, there are about 29 different adapters for Mylyn to support all kinds of task repositories.&lt;/p&gt;
&lt;p&gt;Several other interesting things going on as well in the &amp;quot;agile&amp;quot; mentoring and guidance space. Adopting some of the agile ideas can be very hard to do, and there are several&amp;nbsp;experienced speakers here with great ideas about moving agile forward, without being too naieve about it. All in all, a great conference so far, back to my&amp;nbsp;busy schedule for the next sessions!&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.infosupport.com/aggbug.aspx?PostID=16062" width="1" height="1"&gt;</description><category domain="http://blogs.infosupport.com/blogs/peterhe/archive/tags/Java/default.aspx">Java</category><category domain="http://blogs.infosupport.com/blogs/peterhe/archive/tags/Agile/default.aspx">Agile</category><category domain="http://blogs.infosupport.com/blogs/peterhe/archive/tags/rup/default.aspx">rup</category><category domain="http://blogs.infosupport.com/blogs/peterhe/archive/tags/Mylyn/default.aspx">Mylyn</category><category domain="http://blogs.infosupport.com/blogs/peterhe/archive/tags/Jazz/default.aspx">Jazz</category><category domain="http://blogs.infosupport.com/blogs/peterhe/archive/tags/IBM/default.aspx">IBM</category><category domain="http://blogs.infosupport.com/blogs/peterhe/archive/tags/RSDC/default.aspx">RSDC</category><feedburner:origLink>http://blogs.infosupport.com/blogs/peterhe/archive/2009/06/02/rational-software-conference-2009-real-smart-and-green.aspx</feedburner:origLink></item><item><title>Jazz 2.0 release candidate</title><link>http://feedproxy.google.com/~r/PeterHendriks/~3/lTiwDSKx9m8/jazz-2-0-release-candidate.aspx</link><pubDate>Sun, 17 May 2009 17:05:00 GMT</pubDate><guid isPermaLink="false">56f6167b-0c51-4839-ab2d-34653eeb5c9c:15905</guid><dc:creator>peterhe</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.infosupport.com/blogs/peterhe/rsscomments.aspx?PostID=15905</wfw:commentRss><wfw:comment>http://blogs.infosupport.com/blogs/peterhe/commentapi.aspx?PostID=15905</wfw:comment><comments>http://blogs.infosupport.com/blogs/peterhe/archive/2009/05/17/jazz-2-0-release-candidate.aspx#comments</comments><description>&lt;p&gt;RC1 for Rational Team Concert (RTC) 2.0 was released &lt;a href="https://jazz.net/downloads/rational-team-concert/milestones/2.0RC1"&gt;yesterday&lt;/a&gt;. Even though it&amp;#39;s only been a year since the 1.0 release, RTC got a lot of updates. First of all, there is now an Enterprise edition, which allows an unlimited amount of developers on a single server instance, a big improvement for large organizations with more than 250 developers. Cross-server and cross-project linking has been improved and formalized, one of the user-visible capabilities is that you can now create dashboards that contain information of several projects. This allows several interesting scenarios, such as a &amp;quot;Project of Projects&amp;quot; for a Project Office in a large orginization, or different companies with their own ALM deployments working together through the shared Jazz link.&lt;/p&gt;
&lt;p&gt;All of the core components got some serious updates, but the Agile Planning Tool got the best screenshots. First, a new Standard-only feature calculates risk in the schedule based on the estimates and the planned dates:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://jazz.net/downloads/pages/rational-team-concert/2.0/M3/images/apt_tempo.png" style="max-width:550px;" border="0" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Another fantastic feature, available in all RTC editions, is the &amp;quot;taskboard&amp;quot; view mode. This basically gives you a Scrum-sticky notes overview of the tasks. It looks really great on my big widescreen monitor at home:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://jazz.net/downloads/pages/rational-team-concert/2.0/M1/images/taskboard.png" style="max-width:550px;" border="0" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;There are a lot more new features, check out the &lt;a href="https://jazz.net/downloads/rational-team-concert/milestones/2.0M3?p=news"&gt;new &amp;amp; noteworthy&lt;/a&gt; notes if you are interested. It&amp;#39;s not just brand new features though, in the different RTC &amp;quot;editions&amp;quot; (free, small, org, huge), a lot of the checkmarks got to the left side. This means the Express versions now are a much improved option for a quick single-project off-the-shelf solution. If you haven&amp;#39;t given RTC 2.0 some attention yet, be sure to take a look!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.infosupport.com/aggbug.aspx?PostID=15905" width="1" height="1"&gt;</description><category domain="http://blogs.infosupport.com/blogs/peterhe/archive/tags/Java/default.aspx">Java</category><category domain="http://blogs.infosupport.com/blogs/peterhe/archive/tags/Jazz/default.aspx">Jazz</category><category domain="http://blogs.infosupport.com/blogs/peterhe/archive/tags/IBM/default.aspx">IBM</category><category domain="http://blogs.infosupport.com/blogs/peterhe/archive/tags/Rational/default.aspx">Rational</category><feedburner:origLink>http://blogs.infosupport.com/blogs/peterhe/archive/2009/05/17/jazz-2-0-release-candidate.aspx</feedburner:origLink></item><item><title>Why tools matter</title><link>http://feedproxy.google.com/~r/PeterHendriks/~3/dfRcEEpXyso/why-tools-matter.aspx</link><pubDate>Sun, 03 May 2009 15:34:00 GMT</pubDate><guid isPermaLink="false">56f6167b-0c51-4839-ab2d-34653eeb5c9c:15784</guid><dc:creator>peterhe</dc:creator><slash:comments>2</slash:comments><wfw:commentRss>http://blogs.infosupport.com/blogs/peterhe/rsscomments.aspx?PostID=15784</wfw:commentRss><wfw:comment>http://blogs.infosupport.com/blogs/peterhe/commentapi.aspx?PostID=15784</wfw:comment><comments>http://blogs.infosupport.com/blogs/peterhe/archive/2009/05/03/why-tools-matter.aspx#comments</comments><description>&lt;p&gt;Improving software development productivity is a much discussed topic, with many different schools of thought. Some will say you need to get people who can &amp;quot;&lt;a title="Joel on software: Hitting the High Notes" href="http://www.joelonsoftware.com/articles/HighNotes.html"&gt;Hit the High Notes&lt;/a&gt;&amp;quot;, others will focus on &lt;a href="http://www.infoq.com/presentations/teamwork-an-individual-skill"&gt;teamwork dynamics&lt;/a&gt; as a means to ultimate productivity, while some will emphasize that &lt;a title="IBM RTC ROI Calculator" href="http://www-01.ibm.com/software/rational/rtc/roi/"&gt;using the best tool&lt;/a&gt; out there is critical. A lot of these camps will often downplay the others, stating that their focus on productivity is the only one that really matters.&lt;/p&gt;
&lt;p&gt;I think all aspects matter a lot, and depending on the situation, you should focus on different aspects. Small teams vs big teams vs novice teams vs experienced vs long vs short projects, etc. The important thing to recognize is the relations between them and how they compound or conflict with each other.&lt;/p&gt;
&lt;p&gt;Tools play an important role here (with tools, I mean &amp;quot;automated&amp;quot; support, such as an IDE, build tool, version control, etc.). In my opinion, tools can determine the bandwidth of operational productivity. In other words, tooling will play a role in determining the barrier to entry to perform certain activities, and the maximum theoretical performance a team member can reach using the tool.&lt;/p&gt;
&lt;p&gt;A nice example is creating a build. If properly tooled, everyone should be able to start an automated build with the press of a button (or even better, it just happens). Otherwise, creating a build may involve several complex steps, requiring specific knowledge and coordination, and is likely to be executed by a single team member as an &amp;quot;integrator&amp;quot; only. A properly automated build reduces the barrier to entry for the task of creating a build.&lt;/p&gt;
&lt;p&gt;If a version control system does not support certain features (like atomic commit, for instance), or is very slow, this may limit the bandwidth of team members using the tool. Limited tool support incurs overhead in the form of error-prone behavior, complex workarounds, and increased waiting time.&lt;/p&gt;
&lt;p&gt;Of course, tools are not the only potentially governing boundary factors for productivity. Just simple pen and paper are a great drawing tool, easy to use, very fast, and very mobile. On the other hand, it is difficult to navigate and search through paper drawings, or maintain them when something changes. Tools should always be viewed in the context of a given task and situation. &lt;/p&gt;
&lt;p&gt;I tried to summarize this using this very sophisticated picture:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.infosupport.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/peterhe/toolproductivity.png"&gt;&lt;img src="http://blogs.infosupport.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/peterhe/toolproductivity.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.infosupport.com/aggbug.aspx?PostID=15784" width="1" height="1"&gt;</description><category domain="http://blogs.infosupport.com/blogs/peterhe/archive/tags/software+development/default.aspx">software development</category><feedburner:origLink>http://blogs.infosupport.com/blogs/peterhe/archive/2009/05/03/why-tools-matter.aspx</feedburner:origLink></item><item><title>J-Spring 2009, full of surprises</title><link>http://feedproxy.google.com/~r/PeterHendriks/~3/-FpUEz9xgdg/j-spring-2009-full-of-surprises.aspx</link><pubDate>Wed, 15 Apr 2009 18:20:00 GMT</pubDate><guid isPermaLink="false">56f6167b-0c51-4839-ab2d-34653eeb5c9c:15643</guid><dc:creator>peterhe</dc:creator><slash:comments>3</slash:comments><wfw:commentRss>http://blogs.infosupport.com/blogs/peterhe/rsscomments.aspx?PostID=15643</wfw:commentRss><wfw:comment>http://blogs.infosupport.com/blogs/peterhe/commentapi.aspx?PostID=15643</wfw:comment><comments>http://blogs.infosupport.com/blogs/peterhe/archive/2009/04/15/j-spring-2009-full-of-surprises.aspx#comments</comments><description>&lt;p&gt;Well, it&amp;#39;s spring again, so time for another &lt;a href="http://www.nljug.org/"&gt;NLJUG&lt;/a&gt; &lt;a href="http://www.nljug.org/pages/events/content/jspring_2009/"&gt;J-Spring&lt;/a&gt; event! The NLJUG J-Spring/J-Fall is the biggest Java event in the Netherlands, a one day conference held in Bussum. I am a regular visitor on this conference, interesting sessions, a good indication of the Dutch Java scene, and it&amp;#39;s great to meet up fellow Java developers again. The conference was &amp;quot;sold out&amp;quot; (entrance is free to NLJUG members), but because it was nice weather outside, it was less crowded inside during the breaks than usual.&lt;/p&gt;
&lt;h3&gt;Data Context Interaction&lt;/h3&gt;
&lt;p&gt;For me, the conference started out with a talk on &amp;quot;&lt;a href="http://www.artima.com/articles/dci_vision.html"&gt;Data Context Interaction&lt;/a&gt;&amp;quot; (DCI). Basically, this is supposed to be solving the problem that &amp;quot;typical&amp;quot; object oriented (OO) design mixes all kinds of stuff inside your domain objects. DCI completely separates each interaction, using simple techniques like a decorator, or a full-blown new programming environment called &lt;a href="http://www.objectteams.org/"&gt;Object Teams&lt;/a&gt; (unfortunately, only the latter was demonstrated). I had a bit of trouble with the initial problem statement. In &amp;quot;good&amp;quot; OO principles (like &lt;a href="http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod"&gt;SOLID&lt;/a&gt;, for instance), mixing unrelated stuff in the same object was already considered very bad! I agree with the stuff DCI proposes, but I do OO design this way in plain Java for years already, without needing fancy new languages or confusing new acronyms. As a research effort though, I am really interested if something useful will evolve from this new emphasis on a cleaner separation.&lt;/p&gt;
&lt;h3&gt;Web Beans&lt;br /&gt;&lt;/h3&gt;
&lt;p&gt;Next was a talk on the &lt;a href="http://jcp.org/en/jsr/detail?id=299"&gt;JSR-299&lt;/a&gt; &amp;quot;Web Beans&amp;quot; specification. Basically Web Beans is the best of &lt;a href="http://code.google.com/p/google-guice/"&gt;Guice&lt;/a&gt; and &lt;a href="http://www.jboss.com/products/seam/"&gt;Seam&lt;/a&gt; (both inspired by &lt;a href="http://www.springsource.org/about"&gt;Spring&lt;/a&gt;), mixed together in a single &lt;a href="http://en.wikipedia.org/wiki/Dependency_injection"&gt;Dependency Injection&lt;/a&gt; standard. This talk was a real meat grinder, the speaker had little mercy for any listener that did not have intimate knowledge of Seam/Guice, and crammed the entire spec in the talk (and the spec is pretty big). Fortunately, I did know enough about Guice and Seam and managed to keep up the entire session. Web Beans will be great when it&amp;#39;s done (no date is set on that, but not likely this year), especially if it works on Java SE as well. It&amp;#39;s a nice clean spec so far: easier than Spring and Seam, more powerful and complete than Guice.&lt;/p&gt;
&lt;h3&gt;Pragmatic Model Driven&lt;br /&gt;&lt;/h3&gt;
&lt;p&gt;The revival of model driven development was apparent on this J-Spring too. &lt;a href="http://www.nljug.org/pages/events/content/jspring_2009/sessions/00002/"&gt;Jos Warmer&lt;/a&gt; did the afternoon keynote on a new framework called &lt;a href="http://www.mod4j.org/"&gt;Mod4J&lt;/a&gt;, which is basically an out-of-the-box DSL and code generation tool to work model driven using predefined DSLs. Another talk by &lt;a href="http://www.nljug.org/pages/events/content/jspring_2009/sessions/00029/"&gt;Richard and Tony&lt;/a&gt; in the afternoon relied on a more low-tech technique by using out-of-the-box &lt;a href="http://www.sparxsystems.com.au/products/ea/index.html"&gt;Enterprise Architect&lt;/a&gt; capabilities in conjunction with &lt;a href="http://freemarker.org/"&gt;Freemarker&lt;/a&gt; templates. Both approaches each have their pros and cons, but both did model driven only for the simple boilerplate code, no ambition to replace coding completely, or rely on very abstract models written by non-programmers. Very interesting stuff, meta-models seem pretty easy, especially in Enterprise Architect, so basically, this stuff relies on easy to understand code generators to be accessible to the average programmer. I talked a bit with some of the model driven guys, but since they have been investigating and experimenting with this stuff for years, to them, everything seems easy.&lt;/p&gt;
&lt;h3&gt;The demise of the Swing JSRs&lt;br /&gt;&lt;/h3&gt;
&lt;p&gt;Finally, I visited a talk on the &lt;a href="http://jcp.org/en/jsr/detail?id=296"&gt;JSR-296&lt;/a&gt; &amp;quot;Swing Application Framework&amp;quot; spec, by Karsten &amp;quot;&lt;a href="http://www.jgoodies.com/"&gt;JGoodies&lt;/a&gt;&amp;quot; Lentzsch. Karsten is a great presenter and a real Swing guru so I never miss one of his talks. This talk was especially interesting though, because although he did explain the spec, he basically said that it was dead. Sun re-prioritized on JavaFX, and abandoned some important Swing JSR specifications. According to Lentzsch, you&amp;#39;d be better off right now if you roll your own framework for serious Swing applications instead. It&amp;#39;s surprising to hear a member of a spec expert group say: don&amp;#39;t use this spec! Refreshingly honest though, which is loads better than &lt;a href="http://blogs.sun.com/theplanetarium/entry/the_future_of_swing"&gt;hollow promises of Sun&lt;/a&gt; on this subject.&lt;/p&gt;
&lt;p&gt;Still, the JSR is a great inspiration for solving common problems, although Karsten pointed out some things he did not agree upon (like resource bundle injection). Karsten did say some nice things about &lt;a href="http://wiki.eclipse.org/index.php/Rich_Client_Platform"&gt;Eclipse RCP&lt;/a&gt; too, stating that as the only real alternative for plain Swing for now, interesting to hear from a Swing guru (both Netbeans RCP and JavaFX were mentioned). Finally, he did mention the Eclipse JFace data binding too, as a cleaner and more powerful alternative to the &lt;a href="https://beansbinding.dev.java.net/"&gt;JSR 295&lt;/a&gt; &amp;quot;Beans Binding&amp;quot; spec (dead now, too). Since JFace data binding is pluggable, it can be used outside Eclipse as well, and Karsten mentioned the &lt;a href="http://code.google.com/p/uface/"&gt;UFace&lt;/a&gt; project (Swing and GWT bindings) as something very interesting to watch in this space. UFace, though, has not released any downloads as of yet, so right now, you have the choice between a JSR that is dead, a new generic framework that is not yet available, or just plain old JGoodies for Swing data binding.&lt;/p&gt;
&lt;p&gt;All in all, an interesting and surprising day at J-Spring. See you next J-Fall!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.infosupport.com/aggbug.aspx?PostID=15643" width="1" height="1"&gt;</description><category domain="http://blogs.infosupport.com/blogs/peterhe/archive/tags/Java/default.aspx">Java</category><category domain="http://blogs.infosupport.com/blogs/peterhe/archive/tags/J-Spring/default.aspx">J-Spring</category><category domain="http://blogs.infosupport.com/blogs/peterhe/archive/tags/NLJUG/default.aspx">NLJUG</category><feedburner:origLink>http://blogs.infosupport.com/blogs/peterhe/archive/2009/04/15/j-spring-2009-full-of-surprises.aspx</feedburner:origLink></item><item><title>Google AppEngine for Java: the cloud keeps getting bigger</title><link>http://feedproxy.google.com/~r/PeterHendriks/~3/uqst2ZzTbGs/google-appengine-for-java-the-cloud-keeps-getting-bigger.aspx</link><pubDate>Wed, 08 Apr 2009 19:06:00 GMT</pubDate><guid isPermaLink="false">56f6167b-0c51-4839-ab2d-34653eeb5c9c:15595</guid><dc:creator>peterhe</dc:creator><slash:comments>2</slash:comments><wfw:commentRss>http://blogs.infosupport.com/blogs/peterhe/rsscomments.aspx?PostID=15595</wfw:commentRss><wfw:comment>http://blogs.infosupport.com/blogs/peterhe/commentapi.aspx?PostID=15595</wfw:comment><comments>http://blogs.infosupport.com/blogs/peterhe/archive/2009/04/08/google-appengine-for-java-the-cloud-keeps-getting-bigger.aspx#comments</comments><description>&lt;p&gt;Google joined the cloud computing turf a year ago with &amp;quot;&lt;a href="http://code.google.com/appengine/"&gt;Google AppEngine&lt;/a&gt;&amp;quot;, a framework to enable relatively simple applications to be deployed directly in the cloud. Google AppEngine only supported Python as the programming language, and required the use of very specific API code, that basically meant that if you wrote something for AppEngine, it would not run anywhere else.&lt;/p&gt;
&lt;p&gt;Since its inception, Google always Java promised&amp;nbsp;support for AppEngine. Today, Google announced the first preview for Google AppEngine for Java. Interestingly, unlike the Python API, the Java edition of AppEngine uses a lot of Java EE standards: WAR, JPA, Servlets, JSP, etc. This means that it is easy to program if you already know Java EE, and it is easier to migrate to or away from AppEngine. The Java edition promises support for data storage, authentication, in-memory-caching and probably other features of AppEngine, like scheduling, will be supported as well. The Google Web Toolkit (GWT), Google&amp;#39;s AJAX Web framework for Java, can be used in AppEngine too. See this &lt;a href="http://www.youtube.com/watch?v=P3GT4-m_6RQ"&gt;intro movie&lt;/a&gt; for more information (captioned, no need for sound).&lt;/p&gt;
&lt;p&gt;The AppEngine Java preview includes an SDK, complete with Eclipse support and a local sandbox environment. The &amp;quot;preview&amp;quot; program just got started, so there are limited slots for hosting applications. Claim your slot on the &lt;a href="http://code.google.com/appengine/"&gt;AppEngine page&lt;/a&gt; and start writing some cool Java apps!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.infosupport.com/aggbug.aspx?PostID=15595" width="1" height="1"&gt;</description><category domain="http://blogs.infosupport.com/blogs/peterhe/archive/tags/Java/default.aspx">Java</category><category domain="http://blogs.infosupport.com/blogs/peterhe/archive/tags/Google/default.aspx">Google</category><category domain="http://blogs.infosupport.com/blogs/peterhe/archive/tags/AppEngine/default.aspx">AppEngine</category><feedburner:origLink>http://blogs.infosupport.com/blogs/peterhe/archive/2009/04/08/google-appengine-for-java-the-cloud-keeps-getting-bigger.aspx</feedburner:origLink></item><item><title>The user interface beyond Star Trek</title><link>http://feedproxy.google.com/~r/PeterHendriks/~3/PxI06TXZe_Q/The-user-interface-beyond-Star-Trek.aspx</link><pubDate>Sun, 15 Mar 2009 18:07:00 GMT</pubDate><guid isPermaLink="false">56f6167b-0c51-4839-ab2d-34653eeb5c9c:15300</guid><dc:creator>peterhe</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://blogs.infosupport.com/blogs/peterhe/rsscomments.aspx?PostID=15300</wfw:commentRss><wfw:comment>http://blogs.infosupport.com/blogs/peterhe/commentapi.aspx?PostID=15300</wfw:comment><comments>http://blogs.infosupport.com/blogs/peterhe/archive/2009/03/15/The-user-interface-beyond-Star-Trek.aspx#comments</comments><description>Everyone knows about Star Trek and the science fiction genre. Science fiction plays with future technologies that do not exist yet. While not everything in Star Trek has now been invented, when it comes to user interfaces, we are pretty close. We now have touch-screen, very small computers, voice commands and rich real-time 3d visualization (real life proof of this: the &lt;a href="http://www.youtube.com/watch?v=U67CJqLUjA0" title="Crazy guy built a Star Trek flat"&gt;Star Trek Flat&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.pranavmistry.com/projects/sixthsense/images/full/sixthsense07.jpg"&gt;&lt;img align="right" alt="Use your own hand as an interface (click for full screen)" height="113" src="http://www.pranavmistry.com/projects/sixthsense/images/thumb/sixthsense07.jpg" title="Use your own hand as an interface (click for full screen)" width="150" /&gt;&lt;/a&gt;Well, Star Trek will need to update real fast. The computer industry is still rapidly evolving, and pretty soon, the post-Star Trek user interfaces might emerge. A great example is the &lt;a href="http://www.pranavmistry.com/projects/sixthsense/" title="Sixth Sense MIT research project page"&gt;Sixth Sense&lt;/a&gt; research project. This is a portable image recognition and projecting device, that provides in-context display and can be used using gestures, projected surface interaction, or simply holding objects in front of it. See this &lt;a href="http://www.ted.com/talks/pattie_maes_demos_the_sixth_sense.html" title="Unveiling the Sixth Sense"&gt;TED presentation&lt;/a&gt; for more information and some great demos. It will be interesting, when this becomes mainstream, how much of current UI frameworks can be reused to build the next-gen interfaces.&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.infosupport.com/aggbug.aspx?PostID=15300" width="1" height="1"&gt;</description><feedburner:origLink>http://blogs.infosupport.com/blogs/peterhe/archive/2009/03/15/The-user-interface-beyond-Star-Trek.aspx</feedburner:origLink></item><item><title>Manifesto for Software Craftsmanship</title><link>http://feedproxy.google.com/~r/PeterHendriks/~3/MvaLZCQvzeY/Manifesto-for-Software-Craftsmanship.aspx</link><pubDate>Sun, 08 Mar 2009 14:06:00 GMT</pubDate><guid isPermaLink="false">56f6167b-0c51-4839-ab2d-34653eeb5c9c:15218</guid><dc:creator>peterhe</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.infosupport.com/blogs/peterhe/rsscomments.aspx?PostID=15218</wfw:commentRss><wfw:comment>http://blogs.infosupport.com/blogs/peterhe/commentapi.aspx?PostID=15218</wfw:comment><comments>http://blogs.infosupport.com/blogs/peterhe/archive/2009/03/08/Manifesto-for-Software-Craftsmanship.aspx#comments</comments><description>&lt;p&gt;By now, everyone in the software development industry probably heard about &amp;quot;agile&amp;quot; development, formally described in the &lt;a href="http://agilemanifesto.org/"&gt;Agile Manifesto&lt;/a&gt;. Agile was a rebellious response to the continuing push of vendor-driven processes and procedures, which seemed to balloon in its efforts to describe every complex artifact and activity, preventing professionals to think up more simple solutions for the problems at hand. &lt;/p&gt;&lt;p&gt;The agile manifesto is a call to action to emphasize several points the big-process guys seemed less important. It&amp;#39;s about relying less on a big tell-me-all-do-nothing-without-it process, complex tooling, huge documents without any real proof, a detailed contract and planning set in stone. Agile states that these concepts are at odds with the very nature of software development, yet were at the time (and still are at a lot of places) commonly practiced.&lt;/p&gt;&lt;p&gt;Whether agile is right about this (I think it is) has always been controversial and a source of heated discussions. This seems strange: if you consider &amp;quot;change&amp;quot; in a software development project as inevitable as &amp;quot;gravity&amp;quot; in the real world, you would expect no real debate on something so obvious. However, unlike &lt;a href="http://www.trivia-library.com/b/sir-isaac-newton-theory-of-gravity-and-the-falling-apple.htm" title="Newton theory of gravity"&gt;falling apples&lt;/a&gt;, most problems and forces in software development are more abstract and subtle, and solutions often seem counter-intuitive.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Another controversy in the software development industry is about quality. To a lot of people, quality costs money, and lower quality equals cheaper production equals money saved. This very simplistic thinking leads to spending less on qualified developers, less solid testing and/or improving based on test results, less on learning, coaching and/or improving, less on usability and creative, but risky solutions.&lt;/p&gt;&lt;p&gt;Again, the opposite is true. High quality means better efficiency because of the extra reuse opportunities, a more predictable schedule (less meetings and re-prioritizing efforts), less re-work on testing, fixing bugs, and testing again, and higher return on investment in production, because of better features, less failures and greater user satisfaction. Actually, the best way to waste money is try to achieve the lowest quality possible, something the &lt;a href="http://en.wikipedia.org/wiki/Lean_manufacturing" title="Lean manufacturing"&gt;manufacturing industry&lt;/a&gt; already knows for decades.&lt;/p&gt;&lt;p&gt;To emphasize the value of quality and a professional attitude when developing software, the &lt;a href="http://manifesto.softwarecraftsmanship.org/main" title="Manifesto homepage"&gt;Manifesto for Software Craftsmanship &lt;/a&gt;has been created by the &lt;a href="http://groups.google.com/group/software_craftsmanship?lnk=srg"&gt;software craftsmanship group&lt;/a&gt;. Based on the Agile Manifesto, this manifesto declares that in order to be agile, you have to be professional. Probably, like the agile manifesto, it will lead to some heated discussions, with dogmatic enthusiasm and stubborn rejections. I think it&amp;#39;s a just cause though: it&amp;#39;s not just what something costs by the hour, but also what it delivers in return. If you agree that craftsmanship matters when developing software, sign the manifesto to show support!&lt;br /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.infosupport.com/aggbug.aspx?PostID=15218" width="1" height="1"&gt;</description><category domain="http://blogs.infosupport.com/blogs/peterhe/archive/tags/Agile/default.aspx">Agile</category><category domain="http://blogs.infosupport.com/blogs/peterhe/archive/tags/Process/default.aspx">Process</category><category domain="http://blogs.infosupport.com/blogs/peterhe/archive/tags/software+development/default.aspx">software development</category><category domain="http://blogs.infosupport.com/blogs/peterhe/archive/tags/practices/default.aspx">practices</category><category domain="http://blogs.infosupport.com/blogs/peterhe/archive/tags/craftsmanship/default.aspx">craftsmanship</category><feedburner:origLink>http://blogs.infosupport.com/blogs/peterhe/archive/2009/03/08/Manifesto-for-Software-Craftsmanship.aspx</feedburner:origLink></item><item><title>Java 7 and the Elvis operator</title><link>http://feedproxy.google.com/~r/PeterHendriks/~3/LpCYW-ebE68/Java-7-and-the-Elvis-operator.aspx</link><pubDate>Mon, 02 Mar 2009 18:53:00 GMT</pubDate><guid isPermaLink="false">56f6167b-0c51-4839-ab2d-34653eeb5c9c:15165</guid><dc:creator>peterhe</dc:creator><slash:comments>4</slash:comments><wfw:commentRss>http://blogs.infosupport.com/blogs/peterhe/rsscomments.aspx?PostID=15165</wfw:commentRss><wfw:comment>http://blogs.infosupport.com/blogs/peterhe/commentapi.aspx?PostID=15165</wfw:comment><comments>http://blogs.infosupport.com/blogs/peterhe/archive/2009/03/02/Java-7-and-the-Elvis-operator.aspx#comments</comments><description>
&lt;p&gt;With Java 6 out for quite a while now, Java 7 is finally looming closer for a release due in early 2010. Most of the big changes are either scrapped (like support for closures or a standard module system), or actually pushed into a Java 6 update (the new &lt;a href="http://blogs.sun.com/SDNProgramNews/entry/java_se_6u14_early_access"&gt;G1 garbage collector&lt;/a&gt; is coming in update 14).&lt;/p&gt;
&lt;p&gt;Not all is lost on Java 7 though. Along with several API updates and JVM/tooling improvements, there are also some language changes expected. These are gathered in &amp;quot;&lt;a href="http://openjdk.java.net/projects/coin/"&gt;Project Coin&lt;/a&gt;&amp;quot;. The clever name implies that each proposal involves &amp;quot;small&amp;quot; change, and refers to the proverb &amp;quot;to coin a phrase&amp;quot;.&lt;/p&gt;

&lt;p&gt;One of the proposals is the new &lt;a href="http://docs.google.com/Doc?docid=ddb3zt39_78frdf87dc&amp;amp;hl=en"&gt;&amp;quot;Elvis&amp;quot; operator&lt;/a&gt;. It involves using the question mark as a shorthand to check for null scenarios. One of the expressions is this one: &lt;br /&gt;&lt;/p&gt;&lt;h1&gt;?:&lt;/h1&gt;If you look sideways, it&amp;#39;s Elvis! I really am not that fond about this kind of programming, but having something called the Elvis operator as a new feature is reason enough for me to migrate asap. ;) I hope other language additions will get a similarly cool name.&lt;br /&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.infosupport.com/aggbug.aspx?PostID=15165" width="1" height="1"&gt;</description><category domain="http://blogs.infosupport.com/blogs/peterhe/archive/tags/Java/default.aspx">Java</category><feedburner:origLink>http://blogs.infosupport.com/blogs/peterhe/archive/2009/03/02/Java-7-and-the-Elvis-operator.aspx</feedburner:origLink></item><item><title>JUnit to the Max</title><link>http://feedproxy.google.com/~r/PeterHendriks/~3/I4ObBek_HpI/JUnit-to-the-Max.aspx</link><pubDate>Mon, 09 Feb 2009 20:08:00 GMT</pubDate><guid isPermaLink="false">56f6167b-0c51-4839-ab2d-34653eeb5c9c:15069</guid><dc:creator>peterhe</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.infosupport.com/blogs/peterhe/rsscomments.aspx?PostID=15069</wfw:commentRss><wfw:comment>http://blogs.infosupport.com/blogs/peterhe/commentapi.aspx?PostID=15069</wfw:comment><comments>http://blogs.infosupport.com/blogs/peterhe/archive/2009/02/09/JUnit-to-the-Max.aspx#comments</comments><description>I just stumbled upon a cool new project from JUnit grandfather Kent &amp;quot;XP&amp;quot; Beck. It&amp;#39;s called &lt;a href="http://www.junitmax.com/junitmax/subscribe.html" title="JUnit Max subscribe page"&gt;JUnit Max&lt;/a&gt; and basically introduces the &amp;quot;Run tests on save&amp;quot; feature in Eclipse. This means you don&amp;#39;t have to think about running tests, they always run. The tests are run in fail-first order, so if you&amp;#39;re in the change/retry cycle of fixing a test you get immediate feedback. See the link for a slidecast explaining the product. The licensing model for the beta is a bit strange: 2 dollars a month! I think it&amp;#39;s a great concept though: it promotes more running of tests and adds another argument to why unit tests should run isolated and as fast as possible.&lt;br /&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.infosupport.com/aggbug.aspx?PostID=15069" width="1" height="1"&gt;</description><category domain="http://blogs.infosupport.com/blogs/peterhe/archive/tags/Java/default.aspx">Java</category><category domain="http://blogs.infosupport.com/blogs/peterhe/archive/tags/Eclipse/default.aspx">Eclipse</category><category domain="http://blogs.infosupport.com/blogs/peterhe/archive/tags/kent+beck/default.aspx">kent beck</category><category domain="http://blogs.infosupport.com/blogs/peterhe/archive/tags/JUnit/default.aspx">JUnit</category><feedburner:origLink>http://blogs.infosupport.com/blogs/peterhe/archive/2009/02/09/JUnit-to-the-Max.aspx</feedburner:origLink></item><item><title>Not doing something costs time and money, too</title><link>http://feedproxy.google.com/~r/PeterHendriks/~3/WHRbRnnQYw4/Not-doing-something-costs-time-and-money_2C00_-too.aspx</link><pubDate>Sun, 01 Feb 2009 23:11:00 GMT</pubDate><guid isPermaLink="false">56f6167b-0c51-4839-ab2d-34653eeb5c9c:15007</guid><dc:creator>peterhe</dc:creator><slash:comments>10</slash:comments><wfw:commentRss>http://blogs.infosupport.com/blogs/peterhe/rsscomments.aspx?PostID=15007</wfw:commentRss><wfw:comment>http://blogs.infosupport.com/blogs/peterhe/commentapi.aspx?PostID=15007</wfw:comment><comments>http://blogs.infosupport.com/blogs/peterhe/archive/2009/02/02/Not-doing-something-costs-time-and-money_2C00_-too.aspx#comments</comments><description>&lt;br /&gt;A recent &lt;a href="http://www.joelonsoftware.com/items/2009/01/31.html" title="Podcast transcript"&gt;podcast&lt;/a&gt; of Joel &amp;quot;On Software&amp;quot; Spolsky and Jeff &amp;quot;Stackoverflow&amp;quot; Atwood stirred up a bit of a debate. Joel goes into a big rant against Unit Tests and the &lt;a href="http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod"&gt;SOLID design principles&lt;/a&gt;. Robert &amp;quot;Uncle Bob&amp;quot; C. Martin, author of both the SOLID design stuff and also professional TDD zealot already &lt;a href="http://blog.objectmentor.com/articles/2009/01/31/quality-doesnt-matter-that-much-jeff-and-joel" title="Uncle Bobs response"&gt;responded&lt;/a&gt;, attacking the points Joel made.&lt;br /&gt;&lt;br /&gt;First of all, I do understand the point Joel and Jeff are trying to make. Both unit testing and architecture can be over-emphasized and that will do more harm than good. Like everything else, solutions sold in black and white are usually some shade of gray in the real world. However, to get the point across, you sometimes tell things a bit more simple and extreme. &lt;br /&gt;&lt;br /&gt;Joel should be sensitive to this, as most of his articles, including the &lt;a href="http://www.joelonsoftware.com/articles/fog0000000043.html"&gt;Joel Test&lt;/a&gt;, are structured exactly the same. Unfortunately, Joel seemed to lose patience when hearing about things like test everything and decouple everything. In the talk they use weird examples that have very little to do with the original ideas behind the concepts. I hear these so called &lt;a href="http://en.wikipedia.org/wiki/Straw_man"&gt;Straw Man&lt;/a&gt; arguments (proving a point by using a wildly exaggerated example) quite often regarding testing and design. but I was just as shocked as Uncle Bob to hear them from someone like Joel Spolsky, who can be considered a very public software development figure.&lt;br /&gt;&lt;br /&gt;Basically the argument against unit testing and SOLID made is: &amp;quot;it&amp;#39;s too much extra work&amp;quot;. Joel goes on and on about how many millions of interfaces he would need and that all of his thousands tests break when he makes a single change. Of course these are wild examples that have very little to do with the real world, but what I am really missing is: what do you have to do instead, when not doing tests and abstractions? Joel only evaluates the costs of unit testing and proper architecture, but not the benefits.&lt;br /&gt;&lt;br /&gt;Not doing unit tests will save you the time to write and maintain unit tests. However, unit tests have a certain goal (to validate if a single piece of code works). If you no longer write unit tests, how will you achieve this goal? A manual test will likely take at least 10 minutes (fire up the modified system, navigate to the proper user interface, enter some data, evaluate response). Writing a single unit test, on average, takes the same amount of time. However, in the debug/retry cycle, unit tests really start winning out. Afterward, unit tests can be recycled over and over, to immediately detect when a code change causes something to break.&lt;br /&gt;&lt;br /&gt;With these productivity increases and risk mitigation, I can understand why someone would like as much unit testing as possible. Unit tests are great for testing what a developer can reason about and only involve the isolated unit. Unfortunately, there are more problem classes in a system, such as &amp;quot;is this user interface pretty&amp;quot;, or &amp;quot;if I put X and Y together, will they work together&amp;quot;. Code that deals with these kinds of problems may be impossible to unit test, or doing so would be extremely verbose and non intuitive. I would agree that it would be more efficient to skip unit testing for this kind of code, and test these attributes using other forms of testing instead.&lt;br /&gt;&lt;br /&gt;At the end Jeff closes with a &lt;a href="http://nl.wikipedia.org/wiki/Frank_Zappa"&gt;Frank Zappa&lt;/a&gt; quote: &amp;quot;Nobody gives a crap if we&amp;#39;re great musicians.&amp;quot;, concluding that users really don&amp;#39;t care about code quality. Somehow, this part seems to suggest that if you care about unit testing and proper design, you can&amp;#39;t care about anything else. That strikes me as a bit narrow-minded: it&amp;#39;s not like testing and caring for user needs are mutually exclusive? Also, even Frank Zappa probably would have checked the sound before a performance, and look into the mirror before he went on stage. Because Frank Zappa knows the quality of his mustache matters, and not looking in the mirror is not an option.&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.infosupport.com/aggbug.aspx?PostID=15007" width="1" height="1"&gt;</description><category domain="http://blogs.infosupport.com/blogs/peterhe/archive/tags/Agile/default.aspx">Agile</category><category domain="http://blogs.infosupport.com/blogs/peterhe/archive/tags/Design/default.aspx">Design</category><category domain="http://blogs.infosupport.com/blogs/peterhe/archive/tags/unit+test/default.aspx">unit test</category><feedburner:origLink>http://blogs.infosupport.com/blogs/peterhe/archive/2009/02/02/Not-doing-something-costs-time-and-money_2C00_-too.aspx</feedburner:origLink></item><item><title>Why traffic lights are evil</title><link>http://feedproxy.google.com/~r/PeterHendriks/~3/qCFPVDuRj8g/Why-traffic-lights-are-evil.aspx</link><pubDate>Sun, 04 Jan 2009 17:26:00 GMT</pubDate><guid isPermaLink="false">56f6167b-0c51-4839-ab2d-34653eeb5c9c:14900</guid><dc:creator>peterhe</dc:creator><slash:comments>2</slash:comments><wfw:commentRss>http://blogs.infosupport.com/blogs/peterhe/rsscomments.aspx?PostID=14900</wfw:commentRss><wfw:comment>http://blogs.infosupport.com/blogs/peterhe/commentapi.aspx?PostID=14900</wfw:comment><comments>http://blogs.infosupport.com/blogs/peterhe/archive/2009/01/04/Why-traffic-lights-are-evil.aspx#comments</comments><description>&lt;p&gt;&lt;img align="right" alt="Traffic lights" height="463" src="http://blogs.infosupport.com/photos/peterhe/images/14901/original.aspx" title="Traffic lights" width="373" /&gt;A few days ago I had to take a drive from Den Bosch to Tilburg (A65). If you know that little piece of road, you know there are a lot of traffic lights. I understand the value of traffic lights: they reduce accidents and distribute a fair opportunity for people to cross the road. If you&amp;#39;ll ever drive on the A65 however, you&amp;#39;ll notice that the abundance of traffic lights really slow you down. Also, you&amp;#39;ll notice people pushing to get to the green light in time, slowing down only at the last minute, creating dangerous situations. If you think about the environment (who doesn&amp;#39;t these days) you&amp;#39;ll get annoyed by the senseless pollution of extra slowing down and speeding up needed (not to mention that traffic lights consume quite a bit of electricity too). So, why are there that many traffic lights?&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The traffic lights on the A65 were the easy way out for the people that designed that piece of road. They basically had three choices: provide less intersections, provide bigger intersections with on-ramps and off-ramps that do not need traffic lights, or put up traffic lights. At the time, roundabouts were considered evil because they were different from modern standards, so I don&amp;#39;t count that as a choice. Obviously, less intersections would mean people near the road would get angry, because they would need a detour. Bigger intersections would be more expensive, and make people that live by the road angry, because their houses would need to be demolished to make room. So, traffic lights were placed, making everybody that actually uses the road angry instead. Law and politics often lead to such awful compromises.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Traffic lights are common in a software development project as well. Basically, a traffic light is a control point that controls the flow of action in a certain process step. The control point works like this:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;The control is usually performed by a different person than the person whose work is controlled.&lt;/li&gt;&lt;li&gt;The control consists of a check against a simplified representation of reality.&lt;/li&gt;&lt;li&gt;The result of the control is usually a simple redirection (do this, don&amp;#39;t do this).&lt;/li&gt;&lt;/ul&gt;Depending on your organization, this may be happening very often or only once in a while. Like the traffic light, a control point &lt;strong&gt;&lt;em&gt;may&lt;/em&gt;&lt;/strong&gt; have its uses. However, it &lt;em&gt;&lt;strong&gt;always&lt;/strong&gt;&lt;/em&gt; has downsides:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The control point will slow down the work being controlled. This means the work is in progress longer and the return on investment will be later. Responding to changes will take longer.&lt;/li&gt;&lt;li&gt;The control point will cost extra resources. Performing the control action will take additional time without adding value to the product. Slowing down and speeding up before and after the control point requires additional resources as well.&lt;/li&gt;&lt;li&gt;The control point will almost always simplify decisions to a point where not all the information available is used, thus increasing the risk of sub-optimal result. It will be something like running a static check list or a manager needing to sign off.&lt;/li&gt;&lt;li&gt;The control point reduces the opportunity of initiative of the person whose work is controlled. He/she will no longer feel responsible and is expected to blindly follow the result of the control.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I need to re-emphasize that control points are needed at times. Sometimes, laws require them, or they are needed to prevent catastrophic events (like a car accident). However, control points are often a result of excessive prevention strategy (not every problem is worth preventing), lack of trust, lack of skill, lack of delegation, or lack of communication. When you hit a traffic light in you organization, it may be worth thinking about:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Why is an explicit control needed? What is lacking in skill, available information or decision powers in previous steps? Is a control point the only way to cross this gap?&lt;/li&gt;&lt;li&gt;What is the risk being prevented? How expensive is it, in terms of money, time, damage, etc? What is the chance of the risk occuring with and without the control point?&lt;br /&gt;&lt;/li&gt;&lt;li&gt;What is the cost of the control point? How much overhead does it impose on the project? Did you calculate this overhead in your estimations and budget as well?&lt;/li&gt;&lt;li&gt;Can you optimize the control point? This can be done using automation or optimizing information flow for instance. Note that batching is almost always a very bad optimization strategy in a software development project.&lt;/li&gt;&lt;li&gt;Can the control point be circumvented? At times, it may be legitimate to ignore a control point, for example because of time constraints (an ambulance en route to an accident). How often is the control point circumvented? Is the circumvention explicit and accepted, or does it happen under the radar?&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;I think a lot of traffic lights would not be needed if the roads would be constructed just a little bit different. Sure, it would be more complex to build roads, but the result would be more efficient roads. With traffic lights, the roads jam up pretty fast, requiring even more roads with even more traffic lights!&lt;br /&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.infosupport.com/aggbug.aspx?PostID=14900" width="1" height="1"&gt;</description><category domain="http://blogs.infosupport.com/blogs/peterhe/archive/tags/Agile/default.aspx">Agile</category><category domain="http://blogs.infosupport.com/blogs/peterhe/archive/tags/Process/default.aspx">Process</category><feedburner:origLink>http://blogs.infosupport.com/blogs/peterhe/archive/2009/01/04/Why-traffic-lights-are-evil.aspx</feedburner:origLink></item><item><title>The future of Java modular development: Jigsaw or OSGi?</title><link>http://feedproxy.google.com/~r/PeterHendriks/~3/kNA0o5jxNho/The-future-of-Java-modular-development_3A00_-Jigsaw-or-OSGi_3F00_.aspx</link><pubDate>Mon, 08 Dec 2008 11:31:00 GMT</pubDate><guid isPermaLink="false">56f6167b-0c51-4839-ab2d-34653eeb5c9c:14843</guid><dc:creator>peterhe</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.infosupport.com/blogs/peterhe/rsscomments.aspx?PostID=14843</wfw:commentRss><wfw:comment>http://blogs.infosupport.com/blogs/peterhe/commentapi.aspx?PostID=14843</wfw:comment><comments>http://blogs.infosupport.com/blogs/peterhe/archive/2008/12/08/The-future-of-Java-modular-development_3A00_-Jigsaw-or-OSGi_3F00_.aspx#comments</comments><description>&lt;p&gt;What Java still lacks is a standardized module system to describe and manage dependencies with. This often leads to &amp;quot;jar hell&amp;quot;, a jungle of jars needed on all kinds of locations, hard to manage classloaders and all kinds of ad-hoc dependency declaration mechanisms like &lt;a href="http://maven.apache.org/"&gt;Maven&lt;/a&gt; and &lt;a href="http://ant.apache.org/ivy/"&gt;Ivy&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Sun has worked for a while on &lt;a href="http://www.jcp.org/en/jsr/detail?id=277"&gt;JSR 277&lt;/a&gt;, a new standard for declaring and using modules in the Java platform. A module would be a jar with some extra information on its identity, version number, dependencies, etc. JSR 277 always was controversial, because a similar specification already exists: &lt;a href="http://www.jcp.org/en/jsr/detail?id=291"&gt;JSR 291&lt;/a&gt; or OSGi. &lt;a href="http://www.osgi.org/Main/HomePage"&gt;OSGi&lt;/a&gt; originated in embedded development, but is now widely used in mobiles, the Harmony Java VM, Eclipse products, Spring and most application servers, including the new Sun Glassfish v3 server. Where JSR 277 demanded additional language and runtime features, OSGi runs in Java 1.1 and up using the basic metadata and classloader features already available, and can host other languages as well.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Mark Reinhold &lt;a href="http://blogs.sun.com/mr/entry/jigsaw"&gt;blogs&lt;/a&gt; about a new project Jigsaw that will provide modularity support for the Java platform. The JSR 277 project will be discontinued. As announced in they blog Jigsaw will NOT be part of the official Java specification. That means Java VMs of IBM and Oracle (JRockit) do not need to support it. If Jigsaw will make the cut for Java 7 is not decided yet.&lt;/p&gt;&lt;p&gt;To me, a Java module system (like .NET already has for years) was the most important new feature of Java 7. Now that it is dropped, I think OSGi will become even more popular. It is an official specification, works today and already has tool support, like the Eclipse PDE and the Maven Tycho plug-ins. Products like &lt;a href="http://www.eclipse.org/equinox/server/"&gt;server-side equinox&lt;/a&gt; and &lt;a href="http://www.springsource.com/products/suite/dmserver"&gt;Spring DM server&lt;/a&gt; are already available, providing Java EE container support for modules. By the time that Sun finally decides on a module system for Java, will it really matter?&lt;br /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.infosupport.com/aggbug.aspx?PostID=14843" width="1" height="1"&gt;</description><category domain="http://blogs.infosupport.com/blogs/peterhe/archive/tags/Java/default.aspx">Java</category><category domain="http://blogs.infosupport.com/blogs/peterhe/archive/tags/OSGi/default.aspx">OSGi</category><feedburner:origLink>http://blogs.infosupport.com/blogs/peterhe/archive/2008/12/08/The-future-of-Java-modular-development_3A00_-Jigsaw-or-OSGi_3F00_.aspx</feedburner:origLink></item><item><title>Visual Studio integration for Jazz beta available</title><link>http://feedproxy.google.com/~r/PeterHendriks/~3/eLGi4D_pXVw/Visual-Studio-integration-for-Jazz-beta-available.aspx</link><pubDate>Sun, 16 Nov 2008 16:55:00 GMT</pubDate><guid isPermaLink="false">56f6167b-0c51-4839-ab2d-34653eeb5c9c:14736</guid><dc:creator>peterhe</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.infosupport.com/blogs/peterhe/rsscomments.aspx?PostID=14736</wfw:commentRss><wfw:comment>http://blogs.infosupport.com/blogs/peterhe/commentapi.aspx?PostID=14736</wfw:comment><comments>http://blogs.infosupport.com/blogs/peterhe/archive/2008/11/16/Visual-Studio-integration-for-Jazz-beta-available.aspx#comments</comments><description>&lt;p&gt;There now is a beta version available for &lt;a href="https://jazz.net/index.jsp"&gt;Jazz&lt;/a&gt; / Rational Team Concert integration in Visual Studio. See this &lt;a href="https://jazz.net/pub/learn/videos/data/visual-studio-intro/rtcvs-beta.html"&gt;video&lt;/a&gt; for more information. I&amp;#39;ve seen the VS client in action at the RSDC. It&amp;#39;s still pretty limited compared to the Eclipse based tooling, but good enough for developers to just work with the version system and some quick work item management. As with everything else involving Jazz the beta is available for download, but you&amp;#39;ll need a free jazz.net account to get to it.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.infosupport.com/aggbug.aspx?PostID=14736" width="1" height="1"&gt;</description><category domain="http://blogs.infosupport.com/blogs/peterhe/archive/tags/Java/default.aspx">Java</category><category domain="http://blogs.infosupport.com/blogs/peterhe/archive/tags/Jazz/default.aspx">Jazz</category><feedburner:origLink>http://blogs.infosupport.com/blogs/peterhe/archive/2008/11/16/Visual-Studio-integration-for-Jazz-beta-available.aspx</feedburner:origLink></item><item><title>J-Fall 2008</title><link>http://feedproxy.google.com/~r/PeterHendriks/~3/PfC3171tvq0/J_2D00_Fall-2008-wrap-up.aspx</link><pubDate>Wed, 12 Nov 2008 20:17:00 GMT</pubDate><guid isPermaLink="false">56f6167b-0c51-4839-ab2d-34653eeb5c9c:14715</guid><dc:creator>peterhe</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.infosupport.com/blogs/peterhe/rsscomments.aspx?PostID=14715</wfw:commentRss><wfw:comment>http://blogs.infosupport.com/blogs/peterhe/commentapi.aspx?PostID=14715</wfw:comment><comments>http://blogs.infosupport.com/blogs/peterhe/archive/2008/11/12/J_2D00_Fall-2008-wrap-up.aspx#comments</comments><description>&lt;p&gt;I visited &lt;a href="http://www.nljug.org/pages/events/content/jfall_2008/"&gt;J-Fall 2008&lt;/a&gt; today, another successful Java conference organized by the&lt;a href="http://www.nljug.org" title="Dutch Java User Group"&gt; NLJUG&lt;/a&gt;. J-Fall/J-Spring are the biggest Java events in the Netherlands, it&amp;#39;s always fun to visit, see what the latest developments are, what people are doing and how crazy the conference booths are. Although actually the booths were pretty quiet this time, which is a big plus, because it&amp;#39;s a lot easier to talk without all kinds of loud bells and other noise going on.&lt;/p&gt;&lt;p&gt;There was a lot of attention for JavaFX (Sun) and Flex/Flash (Adobe). It&amp;#39;s kind of funny to watch Adobe (also mac dudes paint tool vendor) really trying to show Flex as being more &amp;quot;Enterprise worthy&amp;quot;, while Sun (also building operating systems for nuclear submarines) pushing JavaFX as a cool tool to draw animating pictures and circles. I do want to give special credit to Sun though for some really cool demos that actually worked this time! Chuk Munn-Lee, a Sun JavaFX engineer, did a few sessions with some nice humor and a really fast demo during the second keynote. Knowing how hard it is to keep typing straight while presenting on a big screen, and that Chuk was banging away on some nightly unstable builds of both Netbeans and JavaFX, that was pretty impressive.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;There also was a session about IBM &lt;a href="https://jazz.net/pub/index.jsp"&gt;Jazz&lt;/a&gt;. I think that&amp;#39;s great as Jazz is a big step forward in ALM tooling, especially for Java projects. IBM is once again leading on features and vision, pushing competitors harder to innovate as well. After a couple of years of relatively few innovations in the tooling space, I think the upcoming period will be a lot more interesting.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;On the other hand, I missed some topics as well. Nothing on the coming soon release of Java EE 6, or information about the new &lt;a href="http://www.sun.com/software/products/glassfishv3_prelude/index.xml"&gt;Glassfish v3 &amp;quot;prelude&amp;quot;&lt;/a&gt; version that was released last week. No sessions on what Spring is up to with their new &amp;quot;DM&amp;quot; server and new commercial offerings strategy, which scared a lot of users in the past few months. Although all the sessions I have seen were on the okay to excellent scale, some talks in my opinion did go out on a limb without a lot of actual real-life experience with the topic. I think it is fine to talk about new tools without much experience (what else can you expect?). However, I think it&amp;#39;s very important to recognize that sometimes new technology is interesting and useful, but not (yet) something that can be recommended to the masses. I keep being impressed by the quality of the questions from the audience at NLJUG events though, and with some tough questions, presenters did not get off the hook easily.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;When walking on the pavillion I did have some nice conversations with people about what they were actually doing with new methods and technologies. A nice example was the Adobe showcase booth, where ISVs showed their real life products based on Flex. I talked a bit with a vendor that supplies software for payed parking lots. Payed parking lots are a serious frustration for me lately, because really often, it just doesn&amp;#39;t work, so I immediately got interested. It&amp;#39;s nice to hear about actually using agile concepts and Flex in relatively tough projects like parking lot automation, and how they dealt with some of the problems they faced. For me, a separate spot for showcases are a keeper for next NLJUG events. See you at the next J-Spring!&lt;br /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.infosupport.com/aggbug.aspx?PostID=14715" width="1" height="1"&gt;</description><category domain="http://blogs.infosupport.com/blogs/peterhe/archive/tags/Java/default.aspx">Java</category><category domain="http://blogs.infosupport.com/blogs/peterhe/archive/tags/JavaFX/default.aspx">JavaFX</category><category domain="http://blogs.infosupport.com/blogs/peterhe/archive/tags/NLJUG/default.aspx">NLJUG</category><category domain="http://blogs.infosupport.com/blogs/peterhe/archive/tags/Flex/default.aspx">Flex</category><category domain="http://blogs.infosupport.com/blogs/peterhe/archive/tags/Jazz/default.aspx">Jazz</category><feedburner:origLink>http://blogs.infosupport.com/blogs/peterhe/archive/2008/11/12/J_2D00_Fall-2008-wrap-up.aspx</feedburner:origLink></item></channel></rss>
