<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Successful Software Development</title>
	<atom:link href="http://successfulsoftwaredevelopment.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://successfulsoftwaredevelopment.wordpress.com</link>
	<description></description>
	<lastBuildDate>Wed, 10 Mar 2010 08:59:38 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='successfulsoftwaredevelopment.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://0.gravatar.com/blavatar/e0a5cc23e6a0df9d2b84380ae077692d?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>Successful Software Development</title>
		<link>http://successfulsoftwaredevelopment.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://successfulsoftwaredevelopment.wordpress.com/osd.xml" title="Successful Software Development" />
	<atom:link rel='hub' href='http://successfulsoftwaredevelopment.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Into the Improbable</title>
		<link>http://successfulsoftwaredevelopment.wordpress.com/2010/03/10/into-the-improbable/</link>
		<comments>http://successfulsoftwaredevelopment.wordpress.com/2010/03/10/into-the-improbable/#comments</comments>
		<pubDate>Wed, 10 Mar 2010 08:58:50 +0000</pubDate>
		<dc:creator>Martin van Vliet</dc:creator>
				<category><![CDATA[project management]]></category>

		<guid isPermaLink="false">http://successfulsoftwaredevelopment.wordpress.com/?p=395</guid>
		<description><![CDATA[I&#8217;m currently reading the excellent book Pragmatic Thinking and Learning. Written by Andy Hunt of the Pragmatic Programmers, it contains a lot of information about how your brain works (your main asset as an knowledge worker) and strategies to get more from it. In the chapter about stimulating your brain, it talks about a deck [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=successfulsoftwaredevelopment.wordpress.com&amp;blog=6895760&amp;post=395&amp;subd=successfulsoftwaredevelopment&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m currently reading the excellent book <a onclick="return mugicPopWin(this,event);" oncontextmenu="mugicRightClick(this);" href="http://www.amazon.com/Pragmatic-Thinking-Learning-Refactor-Programmers/dp/1934356050">Pragmatic Thinking and Learning</a>. Written by Andy Hunt of the Pragmatic Programmers, it contains a lot of information about how your brain works (your main asset as an knowledge worker) and strategies to get more from it. In the chapter about stimulating your brain, it talks about a deck of cards called <a href="http://www.rtqe.net/ObliqueStrategies/">Oblique Strategies</a>. Each card in the deck lists an aphorism meant to jog your thinking, send it in a different direction or encourages you to look at the problem from a different angle.<br />
<span id="more-395"></span></p>
<p>Yesterday I installed the Oblique Strategies <a href="http://www.screenlets.org/index.php/Oblique_Strategies">Linux screenlet</a> on my laptop. A small black rectangle in the corner of the screen shows me one of these cards. Today, it says:</p>
<p><strong>&#8220;Into the Impossible&#8221;</strong></p>
<p>Huh&#8230; Ok, well, applying that to my current project, of course there is something that rings a bell. Across the board, software projects have a very low chance of success (only 32% of are considered successful according to the 2009 CHAOS report). Aside from the overall success rate, the project has some additional factors that make it hard: a fixed deadline, unknown and wildly varying scope, no clear handle on the architecture yet and the software developers to work on it still have to be found.</p>
<p>But it still isn&#8217;t <em>impossible</em> to successfully deliver software by the deadline, that contains features useful to the customer. I like to think of it as <strong>improbable</strong>. Now that&#8217;s something else altogether. If something is <em>impossible</em>, it can&#8217;t be done, no matter how hard you try. But if it&#8217;s merely <em>improbable</em>, then there is room for success.</p>
<p>Another way to look at it is to accept the premise that what you are trying to do really <strong>is</strong> impossible and list the reasons why. My project is impossible, because the deadline is completely unrealistic. Well, what if we have an extra month? What if we deliver a small increment first? What if we scale up another team? This may lead to ideas that can turn your project from impossible into merely improbable.</p>
<p>It&#8217;ll be interesting to see what other oblique strategies come up and whether they&#8217;ll be helpful.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/successfulsoftwaredevelopment.wordpress.com/395/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/successfulsoftwaredevelopment.wordpress.com/395/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/successfulsoftwaredevelopment.wordpress.com/395/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/successfulsoftwaredevelopment.wordpress.com/395/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/successfulsoftwaredevelopment.wordpress.com/395/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/successfulsoftwaredevelopment.wordpress.com/395/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/successfulsoftwaredevelopment.wordpress.com/395/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/successfulsoftwaredevelopment.wordpress.com/395/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/successfulsoftwaredevelopment.wordpress.com/395/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/successfulsoftwaredevelopment.wordpress.com/395/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/successfulsoftwaredevelopment.wordpress.com/395/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/successfulsoftwaredevelopment.wordpress.com/395/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/successfulsoftwaredevelopment.wordpress.com/395/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/successfulsoftwaredevelopment.wordpress.com/395/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=successfulsoftwaredevelopment.wordpress.com&amp;blog=6895760&amp;post=395&amp;subd=successfulsoftwaredevelopment&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://successfulsoftwaredevelopment.wordpress.com/2010/03/10/into-the-improbable/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/98ba48ba525443d571b5efb7b5f31bb8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mpvvliet</media:title>
		</media:content>
	</item>
		<item>
		<title>Customizing the user experience using Seam, JSF and EL</title>
		<link>http://successfulsoftwaredevelopment.wordpress.com/2010/02/27/customizing-the-user-experience-using-seam-jsf-and-el/</link>
		<comments>http://successfulsoftwaredevelopment.wordpress.com/2010/02/27/customizing-the-user-experience-using-seam-jsf-and-el/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 23:57:52 +0000</pubDate>
		<dc:creator>Martin van Vliet</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Seam]]></category>

		<guid isPermaLink="false">http://successfulsoftwaredevelopment.wordpress.com/?p=378</guid>
		<description><![CDATA[A web application may be used by many different types of users of varying skill levels. While it is easy to build the site with a one-size-fits-all user experience, many companies these days want to provide a customized user experience, tailored to the user&#8217;s needs. Here are some possibilities for this using the Seam framework. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=successfulsoftwaredevelopment.wordpress.com&amp;blog=6895760&amp;post=378&amp;subd=successfulsoftwaredevelopment&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A web application may be used by many different types of users of varying skill levels. While it is easy to build the site with a one-size-fits-all user experience, many companies these days want to provide a customized user experience, tailored to the user&#8217;s needs. Here are some possibilities for this using the Seam framework.<br />
<span id="more-378"></span></p>
<p>The simplest way to customize the user experience is to put conditional behaviour in the web pages. This can be done using tags and EL. Seam helps in this respect because it makes all sorts of objects, including the current logged in use, available via EL. An example could be:</p>
<p><code></p>
<pre>
&lt;c:if test="#{loggedInUser.userType eq 'C1'}" &gt;
  &lt;h1&gt;Welcome, C1 user!&lt;/h1&gt;
&lt;/c:if&gt;
</pre>
<p></code></p>
<p>Of course, this does mean that one page that has a lot of user-dependent variations will become riddled with these statements. If this is the case, a page-based approach is better. Using EL in Seam&#8217;s navigation configuration can do this. For example, the following fragment shows how to conditionally render a different version of a page:</p>
<p><code></p>
<pre>
	&lt;page view-id="*"&gt;
		&lt;navigation from-action="#{searchAction.findCompanies(companySearchCriteria)}"&gt;
			&lt;rule if="#{loggedInUser.userType eq 'C1'}"&gt;
				&lt;redirect view-id="/pages/search/SearchResultsC1.xhtml"/&gt;
			&lt;/rule&gt;
			&lt;redirect view-id="/pages/search/searchResults.xhtml"/&gt;
		&lt;/navigation&gt;
	&lt;/page&gt;
</pre>
<p></code></p>
<p>Finally, different users may require different implementations of backend services. For example, a particular class of user may only be allowed to see a subset of search results as compared to another class of user. One way to do this is to use EL to drive dependency injection. Given the dependency below:</p>
<p><code></p>
<pre>
	@In(value="#{serviceInjector.injectService('companyService')}")
	private CompanyService companyService;
</pre>
<p></code></p>
<p>a <code>ServiceInjector</code> class containing the following functionality:</p>
<p><code></p>
<pre>
@Name("serviceInjector")
public class ServiceInjector {
    @In
    private User loggedInUser;
    @In
    private WebAppContextService webAppContextService;
    public Object injectService(String param) {
    	Object result = webAppContextService.lookupBeanOrComponent(param + loggedInUser.getUserType());
    	if (result == null) {
    		result = webAppContextService.lookupBeanOrComponent(param);
    	}
    	return result;
    }
}
</pre>
<p></code></p>
<p>would attempt to inject a user-class specific service instance, falling back to the regular instance if one didn&#8217;t exist.</p>
<p>The attribute to base this choice on is not restricted to a simple enumeration. Since these are Java methods being invoked, all sorts of logic is possible, such as giving a user a preview of a particular piece of functionality but requiring him to subscribe after 10 uses or a temporary promotional campaign.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/successfulsoftwaredevelopment.wordpress.com/378/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/successfulsoftwaredevelopment.wordpress.com/378/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/successfulsoftwaredevelopment.wordpress.com/378/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/successfulsoftwaredevelopment.wordpress.com/378/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/successfulsoftwaredevelopment.wordpress.com/378/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/successfulsoftwaredevelopment.wordpress.com/378/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/successfulsoftwaredevelopment.wordpress.com/378/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/successfulsoftwaredevelopment.wordpress.com/378/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/successfulsoftwaredevelopment.wordpress.com/378/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/successfulsoftwaredevelopment.wordpress.com/378/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/successfulsoftwaredevelopment.wordpress.com/378/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/successfulsoftwaredevelopment.wordpress.com/378/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/successfulsoftwaredevelopment.wordpress.com/378/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/successfulsoftwaredevelopment.wordpress.com/378/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=successfulsoftwaredevelopment.wordpress.com&amp;blog=6895760&amp;post=378&amp;subd=successfulsoftwaredevelopment&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://successfulsoftwaredevelopment.wordpress.com/2010/02/27/customizing-the-user-experience-using-seam-jsf-and-el/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/98ba48ba525443d571b5efb7b5f31bb8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mpvvliet</media:title>
		</media:content>
	</item>
		<item>
		<title>An architecture prototype with JSF and Seam</title>
		<link>http://successfulsoftwaredevelopment.wordpress.com/2010/02/02/an-architecture-poc-with-jsf-and-seam/</link>
		<comments>http://successfulsoftwaredevelopment.wordpress.com/2010/02/02/an-architecture-poc-with-jsf-and-seam/#comments</comments>
		<pubDate>Tue, 02 Feb 2010 03:00:16 +0000</pubDate>
		<dc:creator>Martin van Vliet</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Seam]]></category>

		<guid isPermaLink="false">http://successfulsoftwaredevelopment.wordpress.com/?p=330</guid>
		<description><![CDATA[My current client has been running their main webapplication since 2001. As with all applications, it is a product of it&#8217;s time. It was built with the best webframework then available (Struts) and with the best web development practices of the day. Since then, a team of around 50 developers has been working to maintain [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=successfulsoftwaredevelopment.wordpress.com&amp;blog=6895760&amp;post=330&amp;subd=successfulsoftwaredevelopment&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>My current client has been running their main webapplication since 2001. As with all applications, it is a product of it&#8217;s time. It was built with the best webframework then available (Struts) and with the best web development practices of the day. Since then, a team of around 50 developers has been working to maintain the site and adapt it to meet changing requirements. In a team that big, no one can keep an overview of the entire system and take responsibility for it&#8217;s architectural integrity. The pressure of deadlines did the rest.<br />
<span id="more-330"></span></p>
<p>Looking through the code now, there are a lot of problems:</p>
<ul>
<li>no good separation of concerns (presentation logic is mixed with business logic)</li>
<li>the Action classes contain basically all code in the system, except where delegated to a Helper or Util class</li>
<li>lots of duplication of functionality, across JSP pages as well as Actions</li>
<li>the JSP pages are 1000+ line beasts, equal parts markup and JavaScript code.</li>
</ul>
<p>With a major functional change coming down the line, the time has come to re-imagine this application with today&#8217;s technology. I was asked to see what the application would look like when rebuilt using JSF and Seam. This blog post describes my experiences so far.</p>
<p>The application allows users to browse information in a highly configurable way &#8212; users can add widgets, place them where they like, configure which information is shown and how. In the current application, the pages with user-specific, highly variable data were built using standard JSP pages containing the framework of the page and JavaScript calls to fetch the user-specific parts. Seam and JSF support these concerns very well. Using JSF, the user-specific parts look like this:<br />
<code><br />
<!--  retrieve user-specific widgets and include them in the page --><br />
&lt;c:forEach var="widget" items="#{userPreferences.getWidgets()}"&gt;<br />
	&lt;ui:include src="#{widget.pageName}"/&gt;<br />
&lt;/c:forEach&gt;<br />
</code></p>
<p>By being able to use <code>ui:include</code> and provide it with an EL expression that resolves to the view to be included, the page becomes extremely dynamic.</p>
<p>The above piece of code does contain one tricky bit: the use of <code>c:forEach</code> instead of <code>ui:repeat</code>. It took me a while to figure this out, but there is a good explanation <a href="http://www.ilikespam.com/blog/c:foreach-vs-ui:repeat-in-facelets">in this blog post</a>.<br />
Even knowing that I needed to use the JSTL core tag library instead of the JSF one was a puzzle. JSF apparently comes with support for this, but you have to be aware that you need to use a special namespace declaration in the view page to make it work. Instead of the normal <code>xmlns:c="http://java.sun.com/jstl/jsp/core"</code> you need to use <code>xmlns:c="http://java.sun.com/jstl/core"</code>.</p>
<p>The above code neatly includes the proper widgets in a page. Ideally these widgets would be reusable on other pages. In the Struts application this is not necessarily the case &#8212; before a JSP is rendered, the Action class is responsible for putting all the required data on the request. If I move a widget to another page, the data to display will not be there and I have to move the code to fetch the data as well. This is where a lot of the code duplication begins.</p>
<p>In Seam, the widget is responsible for fetching it&#8217;s own data by invoking Seam components using EL. For instance, the included widget might contain this code:</p>
<p><code><br />
The company's annual sales total #{metricService.calculateAnnualSalesTotal(company)}.<br />
</code></p>
<p>If the company is available somewhere in the Seam contexts, the above fragment will invoke a service using the company to fetch the required data, independent of the request context and makes the widget reusable on any page.</p>
<p>Working with Seam gives you a lot of flexibility, but that also has it&#8217;s downsides. What is needed is, to quote a well-known movie, is <strong>structure and discipline</strong>. Even though Seam doesn&#8217;t require a lot of layering, it still makes sense to separate the different concerns in the application. For the prototype, I chose to implement the traditional view / action / service / DAO layers to give the application more structure. Similarly, with all the options Seam provides for configuration and state management, it is important to pick one and stick with it.</p>
<p>One thing I did find surprising when developing with Seam is how lenient it is when it comes to errors. I&#8217;ve had pages referring to non-existent components or <code>ui:include</code> statements trying to include a missing view page, but Seam didn&#8217;t complain, just rendered an empty piece of HTML. If Seam would have thrown an error, at least I would have known what was wrong, saving me some time.</p>
<p>That said, so far I am impressed with the framework and the style of building websites with Seam. I have the feeling I have yet to tap into the true power of the framework.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/successfulsoftwaredevelopment.wordpress.com/330/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/successfulsoftwaredevelopment.wordpress.com/330/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/successfulsoftwaredevelopment.wordpress.com/330/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/successfulsoftwaredevelopment.wordpress.com/330/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/successfulsoftwaredevelopment.wordpress.com/330/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/successfulsoftwaredevelopment.wordpress.com/330/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/successfulsoftwaredevelopment.wordpress.com/330/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/successfulsoftwaredevelopment.wordpress.com/330/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/successfulsoftwaredevelopment.wordpress.com/330/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/successfulsoftwaredevelopment.wordpress.com/330/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/successfulsoftwaredevelopment.wordpress.com/330/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/successfulsoftwaredevelopment.wordpress.com/330/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/successfulsoftwaredevelopment.wordpress.com/330/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/successfulsoftwaredevelopment.wordpress.com/330/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=successfulsoftwaredevelopment.wordpress.com&amp;blog=6895760&amp;post=330&amp;subd=successfulsoftwaredevelopment&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://successfulsoftwaredevelopment.wordpress.com/2010/02/02/an-architecture-poc-with-jsf-and-seam/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/98ba48ba525443d571b5efb7b5f31bb8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mpvvliet</media:title>
		</media:content>
	</item>
		<item>
		<title>QCon San Francisco 2009</title>
		<link>http://successfulsoftwaredevelopment.wordpress.com/2009/11/29/qcon-san-francisco-2009/</link>
		<comments>http://successfulsoftwaredevelopment.wordpress.com/2009/11/29/qcon-san-francisco-2009/#comments</comments>
		<pubDate>Sun, 29 Nov 2009 13:00:28 +0000</pubDate>
		<dc:creator>Martin van Vliet</dc:creator>
				<category><![CDATA[QCon]]></category>

		<guid isPermaLink="false">http://successfulsoftwaredevelopment.wordpress.com/?p=323</guid>
		<description><![CDATA[This post was previously published on my employer&#8217;s blog. For a few years now, November has been the month of QCon San Francisco for me. So far it has proven an excellent conference with lots of thought-provoking presentations and conversations. This year was no exception. Read on for my personal high- and lowlights. The Conference [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=successfulsoftwaredevelopment.wordpress.com&amp;blog=6895760&amp;post=323&amp;subd=successfulsoftwaredevelopment&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><em>This post was previously published on <a href="http://blog.xebia.com">my employer&#8217;s blog</a>.</em></p>
<p>For a few years now, November has been the month of <a href="http://qconsf.com/">QCon San Francisco</a> for me. So far it has proven an excellent conference with lots of thought-provoking presentations and conversations. This year was no exception. Read on for my personal high- and lowlights.<br />
<span id="more-323"></span></p>
<p><strong>The Conference</strong></p>
<p>If you&#8217;ve never heard of QCon before, the conference bills itself as a conference for and by software developers and architects of any &#8220;denomination&#8221;. Walking the hallways you are equally likely to encounter a Rubyist, Javaan or .NET afficionado. This refreshing diversity leads to interesting presentations and coffee-corner conversations. For me as a Java developer, it also meant that the news about Java 7&#8242;s closures by and large passed me by. <img src='http://s2.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Given it&#8217;s target audience of predominantly teamleads and architects, QCon has less technical depth than, for instance, the <a href="http://www.devoxx.com/display/DV09/Home">Devoxx</a> conference. But with entire tracks dedicated to Ruby and emerging languages (including some C#/F# sessions), it certainly has more breadth. For me personally this is one of the key reasons to attend.</p>
<p><strong>Keynotes</strong></p>
<p>The keynotes this year were a bit of a mixed bag. On Wednesday, two venture capitalists spoke about what they looked for in startups when deciding where to invest. The process they described resembled the <a href="http://www.startuplessonslearned.com/2008/09/lean-startup.html">Lean Startup</a> ideas of iterating as fast as possible with direct customer involvement. Interestingly, they mentioned Scala and Groovy as developments that they as VCs keep a close eye on.</p>
<p>Don Box experimented with Twitter during his keynote. Not saying a word, he wrote tweets on his laptop for the first 20 minutes. An interesting experiment, but it didn&#8217;t manage to hold the attendees&#8217; attention. When the subsequent code demos either failed or proved unable to bring the audience back, Don himself also ran out of steam and brought the keynote to an abrupt and disappointing close. Still good of him to try something new.</p>
<p>The last keynote of the conference was by David Chappel of Oracle who presented and then demonstrated Oracle&#8217;s cloud tooling. Way too Oracle-centric for my money.</p>
<p>For next year, I really hope QCon will do away with the vendor keynotes, even if this means going back to 2 keynotes like the last few years. Someone like Kent Beck or Uncle Bob has much more interesting things to say.</p>
<p><strong>Highlights</strong></p>
<p>Dan North&#8217;s <a href="http://qconsf.com/sf2009/presentation/Adventures+of+an+Agile+Architect">presentation</a> about a challenging agile project was great. It was filled with lessons about transitional architecture and agile adoption and plenty of humor to boot.</p>
<p>In <a href="http://qconsf.com/sf2009/presentation/Lessons+Learned+from+Architecture+Reviews">Lessons learned from Architecture Reviews</a> Rebecca Wirfs-Brock discussed not only how to perform an architecture review, but also how to effectively present an architecture depending on your audience and the political environment.</p>
<p>Eric Evans talked about <a href="http://qconsf.com/sf2009/presentation/Sustainable+Design+for+Agile+Teams">incorporating modeling and design</a> into the agile development process and presented an early draft of his <a href="http://www.domainlanguage.com/processdraft/">model exploration process</a>. Eric uses this process when doing DDD consulting for clients and is useful for anyone applying the technique.</p>
<p>There was a lot of interest in lean software development and kanban as well. I attended presentations by <a href="http://qconsf.com/sf2009/presentation/Using+Kanban+to+help+dysfunctional+agile+teams">Jeff Patton</a> and <a href="http://qconsf.com/sf2009/presentation/A+Leaner+form+of+Agility">David Laribee</a> which provided useful practical tips and real-world experience. Though I didn&#8217;t attend it myself, I heard a lot of good things about <a href="http://qconsf.com/sf2009/presentation/Kanban+vs+Scrum+-+a+practical+guide">Henrik Kniberg&#8217;s</a> talk as well.</p>
<p>One of the most impressive tracks at QCon is <em>Architectures you&#8217;ve always wondered about</em>. I&#8217;m always inspired by seeing how sites such as eBay or LinkedIn handle their scaling requirements. This year&#8217;s session about <a href="http://qconsf.com/sf2009/presentation/Amazon+S3:++Architecting+for+Resiliency+in+the+Face+of+Failures">Amazon S3</a> was equally impressive, describing design patterns for building applications that can guarantee uptime in the face of hard drive, network or machine failures. To test their service, Amazon regularly holds unannounced &#8220;game days&#8221; where they take an entire datacenter offline to see if their architecture can handle it. That is some serious testing.</p>
<p><strong>Trends</strong></p>
<p>During the conference, I noticed a lot of interest in:</p>
<ul>
<li>teaching people the craft of agile software development. Presentations discussing personal traits required for programming and software apprenticeship were the result.</li>
<li>JVM-based languages like Scala and Clojure. This is hardly news, but what surprised me was the level of interest there was from non-Java developers. Several people I talked to told me that they were experimenting with these languages in their spare time while working .NET at their dayjob.</li>
<li>Continuous <strong>deployment</strong> (meaning continuous deployment to production).</li>
</ul>
<p>Bucking the trend I&#8217;ve been hearing about at other conferences, the wifi at QCon actually worked without a hitch for me. </p>
<p><strong>Conclusion</strong></p>
<p>For me, QCon was about re-discovering the agile software development craft this year. Talking with practitioners and hearing their experiences gave me lots of new ideas and inspiration to bring to my own projects. That said, most of the tracks and topics feel like they&#8217;ve been around for a while. Next year I&#8217;m hoping to hear about the &#8220;next big thing&#8221;.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/successfulsoftwaredevelopment.wordpress.com/323/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/successfulsoftwaredevelopment.wordpress.com/323/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/successfulsoftwaredevelopment.wordpress.com/323/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/successfulsoftwaredevelopment.wordpress.com/323/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/successfulsoftwaredevelopment.wordpress.com/323/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/successfulsoftwaredevelopment.wordpress.com/323/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/successfulsoftwaredevelopment.wordpress.com/323/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/successfulsoftwaredevelopment.wordpress.com/323/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/successfulsoftwaredevelopment.wordpress.com/323/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/successfulsoftwaredevelopment.wordpress.com/323/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/successfulsoftwaredevelopment.wordpress.com/323/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/successfulsoftwaredevelopment.wordpress.com/323/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/successfulsoftwaredevelopment.wordpress.com/323/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/successfulsoftwaredevelopment.wordpress.com/323/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=successfulsoftwaredevelopment.wordpress.com&amp;blog=6895760&amp;post=323&amp;subd=successfulsoftwaredevelopment&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://successfulsoftwaredevelopment.wordpress.com/2009/11/29/qcon-san-francisco-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/98ba48ba525443d571b5efb7b5f31bb8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mpvvliet</media:title>
		</media:content>
	</item>
		<item>
		<title>The Essence of Networking</title>
		<link>http://successfulsoftwaredevelopment.wordpress.com/2009/10/08/the-essence-of-networking/</link>
		<comments>http://successfulsoftwaredevelopment.wordpress.com/2009/10/08/the-essence-of-networking/#comments</comments>
		<pubDate>Thu, 08 Oct 2009 20:58:44 +0000</pubDate>
		<dc:creator>Martin van Vliet</dc:creator>
				<category><![CDATA[books]]></category>
		<category><![CDATA[knowledge management]]></category>

		<guid isPermaLink="false">http://successfulsoftwaredevelopment.wordpress.com/?p=307</guid>
		<description><![CDATA[In this post I talk about one of the books I read as part of my personal knowledge management. The Essence of Networking is a Dutch book (&#8220;De essentie van netwerken&#8221;) about networking in the social, non-TCP/IP sense. It describes what networking is, how and why it works and gives practical tips on how to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=successfulsoftwaredevelopment.wordpress.com&amp;blog=6895760&amp;post=307&amp;subd=successfulsoftwaredevelopment&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><em>In this post I talk about one of the books I read as part of my <a href="http://successfulsoftwaredevelopment.wordpress.com/2009/04/04/personal-knowledge-management">personal knowledge management</a>.</em></p>
<p>The Essence of Networking is a Dutch book (&#8220;De essentie van netwerken&#8221;) about networking in the social, non-TCP/IP sense. It describes what networking is, how and why it works and gives practical tips on how to go about it. If nothing else, it&#8217;s a good reminder &#8212; I&#8217;ve re-connected with several old friends and coworkers since reading the book.<br />
<span id="more-307"></span></p>
<p>Often, people associate networking with smooth-talking salesmen, playing 18 holes with some golf buddies to try to secure a job or sell a product. If you&#8217;re not one of these types, networking is not for you. Not so, according to this book. Networking is not the sole domain of any one personality type. It is not done to sell things or score projects. Networking is about creating and maintaining meaningful relationships with people. Through these relationships, you will help other people and they, in turn, help you.</p>
<p>Sounds like a lot of work? It doesn&#8217;t have to be, once your conscious of it, it can become second nature. Receive an invitation to a seminar but can&#8217;t go &#8212; who in your network would be interested? Hear about a job opening up in your department &#8212; know any good graphic designers? Your colleague planning a weekend in Paris &#8212; recommend that great little hotel you stayed at a few months ago. And don&#8217;t forget &#8212; even if you can&#8217;t help directly, someone else in your network might.</p>
<p>For people to help you, they will need to know you, know what you want to achieve and what you need. Try this &#8212; answer the question &#8220;So what do you do?&#8221; in 10 seconds. Instead of naming a job title, describe what product or service you provide, how it helps your customers and what value it adds. An answer like this will mean something to your conversation partner, get people thinking and invite further conversation. </p>
<p>To start out on the road to networking bliss, start by mapping out your network. Classmates, co-workers, friends, people you met at the squash club, all of these are part of your network. List them, their contact information and some basics like job, birthday, family situation, etc. Next, you need to know what their goals and dreams are. Does he want to start his own company, open a B&amp;B? Are they passionate about running a marathon, seeing the latest cult movies or playing Guitar Hero? Helping people realize their dreams, even in a small way, adds value to both your lives.</p>
<p>Cultivating your network is a matter of keeping their needs and wants in the back of your head. Whenever something comes up that someone might be interested in, forward it to him. Keep in touch, too, calling or emailing your contacts to check in. If you do this, you can also call on your network when you need something. Ask for help, an opinion, an introduction or a recommendation. Be as clear and concise as possible, but don&#8217;t demand anything and don&#8217;t be insulted if the other doesn&#8217;t respond as you would hope. The act of asking in itself is useful &#8212; if nothing else, you&#8217;ve planted a seed that someone can respond to in time.</p>
<p>I found the book enjoyable to read and have learned a thing or two about how you can approach networking. It&#8217;s not like I&#8217;ll be applying these lessons instantly, but I have started to become more conscious of my network and how to maintain or grow it. That in itself is worthwhile.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/successfulsoftwaredevelopment.wordpress.com/307/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/successfulsoftwaredevelopment.wordpress.com/307/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/successfulsoftwaredevelopment.wordpress.com/307/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/successfulsoftwaredevelopment.wordpress.com/307/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/successfulsoftwaredevelopment.wordpress.com/307/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/successfulsoftwaredevelopment.wordpress.com/307/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/successfulsoftwaredevelopment.wordpress.com/307/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/successfulsoftwaredevelopment.wordpress.com/307/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/successfulsoftwaredevelopment.wordpress.com/307/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/successfulsoftwaredevelopment.wordpress.com/307/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/successfulsoftwaredevelopment.wordpress.com/307/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/successfulsoftwaredevelopment.wordpress.com/307/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/successfulsoftwaredevelopment.wordpress.com/307/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/successfulsoftwaredevelopment.wordpress.com/307/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=successfulsoftwaredevelopment.wordpress.com&amp;blog=6895760&amp;post=307&amp;subd=successfulsoftwaredevelopment&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://successfulsoftwaredevelopment.wordpress.com/2009/10/08/the-essence-of-networking/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/98ba48ba525443d571b5efb7b5f31bb8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mpvvliet</media:title>
		</media:content>
	</item>
		<item>
		<title>Online backup for Linux</title>
		<link>http://successfulsoftwaredevelopment.wordpress.com/2009/09/09/online-backup-for-linux/</link>
		<comments>http://successfulsoftwaredevelopment.wordpress.com/2009/09/09/online-backup-for-linux/#comments</comments>
		<pubDate>Wed, 09 Sep 2009 14:01:47 +0000</pubDate>
		<dc:creator>Martin van Vliet</dc:creator>
				<category><![CDATA[backup]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://successfulsoftwaredevelopment.wordpress.com/?p=290</guid>
		<description><![CDATA[Having just returned from a vacation with tons of new pictures I started thinking about properly backing up my data, something I haven&#8217;t been very diligent about in the past. Talking to a friend whose USB disk failed and the resulting loss of data made me take action. My home storage setup consists of one [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=successfulsoftwaredevelopment.wordpress.com&amp;blog=6895760&amp;post=290&amp;subd=successfulsoftwaredevelopment&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Having just returned from a vacation with tons of new pictures I started thinking about properly backing up my data, something I haven&#8217;t been very diligent about in the past. Talking to a friend whose USB disk failed and the resulting loss of data made me take action.<br />
<span id="more-290"></span></p>
<p>My home storage setup consists of one <a href="http://www.nslu2-linux.org/">NSLU2</a> with 2 USB harddisks attached (200GB and 500GB). This is where I store all my media content, such as photos, music and movies to be served on my old 1st generation XBox and <a href="http://www.xbmc.org/">XBMC</a>. The only other data I care about (documents, spreadsheets, tax forms, etc.) is either on my home laptop (basically a desktop replacement) or my work laptop.</p>
<p>At the moment, my backup scheme (if you can call it that <img src='http://s2.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ) consists of burning DVDs with my photos on them at irregular intervals (adding new images when returning from a trip might prompt another backup). Music is backed up from one USB disk to the other while movies are not backed up at all (the movies I really care about I own on DVD). The important documents on the laptops are also backed up haphazardly.</p>
<p>This setup suffers from several problems:</p>
<ul>
<li> backups done at irregular intervals</li>
<li>the DVDs used will eventually become unreadable</li>
<li>backing up to USB disks in my apartment runs the risk of losing all data at once</li>
</ul>
<p>So, I started to look for options.</p>
<p>The first thing I decided was to look for online backups since these will survive even if my house catches fire or is flooded (hey, it&#8217;s Holland! <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  ). The following were hard requirements:</p>
<ul>
<li>Both a Windows and a Linux client since these are the platforms I use</li>
<li>Ability to backup NAS drives</li>
<li>Encryption with a key of my choosing</li>
<li>Efficient use of bandwidth</li>
</ul>
<p>Other than that, convenience and of course price are further considerations.</p>
<p>After some searching I found that some of the more popular options (<a href="https://www.backblaze.com/">BackBlaze</a>, <a onclick="return mugicPopWin(this,event);" oncontextmenu="mugicRightClick(this);" href="http://www.carbonite.com/">Carbonite</a> and <a onclick="return mugicPopWin(this,event);" oncontextmenu="mugicRightClick(this);" href="http://mozy.com/">Mozy</a>) do not have a Linux client. The ones I did consider were:</p>
<ul>
<li><a href="http://www.getdropbox.com/">Dropbox</a></li>
<li><a href="http://www.jungledisk.com/">JungleDisk</a></li>
<li><a href="https://spideroak.com/">SpiderOak</a></li>
</ul>
<p>One thing I noticed is that these three services all require payment for the amount of storage used. This in contrast to the non-Linux options which offer unlimited storage. BackBlaze and Carbonite require a fee per machine backed up and hence disallow backing up of NAS drives.</p>
<p>I expect to be using between 50GB to 100GB of storage, so decided to compare the services based on 50GB, 100GB and 150GB:</p>
<p><strong>Dropbox</strong><br />
<em>Pricing</em>: fixed per storage usage<br />
<em>50GB</em>: $120 per year<br />
<em>100GB</em>: $240 per year<br />
<em>150GB</em>: not possible</p>
<p><strong>JungleDisk</strong><br />
<em>Pricing</em>: $0.15 per GB per month (when using Rackspace Cloud Files)<br />
<em>50GB</em>: $90 per year<br />
<em>100GB</em>: $180 per year<br />
<em>150GB</em>: $270 per year</p>
<p><strong>SpiderOak</strong><br />
<em>Pricing</em>: $10 per month per 100GB (or $100 per year per 100GB)<br />
<em>50GB</em>: $100 per year<br />
<em>100GB</em>: $100 per year<br />
<em>150GB</em>: $200 per year</p>
<p>SpiderOak also provides some nice-to-haves, such as syncing, sharing and a commandline client. The only major feature missing is the ability to upload changed data when the computer is idle, but this is already on the map for a feature release.</p>
<p>Given all this, I decided to give SpiderOak a try. So far things have not been easy (install on FC10 failed, initialization of Windows client through the company NTLM HTTP proxy failed) but I&#8217;m not going to let that get in the way. At least, not yet. <img src='http://s2.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/successfulsoftwaredevelopment.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/successfulsoftwaredevelopment.wordpress.com/290/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/successfulsoftwaredevelopment.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/successfulsoftwaredevelopment.wordpress.com/290/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/successfulsoftwaredevelopment.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/successfulsoftwaredevelopment.wordpress.com/290/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/successfulsoftwaredevelopment.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/successfulsoftwaredevelopment.wordpress.com/290/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/successfulsoftwaredevelopment.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/successfulsoftwaredevelopment.wordpress.com/290/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/successfulsoftwaredevelopment.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/successfulsoftwaredevelopment.wordpress.com/290/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/successfulsoftwaredevelopment.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/successfulsoftwaredevelopment.wordpress.com/290/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=successfulsoftwaredevelopment.wordpress.com&amp;blog=6895760&amp;post=290&amp;subd=successfulsoftwaredevelopment&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://successfulsoftwaredevelopment.wordpress.com/2009/09/09/online-backup-for-linux/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/98ba48ba525443d571b5efb7b5f31bb8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mpvvliet</media:title>
		</media:content>
	</item>
		<item>
		<title>Making agile the easy choice</title>
		<link>http://successfulsoftwaredevelopment.wordpress.com/2009/07/01/making-agile-the-easy-choice/</link>
		<comments>http://successfulsoftwaredevelopment.wordpress.com/2009/07/01/making-agile-the-easy-choice/#comments</comments>
		<pubDate>Wed, 01 Jul 2009 18:18:25 +0000</pubDate>
		<dc:creator>Martin van Vliet</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[scrum]]></category>

		<guid isPermaLink="false">http://successfulsoftwaredevelopment.wordpress.com/?p=258</guid>
		<description><![CDATA[Ever try to convince a manager to adopt an agile project approach and failed? That happened to me recently. A new manager came onto the project and pulled out his MS Project clone. &#8220;All we have to do is plug our deliverables and tasks into this program and I&#8217;ll be able to track the project&#8217;s [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=successfulsoftwaredevelopment.wordpress.com&amp;blog=6895760&amp;post=258&amp;subd=successfulsoftwaredevelopment&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Ever try to convince a manager to adopt an agile project approach and failed? That happened to me recently. A new manager came onto the project and pulled out his MS Project clone. &#8220;All we have to do is plug our deliverables and tasks into this program and I&#8217;ll be able to track the project&#8217;s progress.&#8221;, he said. I smiled at him and asked if he had heard of <a href="http://en.wikipedia.org/wiki/Scrum_(development)">Scrum</a>. When he said no I started explaining the methodology to him. After two sentences he stopped me and said &#8220;I&#8217;ve worked like that sometime ago in the 90s and it didn&#8217;t work then.&#8221; That, as far as he was concerned, was that.<br />
<span id="more-258"></span></p>
<p>You could argue that someone with this attitude can not be convinced and I would agree with you. But it doesn&#8217;t hurt to think about how you can best go about convincing someone that agile is the best way to run a project., even if that doesn&#8217;t work for some people.</p>
<p>Recently I was writing a software development plan for a project. The project manager was open as far as development methodology goes, so I decided to try to convince him to go agile. I started the plan by listing a number of <b>principles</b> that the plan was based on. They were:</p>
<ul>
<li><b>risk-driven development</b> (do the most risky items first)</li>
<li><b>prioritizing</b> (order functionality by business value delivered)</li>
<li><b>flexibility</b> (be flexible for scope or priority changes)</li>
<li><b>transparancy</b> (openly show your progress and delivered software)</li>
</ul>
<p>Pretty reasonable-sounding principles, right?</p>
<p>My next paragraph declared that, if you value these principles, an agile software development methodology is the way to go. Then I listed the features of an agile methodology (Scrum in this case) and for each feature I described I referred back to which principle guided this feature. For instance:</p>
<ul>
<li>start validating assumptions with working software from the first iteration (<b>risk-driven development</b>)</li>
<li>work in short iterations, allowing for new priorities (<b>flexibility</b>)</li>
<li>demonstrate working software at the end of an iteration (<b>transparancy</b>)</li>
<li>update the planning at the end of each iteration (<b>transparancy</b>)</li>
<li>do the most highly valued functionality first (<b>prioritizing</b>)</li>
</ul>
<p>When reading this document, the project manager said: &#8220;You know, this agile really makes a lot of sense in our context.&#8221; Done! <img src='http://s2.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  </p>
<p>Of course there is nothing really specific in our context that makes agile such a good fit. Rather, by starting from a set of principles that everyone agrees are a good idea and showing how agile realizes those, it makes it a lot easier to sell the approach.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/successfulsoftwaredevelopment.wordpress.com/258/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/successfulsoftwaredevelopment.wordpress.com/258/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/successfulsoftwaredevelopment.wordpress.com/258/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/successfulsoftwaredevelopment.wordpress.com/258/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/successfulsoftwaredevelopment.wordpress.com/258/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/successfulsoftwaredevelopment.wordpress.com/258/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/successfulsoftwaredevelopment.wordpress.com/258/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/successfulsoftwaredevelopment.wordpress.com/258/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/successfulsoftwaredevelopment.wordpress.com/258/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/successfulsoftwaredevelopment.wordpress.com/258/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/successfulsoftwaredevelopment.wordpress.com/258/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/successfulsoftwaredevelopment.wordpress.com/258/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/successfulsoftwaredevelopment.wordpress.com/258/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/successfulsoftwaredevelopment.wordpress.com/258/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=successfulsoftwaredevelopment.wordpress.com&amp;blog=6895760&amp;post=258&amp;subd=successfulsoftwaredevelopment&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://successfulsoftwaredevelopment.wordpress.com/2009/07/01/making-agile-the-easy-choice/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/98ba48ba525443d571b5efb7b5f31bb8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mpvvliet</media:title>
		</media:content>
	</item>
		<item>
		<title>Flawless Consulting</title>
		<link>http://successfulsoftwaredevelopment.wordpress.com/2009/06/09/flawless-consulting/</link>
		<comments>http://successfulsoftwaredevelopment.wordpress.com/2009/06/09/flawless-consulting/#comments</comments>
		<pubDate>Tue, 09 Jun 2009 20:38:48 +0000</pubDate>
		<dc:creator>Martin van Vliet</dc:creator>
				<category><![CDATA[books]]></category>

		<guid isPermaLink="false">http://successfulsoftwaredevelopment.wordpress.com/?p=236</guid>
		<description><![CDATA[In this post I talk about one of the books I read as part of my personal knowledge management. One of my colleagues read the book Flawless Consulting and was blown away by it. In his opinion, every consultant should read this book at least once. Usually, I&#8217;m skeptical when someone claims that everyone in [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=successfulsoftwaredevelopment.wordpress.com&amp;blog=6895760&amp;post=236&amp;subd=successfulsoftwaredevelopment&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><em>In this post I talk about one of the books I read as part of my <a href="http://successfulsoftwaredevelopment.wordpress.com/2009/04/04/personal-knowledge-management">personal knowledge management</a>.</em></p>
<p>One of my colleagues read the book <strong>Flawless Consulting</strong> and was blown away by it. In his opinion, every consultant should read this book at least once. Usually, I&#8217;m skeptical when someone claims that everyone in the profession should read a particular book. Even though the book may be useful to the person making the statement, it is often because of a combination of time, place and work situation. Such conditions are unique to the person reading the book and do not easily transfer to someone else.</p>
<p>On the other hand, <strong>Flawless Consulting</strong> looked like a nice change of pace from my normal reading, so I put it on my book list. After having read the book I found myself repeating the statement my colleague made before: every consultant <em>should</em> read this book! In this post I&#8217;ll try to summarize why I think this is the case and what to me are the most important things I learned.</p>
<p><span id="more-236"></span></p>
<p><strong>Flawless Consulting</strong> describes the process of consulting or professionally giving advice. The book divides this process into a number of phases, each of which has it&#8217;s particular goals and format. To consult <em>flawlessy</em> (perfectly), the book asserts, you have to do two things: <strong>be authentic</strong> and <strong>completing the business of the phase</strong> in the consulting process. Following these rules does not mean all your consulting engagements are going to be successful, but at least you will have done everything in your power to make it so.</p>
<p>The emphasis on <strong>being authentic</strong> surprised me. Why is the consultant&#8217;s attitude a critical success factor in consulting? Being authentic means being honest and open about the feelings you experience in your relationship with the client and expressing these feelings, directly and openly. For instance, if the client asks you to perform your engagement in a short timeframe because everyone is really busy, an authentic response would be to say: <em>You are treating the assignment as if it is an afterthought. I would like you to give it the attention it deserves.</em> instead of a more standard response like <em>The problem you mention can have far-reaching consequences and cause a lot of harm if not addressed appropriately.</em>. Being authentic is crucial because it brings issues and assumptions out into the open where they can be discussed and dealt with. This, in turn, will build trust between the client and the consultant, improving the chances of a successful project. </p>
<p>One of the key points that is fundamental to consulting is the <strong>distinction between a consultant and a manager</strong>. As a consultant, I often feel strongly about the subjects I give advice about. If a client chooses not to follow my advice, this can be frustrating. However, the consultant is not, in the end, responsible for the use of his recommendations and expertise. Even if the result of your work is never implemented, you may still have done a good job of consulting. The only thing the consultant can do is to work with clients in a way that increases the probability of your work being used.</p>
<p>The chapters about <strong>dealing with resistance</strong> are particularly relevant. The author sees resistance as a <em>predictable, natural, emotional reaction against the process of facing up to difficult problems</em>. Any resistance the client is feeling is <strong>not</strong> aimed at you, the consultant, but at the problems he is facing. This can take many forms, such as asking for unnecessary detail, silence or, surprisingly, extreme compliance with the consultant&#8217;s suggestions. To deal with resistance, the book describes three steps: identify in your own mind what form the resistance is taking; state, in a neutral, non-judging way, the form the resistance is taking; then be quiet and let the manager respond. Often, this is all that is needed to deal with the resistance. Simply naming it and discussing it openly causes these feelings to change or pass.</p>
<p>So, why is this a book every consultant should read? <strong>Flawless Consulting</strong> describes the process of consulting and the numerous signs indicating that something may be wrong, including how to avoid or fix these situations. Since I read the book I found that parts of it are applicable to every consulting engagement I&#8217;ve done. Of course it is possible to discover all of the book&#8217;s lessons by yourself, but why not get a headstart when you can? I am sure I will often refer back to this book in my future engagements.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/successfulsoftwaredevelopment.wordpress.com/236/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/successfulsoftwaredevelopment.wordpress.com/236/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/successfulsoftwaredevelopment.wordpress.com/236/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/successfulsoftwaredevelopment.wordpress.com/236/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/successfulsoftwaredevelopment.wordpress.com/236/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/successfulsoftwaredevelopment.wordpress.com/236/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/successfulsoftwaredevelopment.wordpress.com/236/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/successfulsoftwaredevelopment.wordpress.com/236/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/successfulsoftwaredevelopment.wordpress.com/236/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/successfulsoftwaredevelopment.wordpress.com/236/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/successfulsoftwaredevelopment.wordpress.com/236/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/successfulsoftwaredevelopment.wordpress.com/236/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/successfulsoftwaredevelopment.wordpress.com/236/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/successfulsoftwaredevelopment.wordpress.com/236/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=successfulsoftwaredevelopment.wordpress.com&amp;blog=6895760&amp;post=236&amp;subd=successfulsoftwaredevelopment&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://successfulsoftwaredevelopment.wordpress.com/2009/06/09/flawless-consulting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/98ba48ba525443d571b5efb7b5f31bb8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mpvvliet</media:title>
		</media:content>
	</item>
		<item>
		<title>Installing Vodafone Mobile Connect on Fedora Linux</title>
		<link>http://successfulsoftwaredevelopment.wordpress.com/2009/05/18/installing-vodafone-mobile-connect-on-fedora-linux/</link>
		<comments>http://successfulsoftwaredevelopment.wordpress.com/2009/05/18/installing-vodafone-mobile-connect-on-fedora-linux/#comments</comments>
		<pubDate>Mon, 18 May 2009 21:48:44 +0000</pubDate>
		<dc:creator>Martin van Vliet</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://successfulsoftwaredevelopment.wordpress.com/?p=217</guid>
		<description><![CDATA[Sometimes, working at a large client organization presents something of a paradox. On the one hand, you&#8217;re there to do work for them, but on the other, their rules and regulations make it hard for you to do so. At my current project, the company&#8217;s security policy does not allow anyone to put external computers [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=successfulsoftwaredevelopment.wordpress.com&amp;blog=6895760&amp;post=217&amp;subd=successfulsoftwaredevelopment&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Sometimes, working at a large client organization presents something of a paradox. On the one hand, you&#8217;re there to do work for them, but on the other, their rules and regulations make it hard for you to do so. </p>
<p>At my current project, the company&#8217;s security policy does not allow anyone to put external computers on the network, preventing me and my development team from working on our laptops. The desktops that we can use are locked up so tightly (not to mention underpowered) that they can&#8217;t be used for development either. To fix this (and do nothing illegal) I asked my company for a Vodafone Mobile Connect USB modem and installed it on my Fedora Linux laptop.<br />
<span id="more-217"></span></p>
<p>The USB modem I received already contained a SIM card, so I attached it to my laptop. According to <code>/var/log/messages</code>, Linux recognized the card at once:</p>
<p><code><br />
May 18 22:34:44 localhost kernel: usb 4-2: new full speed USB device using uhci_hcd and address 8<br />
May 18 22:34:44 localhost kernel: usb 4-2: configuration #1 chosen from 1 choice<br />
May 18 22:34:44 localhost kernel: scsi15 : SCSI emulation for USB Mass Storage devices<br />
May 18 22:34:44 localhost kernel: usb 4-2: New USB device found, idVendor=12d1, idProduct=1003<br />
May 18 22:34:44 localhost kernel: usb 4-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0<br />
May 18 22:34:44 localhost kernel: usb 4-2: Product: HUAWEI Mobile<br />
May 18 22:34:44 localhost kernel: usb 4-2: Manufacturer: HUAWEI Technologies<br />
May 18 22:34:44 localhost kernel: usb 4-2: USB disconnect, address 8<br />
</code></p>
<p>Some Googling revealed I needed to download the <a href="http://www.betavine.net/bvportal/web/linux_drivers">Vodafone Mobile Connect Card Driver for Linux</a>. Even though my laptop runs Fedora 9, I downloaded the Fedora 8 RPM. Attempting an install indicated I was missing some dependencies: <code>python-twisted, pytz, wvdial</code> (all part of the Fedora repository), but some other ones that I needed to download separately: [<a href="http://rpmfind.net/linux/rpm2html/search.php?query=libgksu&amp;submit=Search+...&amp;system=&amp;arch=">libgksu</a>] and [<a href="http://rpmfind.net/linux/rpm2html/search.php?query=gksu&amp;submit=Search+...&amp;system=&amp;arch=">gksu</a>]. There were no Fedora versions of the software, so I downloaded and installed the <em>Red Hat Linux el5</em> versions. Now the Vodafone driver software also installed successfully.</p>
<p>Booting the driver, I was prompted for a PIN code. Trying the default &#8217;0000&#8242; worked like a charm. The program recognized that it needed the Vodafone NL settings and put them in:</p>
<p><code><br />
Network operator: Vodafone<br />
Username: vodafone<br />
Password: vodafone,<br />
APN: live.vodafone.com<br />
</code></p>
<p>This allowed me to successfully make a connection and send an SMS message.</p>
<p>Accessing the internet proved to be more of a problem. Apparently, the driver software received incorrect DNS settings, or so the program informed me. Pinging an IP address worked, but browsing the internet was impossible. The solution turned out to be to configure static DNS servers in the Mobile Connect software. After having tried lots of different IP addresses, the following ones worked:</p>
<p><code><br />
nameserver 10.206.65.68<br />
nameserver 158.43.240.4<br />
</code></p>
<p>Works perfectly. Now I&#8217;ll have to figure out how to share my UMTS connection with my team mates and we&#8217;ll have a mobile development team ready to go!</p>
<p><strong>Update</strong>: sometimes pppd doesn&#8217;t correctly update the routing tables and hence no network connectivity:</p>
<p><code><br />
May 20 06:51:48 localhost pppd[25311]: not replacing existing default route via 10.0.0.138<br />
</code></p>
<p>For now, the only solution I&#8217;ve found is to manually add the correct route:</p>
<p><code><br />
# route del default<br />
# route add default gw 10.64.64.64<br />
</code></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/successfulsoftwaredevelopment.wordpress.com/217/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/successfulsoftwaredevelopment.wordpress.com/217/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/successfulsoftwaredevelopment.wordpress.com/217/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/successfulsoftwaredevelopment.wordpress.com/217/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/successfulsoftwaredevelopment.wordpress.com/217/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/successfulsoftwaredevelopment.wordpress.com/217/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/successfulsoftwaredevelopment.wordpress.com/217/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/successfulsoftwaredevelopment.wordpress.com/217/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/successfulsoftwaredevelopment.wordpress.com/217/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/successfulsoftwaredevelopment.wordpress.com/217/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/successfulsoftwaredevelopment.wordpress.com/217/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/successfulsoftwaredevelopment.wordpress.com/217/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/successfulsoftwaredevelopment.wordpress.com/217/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/successfulsoftwaredevelopment.wordpress.com/217/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=successfulsoftwaredevelopment.wordpress.com&amp;blog=6895760&amp;post=217&amp;subd=successfulsoftwaredevelopment&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://successfulsoftwaredevelopment.wordpress.com/2009/05/18/installing-vodafone-mobile-connect-on-fedora-linux/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/98ba48ba525443d571b5efb7b5f31bb8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mpvvliet</media:title>
		</media:content>
	</item>
		<item>
		<title>The project confidence cosine</title>
		<link>http://successfulsoftwaredevelopment.wordpress.com/2009/05/08/the-project-confidence-cosine/</link>
		<comments>http://successfulsoftwaredevelopment.wordpress.com/2009/05/08/the-project-confidence-cosine/#comments</comments>
		<pubDate>Fri, 08 May 2009 11:48:23 +0000</pubDate>
		<dc:creator>Martin van Vliet</dc:creator>
				<category><![CDATA[visualization]]></category>
		<category><![CDATA[war stories]]></category>

		<guid isPermaLink="false">http://successfulsoftwaredevelopment.wordpress.com/?p=184</guid>
		<description><![CDATA[Starting a new project is great: everything is new and shiny, the domain is interesting, the people you&#8217;re working with are great and everything is possible. This honeymoon phase only lasts for a while. Then, reality hits: the domain turns out to be very complex, people start seeing problems instead of solutions and time is [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=successfulsoftwaredevelopment.wordpress.com&amp;blog=6895760&amp;post=184&amp;subd=successfulsoftwaredevelopment&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Starting a new project is great: everything is new and shiny, the domain is interesting, the people you&#8217;re working with are great and everything is possible. This honeymoon phase only lasts for a while. Then, reality hits: the domain turns out to be very complex, people start seeing problems instead of solutions and time is flying by, making it increasingly hard to live up to the client&#8217;s expectations before the deadline. Despair!<br />
<span id="more-184"></span></p>
<p>Usually this is a temporary condition. By crunching knowledge, identifying patterns and addressing the other difficulties of your project, you&#8217;ll be able to find your way out of this pit. It&#8217;s not unusual to overcompensate and reach a new level of optimism. My current assignment is following much the same, cosine-like course. I&#8217;ve charted the first iteration for my current project below.</p>
<p><img src="http://successfulsoftwaredevelopment.files.wordpress.com/2009/04/project_confidence_cosine1.jpg?w=450" alt="Project Confidence Cosine" title="Project Confidence Cosine" class="aligncenter size-large wp-image-195" /></p>
<p>Of course, a cosine is a periodic function, so having gotten to the end of your particular curve, you&#8217;re likely to start a new one. I&#8217;ve found that being aware of this process makes it somewhat easier to deal with. It also helps if you and your team mates are in different places in this cycle. <img src='http://s2.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/successfulsoftwaredevelopment.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/successfulsoftwaredevelopment.wordpress.com/184/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/successfulsoftwaredevelopment.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/successfulsoftwaredevelopment.wordpress.com/184/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/successfulsoftwaredevelopment.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/successfulsoftwaredevelopment.wordpress.com/184/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/successfulsoftwaredevelopment.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/successfulsoftwaredevelopment.wordpress.com/184/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/successfulsoftwaredevelopment.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/successfulsoftwaredevelopment.wordpress.com/184/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/successfulsoftwaredevelopment.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/successfulsoftwaredevelopment.wordpress.com/184/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/successfulsoftwaredevelopment.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/successfulsoftwaredevelopment.wordpress.com/184/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=successfulsoftwaredevelopment.wordpress.com&amp;blog=6895760&amp;post=184&amp;subd=successfulsoftwaredevelopment&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://successfulsoftwaredevelopment.wordpress.com/2009/05/08/the-project-confidence-cosine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/98ba48ba525443d571b5efb7b5f31bb8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mpvvliet</media:title>
		</media:content>

		<media:content url="http://successfulsoftwaredevelopment.files.wordpress.com/2009/04/project_confidence_cosine1.jpg?w=450" medium="image">
			<media:title type="html">Project Confidence Cosine</media:title>
		</media:content>
	</item>
	</channel>
</rss>
