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

<channel>
	<title>Jayway Team Blog &#187; conference</title>
	<atom:link href="http://blog.jayway.com/tag/conference/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.jayway.com</link>
	<description>Sharing Experience</description>
	<lastBuildDate>Sat, 11 Feb 2012 10:33:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>CAST 2011 &#8211; Testing competition with Happy Purples</title>
		<link>http://blog.jayway.com/2011/08/22/cast-2011-testing-competition-with-happy-purples/</link>
		<comments>http://blog.jayway.com/2011/08/22/cast-2011-testing-competition-with-happy-purples/#comments</comments>
		<pubDate>Mon, 22 Aug 2011 21:18:07 +0000</pubDate>
		<dc:creator>Sigurdur Birgisson</dc:creator>
				<category><![CDATA[Testing]]></category>
		<category><![CDATA[CAST]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[exploratory testing]]></category>

		<guid isPermaLink="false">http://blog.jayway.com/?p=9219</guid>
		<description><![CDATA[First of all, Ill have to report a bug in James' blog post. We only got $23 for the worst bug report award.=) Then I would like to thank for the fun competition James set up, it was really a learning experience and in retrospect I would maybe have put even more effort in the [...]]]></description>
			<content:encoded><![CDATA[<p>First of all, Ill have to report a bug in<a href="http://www.satisfice.com/blog/archives/605"> James' blog post.</a> We only got $23 for the worst bug report award.=)</p>
<p>Then I would like to thank for the fun competition James set up, it was really a learning experience and in retrospect I would maybe have put even more effort in the learning parts throughout the exercise. This, and my ability to concentrate may also have been impaired because of the time of day (after 6 pm after long conference day) and that I was still jet-lagged. But enough whining now, here is the story and my learnings that hopefully will help me make better decisions in the future.</p>
<p>First out, I was going to enter the competition myself, but then I got to know Jay and Sandra and we formed Happy purples (even written in purple on the registration flip chart). It felt quite good to be a team instead of working solo on this. Especially since we had the Miagi-do all-star team on the table next to us, and they were plenty.The start of the competition could have been better. While we knew we were already crippled with having two computers in a team of three (with two iPads as complement), we thought we would be ok since we were told we would get a web-link to the software to test. Here was a first set-back when we realized that it was a Windows application to test on our two macs and iPads. Dual-booted Win XP worked for one of the laptops while my own Parallells Win 7 instance had not been running for a while and did not really want to cooperate.</p>
<div>
<h5><em>Learning:</em></h5>
<p><em> </em><em>Keep your options open to be able to test on whatever platform is needed. Also, make sure you know the platform requirements. Here we really should have questioned the statement of "you will soon get a web link to the software" and not assumed that it was a web application to test, which I actually did at the time right before the competition.</em></p>
<h5><em>Learning:</em></h5>
<p><em> </em><em>Later I got to know why my Parallells instance of Windows did not want to cooperate during the competition. It was due to a<a href="http://kb.parallels.com/en/111541">performance bug in Parallells that causes MacosX dock to hog for CPU because of having Win applications folder in dock.</a></em></p>
<p>The next set-back in time was the slow download of the software. It was however solved by organizers that we could get installer on thumb drive. But already half an hour into competition we only had one instance running. This is where we filed the "download takes long time" bug in frustration.</p>
<p>While I tried for some more time to get my Windows running, the others started testing the product and reading up on the documentation provided. I also scrolled through the readme file while observing the initial exploring of a quite unstable product. While it seemed like a dead end to get my Windows up and running, I left it for starting to report the first bugs. This is where our quite bad standard of bug reports were initiated. The problem here was our quite unstructured way of testing together with note-taking while at the same time only have one running instance of the application under test. Because of the stress factor in the room, and that the bugs just jumped at us like bullets in Matrix, the team was overwhelmed by some information overload.</p>
<h5><em>Learning:</em></h5>
<p><em>It is important to have enough instances of the application under test to make sure everyone can have a good view of what is going on.</em></p>
<p>When I later finally (2,5 h into competition) got the application running on my machine, I was able to verify behavior as correct although it looked wrong on the other laptop, because the data on my installation had not been tampered with.</p>
<h5><em>Learning:</em></h5>
<p><em>When having an initial information overload of bugs/issues/problems/questions in the beginning of testing, we should have invested some time in stepping back from the product and thinking about what was really important and focus on that. In our current situation with our first encounter of the product, the only sensible thing to do would be to go talk to the developer.</em></p>
<h5><em>Learning:</em></h5>
<p><em>Documentation of the product is important, but after reviewing this and getting acquainted with the product, opening a dialog with developer should be prioritized in the setting we were in.</em></p>
<p>When up and running, we actually tried several approaches to how to report all the bugs found. Since I did not have the application running, most of the reports were written as short notes that I then submitted to the tracker. The problems with this was that I sometimes had hard time getting the context of the bugs, and yet did not completely succeed to deliver that context into the reports when it was entered. Very similar to the whispering game, since we all just went on in a really stressed pace.</p>
<p>James came by with his notebook and asked how were were doing our testing and what approaches we had. This was just when we had gotten just a little up and running but still not very organized in our work. We told him about /some/ status and I realized that would not suffice and swiftly grabbed one of <a href="http://www.testjutsu.com/">Ben Kellys</a>advices from an earlier session "Since we are in the middle of working, can I get back to you with the answer to that question?". A quite good answer in a hectic environment and you need to keep your breath above the surface, but unfortunately I later realized that I never got back to James about that.</p>
<p>While having James at our disposal, I realized that was a good opportunity to interview him on his expectations on the test report. That was a quite good thing, since we got to know how important the report actually was. Our main focus had really been on finding bugs that would be foundation for the report, but there was more to it than just that.</p>
<h5><em>Learning:</em></h5>
<p><em>There is always more information to get about the context, you just have to ask the right questions to the right person.</em></p>
<p>When the reporting was brought to our attention, we started thinking about how the outline could be. One of us started doing an outline while the others continued testing and reporting bugs. This is something that would have needed more attention and not something to plan /during/ our test session. This fact got more obvious when we all directed our focus on the report, and needed to do most of it from scratch.</p>
<h5><em>Learning:</em></h5>
</div>
<p><em>It is important to set the stage in a group before starting solving a problem like this competition. I think our group would have benefited from at least some structure in our work, and I think during the heat of action we underestimated these needs. It is especially important to have some kinds of statement of work when being a group of more than two people. This was shown over and over in all activities we performed, yet we did not cope with it at all, i guess because of the stress and not realizing the need for it in the short term of the competition. We even observed the structured way the Miagi-do team set up their SBTM on flip charts.</em></p>
<h4>About the worst bug report award</h4>
<p>The two bugs mentioned by James are of course questionable. The tooltip inconsistency was actually filed with an assumption of consistency, but later we got to know from the developer that those type of bugs were not important. So, getting feedback on bugs from developer did actually change the type of bugs we filed later on, we improved. But it was still not possible to edit or delete already filed bugs.<br />
On the "slow download of application under test"-bug, <a href="http://happytesting.wordpress.com/2010/01/21/afternoon-bugs/#comment-52">it is related to a discussion I had with Michael Bolton on my blog a while back</a>. I would consider it a testability issue to not get the application delivered in a timely fashion. Especially if we were going to get more deliveries of it during the competition time frame. In retrospect, it might seem more rational NOT to make a bug report on this, but only include it in our final test report, as it delayed our testing quite a bit.</p>
<p>This post was also posted on my <a href="http://happytesting.wordpress.com/2011/08/22/cast-2011-testing-competition-with-happy-purples/">personal blog</a>.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jayway.com/2011/08/22/cast-2011-testing-competition-with-happy-purples/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>OOPSLA 2009 Wednesday, October 28th</title>
		<link>http://blog.jayway.com/2009/10/29/oopsla-2009-wednesday-october-28th/</link>
		<comments>http://blog.jayway.com/2009/10/29/oopsla-2009-wednesday-october-28th/#comments</comments>
		<pubDate>Thu, 29 Oct 2009 13:37:54 +0000</pubDate>
		<dc:creator>Anders Janmyr</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[conference]]></category>

		<guid isPermaLink="false">http://blog.jayway.com/?p=2207</guid>
		<description><![CDATA[This post is cross-posted at my personal blog. Jeannette Wing, CMU, Frontiers in Research and Education in Computing Jeanette said that there has been a paradigm shift. Not just about computing's metal tools (transistors and wires), but also our mental tools (abstraction and methods) Is this really a new paradigm shift? Maybe for the National [...]]]></description>
			<content:encoded><![CDATA[<p>This post is cross-posted at <a href="http://anders.janmyr.com">my personal blog</a>.</p>
<h3>Jeannette Wing, CMU, Frontiers in Research and Education in Computing</h3>
<p>Jeanette said that there has been a paradigm shift.</p>
<blockquote><p>Not just about computing's metal tools (transistors and wires), but also our mental tools (abstraction and methods)</p>
</blockquote>
<p>Is this really a new paradigm shift? Maybe for the National Science Foundation (NSF), certainly not for anyone that has been working with software the last ten years.</p>
<p>The limits of Moore's Law forces the NSF to focus on programming languages and abstractions.</p>
<p>Three drivers of computing research, Society, Science, Technology.</p>
<h4>Encouraged research areas:</h4>
<ul>
<li>Data Intensive Computing</li>
<li>Cloud Computing</li>
<li>
<p>Map-Reduce</p>
</li>
<li>
<p>Cyber-Physical Systems (computational core that interacts with the physical world)</p>
</li>
<li>Smart vehicles</li>
<li>Smart Flyers</li>
<li>
<p>Smart Devices</p>
</li>
<li>
<p>Network Science and Engineering</p>
</li>
<li>Understand the complexity of large scale networks
<ul>
<li><a href="http://www.research.att.com/~pamela/">Software Engineering for the Next Internet</a></li>
</ul>
</li>
<li>
<p>Trustworthy Computing</p>
</li>
<li>
<p>Socially Intelligent Computing</p>
</li>
<li>Humans are still much better at image recognition</li>
<li>
<p>Programs where the human is a port of the program.</p>
</li>
<li>
<p>IT and Sustainability (Energy, Environment, Climate)</p>
</li>
<li>
<p>Computer Science and Economics</p>
</li>
<li>AdSense</li>
<li>
<p>eBay</p>
</li>
<li>
<p>Computer Science and Biology</p>
</li>
</ul>
<h3>Agile development: Overcoming a short-term focus in implementing best practices, Karthik Dinakar</h3>
<p>In the project they concluded on the following good practices.</p>
<ul>
<li>Good version control</li>
<li>Coding guidelines</li>
<li>Build automation</li>
<li>Unit testing framework</li>
<li>Automatic sanity tests</li>
<li>Accurate task estimations</li>
<li>Effective pre-spring planning</li>
<li>Solid design discussions</li>
<li>Involve QA and Operations</li>
<li>Effective post-sprint-reviews</li>
</ul>
<p>They also thought that it is difficult to implement best practices under way.</p>
<p>They had many problems:</p>
<ul>
<li>Integration was not in the plan</li>
<li>Sprint backlog changing all the time.</li>
<li>Long sprint meetings</li>
</ul>
<p>Management did not allow them to implement the changes that they needed and the reason was <strong>"It's Agile!"</strong></p>
<p>All in all, their problems seemed to be the usual, they had no idea of what it meant to do Scrum in the first place. Don't people read books anymore?</p>
<h3>Are systems Green? Panel with Steve Easterbrook et al</h3>
<ul>
<li>A Google query has a Carbon footprint.</li>
<li>We don't know what it is.</li>
<li>It may actually be less than the energy it uses since it may permit the person posing the query to save a lot of energy.</li>
<li>The term Green is just marketing bullshit.</li>
<li>It is not measurable at all.</li>
<li>Carbon Emissions are permanent.</li>
<li>It won't go away even if we stop burning any carbon today.</li>
<li>The goal of emissions are <strong>ZERO</strong>, anything else is not sustainable.</li>
</ul>
<p>There is a book called <a href="http://www.amazon.com/Green-Dummies-Computer-Tech/dp/0470386886?ie=UTF8&amp;tag=thtasta-20">Green IT for Dummies</a></p>
<ul>
<li>What can we as a computing industry do.</li>
<li>Analyze the problem.</li>
<li>Make a list of what we need and can do.</li>
<li>Create a wiki.</li>
</ul>
<p><strong>If you are going to read an article for more than three minutes, YOU SHOULD PRINT IT OUT!</strong> Believe it or not, but check your facts.</p>
<h3>Architecture in an Agile World, Panel with Steven Fraser et al</h3>
<p><em>Randy Miller:</em> We allow the customers to make changes, but we don't tell them what the cost will be. If we have no architecture the cost will be high. The people behind the agile manifesto were all good at architecture and that is why the importance of architecture was not emphasized in the manifest.</p>
<p><em>Bill Opdyke:</em> Some people seem to see a difference between architects and agilists. But most people that are good don't have the this problem. Architects can learn from agilists that change is not that hard. Agilists can learn from architects that architecture matters. There is a middle ground.</p>
<p><em>Ethan Hadar:</em> We need a stable vision of what the architecture should be while delivering solutions iteratively. Show me the architecture road map of your product, because it will be integrated with another program in nine months. Accountability and responsibility for the architecture is important.</p>
<p><em>Dennis Mancl:</em> You need to plan architecture early, or you will have to do it later on and then it will be harder.</p>
<p><em>Audience:</em> How does an architect work in an agile team?</p>
<p><em>Randy Miller:</em> From an agile team, you're all part of the team. There are no distinctions. The architect is in the team to make sure that</p>
<blockquote><p>The architecture in the system is the point in time in which you have to step back and think about how everything interacts.</p>
</blockquote>
<p><em>Ethan Hadar:</em> The architect is the person, who needs to interact with the testers and operations to explain how and why the system is the way it is.</p>
<p><em>Dennis Mancl:</em> The architect is responsible to the stake holders and he is responsible to know the problem domain.</p>
<p><em>Irit Hadar:</em> The architect's role is to take a step back and say when it is time to review the architecture.</p>
<p><em>Audience:</em> The architecture is what you get, regardless of what you do.</p>
<p>An interesting discussion, that could not find a consensus to if there is a need for a single architect or not.</p>
<h3>Agile Anthropology and Alexander's Architecture, Jenny Quillien, Dave West, Pam Rostal</h3>
<p>Do we need to pay any interest of to Christopher Alexanders' new book <a href="http://www.amazon.com/Phenomenon-Life-Nature-Building-Universe/dp/0972652914?ie=UTF8&amp;tag=thtasta-20">The Nature of Order</a>?</p>
<p>The software community has always taken interest in Alexanders' books, but we take interest in the wrong things. We have only understood some rules, we have not grasped the deeper part of it, because we don't understand the culture of architecture.</p>
<p>In a pattern language, we looked at patterns, but we dismissed the QWAN. We missed the holistic point-of-view. Everything is part of the system, people, organizations. He is writing about things that are multi-dimensional and multi-faceted, not things that are simple and exact.</p>
<p>The Nature of Order contains the same multi-faceted ideas and if we look at it with the same eyes, we will miss the point again.</p>
<p>Alexander looked at centers and centers affect other centers. And there is no right or wrong, there are only degrees.</p>
<p>In Alexanders' world there is only one system, the Universe. Everything is connected!</p>
<h3>Writing Code for Other People, Tom Mullen</h3>
<h4>Chunking and Memory</h4>
<ul>
<li>The mind groups memory into chunks. Most chunks are stored in long-term memory. Out conscious is in long-term memory.</li>
</ul>
<p>Short-time memory can only hold about four relations. Short-time memory is also <em>short</em> <img src='http://blog.jayway.com/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  This gives us a time-limit when traversing code.</p>
<p>Meyers' open-closed principle is an echo of the mind's way to learn things.</p>
<p>If the code is a reflection of our brains, then most brains contain spaghetti.</p>
<h4>Analogies</h4>
<p>Analogies is the mapping between one thing to another.</p>
<h4>Conclusion</h4>
<p>Our brains are not good a processing more than four chunks at the time. This implies that we should write methods with less than four lines. Classes with less than four methods, modules with less than four classes, and applications with less than four modules.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jayway.com/2009/10/29/oopsla-2009-wednesday-october-28th/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Devoxx highlights</title>
		<link>http://blog.jayway.com/2008/12/23/devoxx-highlights/</link>
		<comments>http://blog.jayway.com/2008/12/23/devoxx-highlights/#comments</comments>
		<pubDate>Tue, 23 Dec 2008 22:29:31 +0000</pubDate>
		<dc:creator>Jacob Mattsson</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[bdd]]></category>
		<category><![CDATA[concurrency]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[spring]]></category>
		<category><![CDATA[spring dm]]></category>

		<guid isPermaLink="false">http://blog.jayway.com/?p=699</guid>
		<description><![CDATA[In order to embrace the true Christmas spirit, I thought I'd share a few goodies from the Devoxx conference that took place in Antwerp, Belgium in mid December. Devoxx is the former JavaPolis that has changed name due to trademarking issues with Sun. Nonetheless, it's still the worlds largest independent Java conference, where the 3200 [...]]]></description>
			<content:encoded><![CDATA[<p>In order to embrace the true Christmas spirit, I thought I'd share a few goodies from the <a href="http://devoxx.com">Devoxx conference</a> that took place in Antwerp, Belgium in mid December. Devoxx is the former JavaPolis that has changed name due to trademarking issues with Sun. Nonetheless, it's still the worlds largest <em>independent</em> Java conference, where the 3200 attendees find themselves being literally showered with news from the broad Java community. Below follow summaries from some of the, IMHO, best sessions from this years conference. Enjoy!</p>
<h3>BDD in Java with easyb (John Ferguson Smart)</h3>
<p>John started out by arguing that TDD is not about testing, it's about writing better code. That is, it's about making your code more maintainable, flexible, reliable and simple. TDD is forces the programmer to think about how to test the class before actually writing the class. BDD, on the other hand, helps to determine what to test and to write more focused code, by starting with the behavior. Instead of thinking that you're testing your class, you should think that you're validating your requirements! </p>
<p>easyb is a BDD testing framework for Java, written in Groovy (hence providing full access to all Java API's). It ensures that tests become clearer and easier to both write and read!  It helps the developer to focus on the requirements only. A competitor to easyb is JBehave, which is an extension to JUnit. However, according to John, JBehave is more cumbersome than easyb.</p>
<p>easyb makes use of stories, much like the story cards in the Agile world. In a story, a narrative approach is used to describe a precise requirement. In easyb, a story could look like this:</p>
<pre class="groovy">&nbsp;
scenario â€œMake initial deposit onto a <a href="http://www.google.de/search?q=site%3Adocs.codehaus.org/%20new"><span style="color: #000000; font-weight: bold;">new</span></a> accountâ€, <span style="color: #66cc66;">&#123;</span>
	given â€œa <a href="http://www.google.de/search?q=site%3Adocs.codehaus.org/%20new"><span style="color: #000000; font-weight: bold;">new</span></a> accountâ€
	when â€œan initial deposit is madeâ€
	then â€œthe balance should be equal to the amount depositedâ€
<span style="color: #66cc66;">&#125;</span>
&nbsp;</pre>
<p>This scenario is quite clear and readable, isn't it!? Furthermore, it's self-documenting - a very appreciated feature =) And the syntax is so trivial that even a non-technical stakeholder would have no problem understanding it. The developer can then reuse the given scenario (pseudo) code and implement the test case, like this:</p>
<pre class="groovy">&nbsp;
<span style="color: #a1a100;">import com.mycompany.bankonline.domain.Account</span>
&nbsp;
scenario â€œMake initial deposit onto a <a href="http://www.google.de/search?q=site%3Adocs.codehaus.org/%20new"><span style="color: #000000; font-weight: bold;">new</span></a> accountâ€, <span style="color: #66cc66;">&#123;</span>
	given â€œa <a href="http://www.google.de/search?q=site%3Adocs.codehaus.org/%20new"><span style="color: #000000; font-weight: bold;">new</span></a> accountâ€, <span style="color: #66cc66;">&#123;</span>
		account = <a href="http://www.google.de/search?q=site%3Adocs.codehaus.org/%20new"><span style="color: #000000; font-weight: bold;">new</span></a> Account<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
	<span style="color: #66cc66;">&#125;</span>
	when â€œan initial deposit is madeâ€, <span style="color: #66cc66;">&#123;</span>
		initialAmount = <span style="color: #cc66cc;">100</span>
		account.<span style="color: #006600;">makeDeposit</span><span style="color: #66cc66;">&#40;</span>initialAmount<span style="color: #66cc66;">&#41;</span>
	<span style="color: #66cc66;">&#125;</span>
	then â€œthe balance should be equal to the amount depositedâ€, <span style="color: #66cc66;">&#123;</span>
		account.<span style="color: #006600;">balance</span>.<span style="color: #006600;">shouldBe</span> initialAmount
	<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span>
&nbsp;</pre>
<p>The <code>shouldBe</code> call is an intuitive and readable way to verify that the requirement holds. Another way to verify the outcomes is to use the <code>ensure</code> syntax. Example:</p>
<pre class="groovy">&nbsp;
ensure<span style="color: #66cc66;">&#40;</span>account.<span style="color: #006600;">balance</span> &gt; <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>
&nbsp;</pre>
<p>or</p>
<pre class="groovy">&nbsp;
ensure<span style="color: #66cc66;">&#40;</span>account<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
	has<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#91;</span>balance:<span style="color: #cc66cc;">100</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#125;</span>
&nbsp;</pre>
<p>easyb could be extended to use DBUnit (and further plugins for Grails and Excel are on the way). On the IDE support, the only good option is IntelliJ IDEA. It really comes down to the Groovy support, and Eclipse and NetBeans doesn't shine here. In those cases, you're better off running the tests in Maven or Ant, which both are well supported. In the upcoming version, easyb will have full support for Continuous Integration (CI), enabling automatic test execution in a CI-server such as Hudson.</p>
<p>Furthermore, easyb comes with a web application - Easiness (cmp. Fitnesse) - where stakeholders can create stories in plain text. The developers can then go ahead and implement the stories defined by the stakeholders. This is an important features, that further improves the cooperation between the customer and the provider. It really seems like a quite nice little framework! If you agree, have a look at it at <a href="http://easyb.org/">http://easyb.org/</a>.</p>
<h3>From Concurrent to Parallel â€“ Library-based parallelism in JDK 7 (Brian Goetz)</h3>
<p>Brian is an expert in the concurrency area, but he's not a good presenter! He speaks faster than I can read, and his slides are so packed with info that he doesn't have time to say the half of it. That put aside, in this very interesting session Brian presented some really cool concurrency features to be included in JDK 7.</p>
<p>As you probably know, JDK 5 introduced a set of very useful classes for course-grained parallelism. JDK 7 will introduce a framework for fine-grained parallelism - the "fork-join" framework.</p>
<p>We have now reach a point in time when Moore's laws isn't valid anymore. The new reality is not faster CPUs but more CPUs. To adapt to these changes, programmers have to change the way they think about parallelism. The unit of work (UoW) that represents a task to be solved must be split into even smaller parts to be able to keep all hardware busy. Nowadays, it isn't enough to for ex. spawn a new thread for each service call in a server, the UoW must be split up even further.</p>
<p>Examples of finer-grained parallelism is searching, sorting and filtering a data set. Such a task is preferably solved by dividing it into sub-problems and combining the sub-results at the end. We could use the course-grained concurrency tools (for ex. <code>Executor</code> + <code>Future</code>) introduced in JDK 5 to solve this problem. However, with multiple CPUs available, these tools doesn't perform optimally. For ex., the shared work queue in the <code>Executor</code> becomes a bottle neck when the number of threads/CPUs increases. Furthermore, these tools provide no form of load balancing, i.e. if one thread finishes before the others, it is never reused.</p>
<p>The divide-and-conquer algorithm could also be applied to solve the problem. This great advantage of this approach is that it's independent of the number of CPUs used! Using plain threads for this approach is too expensive though, since thread creation costs way too much. However, the fork-join-operation in JDK 7 solves problems like these using the divide-and-conquer algorithm in a much more effective way! Internally, it uses an slim thread pool to overcome the cost of thread creation. Furthermore, no data-copying penalty exist since the data set (for ex. an array) is not divided/copied during the solution. Instead, the indexes within the data structure is used to define each data subset. Another advantage is that the code doesn't know how many CPUs it executes on, hence it's portable! </p>
<p>While the <code>Executor</code> (JDK 5) should be used for tasks consisting of both IO and computing, the fork-join-operation (JDK 7) should be used for highly compute-intensive tasks. Examples of such tasks are matrix operations, numerical integrations and game playing. The JDK 7 class to be used for these kind of problems is <code>ParallelArray</code>. It's a utility class that greatly simplifies the work of solving a task in parallel. You can think of it as an in-memory database for data sets. Typical usage is:</p>
<pre class="java">&nbsp;
ParallelLongArray pa = ParallelLongArray.<span style="color: #006600;">createUsingHandoff</span><span style="color: #66cc66;">&#40;</span>array, forkJoinPool<span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333;">long</span> max = pa.<span style="color: #006600;">max</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;</pre>
<p>The <code>ParallelArray</code> class provides operations for:</p>
<ul>
<li>Filtering (nestable)</li>
<li>Mapping</li>
<li>Replacement</li>
<li>Aggregation (max, count, sum, ...)</li>
<li>Application (one action performed for each selected element)</li>
</ul>
<p>To compare, the <code>ParallelArray</code> class acts much like the Map-Produce concept introduced by Google but it works in a different domain (local system instead of in a distributed system).</p>
<p>The only downside really is that JDK 7 isn't scheduled until mid 2010, meaning we'll have to wait quite some time before we can actually use these new concurrency features. But from the looks of it ... it may be worth the wait!</p>
<h3>The SpringSource DM Server (Joris Kuipers)</h3>
<p>The reasons why SpringSource decided to develop a new application server were many. Today, modularity is important and developers spend much time on achieving it in their applications (layering, separation of concerns, etc.). However, when the application is deployed, all modularity is lost - the deployable unit is one huge, monolithic WAR file. That means that sharing code (let alone services) between applications become hard if not impossible. In order to perform the smallest update on the application, whole WAR file have to be redeployed. Furthermore, the servers themselves lack modularity; they come prepackaged with a lot of modules but there's no way to configure that your application only make use of a couple of them. Hence, they are all left in there, consuming unnecessary CPU cycles and memory.</p>
<p>The DM (Dynamic Modules) server was developed to tackle these issues of non-modularity. In order to achieve true modularity, is has been built on top of OSGi (namely the Equinox container). Since OSGi can be quite hard sometimes, the DM server conceal the complexity of OSGi in the same way as the Spring framework does with for ex. Remoting or JMX. </p>
<p>In order to be able to use a third-party library from within the DM server (and from any other OSGi containers), the standard JAR library needs to be extended with OSGi-specific meta data - the OSGi manifest. SpringSource has therefore created the Enterprise Bundle Repository, where they have started to upload and publish OSGi-ified Java EE libraries. If you're using Maven or Ivy, the bundle repository can easily be configured as a remote (or local) repository.</p>
<p>The DM server also introduces a couple of new OSGi import constructs, enabling ease of development. One example is the "Import-library" that can be useful if you want to make use of a framework (for ex. Spring) but don't want to waste your time having to specify every single Import-package (for example Spring-Remoting) within the framework (as you normally would have had to do). This doesn't affect performance improvement since (thanks to OSGi) none of the pre-installed bundles are loaded before they are actually used! Furthermore, with the DM server it's now possible to remove the library bloat of monolithic Java EE WARs. Instead of building the external libraries into your WAR, you can instead declare them as dependencies in the OSGi manifest headers. The server will then convert these into plain "Import-package" constructs during deployment. That way, the size of the built/deployed WAR can be reduced significantly!</p>
<p>In the DM server, one can of course deploy plain OSGi bundles but also WARs, EARs etc. Typical scenarios for deploying a plain OSGi bundle are stand-alone libraries, global services and small stand-alone applications. However, being able to deploy a bundle is not enough in most cases ... A normal application normally consist of multiple bundles, which becomes hard to un/deploy since there is no single deployable unit. Furthermore, with multiple bundles you don't get a common log file or a notion of an application scope. To tackle this issue, the DM server adds the notion of an application by introducing the PAR (Platform Archive) format. It's basically a JAR with a number of 'Application-*' manifest headers. You can think of it as an EAR in Java EE. PARs are versioned and the versions apply to all of their bundles. This mean that one can deploy a PAR twice with different versions but with the same bundles, without conflicts.</p>
<p>The DM server comes in several versions. Of course there's the community version, using a GPL and SpringSource license. Then there's the commercial license where full support from SpringSource is included. On the extension side, better Maven support will soon be released so that the dependencies can be specified in a single place (not like now when you have to duplicate them in the pom and in the manifest). There's a Eclipse-plugin available that enables re/deployments from within the IDE.</p>
<p>These are some of the features in the DM server. There are plenty or more cool ones, read all about them <a href="http://www.springsource.com/products/suite/dmserver">here</a>. There, you'll also find a lot of sample applications that can get you going! With the DM server, SpringSource feel that they are filling the (up until now) empty space of server side OSGi and states that "The DM server is the healthy new way to run your apps!". I must say it looks very promising! Why don't you go ahead and try it out!? I know I will!</p>
<p><em>If you appreciated these posts, you will definitely enjoy next years conference! Pick up your calendar and reserve December 2009 for a great week at Devoxx!</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jayway.com/2008/12/23/devoxx-highlights/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>JAOO 2008 in AArhus</title>
		<link>http://blog.jayway.com/2008/10/02/jaoo-2008-in-aarhus/</link>
		<comments>http://blog.jayway.com/2008/10/02/jaoo-2008-in-aarhus/#comments</comments>
		<pubDate>Thu, 02 Oct 2008 07:07:57 +0000</pubDate>
		<dc:creator>Jan Kronquist</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[conference]]></category>

		<guid isPermaLink="false">http://blog.jayway.com/?p=321</guid>
		<description><![CDATA[This year at JAOO all 5 keynote speakers were language designers so there was a clear trend talking about new languages, for example Scala, F# and Fortress. What motivates this is the trend toward more parallel computing with more cores per machine and also to increasing popularity in cloud computing. That is, parallel computing applies [...]]]></description>
			<content:encoded><![CDATA[<p>This year at JAOO all 5 keynote speakers were language designers so there was a clear trend talking about new languages, for example <a href="http://www.scala-lang.org/">Scala</a>, <a href="http://research.microsoft.com/fsharp/fsharp.aspx">F#</a> and <a href="http://projectfortress.sun.com/Projects/Community">Fortress</a>. What motivates this is the trend toward more parallel computing with more cores per machine and also to increasing popularity in cloud computing. That is, parallel computing applies to both desktop applications and scalable enterprise applications. For example previously the focus have been to run multiple applications on the same CPU and therefore we have the synchronized keyword in Java to prevent concurrency problems. But in the future we might have more CPUs than applications so different mindsets and constructs are needed to be able to harness the increased parallel nature of computing.</p>
<p>Guy Steele pointed out that what is good practice for sequential programming might be very bad practice for parallel programming. For example in parallel algorithms you want to limit synchronization and avoid communication between parallel computations and therefore it is ok to use more memory and more CPU cycles to avoid this. Erik Meijer tried to brainwash us all to use <a href="http://www.haskell.org/">Haskell</a>, and succeeded in some ways as people started talking about <a href="http://en.wikipedia.org/wiki/Monad_(functional_programming)">monads</a> and IO<T> all evening.</p>
<p>Gregor Hohpe talked about what Google is doing to create extremely scalable systems. He talked about a new definition of ACID in cloud computing. Associative (the order the operations are combined is not important), Commutative (order of execution is not important), Idempotent (when an operation is executed multiple is has the same result every time)  and Distributed. He also recommended <a href="http://www-db.cs.wisc.edu/cidr/cidr2007/papers/cidr07p15.pdf">Pat Helland's excellent paper</a> on near infinity scalability.</p>
<p>Another cool presentation was Michele Lanza's code visualization tools based on ideas around iconic memory, ie that you should be able to immediately understand and see what is going on. Check out <a href="http://www.inf.unisi.ch/phd/wettel/codecity.html">CodeCity</a> and <a href="http://atelier.inf.unisi.ch/~malnatij/xray.php">X-Ray</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jayway.com/2008/10/02/jaoo-2008-in-aarhus/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Øredev 2007</title>
		<link>http://blog.jayway.com/2008/02/01/%c3%b8redev-2007/</link>
		<comments>http://blog.jayway.com/2008/02/01/%c3%b8redev-2007/#comments</comments>
		<pubDate>Fri, 01 Feb 2008 11:41:58 +0000</pubDate>
		<dc:creator>Stefan Li</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[jayview]]></category>
		<category><![CDATA[oredev]]></category>

		<guid isPermaLink="false">http://blog.jayway.com/?p=3409</guid>
		<description><![CDATA[As most of you know Jayway is one of the organizers of Øredev. Knowing that, and knowing how much we love our own conference, you might not trust our judgment in this review. We beg to differ, and ensure you that Øredev is just as enjoyable as we describe it in this article. The Conference [...]]]></description>
			<content:encoded><![CDATA[<p><strong>As most of you know Jayway is one of the organizers of Øredev. Knowing that, and knowing how much we love our own conference, you might not trust our judgment in this review. We beg to differ, and ensure you that Øredev is just as enjoyable as we describe it in this article. </strong> </p>
<h2>The Conference</h2>
<p>During the last three years, Øredev has grown from a promising initiative to one of<br />
the biggest IT-conferences in Scandinavia. During this year’s event, over 800 visitors<br />
attended more than 100 events. To handle the increasing crowd, the conference was<br />
held at a new location, MalmöMässan, which offered bigger and better conference<br />
halls and more space for the show floor.<br />
The location also offered a lack of heating in some rooms, which in the Swedish<br />
November weather translates into cold conference halls. People kept chugging cof-<br />
fee to keep warm, and everybody wished Oracle would hand out blankets instead<br />
of bottle chillers.<br />
As many as nine parallel tracks were available this year. Back from last year were:<br />
Java, .NET, Methods & Tools, etc. In addition to these, Øredev 2007 offered several<br />
new tracks such as Architecture, Case Studies and more. Especially refreshing were<br />
the User Experience sessions, an important yet often overlooked topic.<br />
Further indicating the growing status of the conference was the number of no-<br />
table speakers that participated this year. The list included big names such as Andy<br />
Hunt, Joel Spolsky, Kevlin Henney, James Coplien, Dan North, and Dr. Jeff Suth-<br />
erland.<br />
At the exhibition floor 26 companies were fighting for the visitors attention. The<br />
innovation in terms of advertising varied ranging from plain old booths with posters<br />
and free pens to elaborate coding competitions with iPods to win.<br />
In spite of being an IT conference, there was only one robot on the show floor,<br />
the SMErobot from Lund. Completely implemented in Java the robot was solving<br />
sudoku and carving in wood taking it’s instructions from a piece of Anoto paper. As<br />
a request for new functionality we would like to see the robot performing massage.<br />
Should not be too hard to implement, considering that the platform is Java based.</p>
<h2>The keynotes</h2>
<p>Being a keynote speaker is always special. There are high expectations of both vi-<br />
sions and entertainment. Being recognized in the business, you would better have a<br />
good presentation up your sleeve. Although some of this years speeches contained<br />
more wittiness than visions, there were three enjoyable keynotes to listen to. </p>
<h3>Andy Hunt: How hard can it be?</h3>
<p>Andy Hunt is well known as one of the 17 founders of the Agile Alliance and the<br />
co-founder of the Pragmatic bookshelf.<br />
During his opening keynote, Hunt asked the audience the infamous question<br />
“How hard can it be?”. He answered the question himself by stating that there are<br />
two different types of complexity, namely essential complexity and accidental com-<br />
plexity. Essential complexity is the complexity required to do a job. It is something<br />
that we all have to live with, some things are hard to achieve by nature. Accidental<br />
complexity or unnecessary complexity on the other hand is something that is arti-<br />
ficial. It should and can be prevented if it is recognized accordingly. There are many<br />
possible reasons for accidental complexity; prejudices or ignorance, stress or lack of<br />
motivation or even just bad luck. Regardless reason, the recipe to avoid accidental<br />
complexity is always the same: rely on reliable things, make a purposeful plan and<br />
stick to it. </p>
<h3>Dan North: No Best Practices: Methodology for thinkers</h3>
<p>Dan North is a renowned speaker from other conferences like JAOO, Agile and<br />
OOPSLA in topics like learning theory and behaviour-driven design. The keynote<br />
North gave at Øredev showed he has a rightful reputation.<br />
As the title indicates, the main mantra in North’s presentation was that there is<br />
no such thing as best practices. As he presented this theory the feeling was similar to </p>
<p><img src="http://blog.jayway.com/wordpress/wp-content/uploads/2009/12/Picture-77.png" alt="Keynote speaker Dan North" title="Keynote speaker Dan North" width="424" height="242" class="alignnone size-full wp-image-3410" /></p>
<p>the scene in Dead Poet’s Society where the teacher asks his students to rip out the<br />
first chapter of their text books.<br />
As a basis for his claim, North explained the Dreyfus Model of Skill Acquisi-<br />
tion. The Dreyfus Model is in itself an interesting topic and describes five different<br />
stages in learning: Novice, Advanced Beginner, Competent, Proficient and Expert.<br />
The novice is the stage of an absolute beginner who relies on rules and guidance to<br />
be able to function whereas the Expert works based off intuition and knowledge at<br />
the subconscious level that has been gathered through many years of work. The in-<br />
teresting part is that the efficiency of people at the expert level is severely reduced if<br />
they are bounded by the safe environments such as a “best practice” that the novice<br />
needs. Best practices are in other words obstructing the people who are the best, the<br />
experts, from doing their job effectively. </p>
<h3>Joel Spolsky: Developing Great Software</h3>
<p>Joel Spolsky has reached his biggest audience through his website joelonsoftware.<br />
com. He is the founder of Fog Creek Software and has created FogBugz, a popular<br />
project management system.<br />
Ten seconds into his seminar, Spolsky immediately showed that he belongs to the<br />
rare selection of people that knows how to make a powerpoint presentation that is<br />
more than just a bunch of slides. As Spolsky brought up a huge picture of Victoria<br />
Beckham on the first page, you knew that you were in for a treat. The topic of the<br />
speech was the importance of good looking software.<br />
Spolsky argued that no matter how good your software is, you will not reach<br />
mass market unless it looks good. He illustrated this through various comparisons<br />
of popular products. Particularly entertaining was the part where he brought up a<br />
Windows XP simulation created entirely within the powerpoint presentation. One<br />
could argue whether that was a good example to bring up in the context of his<br />
speech. Windows is a product that doesn’t necessarily look good compared to one<br />
of its main competitors (OS X), yet has a vastly larger market share. Nevertheless,<br />
the display was impressive and produced lots of laughs from the audience as Spolsky<br />
struggled with various pop-ups and failures in his powerpoint-driven “Windows”.<br />
Even though his presentation clearly was more about entertainment than anything<br />
else, he managed to state an important point: software needs to look good to suc-<br />
ceed! </p>
<p><img src="http://blog.jayway.com/wordpress/wp-content/uploads/2009/12/Picture-78.png" alt="Keynote speaker Joel Spolsky " title="Keynote speaker Joel Spolsky " width="427" height="289" class="alignnone size-full wp-image-3411" /></p>
<h2>Sharing knowledge</h2>
<p>Besides the keynotes the real knowledge sharing was made in the around 80 semi-<br />
nars and in the exhibition hall.<br />
Following the Java track we witnessed the official launch of the Qi4J framework,<br />
introducing Composite Oriented programming, redefining the way we use OOP<br />
today. The new concepts that Qi4J bring are not obvious, even to somebody with<br />
extensive Java experience. We are hoping that Qi4J for dummies will turn up in our<br />
local book store soon.<br />
We also got a first glimpse of Java FX Script, the new GUI framework from<br />
SUN. It has been developed to provide an alternative to the clunky looking Swing<br />
interfaces. Although not yet mature, it is meant to compete with technologies like<br />
Flash and Silverlight.<br />
Another interesting seminar was delivered by Neo Technology, showing us a new<br />
and faster way to store data. Briefly, they have implemented a database using a net-<br />
base, i.e. networks in Java rather than database tables. During the presentation, they<br />
performed a simulated Facebook relation search outclassing a traditional database<br />
by the magnitude of a million.<br />
Identifying some of the trends using Java as a platform rather than as a language is<br />
becoming big. More lightweight languages and scripts such as JRuby on Rails make<br />
use of the Java platform. Domain Driven Design and Web 2.0 (still) were other buz-<br />
zwords that floated around in the lecture halls. As always at Øredev there was a big<br />
focus on open source. The business is changing more towards using and developing<br />
open source frameworks incorporating community thinking into their development<br />
process. There were several seminars that both presented new functionality within<br />
existing frameworks and showed smart ways of using existing technologies. One<br />
example was the demonstration of the new batch framework in Spring.<br />
Sitting in on some of the test and project management seminars a couple of key-<br />
words emerged over and over again, namely “agile” and “test driven”. Even though<br />
most people know that these methods increase productivity and quality of the code,<br />
a quick audience survey showed that there are still few development teams that<br />
actually have incorporated these into their processes. Apparently, it is still tricky to<br />
convince your boss that agile development actually does bring huge winnings.</p>
<h2>Evening activities </h2>
<p>After a full day of new knowledge, inspiring lectures and networking the stage was<br />
taken by the UK stand-up comedian Shazia Mirza. Mirza is a highly acclaimed co-<br />
median and a columnist for the New Statesman. She was recently profiled on CBS<br />
‘60 minutes and has performed all over Europe and USA. Mirza put on a great show<br />
not being the least shy or politically correct, even though she was, as she put it, “the<br />
only Asian woman amongst 600 computer nerds”.<br />
Some great laughs later it was back to business with late evening “Birds Of Feath-<br />
ers” (BOFs), making full flown eagles out of the feathers of knowledge we had been<br />
given during the conference. Some of us joined Owen Taylor at Gigaspaces, making<br />
a complete Gigaspace storage run on our laptops. We were given a chance to try<br />
out this new technology together with one of it’s creators, enabling us to bring the<br />
installation back home for further experiments and tests. We got (and still have) a<br />
good possibility to look under the hood of the magic this product brings, at least that<br />
is promised by Taylor.<br />
For the people that had enough of birds and feathers there was more entertain-<br />
ment from our own band Rockway. </p>
<p><img src="http://blog.jayway.com/wordpress/wp-content/uploads/2009/12/Picture-79.png" alt="Stand-up comedian Shazia Mirza " title="Stand-up comedian Shazia Mirza " width="418" height="246" class="alignnone size-full wp-image-3412" /></p>
<h2>Workshops </h2>
<p>There were many that sought a hands-on experience with the material that was<br />
presented during Øredev, and all participants were given a chance to follow up the<br />
lectures with a variety of workshops. The most popular one was the full Scrum certi-<br />
fication course held by Dr Jeff Sutherland, one of the main creators and preachers of<br />
the Scrum methodology. Another popular workshop was a full day of Qi4J training<br />
allowing programmers to try out the newly launched framework. Andy Hunt also<br />
followed up his lecture on refactoring wetware, i.e. the human mind, with a three<br />
hour workshops, allowing the participants to try out some of the concepts that will<br />
increase productivity and make more efficient use of our brain cells. Hunt presented<br />
a bunch of mind tricks that would have come very handy earlier in the conference. </p>
<h2>Finally</h2>
<p>The yearly Øredev conference is a source of inspiration to an increasing amount of<br />
people. As an employee in the IT sector it is a great opportunity to get access to all<br />
the knowledge presented at the conference, get hands-on with new technologies<br />
and share the visions of some of the biggest names in the business. We tend to spend<br />
more and more time behind our screens, teaching ourselves new tools, technologies<br />
and reinventing the wheel. With Øredev there is a possibility to meet like-minded<br />
people, share experiences and last but not least, to network. Adding new contacts on<br />
your favorite social website is an important goal as any.<br />
Besides the large amount of participants attending there is an increasing number<br />
of exhibitors from all over the world. Be sure to sign up for next year, because the<br />
conference will keep on growing, not only in the number of participants, but also<br />
in importance. There is no better way to keep up to speed with the ever changing<br />
market. Hopefully, the heat will be switched on in all seminar rooms by then.<br />
Until next Øredev... </p>
<p><img src="http://blog.jayway.com/wordpress/wp-content/uploads/2009/12/Picture-80.png" alt="Øredev" title="Øredev" width="424" height="275" class="alignnone size-full wp-image-3413" /></p>
<p><em>Stefan Li, Jakob Klamra, Mattias Severson</em></p>
<p><em>Originally published in <a href="http://jayway.se/jayview">JayView</a>.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jayway.com/2008/02/01/%c3%b8redev-2007/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

