<?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>Dominique Stender</title>
	<atom:link href="http://www.st-webdevelopment.de/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.st-webdevelopment.de</link>
	<description>A blog about my thoughts and experiences in Information Technology</description>
	<lastBuildDate>Tue, 02 Mar 2010 02:12:02 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=abc</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Tools for a mobile office</title>
		<link>http://www.st-webdevelopment.de/management/2010/03/tools-mobile-office/</link>
		<comments>http://www.st-webdevelopment.de/management/2010/03/tools-mobile-office/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 02:05:23 +0000</pubDate>
		<dc:creator>Dominique</dc:creator>
				<category><![CDATA[Management]]></category>
		<category><![CDATA[apps]]></category>
		<category><![CDATA[Bookmarks]]></category>
		<category><![CDATA[Files]]></category>
		<category><![CDATA[Instapaper]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[iThoughts]]></category>
		<category><![CDATA[Mindmapping]]></category>
		<category><![CDATA[mobile office]]></category>
		<category><![CDATA[Office]]></category>
		<category><![CDATA[Quickoffice]]></category>
		<category><![CDATA[Storage]]></category>

		<guid isPermaLink="false">http://www.st-webdevelopment.com/?p=322</guid>
		<description><![CDATA[A short discussion on the mobile productivity apps I use on my iPod, including an office suite, mindmapping software, generic file storage / browser and offline bookmark reader.]]></description>
			<content:encoded><![CDATA[<p>I'm constantly trying to boost my productivity. For me that includes to enable myself to write ideas down instantly. In the present age of the smartphone, the question is no longer which device you should use to write down notes on the go but instead it is: Which applications should I use?</p>
<p>In this article I will present my current tool set of choice for the iPhone.<span id="more-322"></span></p>
<h4>Word processor and spreadsheets</h4>
<p><a title="The Quickoffice iPhone app" href="http://www.quickoffice.com/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.quickoffice.com/?referer=');">Quickoffice</a> (<a title="Get the Quickoffice iPhone app on iTunes" href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=310723177&amp;mt=8" target="_blank" onclick="pageTracker._trackPageview('/outgoing/itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=310723177_amp_mt=8&amp;referer=');">iTunes</a>) is pretty much what is claims to be. You get a Word editor and a spreadsheet application. Both natively work with Microsoft Office formats (old and new) and that is all I need.</p>
<p>The user interface for both applications is easy to learn and while the lack of keyboard and mouse does slow you down when editing spreadsheets, the app makes good use of gestures and multiple-tap events.</p>
<p>What I found to be missing however is the possibility to set headlines and other formats. Note that they are displayed and preserved correctly. You simply can't add new ones. The usual text decorations like bold, italic and the like work smoothly though.</p>
<p>You can up and download documents through a WebDAV interface. The <a title="The MobileMe online storage service" href="http://www.me.com" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.me.com?referer=');">MobileMe </a>iDisk online storage is also supported but that isn't for me - I value the privacy of my data.</p>
<p>Strangely there doesn't seem to be a straight forward way to copy a file. You have to open the original, make a subtle change and 'save as...'.</p>
<p>Overall Quickoffice let's me get my work done and does it in a rather effective manner, for an ok price.</p>
<p>Aside from the 'pure' office functionalities Quickoffice supports a number of other file formats including images and .pdf, for which it provides readers/viewers. While rounding things up nicely, these readers lack some of the oomph that the Files app provides, see below.</p>
<h4>Mind mapping</h4>
<p>I can't exist without mindmaps. To me they are <em>the </em>organizing and structuring tool of choice. On the computer I use <a title="The Freemind mindmapping software" href="http://freemind.sourceforge.net/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/freemind.sourceforge.net/?referer=');">Freemind</a>, because it is open source and it's many keyboard shortcuts make creating and editing a mindmap really fast.</p>
<p>There are many mindmapping tools for the iPhone but I believe <a title="iThoughts mindmapping app for the iPhone" href="http://www.ithoughts.co.uk/iThoughts/Welcome.html" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.ithoughts.co.uk/iThoughts/Welcome.html?referer=');">iThoughts</a> (<a title="Get the iThoughts mindmapping app for the iPhone" href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=294144368&amp;mt=8" target="_blank" onclick="pageTracker._trackPageview('/outgoing/phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=294144368_amp_mt=8&amp;referer=');">iTunes</a>) is a clear winner here. It supports virtually all major mindmapping formats and makes clever use of drag and drop on the iPhone. Nodes can be individually styled and highlighted with icons - important for me for additional grouping and priorisation.</p>
<p>Once again, files can be up and downloaded through a WebDAV Interface or through an online storage service, in this case <a title="The box.net online storage service" href="http://www.box.net/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.box.net/?referer=');">box.net</a>.</p>
<p>Same as above, mobile storage doesn't work for me and I believe it shouldn't be an option for any business use. Your data simply isn't save.</p>
<h4>Generic file storage</h4>
<p>The <a title="The Files storage app for the iPhone" href="http://olivetoast.com/Files/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/olivetoast.com/Files/?referer=');">Files</a> application (<a title="get the Files storage app for the iPhone" href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=285578660&amp;mt=8" target="_blank" onclick="pageTracker._trackPageview('/outgoing/phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=285578660_amp_mt=8&amp;referer=');">iTunes</a>) is a WebDAV accessible storage medium on your iPhone. Think of it as a WiFi stick.</p>
<p>You can set up a quota how much space on the device Files can take up and security is provided through an access password.</p>
<blockquote><p>Note: It can savely be assumed that the content of the storage remains unencrypted, the password most likely serves only as access prevention.</p></blockquote>
<p>What I like about Files is that it supports reader functionality for most common formats, including .pdf, office formats and an image viewer much like the Photo application from Apple.</p>
<h4>Offline bookmarks</h4>
<p><a title="The Instapaper offline bookmark service" href="http://www.instapaper.com/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.instapaper.com/?referer=');">Instapaper.com</a> provides you with a simple service: You can bookmark websites to read them later, categorize them, tag them, you name it.</p>
<p>What makes Instapaper stick out of their competition is the good integration. Granted, a browser bookmarklet is nothing special anymore, neither is an iPhone app. Make the <a title="The Instapaper offline bookmark iPhone app" href="http://www.instapaper.com/iphone" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.instapaper.com/iphone?referer=');">iPhone app</a> (<a title="Get the Instapaper offline bookmark iPhone app on iTunes" href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=288545208&amp;mt=8" target="_blank" onclick="pageTracker._trackPageview('/outgoing/itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=288545208_amp_mt=8&amp;referer=');">iTunes</a>) communicate with one of the most frequently used Twitter clients (Twitteriffic) and make that communication both ways and you have created a huge amount of added usability right there. This is what Instapaper did. Tweet your latest finds right from the <a title="The Instapaper offline bookmark iPhone app" href="http://www.instapaper.com/iphone" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.instapaper.com/iphone?referer=');">Instapaper app</a>. Push articles from the people you follow into your Instapaper list without changing the app.</p>
<p>This is what I do - each morning during breakfast I add all potentially interesting links from Twitter to Instapaper, update the archive in the Instapaper app and I'm ready to go, able to read those articles whenever I want and indepepdent of network availability.</p>
<h4>Summary</h4>
<p>With <a title="The Quickoffice iPhone app" href="http://www.quickoffice.com/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.quickoffice.com/?referer=');">Quickoffice</a>, <a title="iThoughts mindmapping app for the iPhone" href="http://www.ithoughts.co.uk/iThoughts/Welcome.html" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.ithoughts.co.uk/iThoughts/Welcome.html?referer=');">iThoughts</a> and <a title="The Files storage app for the iPhone" href="http://olivetoast.com/Files/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/olivetoast.com/Files/?referer=');">Files</a>, there are three applications that bring their own storage logic and their own WebDAV interface.</p>
<p>It would be great if <a title="The Quickoffice iPhone app" href="http://www.quickoffice.com/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.quickoffice.com/?referer=');">Quickoffice</a> and <a title="iThoughts mindmapping app for the iPhone" href="http://www.ithoughts.co.uk/iThoughts/Welcome.html" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.ithoughts.co.uk/iThoughts/Welcome.html?referer=');">iThoughts</a> could team up with the guys from OliveToast (creators of the <a title="The Files storage app for the iPhone" href="http://olivetoast.com/Files/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/olivetoast.com/Files/?referer=');">Files</a> app) to utilize their storage for easier maintenance.</p>
<p>A very similar cooperation is already in place between <a title="Website of Amidio, creator of professional music apps for the iPhone" href="http://amidio.com/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/amidio.com/?referer=');">Amidio</a> and <a title="Website of Intua, creator of professional music apps for the iPhone" href="http://www.intua.net/products.html" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.intua.net/products.html?referer=');">Intua</a>, both creators of top notch music creation and sequencing applications for the iPhone. You can record a sample in one app, i.e. <a title="The Hexatone music app for the iPhone" href="http://amidio.com/index.php/iphone-music-apps/jr-hexatone-pro" target="_blank" onclick="pageTracker._trackPageview('/outgoing/amidio.com/index.php/iphone-music-apps/jr-hexatone-pro?referer=');">Hexatone</a> or <a title="The Noise.io synthesizer app for the iPhone" href="http://amidio.com/index.php/iphone-music-apps/noiseio-pro-synth" target="_blank" onclick="pageTracker._trackPageview('/outgoing/amidio.com/index.php/iphone-music-apps/noiseio-pro-synth?referer=');">Noise.io</a>, then fire up <a title="The Beatmaker sequencer app for the iPhone" href="http://www.intua.net/products.html" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.intua.net/products.html?referer=');">Beatmaker</a> and load that sample through a common storage to sequence it with other samples. Recently that was simplyfied even further: Now you can copy-paste samples between the apps using the iPhone copy-paste logic.</p>
<p>Doing this for the office apps would greatly increase productivity.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.st-webdevelopment.de/management/2010/03/tools-mobile-office/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Thoughts on HipHop for PHP</title>
		<link>http://www.st-webdevelopment.de/php/2010/02/thoughts-hiphop-php/</link>
		<comments>http://www.st-webdevelopment.de/php/2010/02/thoughts-hiphop-php/#comments</comments>
		<pubDate>Mon, 15 Feb 2010 17:26:39 +0000</pubDate>
		<dc:creator>Dominique</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[accelerator]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[facebook]]></category>

		<guid isPermaLink="false">http://www.st-webdevelopment.com/?p=321</guid>
		<description><![CDATA[An overview of the PHP-to-C++ transformer HipHop for PHP that was recently announced by Facebook. I give an analysis of it's potential along with the requirements and possible limitations.]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-327" title="HipHop_logo_white" src="http://www.st-webdevelopment.com/wp-content/uploads/2010/02/HipHop_logo_white.png" alt="" width="213" height="278" />It has been almost two weeks now since Facebook announced <a title="Announcement for the HipHop for PHP code transformer" href="http://developers.facebook.com/news.php?blog=1&amp;story=358" target="_blank" onclick="pageTracker._trackPageview('/outgoing/developers.facebook.com/news.php?blog=1_amp_story=358&amp;referer=');">HipHop for PHP</a>. The source code is still not available because apparently they've ran into some compilation issues, according to <a title="HipHop for PHP on GitHub" href="http://github.com/facebook/hiphop-php" target="_blank" onclick="pageTracker._trackPageview('/outgoing/github.com/facebook/hiphop-php?referer=');">their GitHub</a> status. So in essence, not much is known about HipHop for PHP but I want to try to give my thoughts based on the small amount of information we have and my experience with similar technologies.</p>
<blockquote><p>Please note that the bits and pieces of information come from various sources and things may or may not be exactly as we think they are.</p></blockquote>
<p>In order to understand what HipHop for PHP does it is important to understand how PHP itself gets executed. In this article I will give a rough overview of the PHP execution process and make a few educated guesses in what aspect HipHop for PHP differs from there.</p>
<p>Based on the little information available online I'll discuss how HipHop for PHP is suitable for large businesses and what might turn out to be obstacles that are yet to remove.</p>
<h4><span id="more-321"></span>The PHP execution process</h4>
<p>PHP code can not be executed directly, a property it shares with all other scripting languages such as Python, Ruby and JavaScript. What makes PHP executable is the Zend Engine, and it does so in a two stage process.</p>
<ol>
<li>The scripts are parsed and analyzed, checked for syntactical and semantical errors and if all goes well the application is transformed into byte code.</li>
<li>Since the byte code is still not executable on a CPU, it is interpreted further into machine code (that is CPU dependent) and then executed.</li>
</ol>
<p>For most PHP applications the first parsing stage takes most of the total time. The second execution stage is comparatively fast. So in order to speed up a PHP application, most code optimizers hook into the Zend Engine after the first stage has been completed and save the generated byte code into a cache. In a consecutive call to the webserver the cache will be fed back into the Zend Engine, thus skipping the entire first stage of the execution process.</p>
<p>There are quite a few products on the market that behave in such a way. Zend itself offers the <a title="Zend Optimizer" href="http://www.zend.com/en/products/guard/zend-optimizer" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.zend.com/en/products/guard/zend-optimizer?referer=');">Zend Optimizer</a> (now part of Zend Guard), there is <a title="eAccelerator PHP optimizer" href="http://eaccelerator.net/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/eaccelerator.net/?referer=');">eaccelerator</a> and <a title="APC, the Alternative PHP Cache" href="http://pecl.php.net/package/APC" target="_blank" onclick="pageTracker._trackPageview('/outgoing/pecl.php.net/package/APC?referer=');">APC</a>, which comes as a PECL package.</p>
<h4>The execution process with HipHop for PHP</h4>
<p>What sets HipHop for PHP apart from these three (and no doubt other) accelerators is that it does not act as a cache. Instead, HipHop for PHP will transform your PHP application into C++ code and compile that directly into a binary which is executable.</p>
<p>In that sense, HipHop for PHP is probably very similar to <a title="Roadsend PHP" href="http://www.roadsend.com/home/index.php?pageID=compiler" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.roadsend.com/home/index.php?pageID=compiler&amp;referer=');">Roadsend PHP</a> which also generates executable code from PHP, albeit not by transforming it into C++ first.</p>
<p>In essence, HipHop for PHP will get rid not only of the first stage of the usual execution stage, but also of a big part of the second stage, namely the interpretation of byte code into machine code. Generally I believe it is safe to assume that HipHop for PHP has the potential to run an application much faster than any of the previously mentioned accelerators, simply because there is less for to be done at runtime. Time will tell.</p>
<p>For detailed information on the internals of HipHop for PHP make sure you watch the <a title="Video of the HipHop for PHP announcement" href="http://www.ustream.tv/recorded/4409735" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.ustream.tv/recorded/4409735?referer=');">Facebook Technology Tasting</a> video on ustream.</p>
<h4>Possible limitations</h4>
<p><strong>The requirements</strong><br />
The <a title="HipHop for PHP requirements" href="http://wiki.github.com/facebook/hiphop-php/building-and-installing" target="_blank" onclick="pageTracker._trackPageview('/outgoing/wiki.github.com/facebook/hiphop-php/building-and-installing?referer=');">requirements to run HipHop for PHP</a> are available online. Nothing out of the ordinary at first sight. The page claims that HipHop for PHP is tested on <a title="The CentOS Linux distribution" href="http://centos.org" target="_blank" onclick="pageTracker._trackPageview('/outgoing/centos.org?referer=');">CentOS </a>and <a title="the Fedora Linux distribution" href="http://fedoraproject.org/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/fedoraproject.org/?referer=');">Fedora</a>. Both are venerable distributions, no doubt. But both also come without vendor support which may or may not be a problem for your organization.</p>
<p>Granted, companies who's codebase can actually benefit from HipHop for PHP will no doubt have a team of excellent system administrators which maintain Linux in their sleep. But those companies might also be in the situation that their customers demand a Linux distribution with commercial support, such as SLES, RedHat etc.</p>
<p>So this is more an organizational issue rather than a technical. That being said it is not clear yet whether or not packages will be released by other Linux distribution vendors once HipHop for PHP is out. If at all, it probably won't happen soon.</p>
<p>Coming back to the requirements for HipHop for PHP, it requires customized packages of libcurl and libevent, which again may or may not be an issue for your environment. Here I see the same organizational issue, but also a possible technical issue - you might be in the situation that you need the original libcurl or libevent for some other software on the server. Only a practical test will tell.</p>
<p><strong>Unsupported language constructs</strong><br />
As with most PHP caches and compilers, a few PHP language constructs are not supported. Most commonly known is the eval() construct which is simply not available in C++. Personally I believe that eval() is a bad thing to begin with and you can get around it in almost every cases. Sadly many PHP frameworks such as <a title="TYPO3 content management system" href="http://www.typo3.org" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.typo3.org?referer=');">TYPO3</a>, many <a title="PEAR - the PHP extension and application repository" href="http://pear.php.net" target="_blank" onclick="pageTracker._trackPageview('/outgoing/pear.php.net?referer=');">PEAR</a> packages, <a title="Drupal content management system" href="http://drupal.org/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/drupal.org/?referer=');">Drupal</a> and <a title="The Joomla content management system" href="http://www.joomla.org/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.joomla.org/?referer=');">Joomla</a> make use of eval().</p>
<p>If you're intending to run one of these through HipHop for PHP you might need to wait for an update from the community, patch it yourself, or remove the code from the system if you don't need it. In any case this is a time consuming task.</p>
<p>Aside from eval() a few more language constructs may not be supported or may not benefit from the compilation in terms of performance, such as call_user_func_array() and other 'dynamic' constructs like dynamic variables, dynamic includes or built-in functions like function_exists(), class_exists(), get_declared_classes() etc.</p>
<p>HipHop for PHP is no different from other caches and compilers in these regards, so please don't make that affect your choice. Just be aware that things might not be as easy as you'd like them to be.</p>
<p><strong>No Apache?</strong><br />
This is speculative at this point but the <a title="Running HipHop [for PHP]" href="http://wiki.github.com/facebook/hiphop-php/running-hiphop" target="_blank" onclick="pageTracker._trackPageview('/outgoing/wiki.github.com/facebook/hiphop-php/running-hiphop?referer=');">Running HipHop</a> page on GitHub seems to indicate that HipHop for PHP will not make use of the Apache webserver but instead come with its own webserver. My assumption is that this means we'll have to handle HipHop for PHP through Apache, much in the same way that we frequently do with Tomcat. This is not necessarily an issue.</p>
<h4>The potential of HipHop for PHP</h4>
<p>Despite the limitations I mentioned above, I believe HipHop for PHP has the potential to take PHP much further into the enterprise environment than many of the existing solutions. If it can deliver what it promises it is definitely something we will take a very close look at to give our eCommerce framework a serious performance boost.</p>
<p>Very high on my wishlist is to run the transformation process from PHP to C++ but skip the compilation. If that's possible I see the chance to make debugging compile errors much easier.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.st-webdevelopment.de/php/2010/02/thoughts-hiphop-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Scrum with pen &amp; paper</title>
		<link>http://www.st-webdevelopment.de/management/2010/01/scrum-pen-paper/</link>
		<comments>http://www.st-webdevelopment.de/management/2010/01/scrum-pen-paper/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 02:22:08 +0000</pubDate>
		<dc:creator>Dominique</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[KISS]]></category>
		<category><![CDATA[project management]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://www.st-webdevelopment.com/?p=291</guid>
		<description><![CDATA[Dominique Stender hands out a set of no more than five .pdf print-out templates to enable you to get started with Scrum quickly and based solely on pen&#038;paper, thus not requiring the purchase of any tools.]]></description>
			<content:encoded><![CDATA[<p>A friend of mine recently asked me if I'd know any good freeware tools for use with Scrum. Well, I told him, I don't have any first hand experience with freeware Scrum tools but there certainly are a few.</p>
<p>However in the case that you're just starting with Scrum I would argue that you might be better off without tools. All tools force you into some kind of process that works for somebody else, but might not be optimal for you.</p>
<p>So instead of jumping to a fancy tool that comes with all the bells and whistles instantly, I'd recommend starting as low-tech as possible, learn the basics and discover your individual needs. After that you are enabled to get the Scrum tool that does exactly what you need it to do.</p>
<p>How do you start low-tech? Use pen and paper.<span id="more-291"></span></p>
<h4>Experience over tools</h4>
<p>Scrum as an agile methodology has a very shallow complexity. It doesn't require many artefacts in the forms of documents, lists, reports or charts.</p>
<p>The artefacts defined in Scrum are the <a href="http://www.st-webdevelopment.com/wp-content/uploads/2009/12/ProductBacklog.v1.1.pdf" onclick="pageTracker._trackPageview('/outgoing/www.st-webdevelopment.com/wp-content/uploads/2009/12/ProductBacklog.v1.1.pdf?referer=');">Product Backlog</a>, <a href="http://www.st-webdevelopment.com/wp-content/uploads/2009/12/SprintBacklog.v1.1.pdf" onclick="pageTracker._trackPageview('/outgoing/www.st-webdevelopment.com/wp-content/uploads/2009/12/SprintBacklog.v1.1.pdf?referer=');">Sprint Backlog</a> and a <a href="http://www.st-webdevelopment.com/wp-content/uploads/2009/12/SprintBurndownChart.v1.0.pdf" onclick="pageTracker._trackPageview('/outgoing/www.st-webdevelopment.com/wp-content/uploads/2009/12/SprintBurndownChart.v1.0.pdf?referer=');">Sprint Burndown Chart</a>. Personally I find two more "artefacts" to be extremely useful: <a href="http://www.st-webdevelopment.com/wp-content/uploads/2009/12/UserStory.1.2.pdf" onclick="pageTracker._trackPageview('/outgoing/www.st-webdevelopment.com/wp-content/uploads/2009/12/UserStory.1.2.pdf?referer=');">User Story Cards</a> and one set of <a href="http://www.st-webdevelopment.com/wp-content/uploads/2009/12/PlaningPokerCards.1.1.pdf" onclick="pageTracker._trackPageview('/outgoing/www.st-webdevelopment.com/wp-content/uploads/2009/12/PlaningPokerCards.1.1.pdf?referer=');">Planning Poker Cards</a> for each team member.</p>
<p>No more than three documents plus two helpers for all your project management needs. Sounds like thin ice? Believe me, I know how you feel but hear me out.</p>
<p>I started off doing Scrum in a waterfall environment, using tools that where developed for waterfall projects. It gave me the advantage of familiarity with the tools (false security?) but at the price of bad usability and cumbersome overhead.</p>
<p>Only since my ScrumMaster Certification I see the benefit of using low-tech "tools" like pen and paper. It is faster, more fun, breeds involvement and identification, can be distributed without permission and data security problems and most important: You will get a much better understanding how Scrum actually works.</p>
<p>Granted, the "high-tech" tools mandatory for my company are still in use, but I already wrote an <a title="My article on Attempting Scrum in a SDLC environment" href="/agile/2009/12/attempting-scrum-sdlc-environment-pt-2/" target="_self">article how to utilize SDLC tools best for Scrum</a> so let's keep that aside for a moment.</p>
<p>Doing Scrum "hands-on" with pen and paper is easier than you might think. There are no complex metrics or calculations to perform. You will see that your planning meetings get a totally different dynamic if you work with a stack of user story cards and pen &amp; paper. People interact physically with each other rather than staring at the pale image of the projector.</p>
<h4>The Product Backlog</h4>
<p>My <a href="http://www.st-webdevelopment.com/wp-content/uploads/2009/12/ProductBacklog.v1.1.pdf" onclick="pageTracker._trackPageview('/outgoing/www.st-webdevelopment.com/wp-content/uploads/2009/12/ProductBacklog.v1.1.pdf?referer=');">product backlog template</a> is as simple as it gets. One column with the user story number, to make identification easy. A title and a complexity column is all that is filled out in the beginning, usually by the product owner.</p>
<p>In the planning sessions the team will use its planning poker cards to agree upon a complexity which we fill out together in the second column to the right.</p>
<p>Last not least I added a column for dependencies. This will contain the user story number(s) that need to be completed before the one at hand can be filled out.</p>
<h4>The User Story Cards</h4>
<p>The title of a feature in the product backlog serves only as a short summary of the feature itself. It will not explain the task, only give it a name.</p>
<p>User stories fill that gap. My <a href="http://www.st-webdevelopment.com/wp-content/uploads/2009/12/UserStory.1.2.pdf" onclick="pageTracker._trackPageview('/outgoing/www.st-webdevelopment.com/wp-content/uploads/2009/12/UserStory.1.2.pdf?referer=');">User Story Card template</a> is half of an A-4 size paper, print it on a duplex printer (so that page 2 of the template is printed on the back) and cut it in half.</p>
<p>The head of the front page of the user story contains the user story number and the priority, both also found in the product backlog. Another header entry, the estimation is left empty. Here we will the required time (not points!) for the task, in the sprint planning meeting.</p>
<blockquote><p>Note that I estimate the features in the product backlog in story points through planning poker, but the tasks of a sprint in hours. One user story is usually comprised of several tasks. The "estimation" value on the user story card is the sum of hours for all tasks of this story.</p></blockquote>
<p>The main part of the front of the user story card is pretty much standard, it has to be filled with the role of the user ("as a ..."), a feature description ("I would like to ...") and the purpose of the feature ("in order to...").</p>
<blockquote><p>For example "<em>As a</em> logged in user <em>I would like to</em> be able to edit and store my delivery address <em>in order to</em> have it pre filled in the shopping basket."</p></blockquote>
<p>In short, the front of the card will give a good overview of a feature. The back contains additional notes and the acceptance criteria as given in the planning meeting.</p>
<h4>The Planning Poker Cards</h4>
<p>Planning poker is easy to perform but I find it notoriously difficult to describe. I will leave it to the ever helpful Wikipedia to give a good run-down of <a title="The Wikipedia on the process of planning poker" href="http://en.wikipedia.org/wiki/Planning_poker#Process" target="_blank" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Planning_poker_Process?referer=');">the process of planning poker</a>.</p>
<p>I can provide you with a template to cut out your own set of <a href="http://www.st-webdevelopment.com/wp-content/uploads/2009/12/PlaningPokerCards.1.1.pdf" onclick="pageTracker._trackPageview('/outgoing/www.st-webdevelopment.com/wp-content/uploads/2009/12/PlaningPokerCards.1.1.pdf?referer=');">Planning Poker Cards</a>. Bring a stack of uncut prints to your next meeting along with a bunch of scissors and cut them out together. Play your first couples of rounds on non-critical features or even features that do not exist in reality.</p>
<h4>The Sprint Backlog</h4>
<p>In the sprint planning meeting I bring the product backlog along, which has the complexity column already filled out. It contains the complexity in terms of story points, derived through planning poker.</p>
<p>During sprint planning the team picks features from the product backlog that have the highest priority to the product owner. The priority is usually based on business value so it makes perfect sense to finish the most valuable features first.</p>
<p>The user story that belongs to a product backlog feature is read aloud and a discussion starts. Questions are raised and clarified. This continues for a couple of minutes until the feature is commonly understood. Then, the team breaks the feature down in smaller tasks, which are written into the sprint backlog.</p>
<p>The <a href="http://www.st-webdevelopment.com/wp-content/uploads/2009/12/SprintBacklog.v1.1.pdf" onclick="pageTracker._trackPageview('/outgoing/www.st-webdevelopment.com/wp-content/uploads/2009/12/SprintBacklog.v1.1.pdf?referer=');">sprint backlog template</a> once again contains the user story number to easily identify and group the tasks. The sprint backlog also contains a column for the name of the task and a whole lot of columns for numbers.</p>
<p>In the sprint planning session we discuss the overall complexity of each task of a feature and estimate an amount of time (in hours). This value is being written into the "Est." column, marking the initial estimation.</p>
<blockquote><p>Note that some teams prefer to estimate both product backlog features and sprint backlog tasks in story points (planning poker) while others prefer to estimate both in time. You'll have to find out what works best for you.</p></blockquote>
<p>The other columns marked "owner" and "1" to "15" are not filled out yet. During the sprint the team members will pick tasks for them to implement, and write their name into the "owner" column as soon as they do so.</p>
<p>Every evening before leaving the office the team members do a re-assessment how much time on their current task <em>is left </em>and write that into the column marking the Nth day of the sprint.</p>
<p>Let me say that again: The columns "1" to "15" contain the amount of time <em>that is left</em>. It is irrelevant how much time someone spent on a task. The criticality of a delay derives from too much work remaining.</p>
<h4>The Sprint Burndown Chart</h4>
<p>Finally there is the <a href="http://www.st-webdevelopment.com/wp-content/uploads/2009/12/SprintBurndownChart.v1.0.pdf" onclick="pageTracker._trackPageview('/outgoing/www.st-webdevelopment.com/wp-content/uploads/2009/12/SprintBurndownChart.v1.0.pdf?referer=');">sprint burndown chart</a> which will display the amount of work <em>remaining </em>on an every day basis.</p>
<p>At the end of the sprint planning meeting the sum of time in the "Est." column of the sprint backlog is transferred to the "day 0" column in the sprint burndown chart.</p>
<blockquote><p>Note that the vertical axis doesn't have numbers assigned to it. Those vary wildly depending on team size, velocity and sprint length. Fill it out yourself.</p></blockquote>
<p>During the sprint I will take the sprint backlog every morning and update the sum of time at it's bottom. This number is X'ed on the corresponding "day N" column of the burndown chart and the joining X's connected. Done before each daily scrum this is a good information radiator telling everybody how well the progress is without even talking about it.</p>
<blockquote><p>It is a good idea to draw a line of "ideal progress" onto the burndown chart as well. This is a straight line, starting at the sum of values of the "Est." column in the sprint backlog, going straight to zero at the column of the last sprint day. This way you can easily real progress with ideal progress.</p></blockquote>
<h4>Conclusion</h4>
<p>So there you are, a <a href="http://www.st-webdevelopment.com/wp-content/uploads/2009/12/PenAndPaperScrum.zip" onclick="pageTracker._trackPageview('/outgoing/www.st-webdevelopment.com/wp-content/uploads/2009/12/PenAndPaperScrum.zip?referer=');">complete set of templates</a> for your pen &amp; paper based Scrum management needs. For your convenience I've also prepared a .zip file of all .pdfs that will also contain a set of Office 2000 compatible .doc and .xls files of the same templates.</p>
<p>Give it a try.</p>
<p>You can always come back to technical solutions or add a column here and there if you think you'll need them. The KISS principle applies. Keep it simple. I haven't really found a need for more columns in my projects yet. But your mileage may vary.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.st-webdevelopment.de/management/2010/01/scrum-pen-paper/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>The CAPTCHA arms race</title>
		<link>http://www.st-webdevelopment.de/general/2010/01/captcha-arms-race/</link>
		<comments>http://www.st-webdevelopment.de/general/2010/01/captcha-arms-race/#comments</comments>
		<pubDate>Sun, 17 Jan 2010 13:50:25 +0000</pubDate>
		<dc:creator>Dominique</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[automation]]></category>
		<category><![CDATA[CAPTCHA]]></category>
		<category><![CDATA[OCR]]></category>
		<category><![CDATA[reCAPTCHA]]></category>
		<category><![CDATA[SPAM]]></category>
		<category><![CDATA[text regognition]]></category>

		<guid isPermaLink="false">http://www.st-webdevelopment.com/?p=262</guid>
		<description><![CDATA[A discussion on various CAPTCHA methodologies and their success rate. Inspired by a paper by Jonathan Wilkins where he describes how the famous reCAPTCHA algorithm was broken.]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-272" title="captcha" src="http://www.st-webdevelopment.com/wp-content/uploads/2009/12/captcha.jpg" alt="captcha" width="190" height="400" />CAPTCHAs... we have all seen them. <a title="The Wikipedia on CAPTCHAs" href="http://en.wikipedia.org/wiki/CAPTCHA" target="_blank" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/CAPTCHA?referer=');">CAPTCHA</a> means <em>Completely Automated Public Turing test to tell Computers and Humans Apart</em> and is a family of techniques to make sure a user (typically on a website) is indeed a human being and not a program trying to act like one.</p>
<p>When you leave your comment on this blog you will be asked to type in two words which are displayed as distorted graphic. Most bulletin boards and free mail providers ask you to do the same before they allow you to create an account.</p>
<h4>CAPTCHA 101</h4>
<p>The reason behind is the same most of the time: Preventing SPAM. Spammers use forums, blog comments and contact forms to post their ads. They use bots (quite similar to the bots that update the search index on Google, Yahoo and all other search websites) to automate that process.</p>
<p>So the idea of CAPTCHAs is to present a task to a website visitor that is difficult to solve for a machine, but easy to solve for a human. The graphical CAPTCHA is the most commonly used one.</p>
<p>There are other CAPTCHA variants such as audio-based ones or image recognition based CAPTCHAs. I've even seen a simple math question as CAPTCHA.<span id="more-262"></span></p>
<h4>The arms race</h4>
<p>In December 2009 <a title="Website of Jonathan Wilkins" href="http://bitland.net" class="broken_link"  target="_blank" onclick="pageTracker._trackPageview('/outgoing/bitland.net?referer=');">Jonathan Wilkins</a> announced that Googles' most prevalent CAPTCHA method, reCAPTCHA has been broken. It is now possible to identify the words presented by reCAPTCHA with an accuracy of around 20%. For spammers that is good enough. WIth a 20% sucess rate, every fifth attempt will result in a successfully placed ad. Mr. Wilkins argues that even a success rate of 1% is good enough since the resources used by spammers often are not their own, thus their utilization is free (think bot nets).</p>
<p>This is bad news for everyone. I really hope Google updates its reCAPCTHA algorithm to a variant that is harder to solve by machines. For the record, I also use reCAPTCHA here in this blog.</p>
<p>Update: As of December 31st 2009 reCAPTCHA seems to be updated. Google responded quite quickly. So far I can already say that the number of spam posts I get in this blog has reduced drastically, albeit not come to a stop. Anyways, thanks for a quick response Google!</p>
<p>This situation is critical because spammers do not need to be particularly good at breaking CAPTCHAs. If one out of five CAPTCHAs can be broken and spammers still make a living out of this the CAPTCHA itself is useless in the sense that SPAM will enter your system.</p>
<p>Jonathan Wilkins has a <a title="Paper on Strong CAPTCHA Guidelines by Jonathan Wilkins" href="http://bitland.net/captcha.pdf" class="broken_link"  target="_blank" onclick="pageTracker._trackPageview('/outgoing/bitland.net/captcha.pdf?referer=');">.pdf paper</a> where he gives guidelines for the creation of strong CAPTCHAs. It is a really interesting read even if you're not involved with CAPTCHA development  directly.</p>
<h4>Which is the best solution?</h4>
<p>Well I guess your mileage may vary.</p>
<p>For now I will stick to <a title="The Wikipedia on the reCAPTCHA project" href="http://en.wikipedia.org/wiki/ReCAPTCHA" target="_blank" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/ReCAPTCHA?referer=');">reCAPTCHA</a> [<a title="the official homepage of the reCAPTCHA project" href="http://recaptcha.net/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/recaptcha.net/?referer=');">official homepage</a>] although it is broken and I need to remove a few unapproved comments every day. I like <a title="The idea behind reCAPTCHA" href="http://recaptcha.net/learnmore.html" target="_blank" onclick="pageTracker._trackPageview('/outgoing/recaptcha.net/learnmore.html?referer=');">the idea behind the project</a> so I'm willing to accept the minor annoyance that it currently imposes.</p>
<p>Text-recognition CAPTCHAs such as reCAPTCHA require strong OCR solutions and to my personal surprise, that is still a field what needs a lot of improvements. So even if reCAPTCHA becomes to cumbersome for me, I'll stick to another visual CAPTCHA method.</p>
<p>Audio CAPTCHAs are not recommended by Jonathan Wilkins because he argues that the field of speech regognition is more advanced than that of OCR. Aside from their security, I don't want my visitors to do something unfamiliar, and listening to an audio file to fill out a form certainly is.</p>
<p>I like the idea of asking a simple question, such as "What color is an orange?" or "What is 3+5?". Not sure about the security though. The latter one can be <a title="Google calculate" href="http://www.google.com/search?q=What+is+3%2B5%3F" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.google.com/search?q=What+is+3_2B5_3F&amp;referer=');">automatically solved</a> by Google itself for example. However, I'm half way convinced that this is an approach that has a bright future.</p>
<h4>Promising examples of what might be next</h4>
<p><strong>SQUIGL-PIX</strong><br />
On the reCAPTCHA website you can find a link to the <a title="SQUIGL-PIX CAPTCHA solution" href="http://server251.theory.cs.cmu.edu/cgi-bin/sq-pix" target="_blank" onclick="pageTracker._trackPageview('/outgoing/server251.theory.cs.cmu.edu/cgi-bin/sq-pix?referer=');">SQUIGL-PIX</a> project, apparently the latest project by the reCAPTCHA guys. It presents you with three images and asks you to outline a certain object. Only if you outline the object correctly (after chosing the correct image) the CAPTCHA is solved.</p>
<p>Give it a try. It is fun, easy (for us) and I sure hope it is hard for machines.</p>
<p><strong>CAPTCHA The Dog</strong><br />
Another interesting approach is <a title="Captcha the dog website" href="http://www.captchathedog.com" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.captchathedog.com?referer=');">Captcha The Dog</a>. You are presented with nine images total and have to pick the one that shows a dog while all others show a cat. You have to pick the single dog several times (from different picture sets) and click 'ok' once there are only cats.</p>
<p>The idea is brilliant and the basic reasoning behind it is the same that makes SQUIGL-PIX good: Object recognition instead of text recognition.</p>
<p>Captcha The Dog goes one step further and allows you to use your own set of images, tapping on the financial feasibility to break <em>your individual </em>set of images. There is even a <a title="Captcha The Dog Wordpress plugin" href="http://wordpress.org/extend/plugins/captchathedog/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/wordpress.org/extend/plugins/captchathedog/?referer=');">Wordpress plugin available</a> but I have to give a <strong>warning</strong>: According to the installation page the plugin requires allow_url_fopen and allow_url_include both to be active. Sounds like trading one evil for another. XSS anyone? Too bad, the idea is great.</p>
<p><strong>3D image rotation</strong><br />
The third approach I'd like to present is proposed by <a title="Blog by Taylor Hayward" href="http://taylorhayward.posterous.com/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/taylorhayward.posterous.com/?referer=');">Taylor Hayward</a> and apparently does not have a name. It asks you to identify an object appearing in <a title="3d images for CAPTCHAs" href="http://taylorhayward.posterous.com/3d-images-as-a-captcha" target="_blank" onclick="pageTracker._trackPageview('/outgoing/taylorhayward.posterous.com/3d-images-as-a-captcha?referer=');">two rotated 3d renders</a>. You are presented with one control image, and a set of nine randomly rotated images out of which one is the (rotated) control image. I found it hard to imagine so go see the blog - it'll be much more clear.</p>
<p>Once again, the method relies on object recognition. Great idea.</p>
<h4>"Do not try this at home"</h4>
<p>When you google for "<a title="google search for &quot;php captcha library&quot;" href="http://www.google.com/search?q=php+captcha+library" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.google.com/search?q=php+captcha+library&amp;referer=');">php captcha library</a>" you find literally thousands of home grown 'solutions' for secure CAPTCHAs. Once again I can only urge you to read <a title="Paper on Strong CAPTCHA Guidelines by Jonathan Wilkins" href="http://bitland.net/captcha.pdf" class="broken_link"  target="_blank" onclick="pageTracker._trackPageview('/outgoing/bitland.net/captcha.pdf?referer=');">Jonathan Wilkins paper</a> on secure CAPTCHAs before you use one of them. The bottom line probably is that they will not work very well for you because their authors try to obfuscate the letters in a way that poses no or only very limited issues to OCR software.</p>
<p>Just assume that if Googles' solution to CAPTCHA is broken, yours will get broken too once the incentives to try are high enough for the bad guys.</p>
<p>That being said, developing your own approach while sticking to Jonathans guidelines will most likely be an interesting spare time project.</p>
<h4>Possible benefits</h4>
<p>Believe it or not, I really see possible benefits coming out of this arms race. As the spammers' tactics to solve CAPTCHAs improve, the good guys are forced to improve their generation of CAPTCHAs. After some time, the newer CAPTCHAs will also be broken. The cycle continues.</p>
<p>Naturally, the only way for the good guys to verify that the new version of a CAPTCHA is indeed more secure than the old is to think like a bad guy and try to break your own CAPTCHAs.</p>
<p>This might - and I believe it surely will - lead to better OCR software, better audio recognition and in general a higher standard in 'intelligent' algorithms that are able to solve every day problems.</p>
<p>Audio recognition might help the deaf to read what people say, by other means than lip reading. A universal translator (famous in Star Trek) is not completely out of scope either, although it is still really far away.</p>
<p>Text-recognition is highly in demand on mobile devices. If a program can identify highly distorted characters from a CAPTCHA, I'm sure the same ideas can be applied to read hand writing.</p>
<input id="gwProxy" type="hidden" />
<input id="jsProxy" onclick="jsCall();" type="hidden" />
]]></content:encoded>
			<wfw:commentRss>http://www.st-webdevelopment.de/general/2010/01/captcha-arms-race/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Estimation techniques compared</title>
		<link>http://www.st-webdevelopment.de/management/2010/01/estimation-techniques-compared/</link>
		<comments>http://www.st-webdevelopment.de/management/2010/01/estimation-techniques-compared/#comments</comments>
		<pubDate>Sat, 09 Jan 2010 11:32:55 +0000</pubDate>
		<dc:creator>Dominique</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[COCOMO]]></category>
		<category><![CDATA[estimation]]></category>
		<category><![CDATA[PERT]]></category>
		<category><![CDATA[planning poker]]></category>

		<guid isPermaLink="false">http://www.st-webdevelopment.com/?p=254</guid>
		<description><![CDATA[An experience base comparison of three estimation techniques for IT projects. I compare PERT, COCOMO and Planning Poker and discuss their individual pros and cons.]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-275" title="clockwork" src="http://www.st-webdevelopment.com/wp-content/uploads/2009/12/clockwork.jpg" alt="clockwork" width="190" height="400" />I was inspired to write this article by several threads in forums covering agile methodologies. The basic discussion was whether to estimate based on Story Points or time. To me - and most people participating in those discussions - there is no silver bullet and you will have to find out what works best for you yourself. In this article I'd like to muse about the various estimation techniques that I'm familiar with as well as the pros and cons that I ran into with each of them.</p>
<p>I will compare PERT and COCOMO, both being traditional techniques with a long history and Planning Poker, probably the most prevalent agile estimation technique.</p>
<p>All techniques have their pros and cons and it will be up to you to determine which technique will work best in your environment.</p>
<p>My comparison is purely based on experience, which is broader for PERT and more narrow for COCOMO and to some extend Planning Poker. Your mileage may vary. This article does not intend to be the definite guide on estimation techniques.</p>
<p>That being said, let's start shall we?<span id="more-254"></span></p>
<h4>PERT</h4>
<p>The <a title="Summary on PERT estimation" href="http://www.envisionsoftware.com/Management/Pert_Estimation.html" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.envisionsoftware.com/Management/Pert_Estimation.html?referer=');">PERT estimation</a> is the standard estimation technique at my company. It is time-based and probability-based. The basic formula is to estimate an optimistic time (Topt), realistic time (Treal) and pessimistic time (Tpess) for an activity and generate a mean value (Tm) based on the formula Tm = (Topt + 4 * Treal + Tpess) / 6.</p>
<p>The realistic time Treal is weighted four times higher than the optimum time and worst case time, the sum of all three is divided by six.</p>
<p>For example if a task might complete in two days if everything runs fine, in three days under normal conditions and in five days if we run into complications the PERT value would be (2 + 4*3 + 5) / 6 ~= 3.2 days.</p>
<p>If you estimate all tasks of a project with PERT you can generate the variance and get a buffer value out of it which can be pretty handy. Don't trust that buffer blindly though.</p>
<p>One of the pros for me is that PERT acknowledges the fact that humans are particularly bad in estimating a task down to a single number. The thought of optimistic, realistic and pessimistic cases alone works wonders in discussions. The formula usually does a decent job to come up with a mean value.</p>
<p>Also a pro for PERT is that it is reasonably fast. Estimating a 3 month project on a level of abstraction needed for an offer usually takes no longer than a couple of hours.</p>
<p>My biggest con against PERT is that it is easy to misuse it. What I see frequently is that a discussion starts whether or not a particular task has a risk. Often that leads to optimum and realistic estimation being the same, let's say 2-2-5 instead of 2-3-5 as shown above. Or in a similar manner, realistic and pessimistic estimation are the same: 2-3-3.</p>
<p>Instead of the above mentioned 3.2 days for 2-3-5 we get 2.5 days for 2-2-3 and 2.8 days for 2-3-3. In a nutshell that ruins your buffer. You do not want that.</p>
<p>Another more general issue I have is that PERT is time-based but I'll get to that in a bit.</p>
<h4>COCOMO</h4>
<p>For me <a title="The Wikipedia on the COCOMO estimation technique" href="http://en.wikipedia.org/wiki/COCOMO" target="_blank" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/COCOMO?referer=');">COCOMO </a>is the rocket science approach for estimations. It is complexity-based and rooted on calibration through historic data. The algorithm behind COCOMO will get fine tuned over time, while your "database" of historic data grows.</p>
<p>The key figure in COCOMO is the lines of code (LOC or SLOC), more frequently thousand lines of code (KSLOC). You need to know - or in the first project, estimate - how long it takes to produce 1000 lines of functional code. Analysis, design, coding, testing, ... included.</p>
<p>Then you need to do an estimation of how many lines of code will have to be written or changed for the new project.</p>
<p>A set of factors or "cost drivers" such as project complexity, required quality, team experience etc. is applied to the estimations and after putting all this into a formula you get the estimated amount of time.</p>
<p>By far my biggest issue with COCOMO is that it is slow and too complex. You can't get decent estimation quality with COCOMO in a short manner of time. Even intermediate COCOMO takes into account no less than fifteen cost drivers, all of which affect each and every task. The bottomline is that you need a tool for estimating.</p>
<p>Disclaimer: There is a variant of COCOMO that is faster than traditional COCOMO. Personally I don't find that to be very exact, though and hence not very useful.</p>
<p>The second con against COCOMO is that it is fragile. Change your team constellation from one team to another and your historic data is useless. The same applies more or less for all other cost drivers.</p>
<p>I like the idea that COCOMO gets calibrated with time through your historic estimations. But in the reality of changing teams, hardly comparable projects and time pressure that leads to historic data not being available in a clean form frankly I never saw that work. Granted, that is not a failure of COCOMO but rather the methodology not working for us.</p>
<p>What I generally like in COCOMO is that it is complexity-based rather than time-based.</p>
<h4>Planning Poker</h4>
<p><a title="The Wikipedia on the Planning Poker estimation technique" href="http://en.wikipedia.org/wiki/Planning_poker" target="_blank" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Planning_poker?referer=');">Planning poker</a> is an agile estimation technique. As the name implies it is based on playing cards (<a title="Planning poker cards .pdf for download" href="/agile/2009/11/planning-poker-cards-pdf-download/" target="_self">my .pdf for download</a>) . The estimations in planning poker are relative, complexity-based and consensus-oriented.</p>
<p>Each planning poker card will show a number: "0.5-1-2-3-5-8-13-20-40-100-?-infinity" are a common set but there are other variations. The card "?" indicates that the estimating person can't estimate the task and "infinity" translates into "really, really huge" and can be seen as a sign that the task should be broken down into several smaller tasks.</p>
<p>The estimation works as follows: Each team member has a set of cards on his own. A task is explained, usually by the product owner / customer. A discussion takes place to clarify doubts from the team. After the task is clear, each team member picks a card out of his stack secretly and in unison they show the cards to each other.</p>
<p>If the numbers on each team members' card are reasonably close together (i.e. 8-13-8-8-5-13) a rough mean value is "calculated" (probably 8 in this case) and the next task comes up for estimation.</p>
<p>In case the numbers vary wildly the team members with the lowest and highest numbers explain why they picked their number. This is to reveal misunderstandings and generate a broader understanding for <em>all </em>team members. After that a second estimation round is performed. The process repeats until all numbers are reasonably close.</p>
<p>By now you may ask what the numbers are indicating? They do <em>not </em>indicate time. The card "5" does not mean "five days" or "five hours". The cards indicate complexity. There is no unit for the numbers, they are commonly referred to as story points or points for short.</p>
<p>What points show is that a task with a complexity of 2 is twice as complex as a task with 1 point and roughly half as complex as a 5 point task.</p>
<p>When estimating with planning poker it is absolutely mandatory to understand that each tasks complexity is only relative to another task. So what you do is you pick a comparable task that has already been developed (from your last project or the last sprint in the current project) and assign a medium sized number to it, for example "eight". Now for the current bunch of tasks you ask your team to compare the new task to that one and pick a card from their stack based on its relative size.</p>
<p>What you get is a consensus-based estimation how big or small a current task is related to one that is well known and understood. Since a task with complexity "eight" is almost twice as big as complexity "five", and you know how much time "eight" took to plan, develop, document and test, you have a rough idea how long the new task with complexity "five" will take.</p>
<p>My biggest pro for Planning Poker is that it will enable your team to estimate their own work. Usually this will take a few iterations as they need to get to know their own pitfalls but the long term benefits clearly outweigh the initial pains. Once the team knows how to estimate, you will not find anyone outside the team who can estimate the teams own work.</p>
<p>Another big pro for Planning Poker is that it is by far the fastest approach and that it is fun. Calculating numbers for hours and hours is boring, planning poker is more of a focused discussion.</p>
<p>One negative aspect of Planning Poker is that it is somewhat fragile. If your team size changes often, getting good estimations out of Pllanning Poker might be hard. But in agile the team constellation should stay constant even more than in traditional methodologies.</p>
<h4>Bottomline</h4>
<p>That's it, the three estimation techniques I'm most familiar with.</p>
<p>If you work in a traditional environment, give PERT a try. Use COCOMO if you can afford the overhead and if you have comparable projects in a very stable environment.</p>
<p>In any case I urge you to try out Planning Poker. While the methodology itself is agile, I don't see why Planning Poker should not work for you, even if you're in a traditional waterfall of SDLC environment. It will give your team a much better understanding of the upcoming work and enable it to participate in a project at a much earlier stage than usual. Through that, the team will feel involved and motivation will go up.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.st-webdevelopment.de/management/2010/01/estimation-techniques-compared/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ken Schwaber&#8217;s &#8220;Confusion about Scrum&#8221;</title>
		<link>http://www.st-webdevelopment.de/agile/2010/01/ken-schwaber-confusion-scrum/</link>
		<comments>http://www.st-webdevelopment.de/agile/2010/01/ken-schwaber-confusion-scrum/#comments</comments>
		<pubDate>Fri, 01 Jan 2010 06:50:14 +0000</pubDate>
		<dc:creator>Dominique</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Jeff Sutherland]]></category>
		<category><![CDATA[Ken Schwaber]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[split up]]></category>

		<guid isPermaLink="false">http://www.st-webdevelopment.com/?p=297</guid>
		<description><![CDATA[My thoughts about the article by Ken Schwaber "Confusion about Scrum" and the possible implication on a global scale]]></description>
			<content:encoded><![CDATA[<p>On December 31st 2009 Ken Schwaber posted his article "<a title="Ken Schwaber: Confusion about Scrum" href="http://groups.yahoo.com/group/scrumdevelopment/message/43850" target="_blank" onclick="pageTracker._trackPageview('/outgoing/groups.yahoo.com/group/scrumdevelopment/message/43850?referer=');">Confusion about Scrum</a>" in the Yahoo <a title="The Yahoo! Newsgroup on ScrumDevelopment" href="http://groups.yahoo.com/group/scrumdevelopment/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/groups.yahoo.com/group/scrumdevelopment/?referer=');">ScrumDevelopment</a> Newsgroup.</p>
<p>He states that</p>
<blockquote><p>There are now two definitions of Scrum. One is maintained and sustained by Jeff Sutherland and myself at <a title="Scrum.org" href="http://www.scrum.org" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.scrum.org?referer=');">www.scrum.org</a>. Another is an old copy that is posted at <a title="The ScrumAlliance" href="http://www.scrumalliance.org" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.scrumalliance.org?referer=');">www.scrumalliance.org</a>, by the ScrumAlliance.</p></blockquote>
<p>His article continues mentioning what sounds like the start of a copyright dispute over the Chinese version of the<a title="Ken Schwaber, Jeff Sutherland: The Scrum Guide" href="http://www.scrum.org/storage/scrumguides/Scrum%20Guide.pdf" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.scrum.org/storage/scrumguides/Scrum_20Guide.pdf?referer=');"> Scrum Guide</a> (English version) which in its original form is written and maintained by Ken Schwaber and Jeff Sutherland. Apparently now the ScrumAlliance claims ownership to the Chinese translation of the <a title="Ken Schwaber, Jeff Sutherland: The Scrum Guide" href="http://www.scrum.org/storage/scrumguides/Scrum%20Guide.pdf" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.scrum.org/storage/scrumguides/Scrum_20Guide.pdf?referer=');">Scrum Guide</a> (again the English version). As Ken points out</p>
<blockquote><p>Any of you familiar with copyright law know that a derivative of the original is still owned by the original copyright holder.</p></blockquote>
<p>Ken Schwaber recommends</p>
<blockquote><p>that you refer to the<a title="Ken Schwaber, Jeff Sutherland: The Scrum Guide" href="http://www.scrum.org/storage/scrumguides/Scrum%20Guide.pdf" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.scrum.org/storage/scrumguides/Scrum_20Guide.pdf?referer=');"> Scrum Guide</a> created and sustained by<br />
the authors of Scrum, Jeff and myself.</p></blockquote>
<p>This is serious news.<span id="more-297"></span></p>
<h4>Do we see the beginning of a split up of Scrum?</h4>
<p>Well I don't know about that but the way I read the article we are seeing a split up between Ken Schwaber and Jeff Sutherland with the ScrumAlliance.</p>
<p>Already <a title="Scrum.org" href="http://www.scrum.org/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.scrum.org/?referer=');">scrum.org</a>, maintained by Ken Schwaber and Jeff Sutherland offers a Scrum Assessment program that looks similar to the one offered by the ScrumAlliance.</p>
<h4>What good will come out of it?</h4>
<p>Well again, I don't know. My personal opinion is "not so much".</p>
<p>I see Ken's point and his desire to keep his intellectual property his (and Jeff's).</p>
<p>I also agree with Ken that it is required to have one (!) formal description of what Scrum is. As he points out in application Scrum is mixed up with other agile approaches such as Kanban, XP and others. This makes it important to have one (!) "master copy" of what is Scrum and what is not Scrum. A benchmark is required.</p>
<p>Paul Oldfield of Capgemini may be right that in reality, in the scope of your project it does not matter whether your Scrum is 100% pure or whether you mix it with other methodologies in order to make it work for you.</p>
<p><strong>The importance of a formal definition is on the global scale, not on project scale.</strong></p>
<p>If Scrum minus Burndown Chart, plus 30% Kanban and estimations done through COCOMO works in your project, keep doing that! But don't call it Scrum.</p>
<p>There is only one definition for each of software design pattern. Differences in implementation in your project don't matter. But if I ask in a job interview what the "goal" of the Factory design pattern is and the answer is not something along the lines of "it deals with the problem of creating objects without specifying the exact class of object that will be created" ( (c) Wikipedia) the candidate fails. He doesn't know the Factory design pattern.</p>
<p>If you tell me your estimation method is PERT and the formular is "(opt + 3*real + pess) / 6" you are not using PERT. The estimation technique you're using might work perfectly well for you but it is not PERT.</p>
<p>Same for Scrum. The importance of one formal definition lies in what you know and what everybody (!) agrees to, not in what you do.</p>
<h4>We need one formal definition</h4>
<p>We are able to benchmark people against a principle only if there is one commonly agreed upon definition.</p>
<p>If there are several definitions of one principle the whole idea gets diluted and harder to assess. The principle in itself might - but doesn't have to - become less important.</p>
<p>I have no background information on what lead to the confusion as Ken calls it. But surely I hope that all involved parties get back on one table and keep Scrum unique. Keep it simple. Don't dilute it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.st-webdevelopment.de/agile/2010/01/ken-schwaber-confusion-scrum/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Thank you all and a Happy New Year</title>
		<link>http://www.st-webdevelopment.de/general/2010/01/happy-year/</link>
		<comments>http://www.st-webdevelopment.de/general/2010/01/happy-year/#comments</comments>
		<pubDate>Fri, 01 Jan 2010 05:50:54 +0000</pubDate>
		<dc:creator>Dominique</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.st-webdevelopment.com/?p=295</guid>
		<description><![CDATA[A successful new year to all my readers.]]></description>
			<content:encoded><![CDATA[<p>I would like to thank all of you who visited my blog in December 2009 for their interest in what I have to say. Thanks for making the WebDevelopment Dominique Stender a success in such short amount of time. Over 900 human visitors and almost 11,000 page views per month not counting spiders and bots is a solid number for a blog that is less than two months old in my book.</p>
<p>I'm glad you like the topics and ideas I present here. I'll continue to give my very best in 2010 and I promise I have a couple of interesting topics already piled up.</p>
<p>A successful and prosperous year of 2010 to all of you!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.st-webdevelopment.de/general/2010/01/happy-year/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Another reason to upgrade to PHP 5.3</title>
		<link>http://www.st-webdevelopment.de/php/2009/12/upgrade-reason-php-53/</link>
		<comments>http://www.st-webdevelopment.de/php/2009/12/upgrade-reason-php-53/#comments</comments>
		<pubDate>Tue, 29 Dec 2009 10:45:33 +0000</pubDate>
		<dc:creator>Dominique</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[object orientation]]></category>
		<category><![CDATA[OOP]]></category>
		<category><![CDATA[static property]]></category>

		<guid isPermaLink="false">http://www.st-webdevelopment.com/?p=282</guid>
		<description><![CDATA[Dominique Stender outlines why to upgrade to PHP 5.3 by showcasing an issue in the handling of static properties with PHP 5.2]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-287" title="php code" src="http://www.st-webdevelopment.de/wp-content/uploads/2009/12/static.jpg" alt="php code" width="190" height="400" />In case you haven't found any specific reason to switch to PHP 5.3, I have one: Static properties.</p>
<p>Consider the following scenario: You have a group of classes, each responsible for returning a specific statistic. All these classes implement the same API, as given by a common abstract class.</p>
<p>Now, some of these statistics are publicly accessible, others require a certain access control permission to be set.</p>
<p>The logical approach would be to implement a static property to the abstract class, denying access by default. Those classes that are indeed public will overwrite the static property with the correct setting and become accessible.</p>
<p>The property is static to gain speed: There is no need to instantiate the class, if the access control is not satisfied.</p>
<p>Stripped down to the bare essentials the whole set of classes to outline the issue looks like this:</p>
<pre name="code" class="php">abstract class StatisticBase {
    public static $acl = '0';
} // end: class StatisticBase

class PublicStatistic extends StatisticBase {
    public static $acl = '1';
} // end: class StatisticBase

class AdminStatistic extends StatisticBase {
    // default value for $acl is fine
} // end: class AdminStatistic</pre>
<p>AdminStatistic is an implemented class that is private, indicated by the $acl property being 0. PublicStatistic on the other hand is public, hence $acl is 1.</p>
<p>Now before instantiating a specific class we can check whether or not the access condition is satisfied:</p>
<pre name="code" class="php">if ($user-&gt;isAdmin == true || PublicStatistic::$acl == 1) {
    // retrieve admin statistic...
} // end: if</pre>
<p>But naturally this is cumbersome as soon as you have more than a handful of statistics - you don't want to add another condition to your if-statement whenever you add a statistic. So the logical solution is a loop:</p>
<pre name="code" class="php">$statistics = array(
    'PublicStatistic',
    'AdminStatistic'
);

foreach ($statistics as $statClassName) {

    if ($user-&gt;acl == 1 || $statClassName::$acl == 0) {
        // retrieve current statistic...
    } // end: if
} // end: foreach</pre>
<p>Here PHP 5.2 will fail with a fatal error.</p>
<p>You can't access static class properties by means of using a variable for the classname. PHP 5.3 can. There is no really elegant solution for this. (If you know one, post it in the comments!)</p>
<p>While I'm glad that PHP 5.3 has one more OOP feature covered, It leaves me with the feeling that we still have a long way to go until PHP fully supports object orientation.</p>
<p>Now, if Novel would please release a PHP 5.3 package for SLES 10 and SLES 11... thank you</p>
]]></content:encoded>
			<wfw:commentRss>http://www.st-webdevelopment.de/php/2009/12/upgrade-reason-php-53/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Great Indian Developer Summit 2010</title>
		<link>http://www.st-webdevelopment.de/general/2009/12/great-indian-developer-summit-2010/</link>
		<comments>http://www.st-webdevelopment.de/general/2009/12/great-indian-developer-summit-2010/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 11:05:01 +0000</pubDate>
		<dc:creator>Dominique</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.st-webdevelopment.com/general/2009/12/great-indian-developer-summit-2010/</guid>
		<description><![CDATA[Title: Great Indian Developer Summit 2010Location: BangaloreLink out: Click hereDescription: From the website:
Great Indian Developer Summit is the gold standard for India's software developer ecosystem for gaining exposure to and evaluating new projects, tools, services, platforms, languages, software and standards. Packed with premium knowledge, action plans and advise from been-there-done-it veterans, creators, and visionaries, the [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Title: </strong>Great Indian Developer Summit 2010<br /><strong>Location: </strong>Bangalore<br /><strong>Link out: </strong><a href="https://www.xing.com/events/great-indian-developer-summit-2010-442398" target="_blanck" onclick="pageTracker._trackPageview('/outgoing/www.xing.com/events/great-indian-developer-summit-2010-442398?referer=');">Click here</a><br /><strong>Description: </strong>From the website:<br />
Great Indian Developer Summit is the gold standard for India's software developer ecosystem for gaining exposure to and evaluating new projects, tools, services, platforms, languages, software and standards. Packed with premium knowledge, action plans and advise from been-there-done-it veterans, creators, and visionaries, the 2010 edition of Great Indian Developer Summit features focused sessions, case studies, workshops and power panels that will transform you into a force to reckon with. Featuring 3 co-located conferences: GIDS.NET, GIDS.Web, GIDS.Java and an exclusive day of in-depth tutorials - GIDS.Workshops.</p>
<p>At GIDS, you'll participate in hundreds of sessions encompassing the full range of Microsoft computing, Java, Agile, RIA, Rich Web, open source/standards, languages, frameworks and platforms, practical tutorials that deep dive into technical skill and best practices, inspirational keynote presentations, an Expo Hall featuring dozens of the latest projects and products activities, engaging networking events, and the interact with the best and brightest of speakers from around the world.<br /><strong>Start Date: </strong>2010-04-20<br /><strong>Start Time: </strong>08:00<br /><strong>End Date: </strong>2010-04-23<br /><strong>End Time: </strong>18:00</p>
]]></content:encoded>
			<wfw:commentRss>http://www.st-webdevelopment.de/general/2009/12/great-indian-developer-summit-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Power of Facebook: A Case Study</title>
		<link>http://www.st-webdevelopment.de/commerce/2009/12/power-facebook-case-study/</link>
		<comments>http://www.st-webdevelopment.de/commerce/2009/12/power-facebook-case-study/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 03:15:48 +0000</pubDate>
		<dc:creator>Dominique</dc:creator>
				<category><![CDATA[Commerce]]></category>
		<category><![CDATA[Social Web]]></category>
		<category><![CDATA[charts]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[social commerce]]></category>
		<category><![CDATA[social media]]></category>

		<guid isPermaLink="false">http://www.st-webdevelopment.com/?p=256</guid>
		<description><![CDATA[Article about a Facebook group that attempts to push a 17 year old song on top of the British Christmas charts of 2009 in favor of the usual X-Factor song.]]></description>
			<content:encoded><![CDATA[<p>In case you or your company are still not convinced of the power of social media sites such as facebook and twitter or you're wondering whether they can give your company a sales boost, <a title="The BBC on the Anti X-Factor campain 2009" href="http://www.bbc.co.uk/6music/news/20091216_rageagainstthemachine.shtml" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.bbc.co.uk/6music/news/20091216_rageagainstthemachine.shtml?referer=');">read this story on BBC</a>.</p>
<p>In a nutshell a <a title="The official facebook group of the anti X-Factor campain" href="http://bit.ly/inthename" target="_blank" onclick="pageTracker._trackPageview('/outgoing/bit.ly/inthename?referer=');">Facebook group</a> formed to put the 17 year old Rage Against The Machine Song "Killing In The Name Of" on top of this years British Christmas Charts.</p>
<p>Here's their official video</p>
<p><a href="http://www.st-webdevelopment.de/commerce/2009/12/power-facebook-case-study/"><em>Click here to view the embedded video.</em></a></p>
<p>The video itself does not say very much, the information text next to it on the YouTube page itself is much better.</p>
<p>The X-Factor is a Music Chart TV Show much like the "American Idol" or the German "DSDS". In the last years, the winner of the X-Factor show has always been the number one hit for the British christmas charts.</p>
<p>Apparently people have enough of this. Hence they formed the <a title="The official Facebook Group of the anti X-Factor campaign" href="http://bit.ly/inthename" target="_blank" onclick="pageTracker._trackPageview('/outgoing/bit.ly/inthename?referer=');">Facebook group</a> to push another song into the charts - Rage Against The Machine with Killing In The Name Of.</p>
<p>You can help their cause by buying a download of the song either on <a title="Buy RATM Killing In The Name Of on iTunes" href="http://bit.ly/ratm-itunes" target="_blank" onclick="pageTracker._trackPageview('/outgoing/bit.ly/ratm-itunes?referer=');">iTunes</a>, <a title="Download RATM Killing In The Name Of on Amazon" href="http://bit.ly/ratm-amazon" target="_blank" onclick="pageTracker._trackPageview('/outgoing/bit.ly/ratm-amazon?referer=');">Amazon</a> and various other sites.</p>
<p>Currently the song in fact <em>is </em>number one in the <a title="The British Single Charts" href="http://www.bbc.co.uk/radio1/chart/singles/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.bbc.co.uk/radio1/chart/singles/?referer=');">British charts</a>.</p>
<p>This is a wakeup call to everyone that is not yet convinced about the potential of social media to drive business. The potential is there. Now it is proven again.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.st-webdevelopment.de/commerce/2009/12/power-facebook-case-study/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
