<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress.com" -->
<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/"
	>

<channel>
	<title>iteration &amp;laquo; WordPress.com Tag Feed</title>
	<link>http://en.wordpress.com/tag/iteration/</link>
	<description>Feed of posts on WordPress.com tagged "iteration"</description>
	<pubDate>Fri, 04 Dec 2009 16:27:59 +0000</pubDate>

	<generator>http://en.wordpress.com/tags/</generator>
	<language>en</language>

<item>
<title><![CDATA[OOPD - Uge 4, tirsdag]]></title>
<link>http://sorendahlgaard.wordpress.com/2009/12/04/oopd-uge-4-tirsdag/</link>
<pubDate>Fri, 04 Dec 2009 14:29:42 +0000</pubDate>
<dc:creator>sorendahlgaard</dc:creator>
<guid>http://sorendahlgaard.wordpress.com/2009/12/04/oopd-uge-4-tirsdag/</guid>
<description><![CDATA[Husk fra sidst Abstract classes kan ikke blive instantieret, og kan indeholde abstract methods Final]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><h2>Husk fra sidst</h2>
<ul>
<li><strong>Abstract</strong> classes kan ikke blive instantieret, og kan indeholde abstract methods</li>
<li><strong>Final</strong> classes kan ikke nedarves fra</li>
<li><strong>Final</strong> methods kan ikke overskrives</li>
</ul>
<h2>Overblik (for ugen)</h2>
<ul>
<li>Containers
<ul>
<li>Designe en container</li>
<li>Generic types</li>
</ul>
</li>
<li>Introduktion til Collection framework
<ul>
<li>Collection&#60;T&#62; og List&#60;T&#62;</li>
<li>Generelle implementationer af disse</li>
</ul>
</li>
<li>Loops og iteration</li>
<li>Arrays</li>
<li>Implementering af array-baserede collections</li>
</ul>
<h2>Containers</h2>
<p>Når man programmerer skal man ofte bruge en <em>collection</em> af objekter. F.eks. indeholder en pokerhånd et antal kort, et objekt der repræsenterer et kursus på universitetet indeholder en liste over de studerende der er tilmeldt osv. Vi har allerede arbejdet med lister i SML, men nu skal vi føre begrebet videre.</p>
<p>Vi bruger <em>Containers<strong> </strong></em>til at holde styr på sådanne collections. (I java bruger biblioteket termet <em>Collection</em>,  men det er fordi Container var brugt til noget med GUI&#8217;en allerede). Basale containeroperationer inkluderer:</p>
<ul>
<li>Tilføje et element</li>
<li>Fjerne et element</li>
<li>Checke om et element er i containeren</li>
<li>Udføre en operation på hvert element i containeren (tænk map og fold fra SML)</li>
</ul>
<p>Containere er homogene. Dvs. at alle elementer i en container har samme type (ligesom lister i SML).</p>
<p>Eksempler på containere kan være:</p>
<ul>
<li><strong>En mængde</strong> &#8211; Vi husker hvordan vi lavede en set signatur i ML, og hvordan vi implementerede denne. En mængde er en container uden duplicates &#8211; altså ingen elementer i mængden er ens.</li>
<li><strong>En Liste</strong> &#8211; Indeholder et endeligt antal elementer i en bestemt rækkefølge. Det giver altså mening at snakke om det første element, det andet element, osv.</li>
</ul>
<p>Hvis vi skulle implementere en liste for studerende-objekter &#8211; hvad skulle den så kunne? Vi kan starte med de basale operationer fra før:</p>
<blockquote>
<pre><strong>public void</strong> add (Student student)
   Add the specified <em>Student</em> to the end of this list.

<strong>public void </strong>remove (Student student)
   Remove the first occurrence of the specified <em>Student</em> from this list.
   Has no effect if the <em>Student</em> is not on this list.

<strong>public boolean</strong> contains (Student student)
   This list contains the specified <em>Student</em>.

<strong>public int </strong>size ()
   Number of elements in this list.</pre>
</blockquote>
<p>Vi vil også gerne kunne udføre en operation på alle elementerne. Til dette vil vi implementere en måde at trække student nummer <em>n</em> ud fra listen. Vi skal se senere hvorfor det er smartere end at lave en <strong>map</strong> funktion.</p>
<blockquote>
<pre><strong>public </strong>Student get (<strong>int</strong> index)
   The <em>Student</em> at with the specified index.
   <strong>require: </strong>0 &#60;= index &#38;&#38; index &#60; this.size() //0-indexed

<strong>public void</strong> set (<strong>int</strong> index, Student student)
   Replace the element at the specified position with the specified <em>Student</em>.
   <strong>require: </strong>0 &#60;= index &#38;&#38; index &#60; this.size()</pre>
</blockquote>
<p>Vi kan nu lave en ny, tom liste:</p>
<blockquote>
<pre>StudentList roll = <strong>new</strong> StudentList();</pre>
</blockquote>
<p>Vi kan fylde elementer ind i listen:</p>
<blockquote>
<pre>roll.add(<strong>new</strong> Student("Bill",...));</pre>
</blockquote>
<p>Vi kan spørge om listens størrelse, og vi kan bede om student nummer <em>n</em>. Specifikt kan vi (hvis <em>FinalGrade()</em> er en funktion i <em>Student</em>) spørge om studerende nummer <em>n</em>&#8217;s final grade:</p>
<blockquote>
<pre><strong>int</strong> iGrade = roll.get(n).FinalGrade();</pre>
</blockquote>
<p>Hvis vi nu skulle lave en liste der kunne indeholde <em>PlayingCard</em> objekter i stedet for <em>Student</em> objekter, så ville vi sikkert lave præcist samme liste bare med andre typer. Dette er absolut ikke optimalt. Det betyder at vi laver linje op og linje ned af duplikeret kode, hvilket er tåbeligt.</p>
<p>Vi tænker nu at vi kunne bruge en <strong>abstract</strong> class (som vi jo lige har lært om) til at implementere en generel liste, og så kunne vi nedarve de forskellige andre typer af lister. Dette er imidlertid meget besværligt. Hvordan skal vi f.eks. lave <strong>add</strong> og <strong>remove</strong> i den abstrakte klasse? Den eneste mulighed vi har er at bruger <em>Object</em> (som alle klasser nedarver fra) i vores abstrakte klasse og så kan vi typecaste elementerne i vores nedarvede lister.</p>
<p>Det ville imidlertid betyder, at vores preconditions vil blive styrket i vores nedarvede typer (den nedarvede type vil kræve et element af typen <em>Student</em> mens den abstrakte klasse bare skal bruge et <em>Object</em>.)</p>
<h3>Generics</h3>
<p>Heldigvis kom der i java 5.0 noget vi har haft i lang tid i c++ <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  nemlig generics. Der findes således en klasse:</p>
<blockquote>
<pre><strong>public class</strong> List&#60;Element&#62; { ...</pre>
</blockquote>
<p>Det betyder, at vi kan erklære vores pokerhånd og studentlist således:</p>
<blockquote>
<pre>List&#60;Student&#62; roll = <strong>new</strong> List&#60;Student&#62;();
List&#60;PlayingCard&#62; hand = <strong>new</strong> List&#60;PlayingCard&#62;();</pre>
</blockquote>
<p>Typen vi specificerer kan dog ikke være en primitiv type (int, boolean, osv.). Da skal vi bruge de wrapper classes der hører til (Integer, osv.).</p>
<h3>abstraction for structuring implementation</h3>
<p>Den måde de forskellige collections er implementeret giver et rigtigt godt eksempel på hvordan man skal bruge abstraction.</p>
<p><strong>Interfaces </strong>bliver brugt som klientens udgangspunkt. Her kan man se hvilke metoder der er, og hvad deres pre- og postconditions er. Generel dokumentation. <em>Eksempel: Collection&#60;Element&#62;, List&#60;Element&#62;</em></p>
<p><strong>Abstract classes</strong> er skelettet for implementeringen. Abstract classes definerer &#8220;standard&#8221; metoder, som de klasser der nedarver kan gå ud fra. <em>Eksempel: AbstractCollection&#60;Element&#62;, AbstractList&#60;Element&#62;</em></p>
<p><strong>Concrete classes</strong> er den egentlige implementation. <em>Eksempel: ArrayList&#60;Element&#62;, LinkedList&#60;Element&#62;</em></p>
<p>Herunder ses et billede af alle de interfaces der er i hele collection frameworket:</p>
<p><img class="aligncenter" title="Interfaces" src="http://java.sun.com/docs/books/tutorial/figures/collections/colls-coreInterfaces.gif" alt="" width="438" height="129" /></p>
<p>Og herunder er de forskellige implementationer og deres tilhørende interface(s)</p>
<h2><a href="http://sorendahlgaard.wordpress.com/files/2009/12/implementations.png"><img class="aligncenter size-full wp-image-300" title="Implementations" src="http://sorendahlgaard.wordpress.com/files/2009/12/implementations.png" alt="" width="500" height="136" /></a>Iteration</h2>
<p>Vi kan huske hvordan vi valgte at lave <strong>get</strong> og <strong>set</strong> funktioner i stedet for at implementere en funktion som <strong>map</strong> eller <strong>fold</strong>. Dette er fordi i modsætning til SML, så er Java et iterativt sprog og vi kan have løkker. Vi har allerede set While løkken og med den kunne vi f.eks. gøre følgende:</p>
<blockquote>
<pre><strong>int</strong> i = 0;
<strong>while</strong> (i &#60; list.size())
{
   <em>do something to</em> List.get(i);
   ++i;
}</pre>
</blockquote>
<p>På den måde kan vi gå alle elementerne i en liste igennem. Vi kan f.eks. beregne gennemsnittet af nogle studerendes karakterer:</p>
<blockquote>
<pre><strong>public double</strong> finalAverage(List&#60;Student&#62; students)
{
   <strong>int </strong>i = sum = 0;
   <strong>int </strong>length = students.size();

   <strong>while</strong> (i&#60;length)
   {
      sum += students.get(i).finalExam();
      ++i;
   }
   <strong>return</strong> (<strong>double</strong>)sum / (<strong>double</strong>)length;
}</pre>
</blockquote>
<p>Det er dog en lidt kluntet måde at skrive det på med <strong>while</strong> loops. Vi bruger derfor en for løkke der kan gøre det hele nemmere for os. En for løkke virker på følgende måde:</p>
<blockquote>
<pre><strong>for</strong> (initialization statement; condition; update statement)
{
   body;
}

<em>I forhold til while:
</em>
initialization statement;
<strong>while</strong> (condition)
{
   body;
   update statement;
}</pre>
</blockquote>
<p>f.eks:</p>
<blockquote>
<pre><strong>for</strong> (int i=0; i &#60; list.size(); ++i)
   <em>do stuff to</em> list.get(i);</pre>
</blockquote>
<p>Der findes også en <strong>for each</strong> ligesom i php, men jeg synes det er noget fis og gider ikke skrive om den <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[It'll take time, so spend it wisely]]></title>
<link>http://aboutgamedesign.com/2009/11/27/itll-take-time-so-spend-it-wisely/</link>
<pubDate>Fri, 27 Nov 2009 17:06:28 +0000</pubDate>
<dc:creator>Arcade</dc:creator>
<guid>http://aboutgamedesign.com/2009/11/27/itll-take-time-so-spend-it-wisely/</guid>
<description><![CDATA[Just about all developers work by iterating in one way or another. The biggest problem isn&#8217;t t]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Just about all developers work by iterating in one way or another.</p>
<p>The biggest problem isn&#8217;t that you have to change things that are already done, or even throw it away. The biggest issue is that it takes time, and time is pretty much always more precious than money. That&#8217;s why the designer can save a lot of time by iterating in the pre-development phase, so he doesn&#8217;t waste the whole team&#8217;s time.</p>
<p><a style="text-decoration:none;" href="http://aboutgamedesign.wordpress.com/files/2009/11/time.jpg"><img class="aligncenter size-full wp-image-255" title="time" src="http://aboutgamedesign.wordpress.com/files/2009/11/time.jpg" alt="" width="500" height="237" /></a></p>
<p><!--more-->Iteration means the act of repeating and it&#8217;s what we do to make really good games. We make something, look at it and then we notice what we can change to make it better, or maybe even something that doesn&#8217;t work as intended at all and &#8220;must&#8221; be fixed.</p>
<p>Doing this late in the development cycle can be tricky, hard and expensive, as it might require effort from very many team members from different disciplines. Of course, it depends on what you&#8217;re about to change. Some minor tweaking might not be a big deal.</p>
<p>Sure, people in the team might whine a bit when changes are to be made because they think that it&#8217;s either good enough as it is, the designer should have &#8220;known&#8221; about the result in advance or just because they don&#8217;t want to throw away work that&#8217;s already done, but leaving that aside, the biggest issue is time. You&#8217;re always working towards deadlines and time equals money.</p>
<p>That&#8217;s why it&#8217;s important for designers to iterate when only being in the pre-development and theoretical design. Write the design and then make sure that all design-ish people analyze it with a microscope and iterate, iterate and iterate!</p>
<p>That&#8217;s a great thing about prototypes as well. They&#8217;re built for you to be able to try out things in and make rapid changes. Use them! Unfortunately, not all projects use prototyping, which I think is a real shame. It doesn&#8217;t have to be a massive fully playable game.</p>
<p>Heck, it doesn&#8217;t even have to be digital.</p>
<p>A prototype can be anything that let you test anything, like a small, small element of a game mechanic, interaction design, or whatever. I think it&#8217;s worth dedicating and spending time on prototypes even if it &#8220;steals&#8221; time from the actual development, because in the end, you&#8217;ll save time and turn up with a better product.</p>
<p>Also, try and keep alert so you can make changes in good time, instead of waiting untill the last minute. The less work done to be changed/discarded, the better. And as a designer, dare to say that something doesn&#8217;t work right, instead of waiting for someone else to notice it. It doesn&#8217;t matter if you become the bitchy one because you&#8217;re always the one to point out the &#8220;bad&#8221; stuff.</p>
<p>Making games is just like making anything else. Let&#8217;s say you&#8217;re gonna draw a panda. If you draw a panda and you&#8217;ve never done that before, you&#8217;ll get a result. Now, afterwards, draw another one. Odds are that the second one will look better.</p>
<p><a href="http://aboutgamedesign.wordpress.com/files/2009/11/pandas.jpg"><img class="aligncenter size-full wp-image-254" title="pandas" src="http://aboutgamedesign.wordpress.com/files/2009/11/pandas.jpg" alt="" width="500" height="201" /></a></p>
<p>But in the end, you&#8217;ll run out of time and can&#8217;t iterate anymore. Except if you&#8217;re Blizzard, then you can iterative untill you&#8217;re satisfied and release globally loved games.</p>
<p>Because the time is limited, it&#8217;s important to make sure that iteration cost as little time as possible. That&#8217;s why it&#8217;s a good idea to start iterating from day one as a designer.</p>
<p>If I were to save this post as a draft, read it a couple of times and then re-write it, I&#8217;m 100% sure I would end up with a much better text.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[The Way of ZenAgile]]></title>
<link>http://zenagile.wordpress.com/2009/11/27/the-way-of-zenagile-2/</link>
<pubDate>Fri, 27 Nov 2009 05:22:47 +0000</pubDate>
<dc:creator>magia3e</dc:creator>
<guid>http://zenagile.wordpress.com/2009/11/27/the-way-of-zenagile-2/</guid>
<description><![CDATA[1. Identify your users&#8217; stories As I studied users&#8217; thoughts, I found patterns in what m]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><strong>1. Identify      your users&#8217; stories</strong></p>
<p>As I      studied users&#8217; thoughts, I found patterns in what my project was really      designed to do, above and beyond what the project brief said. I listened      to what my mind was drawn to listen to. These were the users&#8217; stories &#8212;      what was most important in their working lives.</p>
<p>There are no right or wrong answers in listening. Be honest with your users that you&#8217;re there to add value to the way they work and their stories &#8211; needs, expectations, attitudes and capabilities &#8211; will become clear.</p>
<p><strong>2. Embrace      your users&#8217; needs</strong></p>
<p>Once I am aware      of users&#8217; needs, it is far easier to design according to them. When faced      with a decision, I can compare it to their values by documentation as      personas, and see it will bring me closer to a solution that is fit for      them, rather than what is easiest for the project team to produce.</p>
<p><strong>3. Accept      expanding feature sets</strong></p>
<p>A ZenAgile mind does not struggle. It accepts users&#8217; needs      as they truly are. A rock is a rock. It will remain that way no matter how      much you worry, wish, or pressure it into changing. Worrying about      requirements and ever expanding user wants are the same way. I accept      requirements for what they are, do not waste time or energy fretting over      it, and group them into feature sets for delivery in such a way that, as a      whole, they add value to users&#8217; work.</p>
<p><strong>4. Energise      for change</strong></p>
<p>A ZenAgile mind      can give you extra energy for change as you are not wasting energy      fighting against the inevitable. As above, there is a large rock in your      way. You have three options:</p>
<ul type="disc">
<li>run into the rock repeatedly</li>
<li>agonize about the rock being      in the way, or</li>
<li>find a way around the rock.</li>
</ul>
<p>Before ZenAgile, I chose the first two options. With ZenAgile, I now accept the rock for what it is: an obstacle. I accept that you cannot go through it. I do not panic, and waste time and energy worrying about the obstacle. Instead I make my own path around the obstacle, either over the rock, around the rock, or under the rock.</p>
<p>This is <em>Seijaku</em> (静寂) &#8212; the energised calm.</p>
<p><strong>5. Enhance      knowledge of yourself</strong></p>
<p>As I      practice ZenAgile, I spend a fair amount of time in conversation with      others and thereby understanding myself and how I come to terms with      change: change in the project context, changes in requirements, and      changes that need to occur to the solution.</p>
<p>In time, I&#8217;ve learned to quiet my mind. I&#8217;ve listened to the same fears for projects repeating themselves which inspired me to change what was causing those fears. I&#8217;ve realised, for example, that lack of a user-centred approach was a large source of anxiety, and so it was time for a change. Without time to think and meditate on the conversations in a project, we tend to ignore what our mind is telling us, and remain locked into our old patterns of doing things.</p>
<p><strong>6. Gain      confidence in the agile way</strong></p>
<p>As you reflect on      your inner self, you become conscious of who you really are, your role,      and the skills you bring to aspects of the agile project. You learn what      makes you happy, what is beneficial to your project, and where you fit      into the multidisciplinary team. You bypass the fears and anxieties of      your mind, what role you play &#8212; Business Analyst, Project Manager,      Information Architecture, User Experience Designer, Change Manager &#8212; and      focus on doing what needs to be done. Boldly and passionately complete the      iteration. The opinions of traditional organisations like PMI, IIBA, ABAA,      etc, do not matter, because you know you are doing what is right.</p>
<p><strong>7. Appreciate      the iterative project lifecycle </strong></p>
<p>I      accept the project as it truly is &#8211; evolutionary in nature, rather than      revolutionary. You will always uncover new aspects of users&#8217; needs. You      will always uncover the unknown as you proceed boldly through the project.      Some will be surprises like a starry evening, a stroll by the river, or a      night of solitude. Each will have their own unique characteristics to be      appreciated. Mundane user needs also hold their own charm. Observing the      quiet details of the project lends value to the less appealing aspects,      and brings peace and joy in commonplace tasks.</p>
<p><strong>8. Increase      consideration for others </strong></p>
<p>Each person on the project is interconnected. We are all searching for the      solution, requirements, and a meaningful project to work on. It is much      harder to be angry at the user who argues with you about scope when you      realise they are on the same path, just at a different point in their      journey.</p>
<p><strong>9. Simplify      your project and your documentation</strong></p>
<p>Conversation      not documentation helps you differentiate between needs and wants. To      document things completely today is to suggest that it will fix users and      their workplace in time until the project has been completed. By      focussing, instead, on a minimalist, simple project solution delivered in      a short period of time, with just enough documentation to describe the decisions made, you are able to deliver value to people now and      then build upon that solution to meet their future needs.</p>
<p>This is <em>Kanso</em> (簡素) &#8212; simplicity and elimination of clutter from the project</p>
<p><strong>10. </strong><strong>Cultivate      a giving spirit by mentoring others in the team </strong></p>
<p>When you are doing your role in the best way      you can, your heart fills with joy. You are doing what you were put on      this earth to do, and doing it to the best of your ability. Your life is      simple, you are living your values, and you have a clear mind. You can      then give to others, mentoring and teaching with a loving spirit, to help      them along their path.</p>
<p>This is the <strong>True Way of ZenAgile</strong></p>
<p>M</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[What BA skills are of value in an Agile world?]]></title>
<link>http://zenagile.wordpress.com/2009/11/26/what-ba-skills-are-of-value-in-an-agile-world/</link>
<pubDate>Thu, 26 Nov 2009 05:41:14 +0000</pubDate>
<dc:creator>magia3e</dc:creator>
<guid>http://zenagile.wordpress.com/2009/11/26/what-ba-skills-are-of-value-in-an-agile-world/</guid>
<description><![CDATA[I recently created a post on a BA&#8217;s role on agile projects. The essential message was, simply,]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><img class="alignright size-full wp-image-23" title="Skills to Use" src="http://zenagile.wordpress.com/files/2009/07/skills-to-apply.png" alt="" width="128" height="128" />I recently created a post on a <a href="http://zenagile.wordpress.com/2009/11/24/what-is-a-business-analysts-role-in-an-agile-world/">BA&#8217;s role on agile projects</a>. The essential message was, simply, that there is <strong>no BA role</strong>. There&#8217;s also <strong>no PM role either</strong>. However, both disciplines have an immense number of skills that are incredibly valuable in agile projects.</p>
<p><strong>Sprint Zero<br />
</strong></p>
<ul>
<li><strong>Identifying users:</strong> Understanding who to talk to and who the prioritised feature sets and requirements represents if the first skill needed on an agile project. A BAs skills in stakeholder segmentation is the perfect starting point as is documenting them as <a href="http://zenagile.wordpress.com/2009/08/14/personas-in-agile/">personas</a>.</li>
<li><strong>Collecting user needs described on story cards:</strong> BAs have a great number of skills in eliciting requirements. In Sprint Zero all that is required is documentation as a story card:&#8221;As a [role] I need to [activity] in order to [outcome]&#8220;This gives you great traceability throughout the project because everything as to tie into enabling the user to undertake the activity and give them the outcome they seek.</li>
</ul>
<p><strong>Articulating the skinny solution</strong></p>
<ul>
<li><strong>Prioritisation of requirements: </strong>What requirements are more important than others?  BAs have skills in negotiation, liaison, workshop organisation and execution. Pair a BA with an Information Architect (IA) or user-experience designer (UXD) and you get a good idea of the prioritisation of their needs and how they need to be articulated during the iteration phases as complete feature sets. Remember it&#8217;s not about having mandatory, desirable, etc. Instead, agile requirements are listed in priority order with a minimum set &#8212; the things we can&#8217;t do without &#8212; forming the skinny solution.This is where the BAs skills are essentially lacking because it&#8217;s more in the province of cognitive and behavioural psychology. The skinny system reflects users&#8217; <a href="http://www.google.com.au/url?q=http://en.wikipedia.org/wiki/Hygiene_factors&#38;ei=OggOS7HgCozjlAeO74CWBA&#38;sa=X&#38;oi=spellmeleon_result&#38;resnum=1&#38;ct=result&#38;ved=0CAkQhgIwAA&#38;usg=AFQjCNFeV8MZToENvaqxH6Rvgt7ouwJIGA">hygiene factors</a>.Pair a BA with an IA, however, and the way to elicit the hygiene factors will become clear.</li>
</ul>
<p><strong>Planning an iteration</strong></p>
<ul>
<li><strong>Work estimation and benchmarking: </strong>What is the team going to produce? What skills are required? What activities will be done in this iteration? How long will elicitation and validation tasks take? These are all questions that BAs because of their ongoing involvement in projects are readily able to answer.I like to ensure that I&#8217;ve got a wiki handy to note the aspects of the estimation so that I can change the estimation into a benchmark once the work has been completed. Over time, this becomes a valuable knowledge tool because I can simply say &#8220;when we last did it, it took [this long]&#8220;</li>
<li><strong>Risk analysis:</strong> While doing work it&#8217;s the job of all team members to understand issues and risks as they arise and communicate them to the team&#8217;s leader, <a href="http://zenagile.wordpress.com/2009/10/19/zenagile-roles-agile-sensei/">Sensei</a> or Product Owner. The ability, therefore, to analyse on the fly is vital to the team and a skill that BAs have in spades.I find that differentiating between a fear and a risk is the hardest thing for peope to grasp. People often fear that something will eventuate, but when you start to boil things down into hard facts abouta) the impact the issue will have, and
<p>b) the actual likelihood of occurence (based on research) then fears can rapidly vanish when also paired with constant communication from standup meetings.</p>
<p>In this way, the BAs skills are best applied in the <a href="http://zenagile.wordpress.com/2009/11/13/agile-roles-samurai-sensei-and-roshi/">Roshi</a>, Scrum Master or Project Lead roles.</li>
</ul>
<p><strong>Understanding the context</strong></p>
<ul>
<li><strong>Elicitation and observation:</strong> Analysing how people work, why, and the outcomes achieved is an important part of a BAs skill set.  Whether done through interviews, focus groups or a contextual inquiry (my own favourite), understanding the context of use and communicating it is a BAs core strength in agile environments</li>
<li><strong>Communication: </strong>How do you relate to the rest of your multidisciplinary team that you know the context of use &#8212; both from a user and systems perspective? BAs have a variety of tools they use regularly coupled with a talent for customisation of communication mediums and messages so that information is passed on to others with maximum efficiency.So what are some of these tools?
<ul>
<li>Storyboards (which I love to draw!)</li>
<li><a href="http://zenagile.wordpress.com/2009/09/20/agile-documentation-requirements-on-a-page/">Plans on a page</a> (epic stories)</li>
<li>User pathways</li>
<li>Behavioural and process flow diagrams</li>
<li>Context diagram</li>
<li>Logical data model</li>
</ul>
<p>Notice that these are all light-weight, can be done in a short period of time, are easily changed, and are, essentially, <em>placholders for a conversation</em>.</li>
</ul>
<p><strong>Understanding the human, strategic and system requirements</strong></p>
<ul>
<li><strong>Custodianship of requirements: </strong>Understanding context is one thing, but then drawing the relationships between context and the needs of different people, and then taking into consideration the constraints, is a BA&#8217;s bread and butter. Where other disciplines, particularly UXD, tend to have greater strength in understanding and documenting context, the BAs strength has always been in elicitation, translation and communication of requirements, and then the management of these requiremens through to solution design, validation and implementation.For people like me, who tend to like to work at the &#8216;big picture&#8217;, having a BA who is detail oriented is a must.</li>
</ul>
<p><strong>Solution design</strong></p>
<ul>
<li><strong>Translation, communication and business representation:</strong> This is my favourite part of the iteration. While other team members might be responsible for the organisation of information of a system, its interaction design, and its systems architectural design, the BAs skills best served during the design phase is in representation of business and end-users. This is largely because their role as custodian of requirements makes them the most familiar with what is required and what the outcomes need to be when putting everything together.</li>
</ul>
<p><strong>Validation of the solution</strong></p>
<ul>
<li><strong>Diplomacy, negotiation, and whole-of-project representation: </strong>While programmers use automated testing in agile environments one aspect that can&#8217;t be automatically tested is whether or not the system behaves in the way that matches the way users need and want to use the product. Here the BAs diplomacy is his most valuable asset to bring to the agile project. He has to balance the needs of everyone, as well as their expectations, to help negotiate an agreement that the solution works, or whether additional things need to be incorporated in order for the solution to be acceptable to those who will use it.Of course, the outcome also needs to be communicated to The Powers That Be. With their strong skills in diplomacy and negotiation, a BA is able to represent the team and project as its Roshi, Scrum Master, or Project Lead.Then there&#8217;s letting the team know they&#8217;ve not suceeded in producing a valid solution. Lots of people get very attached to what they think is the right way to proceed and having users tell you that it&#8217;s not what they want can be incredibly frustrating. It means that the BAs skills of diplomacy are not only valued as an outward facing ability but also as an inward facing one as well</li>
</ul>
<p><strong>Implementation</strong></p>
<ul>
<li><strong>Diplomacy and sign-off:</strong> Having completed the <a href="http://en.wikipedia.org/wiki/ISO_13407">ISO13407</a> cycle final implementation the feature set needs to be signed-off. Someone has to remind users and the business of how the iteration has been conducted and the points of agreement throughout. This can be a delicate matter particularly given many users and sponsors want a big thick document to read at their leisure and then sign.I usually print and package all of the smaller deliverables and put them into a folder. The first page lists the milestones and activities, agreement dates and who was present/represented, and when agreement was reached. The bottom of the page has the dotted line on which to sign.</li>
<li><strong>Setting expectations: </strong>I&#8217;ve found other sponsors don&#8217;t care so much about being this formal, particularly given the BA has been in constant communication with them and set expectations along the entire feature set iteration.</li>
</ul>
<p>Ultimately, while there is no actual BA role, a BAs skill sets are of incredible importance throughout an agile project. This is a breath of fresh air for those of us who are only invited by the PM to elicit requirements during the first stage of the a waterfall project only then to be brought back onto the scene to help with users acceptance testing. This, ultimately, is why as BAs, we should all be championing agile. And if you&#8217;re not, then you should be!</p>
<p>So where are your strengths? What skills do you use most often as a BA in agile environments?</p>
<p>M</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[i am a bad game designer]]></title>
<link>http://aboutgamedesign.com/2009/11/25/i-am-a-bad-game-designer/</link>
<pubDate>Wed, 25 Nov 2009 09:50:05 +0000</pubDate>
<dc:creator>Gustav</dc:creator>
<guid>http://aboutgamedesign.com/2009/11/25/i-am-a-bad-game-designer/</guid>
<description><![CDATA[I have my problems with iterative design. Personally, iterative design is the way to go for me. Prof]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><a href="http://aboutgamedesign.wordpress.com/files/2009/11/this-kid-is-awesome.jpg"><img class="aligncenter size-medium wp-image-245" title="game_designers_rule" src="http://aboutgamedesign.wordpress.com/files/2009/11/this-kid-is-awesome.jpg?w=300" alt="" width="300" height="240" /></a></p>
<p>I have my problems with iterative design. Personally, iterative design is the way to go for me. Professionally it&#8217;s my biggest enemy.</p>
<p><!--more-->When designing games, I find it impossible to think of every (and I mean EVERY) little aspect of the game. I just can&#8217;t. Even harder is that I cannot always guarantee that my design is fun or that it &#8220;feels right&#8221; when played. Making a game feel right  is the hardest process, because it involves a lot of fiddeling around with animation, response times, feedback and so on. To really get those things nailed, iteration is the way to go &#8211; although time and budget restrains often keep me from iterating until I feel the game is good to go.</p>
<p>Now, those budget restrains are not what makes iteration my biggest enemy. It&#8217;s my co-workers. Don&#8217;t get me wrong here, they are great guys but every time I ask for iteration, it weakens my position as a Game Designer. It almost feels like I&#8217;m saying: &#8220;I&#8217;m a bad designer. I have no clue about what I&#8217;m doing. I can&#8217;t design on paper.&#8221; I had people come up to me and ask me, why I did not know this or that button had to be there 6 months ago. All I could answer was &#8220;I simply didn&#8217;t know back then!&#8221;. Well, that must mean I am a bad designer  - at least to the person asking it does.</p>
<p>Iteration feels like admitting that you don&#8217;t have a clue. If you&#8217;d have a clue, you could&#8217;ve designed everything in pre-production. At least that&#8217;s what a lot of people expect of me.</p>
<p>But I am content with this. Iteration IS the way to go. At least for me.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Velocity: Tracking productivity instead of time]]></title>
<link>http://cgrant.wordpress.com/2009/11/19/velocity-tracking-productivity-instead-of-time-2/</link>
<pubDate>Thu, 19 Nov 2009 16:49:34 +0000</pubDate>
<dc:creator>cgrant</dc:creator>
<guid>http://cgrant.wordpress.com/2009/11/19/velocity-tracking-productivity-instead-of-time-2/</guid>
<description><![CDATA[One of the most interesting parts of Agile project management is watching the velocity of a team inc]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>One of the most interesting parts of Agile project management is watching the velocity of a team increase over time. As a team works together their productivity tends to increase. Agile represents the amount of work a team produces in a metric called velocity. <a href="http://cgrant.files.wordpress.com/2009/11/image.png"><img style="display:inline;margin-left:0;margin-right:0;border-width:0;" title="image" border="0" alt="image" align="right" src="http://cgrant.files.wordpress.com/2009/11/image_thumb.png?w=244&#038;h=148" width="244" height="148" /></a>Frequently teams new to agile will size the work in a time based unit such as hours or days. This is a common carry over from traditional project management. While Agile does manage time and resources, the time is fixed not variable. In Agile an iteration or sprint is a fixed length of time typically between two or four weeks. A chart showing time spent working in an iteration isn’t that valuable. A better process is to view the amount of work a team can produce in a specific amount of time. This is called velocity. </p>
<p>One challenge managers have with velocity is attempting to plan work for a new team on a new project since the velocity of the team is not known. Typically the first couple iterations, a new team is still forming and learning how to work together. Over time the estimates and velocity will stabilize. Looking at the velocity of a team as measured in points rather that hours provides a better indication on the performance of the group. Once the velocity begins to stabilize a team can accurately plan the work for a particular iteration. </p>
<p><a href="http://cgrant.files.wordpress.com/2009/11/image1.png"><img style="display:inline;margin-left:0;margin-right:0;border-width:0;" title="image" border="0" alt="image" align="left" src="http://cgrant.files.wordpress.com/2009/11/image_thumb1.png?w=244&#038;h=148" width="244" height="148" /></a>Lets look at an example. A small team is pulled together to work on a new project. They sit&#160; down and estimated 30 stories varying between 2 and 10 points of effort each. The team believes they can take on 30 points in the first iteration (two weeks). At the end of that iteration the team only completed 10 points. When planning the next iteration the team learns from the previous one and only plans to complete 15 points. Iteration 2 hits the mark, the team does complete 15 points. For Iteration 3 the team plans for 15 points again. This time however they are able to complete 17 points, they’re getting better. Iteration 4 they plan for 18 points but produce 22. Iteration 5 they plan for 20 but only produce 18. Feeling they’ve identified the standard velocity at 20 points, the team continues through the project allocating 20 points per iteration. With this in mind the team can look at the work produced and determine how productive they are and forecast a valid completion timeline. This forecast is the projected project burn-up. The burn up chart shows the actual accumulated work completed against the projected values across multiple iterations. The burn-up chart can also chart scope increases and decreases A burn-down chart on the other hand deals with a fixed amount of work and shows the amount of that work completed in a single iteration. Both of these commonly used planning and status charts can’t be produced without understanding what the velocity of the team is.&#160; </p>
<p>It’s tempting to use time as a unit of measurement in agile. Try to break away from the traditional views and track productivity instead. The results will be a more confident team and more accurate planning. In the end your customers will thank you for delivering what you said when you said, and for providing valuable statuses along the way. </p>
<p>&#160;</p>
<p>Resources:</p>
<p><a title="http://agilesoftwaredevelopment.com/blog/jackmilunsky/significance-story-points" href="http://agilesoftwaredevelopment.com/blog/jackmilunsky/significance-story-points">http://agilesoftwaredevelopment.com/blog/jackmilunsky/significance-story-points</a></p>
<p><a title="http://www.versionone.com/Resources/Velocity.asp" href="http://www.versionone.com/Resources/Velocity.asp">http://www.versionone.com/Resources/Velocity.asp</a></p>
<p><a title="http://grantjoung.blogspot.com/2009/07/efficiency-must-have-agile-metric-as.html" href="http://grantjoung.blogspot.com/2009/07/efficiency-must-have-agile-metric-as.html">http://grantjoung.blogspot.com/2009/07/efficiency-must-have-agile-metric-as.html</a></p>
<p><a title="http://agilesoftwaredevelopment.com/blog/pbielicki/predicting-team-velocity-yesterday-weather-method" href="http://agilesoftwaredevelopment.com/blog/pbielicki/predicting-team-velocity-yesterday-weather-method">http://agilesoftwaredevelopment.com/blog/pbielicki/predicting-team-velocity-yesterday-weather-method</a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Velocity: Tracking productivity instead of time]]></title>
<link>http://cgrant.wordpress.com/2009/11/19/velocity-tracking-productivity-instead-of-time/</link>
<pubDate>Thu, 19 Nov 2009 16:05:07 +0000</pubDate>
<dc:creator>cgrant</dc:creator>
<guid>http://cgrant.wordpress.com/2009/11/19/velocity-tracking-productivity-instead-of-time/</guid>
<description><![CDATA[One of the most interesting parts of Agile project management is watching the velocity of a team inc]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>One of the most interesting parts of Agile project management is watching the velocity of a team increase over time. As a team works together their productivity tends to increase. Agile represents the amount of work a team produces in a metric called velocity. <a href="http://cgrant.files.wordpress.com/2009/11/image.png"><img style="display:inline;margin-left:0;margin-right:0;border-width:0;" title="image" border="0" alt="image" align="right" src="http://cgrant.files.wordpress.com/2009/11/image_thumb.png?w=244&#038;h=148" width="244" height="148" /></a>Frequently teams new to agile will size the work in a time based unit such as hours or days. This is a common carry over from traditional project management. While Agile does manage time and resources, the time is fixed not variable. In Agile an iteration or sprint is a fixed length of time typically between two or four weeks. A chart showing time spent working in an iteration isn’t that valuable. A better process is to view the amount of work a team can produce in a specific amount of time. This is called velocity. </p>
<p>One challenge managers have with velocity is attempting to plan work for a new team on a new project since the velocity of the team is not known. Typically the first couple iterations, a new team is still forming and learning how to work together. Over time the estimates and velocity will stabilize. Looking at the velocity of a team as measured in points rather that hours provides a better indication on the performance of the group. Once the velocity begins to stabilize a team can accurately plan the work for a particular iteration. </p>
<p><a href="http://cgrant.files.wordpress.com/2009/11/image1.png"><img style="display:inline;margin-left:0;margin-right:0;border-width:0;" title="image" border="0" alt="image" align="left" src="http://cgrant.files.wordpress.com/2009/11/image_thumb1.png?w=244&#038;h=148" width="244" height="148" /></a>Lets look at an example. A small team is pulled together to work on a new project. They sit&#160; down and estimated 30 stories varying between 2 and 10 points of effort each. The team believes they can take on 30 points in the first iteration (two weeks). At the end of that iteration the team only completed 10 points. When planning the next iteration the team learns from the previous one and only plans to complete 15 points. Iteration 2 hits the mark, the team does complete 15 points. For Iteration 3 the team plans for 15 points again. This time however they are able to complete 17 points, they’re getting better. Iteration 4 they plan for 18 points but produce 22. Iteration 5 they plan for 20 but only produce 18. Feeling they’ve identified the standard velocity at 20 points, the team continues through the project allocating 20 points per iteration. With this in mind the team can look at the work produced and determine how productive they are and forecast a valid completion timeline. This forecast is the projected project burn-up. The burn up chart shows the actual accumulated work completed against the projected values across multiple iterations. The burn-up chart can also chart scope increases and decreases A burn-down chart on the other hand deals with a fixed amount of work and shows the amount of that work completed in a single iteration. Both of these commonly used planning and status charts can’t be produced without understanding what the velocity of the team is.&#160; </p>
<p>It’s tempting to use time as a unit of measurement in agile. Try to break away from the traditional views and track productivity instead. The results will be a more confident team and more accurate planning a reporting. In the end your customers will thank you for delivering what you said when you said, and for providing valuable statuses along the way. </p>
<p>&#160;</p>
<p>Resources:</p>
<p><a title="http://agilesoftwaredevelopment.com/blog/jackmilunsky/significance-story-points" href="http://agilesoftwaredevelopment.com/blog/jackmilunsky/significance-story-points">http://agilesoftwaredevelopment.com/blog/jackmilunsky/significance-story-points</a></p>
<p><a title="http://www.versionone.com/Resources/Velocity.asp" href="http://www.versionone.com/Resources/Velocity.asp">http://www.versionone.com/Resources/Velocity.asp</a></p>
<p><a title="http://grantjoung.blogspot.com/2009/07/efficiency-must-have-agile-metric-as.html" href="http://grantjoung.blogspot.com/2009/07/efficiency-must-have-agile-metric-as.html">http://grantjoung.blogspot.com/2009/07/efficiency-must-have-agile-metric-as.html</a></p>
<p><a title="http://agilesoftwaredevelopment.com/blog/pbielicki/predicting-team-velocity-yesterday-weather-method" href="http://agilesoftwaredevelopment.com/blog/pbielicki/predicting-team-velocity-yesterday-weather-method">http://agilesoftwaredevelopment.com/blog/pbielicki/predicting-team-velocity-yesterday-weather-method</a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Beobachtung und Sinn]]></title>
<link>http://differentia.wordpress.com/2009/11/16/26/</link>
<pubDate>Mon, 16 Nov 2009 15:23:17 +0000</pubDate>
<dc:creator>1234fuenf</dc:creator>
<guid>http://differentia.wordpress.com/2009/11/16/26/</guid>
<description><![CDATA[Alle Beobachtung ist immer an Sinngebrauch geknüpft. Deshalb kann man sinnlose Beobachtung ausschlie]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p id="nonprop">Alle Beobachtung ist immer an Sinngebrauch  geknüpft. Deshalb kann man sinnlose Beobachtung ausschließen. Beobachtung kann  nicht vorgestellt werden ohne Rekurs auf Sinn.</p>
<p>Hinzufügt werden sollte noch, dass auch die Möglichkeit  der operativen Rekonstruktion der Sinnform gibt, also Betrachtungen darüber, wie ein  System durch Iteration, Varietät und Redundanz Sinn so erzeugt, dass die dabei  entstehende Form des Weltkontaktes eine phänomenologische Analyse des Sinnerlebens  ermöglicht, allerdings im selben Medium.<br />
Sinn als Struktur nicht stillstellbarer  Verweisung weist in jedem Moment<br />
über die Enge des Systems hinaus. Das System  betreibt Sinn, aber es ist nicht<br />
mit der Sinninszenierung, die dabei zustande  kommt, identisch.<br />
Auf der Ebene der  konditionierten Koproduktion hat das System  keinen<br />
Sinnzugriff auf sich selbst, der erst sozusagen post festum  nach dem re-entry, möglich wird &#8211; in beliebiger Ramifikation, aber zu  spät, um<br />
das Original des betriebenen Unterschieds, den wir System nennen, zu  erreichen. Das System arbeitet in  permanenter Selbstverfehlung. Wir haben schließlich keine oder allenfalls  mystische Möglichkeit, an den reinen Zustand der Tiefe Null heranzukommen. Es  verbleibt nur die Möglichkeit von Beschreibungen des Typs &#8220;improper mixture&#8221; Beschreibungen einer Nicht-Separibilität, die wir beständig oszillierend  separieren müssen, von der man nicht einmal sagen könnte, dass sie ein  individueller Sachverhalt ist.</p>
<p>Irritierend ist jedoch, dass das Problem  von Sinn stark mit der Beobachtung verknüpft ist. Die Beobachtung ist nicht  ohne die Paradoxie der  Selbsreferenz zu haben. Wie erkennt der  Systemtheoretiker dann aber den Eigensinn eines Systems?</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Feature Creep]]></title>
<link>http://startupblog.wordpress.com/2009/11/11/feature-creep/</link>
<pubDate>Wed, 11 Nov 2009 00:40:39 +0000</pubDate>
<dc:creator>Steve Sammartino</dc:creator>
<guid>http://startupblog.wordpress.com/2009/11/11/feature-creep/</guid>
<description><![CDATA[The art of adding features to any product or service is this: Those who need or want the new feature]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>The art of adding features to any product or service is this:</p>
<p><strong>Those who need or want the new features can find them easy.<br />
</strong></p>
<p><strong> Meanwhile those who don&#8217;t need or want the features don&#8217;t even notice them. They are invisible. </strong></p>
<p>Sounds impossible to do, but I think the team at <a href="http://www.twitter.com/sammartino" target="_blank">twitter</a> are doing a pretty good job of it. The way I&#8217;d try and achieve this would be by making sure the visual structure doesn&#8217;t change, and the sequence of events to use it is not interrupted.</p>
<p>shhh &#8211; here comes the controversy.</p>
<p><a href="http://www.startupschool.com.au/"><img src="http://startupblog.files.wordpress.com/2009/10/picture-115.jpg?w=240&#038;h=118#38;h=118&#38;h=118" alt="" width="240" height="118" /></a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Just say yes.]]></title>
<link>http://trackpad.co.uk/2009/11/02/just-say-yes/</link>
<pubDate>Mon, 02 Nov 2009 19:15:43 +0000</pubDate>
<dc:creator>Sam</dc:creator>
<guid>http://trackpad.co.uk/2009/11/02/just-say-yes/</guid>
<description><![CDATA[Iterative enhancement is a liberating concept for software. No disc need be the canonical version of]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Iterative enhancement is a liberating concept for software. No disc need be the canonical version of The Application, no download need be final.</p>
<p>But while the developers excitedly roll out version 1.2 and version 1.3 and version 1.4 and so on, there are few guarantees that users will follow the instructions telling them of the latest and greatest increment. These not unreasonable thoughts give software makers cold sweats: &#8220;It might work differently, which will confuse me&#8221; OR &#8220;it might not work on my old machine&#8221; OR &#8220;I haven&#8217;t got time to download and restart now&#8221;.</p>
<p><img class="alignnone size-full wp-image-53" title="parcel" src="http://trackpad.wordpress.com/files/2009/11/parcel1.jpg" alt="Parcel" width="600" height="338" /></p>
<p>Refinements and new features represent both carrot and stick for eager users like me, but for some they&#8217;re just the carrot, and an unappetising one at that. The stick comes in two forms &#8211; persistent prompts (&#8220;there <em>must</em> be a limit to how many times someone can click cancel?&#8221;) and forced updates (&#8220;right, you&#8217;re not coming in until you say yes, got that?&#8221;). Actually, there is one further model &#8211; the bribe. <a title="Browser for Better" href="http://browserforthebetter.com" target="_blank">As demonstrated by Microsoft</a>.</p>
<p>This is where desktop software&#8217;s ambitious younger sibling comes in with a cheeky grin. Ever-slicker modern web apps have an edge in the iteration department. These guys make updates before breakfast, another for elevenses, two after lunch and one before home.</p>
<p>This is great for small tweaks, but with significant changes something funny happens. They forget to say &#8220;please&#8221;.</p>
<p>When large sites like <a title="Facebook" href="http://www.facebook.com" target="_blank">Facebook</a> and <a title="Last.fm" href="http://last.fm" target="_blank">Last.fm</a> introduce new designs, users get a shock. <a title="Facebook protest group" href="http://www.facebook.com/group.php?gid=21195574231" target="_blank">And then they complain</a>. <a title="Another Facebook protest group" href="http://www.facebook.com/group.php?gid=162102625749" target="_blank">And then they complain</a>. <a title="Last.fm redesign comments" href="http://blog.last.fm/2008/07/17/lastfm-the-next-generation#comments">And they complain</a>.</p>
<p>Of course, many former complainers become latter day complimenters, but it&#8217;s a rocky journey. These  particularly unpopular updates were based on user research, and the findings that informed them were seemingly validated in due course. What users were not given was the chance to click cancel, as many times as they like. Forever if necessary.</p>
<p>Iteration and refinement are integral to modern software. A sense of control is integral to modern people.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Twitter Lists - inauthentic]]></title>
<link>http://startupblog.wordpress.com/2009/10/30/twitter-lists-inauthentic/</link>
<pubDate>Thu, 29 Oct 2009 23:31:58 +0000</pubDate>
<dc:creator>Steve Sammartino</dc:creator>
<guid>http://startupblog.wordpress.com/2009/10/30/twitter-lists-inauthentic/</guid>
<description><![CDATA[If you&#8217;re on twitter you have probably noticed the new addition of lists to your feed. Which i]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>If you&#8217;re on twitter you have probably noticed the new addition of lists to your feed. Which is the ability to create and follow lists of specific people. Cool idea, which many twitter clients like Tweetdeck had implemented a long time ago. What is not so cool, is the inference that it is purported to only be available to a limited group. If you look at the screen grab below (highlight in orange boxes) you&#8217;ll see such claims.</p>
<p><img class="aligncenter size-full wp-image-3424" title="twitter lists interface" src="http://startupblog.wordpress.com/files/2009/10/picture-130.jpg" alt="twitter lists interface" width="585" height="387" /></p>
<p>I understand why they&#8217;ve used such language; to make users feel exclusive, and to essentially make people tweet about it &#8211; the antithesis of what they claim to want. But I&#8217;m a bit disappointed that the crew at twitter would use such low ball, inauthentic tactics. I say this because everyone I know with 10 to 10,000 followers has been invited to lists.</p>
<p><strong>Startup blog says &#8211; stay true.</strong></p>
<p><a href="http://www.startupschool.com.au/"><img src="http://startupblog.files.wordpress.com/2009/10/picture-115.jpg?w=240&#038;h=118#38;h=118&#38;h=118" alt="" width="240" height="118" /></a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[New JVM options and Scala iteration performance]]></title>
<link>http://blog.juma.me.uk/2009/10/26/new-jvm-options-and-scala-iteration-performance/</link>
<pubDate>Mon, 26 Oct 2009 14:00:27 +0000</pubDate>
<dc:creator>Ismael Juma</dc:creator>
<guid>http://blog.juma.me.uk/2009/10/26/new-jvm-options-and-scala-iteration-performance/</guid>
<description><![CDATA[Internal iterators like foreach tend to do very well in micro-benchmarks on the JVM. In fact, they o]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Internal iterators like foreach tend to do very well in micro-benchmarks on the JVM. In fact, they often do as well as the equivalent manual while or for loop. There is a catch, however, and it&#8217;s easy to miss it in micro-benchmarks.</p>
<p>A few months ago, <a href="http://www.drmaciver.com/">David MacIver</a> forwarded an <a href="http://thread.gmane.org/gmane.comp.lang.scala.internals/865">email</a> from <a href="http://en.wikipedia.org/wiki/Martin_Odersky">Martin Odersky</a> to the scala-internals mailing list about this. The problem as described by Martin:</p>
<p>&#8220;The reason seems to be that the foreach itself is not inlined, so the call to the closure becomes megamorphic and therefore slow.&#8221;</p>
<p>I was curious about the benchmarks used to measure this and <a href="http://people.epfl.ch/tiark.rompf">Tiark Rompf</a> (who had performed the measurements) provided the <a href="http://lamp.epfl.ch/~rompf/vector2/">source code</a>. I said I&#8217;d try to take a look the next weekend and I did it&#8230; more than 3 months later. Well, better late than never. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>There are 3 benchmarks:</p>
<ul>
<li>Benchmark A: traverse a collection with N elements</li>
<li>Benchmark B: traverse a collection with N elements, inside the loop/closure traverse another collection with N2 elements 3 times</li>
<li>Benchmark C: build a collection (front to back) of N elements</li>
</ul>
<p>Various approaches are used for each benchmark with various collections types. One weakness of the these benchmarks is that they don&#8217;t include a verification mechanism to ensure that all benchmarks produce the same result. However, they include code that tries to prevent the JIT from performing unfair optimisations (e.g. print something if an element in the collection matches a certain condition).</p>
<p>The <a href="http://lamp.epfl.ch/~rompf/vector2/vector-summary.txt">original results</a> produced by Tiark can be found <a href="http://lamp.epfl.ch/~rompf/vector2/vector-summary.txt">here</a>.</p>
<p>I added a few benchmarks that use plain arrays (RawArrayIndexed, RawArrayForeach, RawArrayForeachMega), made minor changes to the scripts and pushed the code to a <a href="http://github.com/ijuma/benchmark">GitHub repository</a>. I left the rest of the Scala code as it was to make it easy to compare with the original results and ran the benchmark with various JVM settings to see what effect they would have. All the tests shared the following:</p>
<ul>
<li>Dual quad-core Xeon E5462 2.80GHz</li>
<li>14 GB RAM</li>
<li>Fedora 11</li>
<li>Scala 2.8.0.r19261</li>
<li>Revision <a href="http://github.com/ijuma/benchmark/commit/59521431f5c118b73e35b0b396e3efd6aecec3dd">59521431f5c118b73e35b0b396e3efd6aecec3dd</a> of project</li>
<li>64-bit JDK 6 Update 18 early access b03</li>
<li>JVM base settings: -Xms1G -Xmx1G -XX:+UseParallelGC -XX:+UseParallelOldGC</li>
</ul>
<p>JDK 6 Update 18 is scheduled to be released on <a href="https://jdk6.dev.java.net/">Q4, 2009</a> and it includes HotSpot 16. Even though JDK 6 Update 14 (HotSpot 14) introduced <a href="http://blog.juma.me.uk/2008/10/14/32-bit-or-64-bit-jvm-how-about-a-hybrid/">compressed references</a> and <a href="http://blog.juma.me.uk/2008/12/17/objects-with-no-allocation-overhead/">scalar replacement</a>, HotSpot 16 includes <a href="http://blog.juma.me.uk/2009/04/03/load-unsigned-and-better-compressed-oops/">improved compressed references</a> and many crucial fixes to both features. According to my testing these features are now approaching production-level stability and the OpenJDK engineers seem to agree as they are both enabled by default in HotSpot 17 (which will eventually hit JDK6 too).</p>
<p>Interested in how these features would affect the performance in these benchmarks, I ran them with various combinations. I also added Scala&#8217;s compiler -optimise flag in some cases.</p>
<p>The original benchmark from Tiark used 3 collection types: array (java.util.ArrayList), list (scala.List, immutable single linked list) and vector (earlier version of immutable vector that has recently been added to Scala 2.8). I added JVM arrays and they are shown as &#8220;rawarray&#8221; in the charts. Finally, we get to the actual numbers.</p>
<div id="attachment_127" class="wp-caption alignnone" style="width: 505px"><a href="http://ijuma.wordpress.com/files/2009/10/benchmarka.png"><img src="http://ijuma.wordpress.com/files/2009/10/benchmarka.png" alt="Benchmark A" title="Benchmark A" width="495" height="204" class="size-full wp-image-127" /></a><p class="wp-caption-text">Click on chart for expanded version</p></div>
<p>There are some interesting data points here:</p>
<ol>
<li>Compressed references is a _huge_ win. RawArrayIndexed went from 500ms to 142ms and many of the vector operations were much faster.</li>
<li>Escape analysis (which enables scalar replacement) doesn&#8217;t seem to have much of an effect.</li>
<li>scalac -optimise doesn&#8217;t seem to have much of an effect.</li>
<li>foreach is misleadingly fast in micro-benchmarks, but it&#8217;s easy to bring it down to earth. RawArrayForeach performs similarly to RawArrayIndexed, but RawArrayForeachMega is 10 times slower. The latter simply calls foreach with a few different anonymous functions during the collection creation phase causing the call site to become megamorphic. Once this happens, the only hope for good performance is that the foreach method gets inlined and it doesn&#8217;t seem to happen here. With this in mind, it seems like <a href="https://lampsvn.epfl.ch/trac/scala/ticket/1338">ticket 1338</a> (Optimize simple for loops) is a good idea.</li>
</ol>
<div id="attachment_131" class="wp-caption alignnone" style="width: 505px"><a href="http://ijuma.wordpress.com/files/2009/10/benchmarkb.png"><img src="http://ijuma.wordpress.com/files/2009/10/benchmarkb.png" alt="Benchmark B" title="Benchmark B" width="495" height="261" class="size-full wp-image-131" /></a><p class="wp-caption-text">Click on chart for expanded version</p></div>
<p>Once again, compressed references are a large factor in some benchmarks (halving the time taken in some cases).</p>
<p>The new bit of information is that scalac -optimise causes a huge improvement in VectorForeachFast and VectorForeachFastProtect. This makes sense once one considers one of the findings from the previous benchmark. We said that inlining of foreach is of extreme importance once a call site is megamorphic and this is precisely what -optimise does in this case (and the JVM fails to do so at runtime otherwise). Sadly, -optimise cannot do this safely in many cases as it&#8217;s shown by the results for VectorForeach.</p>
<div id="attachment_132" class="wp-caption alignnone" style="width: 505px"><a href="http://ijuma.wordpress.com/files/2009/10/benchmarkc.png"><img src="http://ijuma.wordpress.com/files/2009/10/benchmarkc.png" alt="Benchmark C" title="Benchmark C" width="495" height="198" class="size-full wp-image-132" /></a><p class="wp-caption-text">Click on chart for expanded version</p></div>
<p>Once again, compressed references provide a nice boost. Seems like this option is a winner in 64-bit JVMs (if you don&#8217;t need a heap larger than 32GB), it saves memory and gives better performance. The usual disclaimer applies though, you should benchmark your own application instead of relying on micro-benchmarks when deciding what JVM options to use.</p>
<p>The <a href="http://github.com/ijuma/benchmark/blob/22e0181ba5981195b67ab9ce230b90eaeae643d5/savedOutput/rompfTimingsScript-20091025.txt">complete results</a> are also available. Feel free to play with the <a href="http://github.com/ijuma/benchmark">source code</a> and provide your own numbers, fixes and/or improvements.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Update on AB5 Molecule Conformation]]></title>
<link>http://mklammler.wordpress.com/2009/10/25/update-on-ab5-molecule-conformation/</link>
<pubDate>Sun, 25 Oct 2009 20:27:49 +0000</pubDate>
<dc:creator>mklammler</dc:creator>
<guid>http://mklammler.wordpress.com/2009/10/25/update-on-ab5-molecule-conformation/</guid>
<description><![CDATA[Some time ago I posted a little program to calculate a rough approximation for the conformation of A]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Some time ago I posted a little program to calculate a rough approximation for the conformation of AB<sub>5</sub> molecules with. As I started dealing with the stuff again I improved the program somewhat. First of all I corrected part of the “violent” code from the first version.</p>
<p>Secondly, I&#8217;ve added the possibility to assign relative charges to the ligands. You can <!--more-->play around a little e.g. by giving two ligands a charge of 1.2 while the remaining three are charged with 1. You will see, that the higher charged ligands no longer occupy the energetically unfavorable axial positions. But when overdoing it, i.e. making the difference too large, the repulsion in the equatorial plain will become too high resulting in a completely different arrangement with the two higher charged ligands again choosing positions that are something like axial. It is also possible to assign the charge zero or negative values to the ligands. This doesn&#8217;t make much sense, however.</p>
<p>As a result of old wrong decisions in the structure of the program, it is not possible to directly enter the absolute number of ligands. But you can change the fourth line in the source code from</p>
<pre style="padding-left:30px;">int numberofligands = 5;</pre>
<p>to any number of your choice. After that, the program needs to be compiled again, of course. (This is a very ineloquent solution but currently, I didn&#8217;t want to write the whole program again.) For example, changing to values of 3 or 4 yields the familiar tetrahedral and trigonal planar structures.</p>
<p>However, I have brand new ideas for a completely new program that should work according to a totally different method and be much more powerful. Hence I didn&#8217;t spent too much time in updating this old version. Further news will be posted as they&#8217;ll come up&#8230;</p>
<p>Downloads:</p>
<ul>
<li> <a title="Java Source Code" href="http://moritz.klammler.at.tt/storage/update_ab5iteration/ab5iteration.java" target="_blank">Java-Source-Code</a></li>
<li> <a title="Compiled Version" href="http://moritz.klammler.at.tt/storage/update_ab5iteration/ab5iteration.class" target="_blank">Compiled version</a> (<a href="http://java.com/en/download/manual.jsp" target="_blank">Java Runtime Environment</a> required to execute)</li>
</ul>
<p>If the compiled version doesn&#8217;t work, please try downloading the source code and compile yourself.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Quick SUM in MS Excel]]></title>
<link>http://askthiscfo.wordpress.com/2009/10/12/microsoft-excel-quick-sum-add/</link>
<pubDate>Mon, 12 Oct 2009 18:30:45 +0000</pubDate>
<dc:creator>Ask This CFO</dc:creator>
<guid>http://askthiscfo.wordpress.com/2009/10/12/microsoft-excel-quick-sum-add/</guid>
<description><![CDATA[A quick and easy method to SUM/ ADD / TOTAL a range of cells in Excel is simply to select cells by u]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>A quick and easy method to SUM/ ADD / TOTAL a range of cells in Excel is simply to select cells by using the SHIFT+ARROW KEY and the SUM will be displayed at the bottom.</p>
<p><img class="aligncenter size-full wp-image-118" title="Excel Quick Sum" src="http://askthiscfo.wordpress.com/files/2009/10/xls.jpg" alt="Excel Quick Sum" width="450" height="343" /></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Just Enough Design For An Iteration]]></title>
<link>http://artofsoftwarereuse.com/2009/10/11/just-enough-design-for-an-iteration/</link>
<pubDate>Sun, 11 Oct 2009 16:26:56 +0000</pubDate>
<dc:creator>vijaynarayanan</dc:creator>
<guid>http://artofsoftwarereuse.com/2009/10/11/just-enough-design-for-an-iteration/</guid>
<description><![CDATA[You can practice minimal design to be effective with systematic reuse. The design needs to continuou]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>You can practice minimal design to be effective with systematic reuse. The design needs to continuously look for opportunities to align iteration goals with your systematic reuse roadmap. Too many developers mistakenly think that adopting agile means abandoning design. This couldn’t be farther from the truth. You design whether you explicitly allocate time for it or not. Your code will reflect the design and you will impact the technical debt for your codebase in one way, shape, or form. Implementing user stories and paying down technical debt should be your end goal and not avoiding design altogether.</p>
<p>The first priority is to design for meeting your iteration goals. Avoid designing for several weeks or months and surely avoid putting technical perfection ahead of delivering <em>real user</em> needs. You should design minimally. Just enough to take advantage of existing reusable components, identify new ones, and plan refactoring to existing code. Specifically this means:</p>
<ol>
<li>Keeping a list of short term and medium term business goals in mind when designing</li>
<li>Always looking for ways to make domain relevant software assets more reusable</li>
<li>You are aware of what distribution channels your business is looking to grow</li>
<li>Design reflects the domain as close as possible and that your reusable assets map to commonly occurring entities in your business domain</li>
<li>Value is placed on identifying the product lines that your business wants to invest in and evolving your reusable assets to mirror product line needs.</li>
<li>Design isn’t a pursuit of perfection but an iterative exercise in alignment with your domain.</li>
</ol>
<p>What you decide to encapsulate, abstract, and scale are all natural byproducts of this design approach. Rather than spend a lot of effort with big upfront design you can do <em>just enough </em>design.</p>
<p><strong>Like this post?</strong> Subscribe to <a href="http://feeds2.feedburner.com/SoftwareReuseInTheRealWorld">RSS feed</a> or get blog <a href="http://feedburner.google.com/fb/a/mailverify?uri=SoftwareReuseInTheRealWorld&#38;loc=en_US">updates via email</a>.</p>
<p style="text-align:right;"><strong> <a href="http://twitter.com/home?status=I just read: http://wp.me/ptCiB-mQ"><img title="tweet this" src="/files/2009/10/twitter2.png" alt="tweet this" width="32" height="32" /></a> <a href="http://del.icio.us/post?url=http://wp.me/ptCiB-mQ&#38;title=Just Enough Design For An Iteration"><img title="del.icio.us:Just Enough Design For An Iteration" src="/files/2009/10/dellicious.png" alt="add to del.icio.us" width="32" height="32" /></a></strong> <a href="http://www.facebook.com/sharer.php?u=http://wp.me/ptCiB-mQ&#38;title=Just Enough Design For An Iteration"><img title="facebook:Just Enough Design For An Iteration" src="/files/2009/10/48x48.png" alt="post to facebook" width="32" height="32" /></a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Excel Shortcuts - Function Keys]]></title>
<link>http://askthiscfo.wordpress.com/2009/10/06/ms-excel-shortcuts-function-keys/</link>
<pubDate>Tue, 06 Oct 2009 14:00:11 +0000</pubDate>
<dc:creator>Ask This CFO</dc:creator>
<guid>http://askthiscfo.wordpress.com/2009/10/06/ms-excel-shortcuts-function-keys/</guid>
<description><![CDATA[F1    Displays the Help Window CTRL+F1 Closes and reopens Help Window. ALT+F1 Creates a chart based ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>F1    Displays the Help Window</p>
<p>CTRL+F1 Closes and reopens Help Window.</p>
<p>ALT+F1 Creates a chart based on selected range of cells in the current worksheet.</p>
<p>ALT+SHIFT+F1 inserts a new worksheet.</p>
<p> F2   This is command used by Lotus 1-2-3 users, allows you to Edit active cell.</p>
<p>SHIFT+F2 allows you to edit the comment in a given cell.</p>
<p> F3  Pastes a defined name into a formula. SHIFT+F3 displays the Insert Function dialog box.</p>
<p> F4  Repeats the last command or action, if possible. CTRL+F4 closes the selected workbook window.</p>
<p> F5  Displays the Go To dialog box.CTRL+F5 restores the window size of the selected workbook window.</p>
<p> F6  Switches to the next pane in a worksheet that has been split (Window menu, Split command).  SHIFT+F6 switches to the previous pane in a worksheet that has been split.  CTRL+F6 switches to the next workbook window when more than one workbook window is open.</p>
<p>F7  Displays the Spelling dialog box to check spelling in the active worksheet or selected range.</p>
<p>CTRL+F7 performs the Move command on the workbook window when it is not maximized. Use the arrow keys to move the window, and when finished press ESC.</p>
<p> F8  Turns extend mode on or off. In extend mode, EXT appears in the status line, and the arrow keys extend the selection.</p>
<p>SHIFT+F8 enables you to add a non-adjacent cell or range to a selection of cells by using the arrow keys.</p>
<p>CTRL+F8 performs the Size command (on the Control menu for the workbook window) when a workbook is not maximized.</p>
<p>ALT+F8 displays the Macro dialog box to run, edit, or delete a macro.</p>
<p> F9  Calculates all worksheets in all open workbooks. F9 followed by ENTER (or followed by CTRL+SHIFT+ENTER for array formulas) calculates the selected a portion of a formula and replaces the selected portion with the calculated value.</p>
<p>SHIFT+F9 calculates the active worksheet.</p>
<p>CTRL+ALT+F9 calculates all worksheets in all open workbooks, regardless of whether they have changed since the last calculation.</p>
<p>CTRL+ALT+SHIFT+F9 rechecks dependent formulas, and then calculates all cells in all open workbooks, including cells not marked as needing to be calculated.</p>
<p>CTRL+F9 minimizes a workbook window to an icon.</p>
<p> F10  Selects the menu bar or closes an open menu and submenu at the same time.</p>
<p>SHIFT+F10 displays the shortcut menu for a selected item.</p>
<p>ALT+SHIFT+F10 displays the menu or message for a smart tag. If more than one smart tag is present, it switches to the next smart tag and displays its menu or message.</p>
<p>CTRL+F10 maximizes or restores the selected workbook window.</p>
<p> F11  Creates a chart of the data in the current range.</p>
<p>SHIFT+F11 inserts a new worksheet.</p>
<p>ALT+F11 opens the Visual Basic Editor, in which you can create a macro by using Visual Basic for Applications (VBA).</p>
<p>ALT+SHIFT+F11 opens the Microsoft Script Editor, where you can add text, edit HTML tags, and modify any script code.</p>
<p> F12  Displays the Save As dialog box.</p>
<p> Source: Microsoft Corporation &#8211; Online Help</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Excel shortcuts - Control Keys]]></title>
<link>http://askthiscfo.wordpress.com/2009/09/28/excel-shortcuts-control-keys/</link>
<pubDate>Mon, 28 Sep 2009 23:42:46 +0000</pubDate>
<dc:creator>Ask This CFO</dc:creator>
<guid>http://askthiscfo.wordpress.com/2009/09/28/excel-shortcuts-control-keys/</guid>
<description><![CDATA[CTRL+A    Selects ALL CTRL+B    Apply BOLD Formatting. CTRL+C    COPY selected cells CTRL+D    FILL ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>CTRL+A    Selects ALL<br />
CTRL+B    Apply BOLD Formatting.<br />
CTRL+C    COPY selected cells<br />
CTRL+D    FILL DOWN – Copies the format of the top cell of the range to  the selected cells<br />
CTRL+F     Displays the FIND dialog box.<br />
CTRL+G     GO TO dialog box.<br />
CTRL+H    FIND &#38; REPLACE dialog box<br />
CTRL+I    Apply or remove ITALICS formatting.<br />
CTRL+K    Insert HYPERLINK dialog box or the Edit Hyperlink dialog box<br />
CTRL+L    Create LIST dialog box.<br />
CTRL+N    Open and creates a NEW workbook.<br />
CTRL+O    Displays the OPEN dialog box to open or find a file.<br />
CTRL+P    PRINT dialog box<br />
CTRL+R    FILL RIGHT command to copy the contents and format of the leftmost cell of a selected range into the cells to the right.<br />
CTRL+S    SAVE file with current file specifications<br />
CTRL+U   Apply or remove UNDERLINING<br />
CTRL+V   PASTE<br />
CTRL+W   Close workbook WINDOW<br />
CTRL+X    CUT selected cells<br />
CTRL+Y    Repeats the last command<br />
CTRL+Z    UNDO command</p>
<p>Source: <a href="http://blogs.msdn.com/excel/" target="_blank">Microsoft Office Online</a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[10 reasons why Windows 7 could fail]]></title>
<link>http://monstermike.wordpress.com/2009/09/25/10-reasons-why-windows-7-could-fail/</link>
<pubDate>Fri, 25 Sep 2009 22:46:25 +0000</pubDate>
<dc:creator>monstermike</dc:creator>
<guid>http://monstermike.wordpress.com/2009/09/25/10-reasons-why-windows-7-could-fail/</guid>
<description><![CDATA[October 22nd is the big day for the official release of the latest iteration of the Windows operatin]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><div style="margin-bottom:10px;border:1px solid #ccc;width:202px;height:142px;background-image:url('http://images.websnapr.com/?size=s&#38;url=http://blogs.techrepublic.com.com/10things/?p=1054');"></div>
<p>October 22nd is the big day for the official release of the latest iteration of the Windows operating system</p>
<p>Source:<br /><a href='http://blogs.techrepublic.com.com/10things/?p=1054'>http://blogs.techrepublic.com.com/10things/?p=1054</a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Agile in Action: BA World Symposium Conference 2009]]></title>
<link>http://zenagile.wordpress.com/2009/09/23/agile-in-action-ba-world-symposium-conference-2009/</link>
<pubDate>Wed, 23 Sep 2009 02:56:42 +0000</pubDate>
<dc:creator>magia3e</dc:creator>
<guid>http://zenagile.wordpress.com/2009/09/23/agile-in-action-ba-world-symposium-conference-2009/</guid>
<description><![CDATA[]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><!-- SlideShare error: doc is missing or has illegal characters /[^-_a-zA-Z0-9]/ --></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Agile: improving organisational project and program efficiency]]></title>
<link>http://zenagile.wordpress.com/2009/09/23/agile-improving-organisational-project-and-program-efficiency/</link>
<pubDate>Wed, 23 Sep 2009 02:55:13 +0000</pubDate>
<dc:creator>magia3e</dc:creator>
<guid>http://zenagile.wordpress.com/2009/09/23/agile-improving-organisational-project-and-program-efficiency/</guid>
<description><![CDATA[]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><!-- SlideShare error: doc is missing or has illegal characters /[^-_a-zA-Z0-9]/ --></p>
</div>]]></content:encoded>
</item>

</channel>
</rss>
