<?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>OpenSource Connections</title>
	<atom:link href="http://www.opensourceconnections.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.opensourceconnections.com</link>
	<description>Automating the Science to Enable the Art</description>
	<lastBuildDate>Mon, 30 Aug 2010 21:11:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Software Estimation: Using Range Estimates in Scrum</title>
		<link>http://www.opensourceconnections.com/2010/08/10/software-estimation-using-range-estimates-in-scrum/</link>
		<comments>http://www.opensourceconnections.com/2010/08/10/software-estimation-using-range-estimates-in-scrum/#comments</comments>
		<pubDate>Tue, 10 Aug 2010 13:56:55 +0000</pubDate>
		<dc:creator>Arin Sime</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.opensourceconnections.com/?p=1120</guid>
		<description><![CDATA[<p><img src="http://farm5.static.flickr.com/4074/4861137508_3754fe62a4_t.jpg" width="100" height="98" /><br />
Recently I wrote a blog post on <a href="http://www.opensourceconnections.com/2010/08/04/software-estimation-you-are-not-as-good-as-you-think/">why software developers are typically so bad at estimation</a>. I also gave a preview of the presentation that I am giving today to the Agile2010 conference on how to combat some of these problems by building range estimation techniques into a Scrum burndown. You can see that slide deck on <a href="http://www.slideshare.net/o19s/range-estimation-in-scrum">slideshare</a>.</p>
<p><a href="http://www.opensourceconnections.com/2010/08/10/software-estimation-using-range-estimates-in-scrum/" class="more-link">Read more on Software Estimation: Using Range Estimates in Scrum&#8230;</a></p>
]]></description>
			<content:encoded><![CDATA[<p><img src="http://farm5.static.flickr.com/4074/4861137508_3754fe62a4_t.jpg" width="100" height="98" /><br />
Recently I wrote a blog post on <a href="http://www.opensourceconnections.com/2010/08/04/software-estimation-you-are-not-as-good-as-you-think/">why software developers are typically so bad at estimation</a>. I also gave a preview of the presentation that I am giving today to the Agile2010 conference on how to combat some of these problems by building range estimation techniques into a Scrum burndown. You can see that slide deck on <a href="http://www.slideshare.net/o19s/range-estimation-in-scrum">slideshare</a>.</p>
<p>To briefly recap, I pointed out that Agile team estimation and Planning Poker (or Scrum Poker) is great, but one big problem I have with it is the reliance on single point estimates in the burndown. </p>
<p>That’s why we have built range estimation into our Scrum Poker and burndowns at OpenSource Connections, and we find it to be more effective. By holding two cards instead of one, each team member is indicating a range estimate and communicating lot more about the risk and complexity that they see in that project.</p>
<p>So how does it work? In this blog post I’m going to describe how we do it using Google Spreadsheets.</p>
<h2>How to build a burndown using ranges</h2>
<p><b>Ingredients needed:</b></p>
<ul>
<li>Spreadsheet of any sort (I like google spreadsheets for easy sharing)</li>
<li>Scrum Poker cards</li>
<li>An engaged team!</li>
</ul>
<p><b>Steps:</b></p>
<ul>
<li>Build a normal Scrum spreadsheet with a list of tasks on it.</li>
<li>Estimate each task using Scrum poker. Have each participant hold up two cards to indicate the range of their estimate.</li>
<li>The Scrummaster should encourage debate about the estimates when they vary widely in the size of the estimates or the width (ie risk) of the estimates.</li>
<li>Once the team agrees on a range, the low and high values are entered in the spreadsheet.</li>
<li>The spreadsheet calculates an estimate which is 2/3 of the way between the low and high estimate.</li>
<li>Use the “2/3 estimate” as your ideal burndown to zero and to see how many tasks fit in your sprint.</li>
<li>Use the low and high estimates as a band of reasonable deviation from the ideal burndown. They should both slope to zero at the same rate as the 2/3 estimate.</li>
<li>Use the ranges to encourage more conservative adoption of tasks into a sprint, and to communicate risk and progress more clearly with customers.</li>
</ul>
<p>In the end, we come up with a burndown similar to this, which represents the low and high estimates, and is a representation of the risk of the sprint or as a band of acceptable divergence from the estimate.<br />
<img src="http://farm5.static.flickr.com/4114/4878371197_77b54a2a1b.jpg" width="500" height="292" alt="Example burndown using range estimates" /></p>
<h2>Make Google Spreadsheets (or Excel) do the Hard Work!</h2>
<p>The next thing to show is how we represent this in a Scrum spreadsheet, and derive the formulas to build that pretty burndown. The vertical image is an example scrum spreadsheet like we use at OpenSource Connections, and the following sections will describe the major formulas being used in that spreadsheet.</p>
<p><img src="http://farm5.static.flickr.com/4097/4878341987_d76eea55af.jpg" width="107" height="500" alt="example spreadsheet using range estimates" /><br />
<i>This is a little tricky the first time, but then just copy the sheet from then on.</i></p>
<p><b>Low Estimate</b> (D6-D8) and <b>High Estimate</b> (E6-E8) are entered by the team as they agree on estimates for each task in sprint planning.</p>
<p><b>Initial Estimate per task</b> (F6-F8) is calculated by the spreadsheet, and is a single integer weighted 2/3 of the way from the low estimate to the high estimate:<br />
<i>F6 = (D6*0.33)+(E6*0.67)</i></p>
<p><b>2/3 Estimate</b> (F2 and duplicated in F3) is just a sum of the initial estimates across all the tasks.<br />
<i>F3 = sum(F6:F8)</i></p>
<p><b>2/3 Estimate per day</b> (G3-K3) is a calculated field, which decreases the estimate for each day down to zero by the end of the sprint. This provides the “ideal burndown” line for your chart at a 2/3 estimate.<br />
<i>G3 = F3-($F3/[Days in Sprint])<br />
H3 = G3-($F3/[Days in Sprint]) … and so on</i></p>
<p><b>Low Estimate</b> (F4) is a sum of all the low estimates: <i>F4 = sum(D6:D8)</i></p>
<p><b>Low Estimate per day</b> (G4-K4) is a calculated line showing the path down towards zero for our low estimates. It uses the slope of the 2/3 line.<br />
<i>G4 = IF((F4-($F3/[Days in Sprint]))>0,F4-($F3/[Days in Sprint]),0) … and so on</i></p>
<p><b>High Estimate</b> (F5) is a sum: <i>F5 = sum(E6:E8)</i></p>
<p>And <b>High Estimate per day</b> (G5-K5) is calculated similar to the low estimate per day:<br />
<i>G5 = F5-($F3/[Days in Sprint]) … and so on</i></p>
<p>Then developers update estimates each day as usual, and this makes the “Actual” line in the burndown.</p>
<h2>That’s really all there is to it!</h2>
<p>Once you’ve got your spreadsheet setup, you can just copy it from sprint to sprint, and then it really doesn’t take any more time in sprint planning to use ranges instead of single points. But using ranges with a 2/3 weighting like we do will help force your team to think a little more about the risk involved in their estimates and to estimate more conservatively. This allows you to better communicate with your customer and more reliably predict what you can commit to in a sprint.</p>
<p><img src="http://farm5.static.flickr.com/4114/4860537417_9eac39d76d_m.jpg"/><br />
<em>Arin Sime is a Senior Consultant with OpenSource Connections, specializing in Agile process consulting, Solr search, and development consulting.  You can follow Arin&#8217;s tweets at <a href="http://twitter.com/ArinSime">ArinSime</a> </em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.opensourceconnections.com/2010/08/10/software-estimation-using-range-estimates-in-scrum/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Software Estimation:  You are not as good as you think</title>
		<link>http://www.opensourceconnections.com/2010/08/04/software-estimation-you-are-not-as-good-as-you-think/</link>
		<comments>http://www.opensourceconnections.com/2010/08/04/software-estimation-you-are-not-as-good-as-you-think/#comments</comments>
		<pubDate>Wed, 04 Aug 2010 12:26:14 +0000</pubDate>
		<dc:creator>Arin Sime</dc:creator>
				<category><![CDATA[Conference]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Project Management]]></category>
		<category><![CDATA[Speaking]]></category>
		<category><![CDATA[scrum]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[Agile2010]]></category>
		<category><![CDATA[Range Estimation]]></category>
		<category><![CDATA[Software Estimation]]></category>

		<guid isPermaLink="false">http://www.opensourceconnections.com/?p=1092</guid>
		<description><![CDATA[<p><img align="right" src="http://farm5.static.flickr.com/4074/4861137508_3754fe62a4_t.jpg" alt="hourglass" /><b>I know it&#8217;s a bit harsh to insult you in the title of this post, but the odds are, you really stink at estimation.</b>  Even if you know you&#8217;re bad at it, you&#8217;re probably even worse than you think.</p>
<p><a href="http://www.opensourceconnections.com/2010/08/04/software-estimation-you-are-not-as-good-as-you-think/" class="more-link">Read more on Software Estimation:  You are not as good as you think&#8230;</a></p>
]]></description>
			<content:encoded><![CDATA[<p><img align="right" src="http://farm5.static.flickr.com/4074/4861137508_3754fe62a4_t.jpg" alt="hourglass" /><b>I know it&#8217;s a bit harsh to insult you in the title of this post, but the odds are, you really stink at estimation.</b>  Even if you know you&#8217;re bad at it, you&#8217;re probably even worse than you think.</p>
<p>Don&#8217;t take it so personally &#8211; I&#8217;m certainly not saying I&#8217;m perfect at it either!  But you&#8217;re among friends here, so let&#8217;s have an honest discussion.</p>
<p>While you will never be perfect at estimation (it is after little more than prediction of the future), you can get better at building and communicating estimates if you remember a few key reasons why you&#8217;re so bad at it.  You&#8217;re still human after all, and so I guarantee you will fall into some of these traps.</p>
<h2>Reason #1:  You&#8217;re doing it alone</h2>
<p>Too often, estimates are done alone.  Typical scenarios include one person (such as the team lead) estimating an entire project, or a project manager going to a specific developer and asking them for an estimate.  One person giving an estimate by themselves is one of the most unreliable ways to give an estimate, because there is no one to check you against common biases.  And since all initial estimates tend to be very optimistic, you are almost guaranteed to set unrealistic expectations.</p>
<h2>Reason #2:  You&#8217;re doing it for others</h2>
<p>When the team lead gives an estimate on behalf of their team, several problems ensue.  First, you are relying solely on the judgment of one person (the team lead), and no matter how smart that person thinks they are, they are susceptible to biases when they go it alone.  Second, when the rest of the team is told what the estimate for the project is, they had no voice in it, and therefore, they have no sense of ownership in that estimate.  A lack of ownership means they will have no sense of accountability, and they will not go the extra mile to stick to the estimate.</p>
<h2>Reason #3:  You&#8217;re being way too optimistic</h2>
<p>Very few of us give pessimistic estimates.  For one reason, we want to please the customer.  When they say they want something in two weeks, we make mental leaps in how we will build the software to try and get them what they want.  Or we discount the likelihood of obstacles, and hope for the best case scenario.  </p>
<h2>Reason #4:  You think you&#8217;re an expert</h2>
<p>There&#8217;s a great chapter in the book &#8220;The Black Swan&#8221; about the problems with predictions, and one problem described is &#8220;the expert problem.&#8221;  Studies have shown that experts tend to underestimate their own margins of error on predictions, because they are overconfident in their expert status.  As software developers, we fall into this trap regularly when we say things like &#8220;oh yeah, that will be easy, I&#8217;ve done something similar before.&#8221;  When we do remember that task last time was not as easy as we thought it would be, we often discount those obstacles we encountered as outliers.  We assume that &#8220;now that we know how to do it&#8221;, we won&#8217;t encounter those obstacles again, and no other obstacles will arise.  We are usually wrong.</p>
<h2>Reason #5:  You&#8217;re using single point estimates</h2>
<p>Using single point estimates makes all of these previous reasons worse.  Single point estimates encourage you to go with your gut and the first number you think of, or the number that the customer wants to hear.  Think how ridiculous it would be someone asked you &#8220;How long does it take to get to your house?&#8221;, and you answered &#8220;Oh, about 25.6735 minutes&#8221;.  By including all those extra decimal points, you are creating a false impression of accuracy.  Single point estimates are the same idea.  If I say &#8220;it takes 25 minutes to get home&#8221;, then you will expect to be there in exactly 25 minutes.  But what about traffic, or other variables?  A more accurate answer is to say that it takes &#8220;25-30 minutes, depending on traffic.&#8221;  </p>
<h2>A solution to estimation biases:  Range estimation in Scrum Poker</h2>
<p><b>Using a range instead offers a lot of benefits.</b>  By saying &#8220;that will take me 2-5 days&#8221; instead of &#8220;I can get that to you in two days&#8221;, you are communicating the uncertainty that is inherent in all software development.  The size of the range you provide communicates risk.  And it prepares the customer for a more realistic schedule, instead of setting you up for failure when they expect completion on the most optimistic schedule possible.</p>
<p><b>Combining range estimation with the Agile practices of team estimation is doubly effective.</b>  In Agile teams we often play &#8220;Scrum Poker.&#8221;  I&#8217;ll avoid the long description of it here, but in short, each team member gets a deck of cards.  When you are estimating a story or a task, each team member privately chooses a card (or range of cards) from their deck.  When everyone has chosen, they all show their cards at the same time.  </p>
<p>Showing the cards at the same time combats a number of the reasons I list above, because you get a true sense of the variety of estimates across the team without introducing the biases of the team lead or architect.  Those who picked the lowest or highest estimates are not discounted as outliers, but encouraged to describe to the team why they chose that number. This encourages the team to discuss the idea until they have reached a common vision for the complexity of that story or task.</p>
<p>Agile team estimation is great, but one big problem I still have with it is the reliance on single point estimates.  That&#8217;s why we use range estimation in our Scrum Poker at OpenSource Connections, and we find it to be more effective.  By holding two cards instead of one, each team member is indicating a range estimate and communicating  lot more about the risk and complexity that they see in that project.</p>
<p><b>Next Tuesday (August 10th, from 11am-noon in room Asia5) I&#8217;ll be presenting at the Agile 2010 conference on &#8220;Building a More Accurate Burndown: Using Range Estimation in Scrum&#8221;.  If you&#8217;re going to be in Orlando, I hope you&#8217;ll stop by to hear more!</b>  You can also see my slides on <a href="http://www.slideshare.net/o19s/range-estimation-in-scrum">slideshare</a>.</p>
<p><img src="http://farm5.static.flickr.com/4114/4860537417_9eac39d76d_m.jpg"/><br />
<em>Arin Sime is a Senior Consultant with OpenSource Connections, specializing in Agile process consulting, Solr search, and development consulting.  You can follow Arin&#8217;s tweets at <a href="http://twitter.com/ArinSime">ArinSime</a> </em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.opensourceconnections.com/2010/08/04/software-estimation-you-are-not-as-good-as-you-think/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The Agile CIO:  Failing Fast and Bad Stand ups</title>
		<link>http://www.opensourceconnections.com/2010/07/28/the-agile-cio-failing-fast-and-bad-stand-ups/</link>
		<comments>http://www.opensourceconnections.com/2010/07/28/the-agile-cio-failing-fast-and-bad-stand-ups/#comments</comments>
		<pubDate>Wed, 28 Jul 2010 16:51:56 +0000</pubDate>
		<dc:creator>Arin Sime</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.opensourceconnections.com/?p=1057</guid>
		<description><![CDATA[<p>Recently I had a chance to speak about Agile with experienced IT professionals from the 2011 class of the UVa McIntire School of Commerce&#8217;s <a href="http://www.commerce.virginia.edu/academic_programs/msmit/">MS in Management of Information Technology</a>.  This was a particular pleasure for me since I graduated from the same program earlier this year as part of the 2010 class.  My talk was an introduction to agile practices, and talking about the values inherent in an agile team.  You can see the slides here:</p>
<p><a href="http://www.opensourceconnections.com/2010/07/28/the-agile-cio-failing-fast-and-bad-stand-ups/" class="more-link">Read more on The Agile CIO:  Failing Fast and Bad Stand ups&#8230;</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Recently I had a chance to speak about Agile with experienced IT professionals from the 2011 class of the UVa McIntire School of Commerce&#8217;s <a href="http://www.commerce.virginia.edu/academic_programs/msmit/">MS in Management of Information Technology</a>.  This was a particular pleasure for me since I graduated from the same program earlier this year as part of the 2010 class.  My talk was an introduction to agile practices, and talking about the values inherent in an agile team.  You can see the slides here:</p>
<p><a href="http://www.slideshare.net/o19s/intro-to-agile-practices-and-values">http://www.slideshare.net/o19s/intro-to-agile-practices-and-values</a></p>
<p>The discussion covered a lot of overview topics in Agile, in fact too many topics to fit into our one hour time slot!  But true to form, the students in the class were great &#8211; they asked a lot of questions and we had a very engaging two-way conversation.  I much prefer being &#8220;agile&#8221; in my presentations and having to skip material because the audience is engaged.  It&#8217;s a lot better than a command and control presentation where only the speaker is talking!</p>
<p>Among the many great conversations were two that I want to highlight on the blog.</p>
<h2>Tip #1: Failing Fast does not mean sacrificing quality</h2>
<p><img src="http://www.sitelogicmarketing.com/wp/wp-content/uploads/2008/04/visitor-engagement-frustrated-customer.jpg" alt="Are your customers happy?" /><br />
<b>Agile&#8217;s value comes in iterations</b></p>
<p>One of the big values of agile development methods is the emphasis on short, iterative development cycles.  This allows you to push changes to the customer more often, get their feedback, and incorporate that feedback into future releases.  Iterative development allows you to get some incremental value from your work right away, instead of waiting until the &#8220;big bang deployment&#8221; when all features have been completed and are all released at once.  Big bangs are riskier because you haven&#8217;t received any customer feedback yet or seen how the customer will use your software.</p>
<p><b>Failing Fast means knowing what the customer really wants</b><br />
In agile, we talk about &#8220;Failing Fast&#8221; because if a customer doesn&#8217;t like or doesn&#8217;t use a feature we are working on, we want to know that as soon as possible.  That way we don&#8217;t expend any unnecessary effort on developing a feature that the customer will never use (also referred to in some cases as &#8220;gold plating&#8221;).</p>
<p>I like the term &#8220;Failing Fast&#8221;, but it&#8217;s important to understand (as one of the MSMIT students pointed out) that <em><strong>the failure we are willing to accept in agile is failure of the business value</strong></em>.  In other words, if we are building something that doesn&#8217;t deliver the expected value to our customers or our business, we want to know about that failure sooner rather than later, so we can adjust to it.</p>
<p><b>Failure does not mean failure in the quality of the code.</b><br />
Code we deploy in agile development methods should still be well tested (preferably using Test Driven Development methods and Continuous Integration), and we should be highly confident that what we are deploying will work as designed.  We just aren&#8217;t confident yet if the customers will like what we have designed &#8211; and that is what we want to find out as soon as possible!</p>
<h2>Tip #2: Avoiding Bad Standups</h2>
<p><img src="http://www.bringtim.com/images/business-meeting.jpg" alt="This meeting looks boring.  And why is only one person standing?  Oh yeah, because it's too long a meeting for everyone to stand up!" /></p>
<p>Another particularly interesting discussion we had was about what makes a good &#8220;standup.&#8221;  Many teams believe they are agile because they have standup meetings.  The reality is there&#8217;s a lot more to agile than daily standups, and if that&#8217;s all you&#8217;re doing, you&#8217;re probably not even doing the standup correctly in an agile way.  </p>
<p><b>Basic rules to follow when conducting your standups</b></p>
<ul>
<li>Stand ups should be no more than 15 minutes.</li>
<li>Each developer only discusses the three items (What did I do yesterday, What am I doing today, Am I encountering any obstacles)</li>
<li>All other items of discussion should be taken off line after the stand up, and only involve interested parties, not the whole team.</li>
<li>Product owners are always invited to the stand ups, but they should be a listener only.  If they have questions they can bring them up with individual developers offline.</li>
<li>As I saw posted on a discussion board recently, standups should be &#8220;by developers and for developers.&#8221;  They should be run by developers, not project management or clients.</li>
</ul>
<p><b>Make sure everyone on the team values the standups</b><br />
One team lead in the class asked how rigidly I believe you should adhere to the 15 minute length.  He said that his team is spread out remotely, and so this is often their only form of communication daily, and that their meetings are more typically 30 minutes, but that it seems to be going well.  </p>
<p>My first question was &#8220;Who thinks it&#8217;s going well at 30 minutes?  You as the team lead?  Or have you asked your team?&#8221;  I was intentionally being slightly confrontational to make sure he realized that the point of the stand up is developer communication, and to see if he had a true sense of what his developers thought of these daily meetings.</p>
<p><b>The pitfalls of standups &#8220;in name only&#8221;</b><br />
Often times when the stand ups are run by traditional project managers, they quickly become long daily meetings, and the only person who actually likes them are the project managers or team leads.  The developers are bored, get distracted and annoyed that they aren&#8217;t doing something more productive (like developing code!), and they tune out.  Because they tune out, they aren&#8217;t even listening to what the other developers are saying, and they lose all benefit of the conversation.  The conversation becomes a hierarchical conversation between each individual developer and the project manager running the meeting, not a conversation between developers.</p>
<p>Those type of &#8220;standups&#8221; lose their value because when developers aren&#8217;t talking to each other or paying attention, they will not offer to help remove obstacles for each other or offer advice.  It becomes more of a traditional command and control situation and de-emphasizes the collaborative nature of productive Agile teams.</p>
<p>The particular team lead who asked the question was perhaps a bit taken aback by my response, and paused a moment to consider it.  Ultimately he said that his team does also see value in the 30 minute daily standups, but I hope that my response gave him pause to consider if everyone really saw the same value in longer meetings that he does.  It&#8217;s always worth asking your team!</p>
<p><b>Dealing with remote teams in a stand up</b><br />
<img src="http://www.tollfreenumbers.com/images/phone-companies-asleep-at-the-switch.jpg" alt="Are you phone stand ups more than 15 minutes?  I guarantee somebody is not paying attention.  They may even be asleep!" /></p>
<p>With remote teams, it&#8217;s understandable that you might have longer phone calls so people can socialize a little bit (just a little though please!).  But in those cases, as I recommended to the team lead, at least still focus on keeping the stand up itself to only 15 minutes.  If people want to stay on the line and discuss things for another 15 or 30 minutes, that&#8217;s fine.  </p>
<p>But if you get the real standup done first within your 15 minute time limit, then at least those who are not interested in socialing or further discussing that day will feel free to leave the call.  By incorporating more detailed discussions and socialization into the stand up itself, you are forcing everyone to stay around for the whole call every single day.  And that is definitely not going to be efficient for everyone.</p>
<h2>In conclusion&#8230;</h2>
<p>It&#8217;s often said that you can understand the basic concepts of agile in a couple of days, but it takes a lifetime to master.  The concepts of iterative development, failing fast, and stand ups really are pretty simple if you stick to a few simple rules.  But if you don&#8217;t master the underlying values of why you are doing Agile, and trying to empower your whole team (not just project management!), then you will inevitably revert back to a control &#038; command environment and lose the benefits of whatever agile practices remain.</p>
<p>I&#8217;m pleased to be doing some follow up agile process consulting work this week for one of the students&#8217; teams.  If OpenSource Connections can help you improve your adoption of agile, please don&#8217;t hesitate to contact us for a consultation!</p>
<p><i><a href="http://www.opensourceconnections.com/tag/agile-cio/">The Agile CIO</a> is a series of blog posts advising IT leaders on how best to incorporate Agile techniques into their organizations.  For more information about OpenSource Connections&#8217; Agile process consulting services, please contact the author at ASime@OpenSourceConnections.com.</i></p>
]]></content:encoded>
			<wfw:commentRss>http://www.opensourceconnections.com/2010/07/28/the-agile-cio-failing-fast-and-bad-stand-ups/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Be Effective When Working In a Really Cool/Fun/Distracting Place</title>
		<link>http://www.opensourceconnections.com/2010/07/07/be-effective-when-working-in-a-really-coolfundistracting-place/</link>
		<comments>http://www.opensourceconnections.com/2010/07/07/be-effective-when-working-in-a-really-coolfundistracting-place/#comments</comments>
		<pubDate>Wed, 07 Jul 2010 20:38:46 +0000</pubDate>
		<dc:creator>Eric Pugh</dc:creator>
				<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.opensourceconnections.com/?p=1050</guid>
		<description><![CDATA[<div class="wp-caption aligncenter" style="width: 550px"><a href="http://maps.google.com/maps/api/staticmap?center=31.477222,-20&#38;size=600x300&#38;maptype=roadmap&#38;markers=color:green&#124;label:Y&#124;Beirut,Lebanon&#38;markers=color:red&#124;label:E&#124;Max+Patch,NC&#38;sensor=false"><img class=" " title="Where are Eric and Youssef" src="http://maps.google.com/maps/api/staticmap?center=31.477222,-20&#38;size=600x300&#38;maptype=roadmap&#38;markers=color:green&#124;label:Y&#124;Beirut,Lebanon&#38;markers=color:red&#124;label:E&#124;Max+Patch,NC&#38;sensor=false" alt="" width="540" height="270" /></a><p class="wp-caption-text">Where are Eric and Youssef?</p></div>
<p>This year two OSC folks are working remotely for extended periods of time.  Youssef spent 6 weeks in Lebanon earlier this year, and I am spending the month of July in the mountains of Western North Carolina.  We had talked about some of the rewards as well as challenges of working effectively when you are in a new/fun/exciting/[insert superlative here] place.  Youssef and I came up with a few tips to make balancing work/play easier!</p>
<p><a href="http://www.opensourceconnections.com/2010/07/07/be-effective-when-working-in-a-really-coolfundistracting-place/" class="more-link">Read more on Be Effective When Working In a Really Cool/Fun/Distracting Place&#8230;</a></p>
]]></description>
			<content:encoded><![CDATA[<div class="wp-caption aligncenter" style="width: 550px"><a href="http://maps.google.com/maps/api/staticmap?center=31.477222,-20&amp;size=600x300&amp;maptype=roadmap&amp;markers=color:green|label:Y|Beirut,Lebanon&amp;markers=color:red|label:E|Max+Patch,NC&amp;sensor=false"><img class=" " title="Where are Eric and Youssef" src="http://maps.google.com/maps/api/staticmap?center=31.477222,-20&amp;size=600x300&amp;maptype=roadmap&amp;markers=color:green|label:Y|Beirut,Lebanon&amp;markers=color:red|label:E|Max+Patch,NC&amp;sensor=false" alt="" width="540" height="270" /></a><p class="wp-caption-text">Where are Eric and Youssef?</p></div>
<p>This year two OSC folks are working remotely for extended periods of time.  Youssef spent 6 weeks in Lebanon earlier this year, and I am spending the month of July in the mountains of Western North Carolina.  We had talked about some of the rewards as well as challenges of working effectively when you are in a new/fun/exciting/[insert superlative here] place.  Youssef and I came up with a few tips to make balancing work/play easier!</p>
<h2>Tip 1: Establish a Routine</h2>
<p><strong>Youssef says:</strong> There will be no shortage of distractions, specially during the World Cup season. A trip to the mountains, a music festival or a friend&#8217;s unannounced (or announced) visit are all good reasons to drop what you&#8217;re doing and enjoy the place you are in. The only way to both get your work done and have fun is to know when is the appropriate time for each. I found that establishing a routine worked best for me. I woke up early every morning and took advantage of the early quiet hours of the day. Started work at 8am and got plenty done early on. Then I gave myself a couple of hours of break time for unscheduled events (a friend&#8217;s visit, a trip to the store to get souvenirs, or even a couple of hours at the beach). Then I resumed work till the evening when I had a conference call scheduled every day at 5:45pm. After the call I was free to do whatever I wanted and that gave me plenty of time, specially in a city like Beirut that does not sleep.<br />
<strong> Eric says:</strong> I know that I sometimes struggle to get started working in the morning.  And being in the office makes it simpler because everyone else is working.  So having a specific schedule of when I am working helps me shift my brain out of family/vacation mode and into work mode!<br />
<span id="more-1050"></span></p>
<h2>Tip 2: Fast Internet Connection</h2>
<p><strong>Eric says:</strong> When we looked for cottages to rent, one of our requirements was that they have something better then dial up!  We got lucky that one of our top choices was just installing a HughesNet satellite link at the cottage.<br />
<strong> Youssef says:</strong> It is embarrassing to be a on a call with a client and have that call be constantly dropped because of a bad connection. Skype requires a decent bandwidth and fast connection to work properly. You do not want a 15 minute stand up call to turn into a half an hour of you asking the people on the other end &#8220;Can you hear me now?&#8221; (Verizon does not operate in foreign countries!). So make sure you get yourself a decent internet connection even if you have to spend a little extra on it. And always take any install CDs or DVDs you think you might use with you. Some countries do not have the proper infrastructure and thus impose a cap on the download/upload limit you may use, which makes you think twice about how you use that limit (downloading the new Xcode from apple&#8217;s website is not an option).<br />
<strong> Eric chimes in: </strong>I ran into the same Skype issue, turns out Skype doesn&#8217;t work well with satellite internet due to the latency issue!  Fortunately, if I am upstairs on the west side of the cottage, standing on one foot, with my finger in my ear, my iPhone gets 1 bar of signal!   Phew.  I did notice that I needed to talk a little slower and not move about too much and folks can hear me.</p>
<h2>Tip 3: Regular Checkins</h2>
<p><strong>Youssef says:</strong> Stand up calls in Scrum keep the developers honest. When you are working remotely, you do not want to lose touch with the work environment, specifically in a field that evolves constantly such as software development. Having a point of contact in the &#8220;real world&#8221; or the &#8220;work world&#8221; helps you stay in touch and not lose focus.<br />
<strong> Eric says:</strong> When you are in the office everyday, you pick up all the water cooler gossip.  But working remotely means you lose that contact.  I find that having a regular series of checkins helps stay connected.  I put them on my calendar so they don&#8217;t get skipped!</p>
<h2>Tip 4: Track your time!</h2>
<p><strong>Eric says:</strong> Don&#8217;t forget that you are working remotely is because you are doing something special.  In my case, it&#8217;s taking my family for a month to the mountains.  So I want to make sure that I don&#8217;t miss out on the experience.  Over the four weeks I am here, I am taking a week of vacation, spread out a bit.  So I am tracking my hours both to make sure I don&#8217;t shortchange work, but also don&#8217;t shortchange the experience of being 200 feet from the Appalachian Trail!<br />
<strong> Youssef says:</strong> I definitely did not travel for 24 hours, crossed an ocean, a continent and a sea to do the exact the same things I was doing in Charlottesville. It also does not mean I should use that as an excuse to ignore my responsibilities. Tracking your time helps you balance out the experience and establishing a routine like we mentioned above goes well with this concept.</p>
<h2>Tip 5: Stay Agile</h2>
<p><strong>Youssef says:</strong> Working remotely does not mean you should change the way you work, but flexibility is key. Working on the east coast while your client is on the west coast requires some coordination. Working in Lebanon (GMT + 2) while your coworker is on the east coast and your client is on the west coast, well that requires some bending and flexibility. The key part about dealing with this situation is an agreement with all parties involved about which approach to follow. The method I followed included three chunks of time. A chunk where I was working ahead of everyone else (during which I could be dealing with issues that came up the day before), a chunk of time where everyone was available at the same time and third chunk when I was off the clock while everyone else was still working. That allowed for ample communication and work time without sacrificing my fun time. Others might prefer to synchronize the working time, or might prefer to just deal with the delays. Balance worked best for me.<br />
<strong> Eric says:</strong> I agree with Youssef, being flexible on your approach to work can make being remote a very enjoyable and productive experience!</p>
<div id="attachment_1051" class="wp-caption alignleft" style="width: 235px"><a href="http://www.opensourceconnections.com/wp-content/uploads/2010/07/photo.png"><img class="size-medium wp-image-1051" title="View from my window" src="http://www.opensourceconnections.com/wp-content/uploads/2010/07/photo-225x300.png" alt="A shot over the mountains looking away from Tennessee" width="225" height="300" /></a><p class="wp-caption-text">Looking out of my window at NC Mountains</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.opensourceconnections.com/2010/07/07/be-effective-when-working-in-a-really-coolfundistracting-place/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Agile CIO:  Virtualizing Development Environments</title>
		<link>http://www.opensourceconnections.com/2010/06/25/the-agile-cio-virtualizing-development-environments/</link>
		<comments>http://www.opensourceconnections.com/2010/06/25/the-agile-cio-virtualizing-development-environments/#comments</comments>
		<pubDate>Fri, 25 Jun 2010 20:34:04 +0000</pubDate>
		<dc:creator>Arin Sime</dc:creator>
				<category><![CDATA[Opinion]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Project Management]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Agile CIO]]></category>

		<guid isPermaLink="false">http://www.opensourceconnections.com/?p=1046</guid>
		<description><![CDATA[<p>Agile teams should be based on talented development staff with multi disclipinary skill sets.  This allows team members to easily trade tasks and keep the iteration moving forward.  As a consultant, I have seen and worked in many environments where development staff are very silo&#8217;d in their skill sets.  In most cases they are very good at what they do, but at various times each team member can become a bottleneck because they are the only person who knows how to do a particular task or work on a certain legacy system.</p>
<p><a href="http://www.opensourceconnections.com/2010/06/25/the-agile-cio-virtualizing-development-environments/" class="more-link">Read more on The Agile CIO:  Virtualizing Development Environments&#8230;</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Agile teams should be based on talented development staff with multi disclipinary skill sets.  This allows team members to easily trade tasks and keep the iteration moving forward.  As a consultant, I have seen and worked in many environments where development staff are very silo&#8217;d in their skill sets.  In most cases they are very good at what they do, but at various times each team member can become a bottleneck because they are the only person who knows how to do a particular task or work on a certain legacy system.</p>
<p>But multi-disclipinary skill sets are not the only key to fluidly switching people between tasks.  You must also be able to change technology or development environments easily as well, and this is an area that I find almost all development environments suffer from.</p>
<p>As an IT leader, when you bring in a team of consultants to augment your team and give their velocity a shot in the arm, you expect them to integrate quickly and be productive right away.  And that&#8217;s what the consultant wants too.  But are you giving them the tools they need to be effective right away?  Or do you expect each of them to go through the same development environment setup that you ask new hires to do?</p>
<p>When you hire a new person, perhaps it&#8217;s worth the time to have them setup everything about their development environment.  They learn about the nuances of your system, and a few days or a week of their time is nothing compared to the long term investment you expect from having them work for you for several years.</p>
<p>When you bring in a consultant, it&#8217;s different.  You may only expect to have them for a few months, and their time is more expensive then your internal staff.  And they are not going to benefit much from the learning experience of setting up a dev environment.</p>
<p>And even for your full time staff, what happens when they have to upgrade their machine a year from now, or their system dies and they have to rebuild from scratch?  Do you really want to have them spend another week trying to remember how to get past that one install bug that they encountered a year or more before?</p>
<p>One answer to this problem is to develop code using virtual machines.  Instead of having your first developer start by setting up the toolsets and plugins on their machine, have them start with a clean virtual image, using a tool like VMWare Player.  Keep a bare bones image around with your basic development tools, or start with one from a similar project.  After the developer gets the code started and everything basically working, then they should make a copy of that image and distribute it to the rest of the development team.</p>
<p>A backup copy of this image should also be kept on a network share or external drive so that when you add in consultants, or bring in a new hire, they can get started on code just as soon as they copy the image over to their machine.  Instead of spending a week getting everything installed and picking the brain of your development staff, or Googling on obscure error messages, the only time delay is how long it takes the image to copy to their local machine (probably no more than an hour in most cases).</p>
<p>Now you can spend their time where it&#8217;s valuable:  Bringing them up to speed on the nuances of your code itself, not the right service pack or magic incantations to get the development tools working.</p>
<p>You might be thinking that with cloud computing and languages like Ruby on Rails, shouldn&#8217;t this be a non issue?  I just pull down the code from svn or github, and I&#8217;m ready to go!  In my experience, while that is usually the case with relatively small projects or with projects started in the last year or two, it&#8217;s not always the case with lots of other code that exists in the world and that we have to work on.</p>
<p>I was reminded of this because of a client I recently worked with is still using version 1.1 of the .NET framework, and so is required to run Microsoft Visual Studio 2003.  As part of the project we&#8217;ll probably end up doing an upgrade to more recent versions, but we still have work we have to do first.  And unfortunately I discovered on my first day on the project that Windows 7 does not play well with Visual Studio 2003.  Once it installed, it wouldn&#8217;t connect to IIS in debug mode.  After doing some googling and seeing that this is a common problem with no easy solution (I tried many of the recommended solutions to no avail), I decided it was time to just get an image of Windows XP going.  The rest of the dev team is on XP, but they are not using virtual machines to do it unfortunately.   </p>
<p>So I started creating a new XP image under Virtual PC, only to have it started failing on certain files.  Even though the install continued, I ended up with an image that could not talk to the outside world and was clearly half-baked.  </p>
<p>So then I started over with VMWare Player, and as I write this, my XP image with Visual Studio 2003 already installed is nearly done.  3 days later.  Before I start changing code on it, I&#8217;ll be setting the image aside to give to another consultant joining the team in a few weeks, so he doesn&#8217;t have to go to the same level of pain.  I&#8217;ll also make sure the client has a copy of that image to make their life easier in the future the next time they bring us in or make a new hire.</p>
<p>Before you attribute the delays I experienced to Microsoft, I&#8217;ve seen similar challenges on Php projects and to a lesser degree on Groovy on Grails projects.</p>
<p>Virtualization is great for reducing the size of your server room, cutting down on power bills, and becoming more green.  But don&#8217;t let it stop there.  A little bit of time spent up front on virtualizing your development environment will save you a lot of heartache and expenses later down the road, and make your IT shop much more agile.</p>
<p><i><a href="http://www.opensourceconnections.com/tag/agile-cio/">The Agile CIO</a> is a series of blog posts advising IT leaders on how best to incorporate Agile techniques into their organizations.  For more information about OpenSource Connections&#8217; Agile process consulting services, please contact the author at ASime@OpenSourceConnections.com.</i></p>
]]></content:encoded>
			<wfw:commentRss>http://www.opensourceconnections.com/2010/06/25/the-agile-cio-virtualizing-development-environments/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Arin Sime speaking at AgileCville</title>
		<link>http://www.opensourceconnections.com/2010/06/10/arin-sime-speaking-at-agilecville/</link>
		<comments>http://www.opensourceconnections.com/2010/06/10/arin-sime-speaking-at-agilecville/#comments</comments>
		<pubDate>Thu, 10 Jun 2010 13:10:13 +0000</pubDate>
		<dc:creator>Arin Sime</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Project Management]]></category>
		<category><![CDATA[Speaking]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[scrum]]></category>

		<guid isPermaLink="false">http://www.opensourceconnections.com/?p=1040</guid>
		<description><![CDATA[<p>I&#8217;m looking forward to speaking next Tuesday night at AgileCville about range estimation in Scrum.  It&#8217;s been a while since I&#8217;ve been able to attend AgileCville meetings regularly, so I&#8217;m excited to reconnect with everyone.  I hope to see you there!</p>
<p><a href="http://www.opensourceconnections.com/2010/06/10/arin-sime-speaking-at-agilecville/" class="more-link">Read more on Arin Sime speaking at AgileCville&#8230;</a></p>
]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m looking forward to speaking next Tuesday night at AgileCville about range estimation in Scrum.  It&#8217;s been a while since I&#8217;ve been able to attend AgileCville meetings regularly, so I&#8217;m excited to reconnect with everyone.  I hope to see you there!</p>
<p><a href="http://www.agilecville.org/">AgileCville</a><br />
Date:                  Tuesday, June 15th, 2010<br />
Time:                 6 PM to 7:30 PM<br />
Venue:               <a href="http://getopenspace.com/">OpenSpace</a><br />
                          455 Second Street SE, Suite 100<br />
                          Charlottesville, VA 22902</p>
]]></content:encoded>
			<wfw:commentRss>http://www.opensourceconnections.com/2010/06/10/arin-sime-speaking-at-agilecville/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Agile CIO:  Avoiding heroes</title>
		<link>http://www.opensourceconnections.com/2010/05/25/agile-cio-avoiding-heroes/</link>
		<comments>http://www.opensourceconnections.com/2010/05/25/agile-cio-avoiding-heroes/#comments</comments>
		<pubDate>Tue, 25 May 2010 19:39:30 +0000</pubDate>
		<dc:creator>Arin Sime</dc:creator>
				<category><![CDATA[Opinion]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Project Management]]></category>
		<category><![CDATA[scrum]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[Agile CIO]]></category>

		<guid isPermaLink="false">http://www.opensourceconnections.com/?p=1028</guid>
		<description><![CDATA[<p>Everybody loves employees and consultants who can get stuff done.  Especially if you&#8217;ve made a commitment to a client or your boss, it can be very difficult to ask for an extension to that timeline.  It&#8217;s much easier to ask your team to put in the extra hours to get the job done, even if that means the job won&#8217;t be done well.  Sometimes leaders will even resort to claiming the product is &#8220;done&#8221;, when it was never truly done at all, and needs a lot more work.</p>
<p><a href="http://www.opensourceconnections.com/2010/05/25/agile-cio-avoiding-heroes/" class="more-link">Read more on The Agile CIO:  Avoiding heroes&#8230;</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Everybody loves employees and consultants who can get stuff done.  Especially if you&#8217;ve made a commitment to a client or your boss, it can be very difficult to ask for an extension to that timeline.  It&#8217;s much easier to ask your team to put in the extra hours to get the job done, even if that means the job won&#8217;t be done well.  Sometimes leaders will even resort to claiming the product is &#8220;done&#8221;, when it was never truly done at all, and needs a lot more work.</p>
<p>Your development team will likely respond to your calls with heroic effort.  And you might actually make the deadline.  But if you do it regularly, your reputation as a leader may actually suffer, and your team will probably burn out unless you can pour on enough accolades and spot-bonuses.</p>
<p>At some point, almost all IT leaders, including myself, have done it.  That is unfortunately not much of a secret and it&#8217;s why IT teams often develop a bad reputation.  The bigger secret is that a lot of developers not only regularly take on the hero role, they actually like it.</p>
<p>This creates a dangerous situation, where IT leaders ask for heroic efforts because it is the path of least resistance.  And the development teams respond with grumbles and late nights, but also with the misconception of job security and the expectation that they will receive a lot of praise when they come in on Monday bleary-eyed (but with at least part of the job done).</p>
<p>Why is there so much danger in encouraging your developers to be heroes?  Do a google search on &#8220;<a href="http://www.it-career-coach.net/2010/02/26/cowboy-coder-or-agile-programmer/">cowboy coders</a>&#8221; or &#8220;<a href="http://gamesfromwithin.com/cowboy-coders-and-the-hero-programmer-culture">programmer heroes</a>&#8221; and you&#8217;ll see other blog posts that describe the whys and the pitfalls of reliance on hero development.  In short, you&#8217;ll get inconsistent and buggy code that may not fit your architecture, won&#8217;t meet the customer&#8217;s needs, is not very flexible, creates technical debt you will complain about for years, and will probably need to be reworked eventually.</p>
<p>So how do you avoid heroes?  As a CIO or technical lead, the tools of Agile offer many solutions:</p>
<ul>
<li><b>Sprint planning</b> &#8211; restricting the work that is done to the current sprint helps discourage sudden changes of priority.  Most tasks can in reality wait until the next sprint to be added, especially if the customer understands that it means the current sprint has to be put on hold or canceled.</li>
<li><b>Daily standups and regular customer interaction</b> &#8211; Chronic hero programmers often like to hideaway on their work, and so they can be more easily detected when you are interacting with the customer each day.  There is less opportunity for the developer to hide away and not give status updates, and the standups provide the customer more immediate feedback on everything that is being held up because they sent the hero on a distracting quest.</li>
<li><b>Team estimation</b> &#8211; When the team estimates tasks for a sprint together, before they are assigned to people, that encourages open discussion and debate on how long something will take.</li>
<li><b>Continuous Integration</b> &#8211; Maintaining rules about daily code check-ins and regular integration and unit testing prevents the hero from going too far away from the mainstream code base, and gives visible signs of progress.  When done properly, it also helps to reduce the bugs delivered in the rushed code.</li>
</ul>
<p>In addition, in our OpenApproach implementation of Agile and Scrum, we use range estimation of tasks.  Asking people to give you a single-point estimate of how long something will take encourages them to be overly optimistic.  &#8220;Oh, I can get that done in about 2 hours.&#8221;</p>
<p>Really?  What if it&#8217;s not as simple as you or the developer thought?  Then the only solution is to put in a heroic effort if the timeline must be met.  </p>
<p>A simple range estimate will provide a much more realistic view, and encourages a more thorough thought process:  &#8220;It should only take about 2 hours of actual coding, but I&#8217;ll have to switch projects and get that site running again on my machine.  Plus, sometimes those java script issues can be really though to debug, so it could take as long as 8 hours of work.&#8221;</p>
<p>As an Agile CIO, it&#8217;s your job to not only be understanding of your developers when they give you a range estimate, but encourage it.  Don&#8217;t settle for the heroic answer of &#8220;I&#8217;ll just put in some extra time this weekend.&#8221;  Get to the root cause of the problems, and make sure the customer or your boss is aware of the delays earlier rather than later.  It will make all of your lives easier, and help you to avoid the pitfalls of programmer heroes.</p>
<p><i><a href="http://www.opensourceconnections.com/tag/agile-cio/">The Agile CIO</a> is a series of blog posts advising IT leaders on how best to incorporate Agile techniques into their organizations.  For more information about OpenSource Connections&#8217; Agile process consulting services, please contact the author at ASime@OpenSourceConnections.com.</i></p>
]]></content:encoded>
			<wfw:commentRss>http://www.opensourceconnections.com/2010/05/25/agile-cio-avoiding-heroes/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>B.D.D. Thoughts Reloaded</title>
		<link>http://www.opensourceconnections.com/2010/05/03/b.d.d.-thoughts-reloaded/</link>
		<comments>http://www.opensourceconnections.com/2010/05/03/b.d.d.-thoughts-reloaded/#comments</comments>
		<pubDate>Mon, 03 May 2010 14:16:05 +0000</pubDate>
		<dc:creator>Michael Herndon</dc:creator>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[b.d.d.]]></category>
		<category><![CDATA[bdd]]></category>
		<category><![CDATA[behavior driven development]]></category>
		<category><![CDATA[cucumber]]></category>
		<category><![CDATA[must]]></category>
		<category><![CDATA[question]]></category>
		<category><![CDATA[should]]></category>

		<guid isPermaLink="false">http://www.opensourceconnections.com/?p=992</guid>
		<description><![CDATA[<p>Its not exactly easy to get people to read requirement or technical specifications, much less write them. It&#8217;s also hard to getÂ  developers to write tests. Its even harder to get them to write solid usable tests.</p>
<p><a href="http://www.opensourceconnections.com/2010/05/03/b.d.d.-thoughts-reloaded/" class="more-link">Read more on B.D.D. Thoughts Reloaded&#8230;</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Its not exactly easy to get people to read requirement or technical specifications, much less write them. It&#8217;s also hard to getÂ  developers to write tests. Its even harder to get them to write solid usable tests.</p>
<p>B.D.D (Behavior Driven Development) which is a spin off of T.D.D (Test Driven Development) focuses on the language of testing and and quality assurance of software, in hopes to make creating tests easier as well and specifications.</p>
<p>The concept was coined by <a href="http://blog.dannorth.net/introducing-bdd/">Dan North</a>. Since then new libraries like <a href="http://rspec.info/">rspec</a>, <a href="http://cukes.info/">cumcumber</a>, <a href="http://www.specflow.org/">specflow</a>, <a href="http://nbehave.org/">nbehave</a>, <a href="http://codebetter.com/blogs/aaron.jensen/archive/2008/05/08/introducing-machine-specifications-or-mspec-for-short.aspx">machine spec</a> have come about.</p>
<p>I can agree that sometimes changing the business language can help people with making associations and understanding of processes easier.  And using &#8220;Behavior&#8221; instead of &#8220;test&#8221; does help in understanding that you need to validate how the software or code is supposed to behave.</p>
<h3>Questioning The Boilerplate Human Readable Specifications</h3>
<p>Where people need to be more skeptical is the question of is there real business value in getting code to generate boilerplate systematic specifications?</p>
<p>For an example, I&#8217;m pulling this from a <a href="http://github.com/aslakhellesoy/cucumber/blob/master/examples/i18n/en/features/addition.feature">cucumber example from github</a>.</p>
<pre><code>
# language: en
Feature: Addition
  In order to avoid silly mistakes
  As a math idiot
  I want to be told the sum of two numbers

  Scenario Outline: Add two numbers
    Given I have entered &lt;input_1&gt; into the calculator
    And I have entered &lt;input_2&gt; into the calculator
    When I press &lt;button&gt;
    Then the result should be &lt;output&gt; on the screen

  Examples:
    | input_1 | input_2 | button | output |
    | 20      | 30      | add    | 50     |
    | 2       | 5       | add    | 7      |
    | 0       | 40      | add    | 40     |

</code></pre>
<p>We live in a time surrounded by constant news, media, following four subplots instead of one. Its hard to get people concentrate for long periods of time or sit still, much less to get them to read technical or requirement specifications.</p>
<p>Now I was to write this scenario for a requirement out as a spec, it would read like the following.</p>
<pre><code>

The <b>mad scientist2</b> with his destructo <b>calculator</b> enters <b>input 1</b>
and <b>input2</b>. He manically <b>presses</b> said red <b>button</b> . The <b>output</b>
must be the <b>sum</b> of input 1 and input 2.

(i1 + i2 = output)
</code></pre>
<p>So why are we creating specifications that repeat words like I,As,When,Given,Then like bad boilerplate code? They might be human readable, but the questions of being understandable, easy to read, enticing to read, is a whole different story.</p>
<p>I have to honestly question that even if a developer takes their time and makes sure the code is up to spec. The question is are the specs kept up to day (requirements change). And are lay people going to want to sit through and actually read these things?</p>
<p>Is this a real business value?</p>
<p>I don&#8217;t see any at this point. I see no real return on time invested to write boring systematic specs and just to have them match up in some way with code.</p>
<p>Specifications, like any documentation worth it&#8217;s salt, needs to be able to:</p>
<ul>
<li>be engaging and appeal to more than the logical side.</li>
<li>provide the meat of information that is digestible.</li>
<li>avoid templating that read like government contracts.</li>
<li>be terse and yet expressive.</li>
</ul>
<h3>We have been here before</h3>
<p>Their have been tools like this before, (<a href="http://agile.csc.ncsu.edu/SEMaterials/tutorials/fit/">Fit</a>,<a href="http://agile.csc.ncsu.edu/SEMaterials/tutorials/fit/"> Finesse</a>) before Dan North was really doing this thing.  Yet you don&#8217;t see much usage from them across projects.</p>
<p>I think the reason why cucumber has caught on, is because the rails community has been keeping momentum from going from one &#8220;next big thing&#8221; onto the next one. Cucumber is the new pink.</p>
<p>But the end result is the same. Less than specular on par with boring. Hard to digest boiler plate specifications.</p>
<p>Don&#8217;t get me wrong, having specifications to work from is important. It helps to drive development and allows others to collaborate and work together.  But this doesn&#8217;t mean B.D.D is on the right track with its story/QA methodology.</p>
<p>I think there is value of translating specs into code to some degree and testing against requirements.</p>
<p>I think the value is lost when:</p>
<ul>
<li> coders who might not fully understand the business are writing specs.</li>
<li>business analysts who have no clue to code write specifications that affect how code is written.</li>
<li>specs writtenÂ  in a templated manner that is the antithesis of being terse.</li>
</ul>
<h3>Should vs Must</h3>
<p>Also the domain language is for B.D.D. a bit off.</p>
<p>If you&#8217;ve read technical specs, you know there is a vital difference between &#8220;Should&#8221; and &#8220;Must&#8221;. Should is something software could do, but doesn&#8217;t have to.  Must is an absolute requirement.  If you don&#8217;t believe me, check out the W3 specs sometime.</p>
<p>Yet, we&#8217;ve chosen &#8220;should&#8221; for some reason to put everywhere inside of our &#8220;specification&#8221; code. If we&#8217;re going to write specifications, we must chose words that fit.</p>
<h3>Conclusion</h3>
<p>B.D.D. isn&#8217;t evil or bad, but still needs to evolve, be debated, thought on, expounded.</p>
<p>I think the software community as a whole needs to watch out from getting caught up too much in trends for the sake of being first to do something and buying the t-shirt to say he/she was there.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.opensourceconnections.com/2010/05/03/b.d.d.-thoughts-reloaded/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scott Stults is the inaugural OSC &#8220;Code Ninja&#8221;</title>
		<link>http://www.opensourceconnections.com/2010/04/26/scott-stults-is-the-inaugural-osc-code-ninja/</link>
		<comments>http://www.opensourceconnections.com/2010/04/26/scott-stults-is-the-inaugural-osc-code-ninja/#comments</comments>
		<pubDate>Mon, 26 Apr 2010 17:00:36 +0000</pubDate>
		<dc:creator>Arin Sime</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://www.opensourceconnections.com/?p=983</guid>
		<description><![CDATA[<p>Last Friday OpenSource Connections held one of our regular &#8220;hackathons&#8221;, where OSC developers get together for a day and work on a development project of our choosing, and then at the end of the day, present our work to each other.  A hackathon is a fun event where we each get to explore some technology we are interested in, and see how far we can get in one day with it.</p>
<p><a href="http://www.opensourceconnections.com/2010/04/26/scott-stults-is-the-inaugural-osc-code-ninja/" class="more-link">Read more on Scott Stults is the inaugural OSC &#8220;Code Ninja&#8221;&#8230;</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Last Friday OpenSource Connections held one of our regular &#8220;hackathons&#8221;, where OSC developers get together for a day and work on a development project of our choosing, and then at the end of the day, present our work to each other.  A hackathon is a fun event where we each get to explore some technology we are interested in, and see how far we can get in one day with it.</p>
<p>This time, we decided to mix up the way we do hackathons.  We added in a theme, voting on the best project, celebrity judges, a gift certificate to Best Buy, and even a trophy!  The usual elements of time pressure, creativity, fun, caffeine, and a beer at the end of the day were still present.</p>
<p>At the end of the day:  Scott Stults was crowned the inaugural OSC &#8220;Code Ninja&#8221;.  Congratulations Scott!  In a moment I will describe a little more about the hackathon, but first, let&#8217;s all sit back and enjoy this impressive photo of Scott with his prized trophy.  Scott is making a feeble attempt to strike the same pose as the karate-guy on the trophy.</p>
<p><img src="http://farm4.static.flickr.com/3633/4554536317_d33156a4f2.jpg" alt="Scott Stults - OSC code ninja" /><br />
<br clear="left"/><br />
For the hackathon, we started the day by meeting at the Nook for breakfast.  Then we headed over to a conference room at CitySpace where we set up camp for the day.  </p>
<p>The theme of the hackathon was &#8220;time&#8221;, which meant that you could build any application you wanted, as long as there was some element of time in it.  The app had to be built in the 7 or so hours of the hackathon, and judging began at 4:30pm.  The applications were judged on three axes:  Innovation, Business Utility/Usefulness, and Completeness.  Each person voted on all the projects except for their own, giving 1-5 stars for each app on each of the three axes.  The project with the highest total number of points was the winner.  </p>
<p>To add another dynamic to the voting, we invited &#8220;celebrity judges&#8221; to join us at 4:30 and they had votes as well.  Our celebrity judges were Glenn Wasson and Brian Wheeler.  Glenn is an architect at SAIC, and is perhaps most famous for being one of the founders of <a href="http://oracleofbacon.org/">&#8220;The Oracle of Bacon&#8221;</a> website.  Brian is famous for the <a href="http://cvilletomorrow.typepad.com/">Charlottesville Tomorrow</a> website.</p>
<p>Both judges were excellent, and very gracious with their time since we kept them there until nearly 6pm on a Friday night.  Thanks Glenn and Brian!</p>
<p>We had a variety of applications built.  Caleb worked with Html5 to build a dynamic graph for tracking stocks.  Michael worked on extending unit testing frameworks in Visual Studio.  Eric built a website where you can send your server logs to, and it will stream out audio sounds that you can listen to which indicate what types of messages are being logged (errors, info, etc).  Youssef and I teamed up to build a droid app and deploy it to my phone.  We had some cool ideas, but ended up scaling them down to building an Agile standup meeting timer.  It made my phone vibrate, which was of course extremely cool.</p>
<p>Despite that coolness, and despite a strong challenge from Eric, the inaugural code ninja is Scott!  Scott didn&#8217;t just win because he was the only one of us to prepare a powerpoint presentation about his app (that actually lost him a few votes I&#8217;m guessing &#8211; yuk yuk), but because he made wiki&#8217;s exciting!  Scott used SPARQL in Semantic Media Wiki SMW+ to show how we could track our projects at OSC and see timelines of who is working on what project.</p>
<p>Thanks to everybody for a great time &#8211; I&#8217;m looking forward to the next hackathon!  I understand that Scott has removed family photos in order to place the trophy in a place of honor at his home, and so I wish the next Code Ninja the best of luck in wresting it away from him.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.opensourceconnections.com/2010/04/26/scott-stults-is-the-inaugural-osc-code-ninja/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Arin Sime to present at Agile 2010 on Range Estimation in Scrum</title>
		<link>http://www.opensourceconnections.com/2010/04/26/arin-sime-to-present-at-agile-2010-on-range-estimation-in-scrum/</link>
		<comments>http://www.opensourceconnections.com/2010/04/26/arin-sime-to-present-at-agile-2010-on-range-estimation-in-scrum/#comments</comments>
		<pubDate>Mon, 26 Apr 2010 15:54:28 +0000</pubDate>
		<dc:creator>Arin Sime</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Project Management]]></category>
		<category><![CDATA[Speaking]]></category>
		<category><![CDATA[scrum]]></category>

		<guid isPermaLink="false">http://www.opensourceconnections.com/?p=980</guid>
		<description><![CDATA[<p>I am looking forward to presenting at Agile 2010 this year, and I was very pleased to find out that my session proposal on Range Estimation in Scrum has been accepted.  Here is info about the session, and I hope to see you at the conference in August!</p>
<p><a href="http://www.opensourceconnections.com/2010/04/26/arin-sime-to-present-at-agile-2010-on-range-estimation-in-scrum/" class="more-link">Read more on Arin Sime to present at Agile 2010 on Range Estimation in Scrum&#8230;</a></p>
]]></description>
			<content:encoded><![CDATA[<p>I am looking forward to presenting at Agile 2010 this year, and I was very pleased to find out that my session proposal on Range Estimation in Scrum has been accepted.  Here is info about the session, and I hope to see you at the conference in August!</p>
<p><strong>Building a More Accurate Burndown: Using Range Estimation in Scrum</strong></p>
<p>Traditional Scrum burndowns are based on single point estimates of how long a task will take. However, single point estimates are inherently faulty and inaccurate, and they encourage underestimation. Learn how to incorporate range based estimation techniques into your Scrum burndown, and better communicate to your boss or clients what a project is really going to take. Arin will back up this thesis with academic and industry research, real world examples, and an engaging presentation style. Participants will leave with concrete tips &#038; templates for using range estimates in their projects.</p>
<p><strong>Process/Mechanics<br />
</strong><br />
The first part of the session will focus on the pitfalls of traditional estimation techniques, in particular single point estimates. This will involve audience interaction as well as citing industry and academic research. Next the session will move into a discussion of range estimation and how that leads to better accuracy. Then I will present specific advice for how to use range estimates in common Scrum practices like Scrum poker and the burndown. Along the way I will show examples of how our company has been using this practice with clients over the last year, and some best practices that have come out of it. The techniques will be fairly simple and easy to adopt, but provide power results in estimating more accurately and better communication with managers and clients.</p>
<p>Potential pitfalls and best practices of range estimation will also be discussed. For example, some managers are reluctant to accept range estimates, but they can be convinced when a demonstration is made to them of how it better communicates risk and allows them to make better financial decisions on the viability of a project.</p>
<p>This topic started for me with a paper I wrote in my Masters in Management of IT program in 2009 at the University of Virginia, and now has become regular practice at OpenSource Connections. I am also pursuing further research on the topic with two professors from the University of Virginia (Professors Ryan Nelson and Mike Morris of the McIntire School of Commerce). Any preliminary findings or papers from that research will also be woven into the presentation.</p>
<p>I have proposed this as a 60 minute talk, but it could also be made into a 90 minute Tutorial with relative ease. In that scenario, I would bring more hands on activities to encourage participants to really see the value of range estimation in their projects. I have experience with those types of sessions from helping to teach corporate education classes at Virginia Commonwealth University, and I would use that experience to make sure things are kept interesting.</p>
<p>Itâ€™s my intention for this session to take the relatively easy-to-use but underutilized practice of range estimation, and make it so compelling that participants will want to apply it right away on their projects. This will be done through a combination of good research, real world examples, engaging presentation style, and practical tips.</p>
<p><strong>Learning outcomes</strong></p>
<p>    * Why single point estimates lead to underestimation<br />
    * Why range estimation reduces natural biases<br />
    * How range estimates better communicate a projectâ€™s impact<br />
    * How to use range estimation in Scrum Poker<br />
    * How to incorporate range estimates into a Scrum burndown<br />
    * How range estimates impact project decision making</p>
<p>For those registered on the Agile 2010 site, you can also see this session <a href="http://agile2010.agilealliance.org/node/6109">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.opensourceconnections.com/2010/04/26/arin-sime-to-present-at-agile-2010-on-range-estimation-in-scrum/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>When talking time zones: Bogota != Eastern Time (US &amp; Canada)!</title>
		<link>http://www.opensourceconnections.com/2010/04/21/when-talking-time-zones-bogota-eastern-time-us-canada/</link>
		<comments>http://www.opensourceconnections.com/2010/04/21/when-talking-time-zones-bogota-eastern-time-us-canada/#comments</comments>
		<pubDate>Wed, 21 Apr 2010 14:46:03 +0000</pubDate>
		<dc:creator>Eric Pugh</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[daylight savings time]]></category>
		<category><![CDATA[dst]]></category>
		<category><![CDATA[utcoffset]]></category>

		<guid isPermaLink="false">http://www.opensourceconnections.com/?p=970</guid>
		<description><![CDATA[<p>I&#8217;ve been using the timezone localization technique of asking the browser when the page loads what the browsers timezone offset from UTC is, and posting that back to the server and storing it in the session. Â However recently I noticed that with the event of Daylight Savings Time, this was no longer working, because my time would come up an hour off here in Virginia.</p>
<p><a href="http://www.opensourceconnections.com/2010/04/21/when-talking-time-zones-bogota-eastern-time-us-canada/" class="more-link">Read more on When talking time zones: Bogota != Eastern Time (US &#038; Canada)!&#8230;</a></p>
]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been using the timezone localization technique of asking the browser when the page loads what the browsers timezone offset from UTC is, and posting that back to the server and storing it in the session. Â However recently I noticed that with the event of Daylight Savings Time, this was no longer working, because my time would come up an hour off here in Virginia.</p>
<p>After much faffing about, I finally figured it out. Â On the server I would ask for the set of timezones that matched the offset, and grab the first one and put that in the session:</p>
<p>[sourcecode]<br />
result = ActiveSupport::TimeZone.all.select{|t|t.utc_offset == gmtoffset}.first<br />
session[:time_zone] = result.name<br />
[/sourcecode]</p>
<p>The list of named time zones returned when the browser is in <a href="http://maps.google.com/maps?f=q&#038;source=s_q&#038;hl=en&#038;geocode=&#038;q=Charlottesville,+VA&#038;sll=38.012335,-78.514101&#038;sspn=0.0094,0.019205&#038;ie=UTF8&#038;hq=&#038;hnear=Charlottesville,+Virginia&#038;z=13">Charlottesville, Virginia</a> are: <em>Bogota, Eastern Time (US &#038; Canada), Indiana (East), Lima, Quito</em>.</p>
<p>So when I use Bogota as the timezone, and ask Rails to show the time localized:</p>
<p>[ruby]<br />
Time.now.in_time_zone(session[:time_zone])<br />
[/ruby]</p>
<p>I get back the time without taking into account daylight savings wrong.  I started trying to figure out if the browser was in a DST zone using this JavaScript code: <a href="http://www.michaelapproved.com/articles/daylight-saving-time-dst-detect/">http://www.michaelapproved.com/articles/daylight-saving-time-dst-detect/</a> and while it seems very promising, it still wasn&#8217;t quite giving me what I want.  </p>
<p>Finally, I realized it&#8230;.   By arbitrarily grabbing the first time zone in the list, I was showing time in <a href="http://maps.google.com/maps?f=q&#038;source=s_q&#038;hl=en&#038;geocode=&#038;q=bogota+columbia&#038;sll=38.029306,-78.476678&#038;sspn=0.075181,0.153637&#038;ie=UTF8&#038;hq=&#038;hnear=Bogot%C3%A1,+Bogota,+Colombia&#038;z=12">Bogota, Columbia</a>.  But if I chose <em>Eastern Time (US &#038; Canada)</em> then I do get a localized time that takes into account day light savings!</p>
<p>So right now I have this method: </p>
<p>[ruby]<br />
    result = ActiveSupport::TimeZone.all.select{|t| t.utc_offset == gmtoffset &amp;&amp; t.name.include?(&quot;US&quot;)}.first<br />
    session[:time_zone] = result.name<br />
[/ruby]</p>
<p>Obviously this is pretty hardcoded to just work in the US, and isn&#8217;t a real solution.  I&#8217;d love to hear other ideas!  Part of me wonders if I should just display all times in UTC in HTML, and have some sort of client side JavaScript that localizes the time display?  </p>
<p>My full set of code:<br />
Javascript in my index.html.erb view:<br />
[javascript]<br />
  // Calls the server and sets the user&#8217;s time.<br />
  Event.observe(window, &#8216;load&#8217;, function(e) {<br />
    var now = new Date();<br />
    var gmtoffset = TimezoneDetect();<br />
    //use ajax to set the time zone here.<br />
    var set_time = new Ajax.Request(&#8216;&lt;%=url_for :controller =&gt; &quot;home&quot;, :action =&gt; &quot;gmtoffset&quot;%&gt;?gmtoffset=&#8217;+gmtoffset, {<br />
      onSuccess: function(transport) {<br />
        //alert(&quot;Response&quot; + transport.responseText);<br />
      }<br />
    });<br />
  });</p>
<p>  // http://www.michaelapproved.com/articles/daylight-saving-time-dst-detect/</p>
<p>  function TimezoneDetect(){<br />
      var dtDate = new Date(&#8217;1/1/&#8217; + (new Date()).getUTCFullYear());<br />
      var intOffset = 10000; //set initial offset high so it is adjusted on the first attempt<br />
      var intMonth;<br />
      var intHoursUtc;<br />
      var intHours;<br />
      var intDaysMultiplyBy;</p>
<p>      //go through each month to find the lowest offset to account for DST<br />
      for (intMonth=0;intMonth &lt; 12;intMonth++){<br />
          //go to the next month<br />
          dtDate.setUTCMonth(dtDate.getUTCMonth() + 1);</p>
<p>          //To ignore daylight saving time look for the lowest offset.<br />
          //Since, during DST, the clock moves forward, it&#8217;ll be a bigger number.<br />
          if (intOffset &gt; (dtDate.getTimezoneOffset() * (-1))){<br />
              intOffset = (dtDate.getTimezoneOffset() * (-1));<br />
          }<br />
      }</p>
<p>      return intOffset;<br />
  }</p>
<p>[/javascript]</p>
<p>home_controller.rb action:<br />
[ruby]<br />
  def gmtoffset<br />
    gmtoffset = params[:gmtoffset].to_i*60 if !params[:gmtoffset].nil? # notice that the javascript version of gmtoffset is in minutes <img src='http://www.opensourceconnections.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>    result = ActiveSupport::TimeZone.all.select{|t| t.utc_offset == gmtoffset &amp;&amp; t.name.include?(&quot;US&quot;)}.first<br />
    session[:time_zone] = result.name</p>
<p>    render :update do |page|<br />
      page.replace_html &#8216;time_of_chat_starting&#8217;, :partial=&gt; &#8216;super_short_time&#8217;<br />
      page.visual_effect :highlight, &#8216;time_of_chat_starting&#8217;<br />
    end<br />
  end<br />
[/ruby]</p>
<p>Rendered partial helper view _super_short_time.erb:<br />
[ruby]<br />
&lt;%= super_short_time(Time.now.in_time_zone(session[:time_zone])) %&gt;<br />
[/ruby]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.opensourceconnections.com/2010/04/21/when-talking-time-zones-bogota-eastern-time-us-canada/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>beCamp 2010 is April 30 &amp; May 1st</title>
		<link>http://www.opensourceconnections.com/2010/03/31/becamp-2010-is-april-30-may-1st/</link>
		<comments>http://www.opensourceconnections.com/2010/03/31/becamp-2010-is-april-30-may-1st/#comments</comments>
		<pubDate>Wed, 31 Mar 2010 11:51:08 +0000</pubDate>
		<dc:creator>Eric Pugh</dc:creator>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Conference]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[becamp]]></category>

		<guid isPermaLink="false">http://www.opensourceconnections.com/?p=963</guid>
		<description><![CDATA[<p style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; font-weight: inherit; font-style: inherit; font-size: 12px; font-family: inherit; vertical-align: baseline; padding: 0px; border: 0px initial initial;"><img class="alignleft size-full wp-image-964" title="becamp-badge-300w-white-2010" src="http://www.opensourceconnections.com/wp-content/uploads/2010/03/becamp-badge-300w-white-2010.png" alt="becamp-badge-300w-white-2010" width="168" height="56" />beCamp 2010 is almost here! April 30th and May 1st are just four weeks away!</p>
<p style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; font-weight: inherit; font-style: inherit; font-size: 12px; font-family: inherit; vertical-align: baseline; padding: 0px; border: 0px initial initial;">If youâ€™re a geek in or around the Charlottesville metroplex or even if youâ€™re merely tech-curious, this is the event you donâ€™t want to miss.Â <a style="font-weight: inherit; font-style: inherit; font-size: 12px; font-family: inherit; vertical-align: baseline; color: #006600; text-decoration: none; padding: 0px; margin: 0px; border: 0px initial initial;" href="http://barcamp.org/beCamp2008">beCamp</a> is Charlottesvilleâ€™s version of the BarCamp unconference phenomenonâ€”organized on the fly by attendees, for attendees. Realizing that the most energizing parts of any tech conference are the ad hoc conversations that take place in the hallways between the sessions, beCamp facilitates these types of interactions for an entire event.</p>
<p><a href="http://www.opensourceconnections.com/2010/03/31/becamp-2010-is-april-30-may-1st/" class="more-link">Read more on beCamp 2010 is April 30 &#038; May 1st&#8230;</a></p>
]]></description>
			<content:encoded><![CDATA[<p style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; font-weight: inherit; font-style: inherit; font-size: 12px; font-family: inherit; vertical-align: baseline; padding: 0px; border: 0px initial initial;"><img class="alignleft size-full wp-image-964" title="becamp-badge-300w-white-2010" src="http://www.opensourceconnections.com/wp-content/uploads/2010/03/becamp-badge-300w-white-2010.png" alt="becamp-badge-300w-white-2010" width="168" height="56" />beCamp 2010 is almost here! April 30th and May 1st are just four weeks away!</p>
<p style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; font-weight: inherit; font-style: inherit; font-size: 12px; font-family: inherit; vertical-align: baseline; padding: 0px; border: 0px initial initial;">If youâ€™re a geek in or around the Charlottesville metroplex or even if youâ€™re merely tech-curious, this is the event you donâ€™t want to miss.Â <a style="font-weight: inherit; font-style: inherit; font-size: 12px; font-family: inherit; vertical-align: baseline; color: #006600; text-decoration: none; padding: 0px; margin: 0px; border: 0px initial initial;" href="http://barcamp.org/beCamp2008">beCamp</a> is Charlottesvilleâ€™s version of the BarCamp unconference phenomenonâ€”organized on the fly by attendees, for attendees. Realizing that the most energizing parts of any tech conference are the ad hoc conversations that take place in the hallways between the sessions, beCamp facilitates these types of interactions for an entire event.</p>
<p style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; font-weight: inherit; font-style: inherit; font-size: 12px; font-family: inherit; vertical-align: baseline; padding: 0px; border: 0px initial initial;">As of this writing, we are at <a title="beCamp 2010" href="http://barcamp.org/beCamp2010" target="_blank">87 campers</a>! To participate, just add your name to the wiki page!</p>
<p style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; font-weight: inherit; font-style: inherit; font-size: 12px; font-family: inherit; vertical-align: baseline; padding: 0px; border: 0px initial initial;">A big thank you toÂ all <a href="http://barcamp.org/sponsor-beCamp-2010">our sponsors</a>, including at this point, Â Hotelicopter, Google, Perrin Quarles and Associates, NRAO, and University of Virginia ITC. Â Interested in supporting the Cville tech community? Â Check out our needs at http://barcamp.org/sponsor-beCamp-2010.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.opensourceconnections.com/2010/03/31/becamp-2010-is-april-30-may-1st/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Annotations:  What they are and why I want them</title>
		<link>http://www.opensourceconnections.com/2010/03/22/annotations-what-they-are-and-why-i-want-them/</link>
		<comments>http://www.opensourceconnections.com/2010/03/22/annotations-what-they-are-and-why-i-want-them/#comments</comments>
		<pubDate>Mon, 22 Mar 2010 21:35:00 +0000</pubDate>
		<dc:creator>Scott Stults</dc:creator>
				<category><![CDATA[software]]></category>
		<category><![CDATA[annotation]]></category>
		<category><![CDATA[semantic web]]></category>

		<guid isPermaLink="false">http://www.opensourceconnections.com/?p=936</guid>
		<description><![CDATA[Annotations are the "Don't Repeat Yourself" of Document Management.  I'd like to work this into our own processes, and this article describes my first impressions of existing (preferably free) annotation technology and how it measures up to my expectations.]]></description>
			<content:encoded><![CDATA[<h3>What they are</h3>
<p>Annotation is the process of selecting portions of an original document and adding additional information.  These additions are not necessarily saved with the original and are commonly used by editors and scholars to include background citations.  In Computer Science, annotations are used in Semantic Web and work collaboration technologies.  The Comment function in MS Word is an example of using annotations for collaboration.</p>
<h3>Business uses</h3>
<p>Aside from these functions I think that there is a whole class of business processes that could benefit from annotation technology.  For example, we often copy line items from a Request For Proposal (RFP) and paste them into our proposal.  Later, these line items may get pasted into a Product Backlog, Production Readiness Checklist, or ticketing system.</p>
<p>As a programmer, I shudder whenever I see so much copy-and-pasting.  If a block of text is important enough to be present in multiple documents, it should be extracted as its own entity and reused.  This eliminates the problem of maintaining that block in multiple places and ensures that each instance of the block is accurate.  More importantly, it helps you concentrate on adding value rather than repeating yourself (see the <a href="http://en.wikipedia.org/wiki/Don't_repeat_yourself" target="_blank">DRY principle</a>.)</p>
<h3>Categories of technologies</h3>
<p>Annotation technologies can be split into two broad categories based on where the annotations are saved:  In a server or in the document.  Annotations that are saved centrally in a server lend themselves to collaboration because multiple people can update the annotations without having to modify a master document.  On the other hand, document control may be more important than collaboration, in which case storing the annotations within the document would be more appropriate.</p>
<h3>Example technologies</h3>
<p>While Googling for what&#8217;s around the web regarding Annotations, I ran across <a href="http://ianlumb.wordpress.com/category/annotation/" target="_blank">Ian Lumb&#8217;s blog</a>. Â He&#8217;s got a number of excellent posts on the subject. Â I also found a number of different technologies listed over at <a href="http://annotation.semanticweb.org/tools/">the Semantic Web portal</a>, but the list appears to be dated (several were private projects, there were a couple broken links, and a few of the projects appear to be unmaintained.)  However, there were enough working projects there for me to get an idea of what people are doing in the field of Annotations.  The promising projects I saw there were:</p>
<ul>
<li><a href="http://www.w3.org/2001/Annotea/" target="_blank">Annotea</a></li>
<li><a href="http://annozilla.mozdev.org/index.html" target="_blank">Annozilla</a></li>
<li><a href="http://gate.ac.uk/teamware/" target="_blank">GATE Teamware</a></li>
<li><a href="http://semanticweb.org/wiki/SMW%2B" target="_blank">Semantic MediaWiki+</a></li>
<li><a href="http://www.ontotext.com/kim/" target="_blank">KIM Semantic Annotation Platform</a></li>
<li><a href="http://www.nuxeo.com/en/products/dm/features" target="_blank">Nuxeo Document Management</a></li>
</ul>
<p>Annotea is more of a protocol than software, but there were a number of client and server implementations listed (Annozilla was one of them).  The Zope server product ZAnnot was a breeze to install on top of a fresh download of Zope, and I was able to get it working with Annozilla pretty quickly.  Annozilla itself, though, needs a little TLC before I can incorporate it into a working system.</p>
<p>First of all, Annozilla hasn&#8217;t been updated in about nine months and requires FireFox 3.5 (current version is 3.6 and I reinstalled with version 3.5 just to try it out.)  Secondly, the annotations themselves are free-form and cannot be constrained or reused (such as with an ontology).  This is a well-known problem in the world of tagging content, where search-as-you-type tagging helps you avoid multiple tags that are almost but not exactly the same (such as the tags &#8220;annotations&#8221; and &#8220;annotation&#8221;.)</p>
<p>GATE (General Architecture for Text Engineering) is an amazing collection of projects centered around doing things with text.  I found only one technology in there that was relevant to annotations, and that was regarding automatic annotations (examining text and feeding annotations into Annotea.)  There were a lot of other interesting libraries in there and I hope to check them out later. Â Specifically, they announced a Teamware application would be forthcoming which would incorporate annotation technology and workflows.</p>
<p>Likewise, the KIM Semantic Annotation Platform seemed to be oriented more toward automatic annotation rather than streamlining human annotation.</p>
<p>Nuxeo Document Management is a Java-based product very similar to Alfresco. Â It has a document preview feature that shows you an HTML version of Word or PDF documents it stores, and also has an annotation module that lets you annotate that preview. Â <em>[edit: Â When I originally installed it I rushed through and misread some of the documentation. Â Stefane Fermigier, the founder of Nuxeo saw this post and corrected me, but I have yet to revisit Nuxeo. Â In theÂ interimÂ I've edited this post to remove my misinterpretations. Â Hopefully soon I'll be able to follow up with a more in-depth look at Nuxeo.]</em></p>
<p>Lastly I gave SMW+ a try. Â I&#8217;ve used Semantic MediaWiki before and I think it has great promise. Â I especially like the rich report formats that you can generate with semantic queries (like showing a SIMILE timeline as the result of a time series query.) Â There was a long list of extensions to install, but I eventually got to the point where I could copy and paste a whole RFP as a wiki page and annotate it. Â The annotation tool was AJAX-based and a little clunky, but once I was done I had a nice report of each annotation in the original document. Â It wasn&#8217;t clear how to bind an ontology to it, so I have the same complaint with it as I do with Annozilla.</p>
<h3>Parting Thoughts</h3>
<p>The kind of annotation I want to do seems possible using some of the WYSIWYG editors embedded in most blogs and CMS (like kupu or TinyMCE).  A colleague of mine noted that you could simply supply a custom CSS style that would be included in the menu of available styles, but refrain from adding any style changes to it.  So in theory any CMS which provides document preview ala Nuxeo should be able to supply an annotation editor which wouldn&#8217;t change the original.  That to me is the most promising direction.</p>
<p>If you have any experience with similar technology please let me know in the comments.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.opensourceconnections.com/2010/03/22/annotations-what-they-are-and-why-i-want-them/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The state of opensource on the Microsoft stack.</title>
		<link>http://www.opensourceconnections.com/2010/03/18/the-state-of-opensource-on-the-microsoft-stack./</link>
		<comments>http://www.opensourceconnections.com/2010/03/18/the-state-of-opensource-on-the-microsoft-stack./#comments</comments>
		<pubDate>Fri, 19 Mar 2010 04:09:22 +0000</pubDate>
		<dc:creator>Michael Herndon</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[Opinion]]></category>
		<category><![CDATA[programs]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[opensource]]></category>

		<guid isPermaLink="false">http://www.opensourceconnections.com/?p=945</guid>
		<description><![CDATA[<p>This is like the state of the union address, except in mid march, and the only thing I&#8217;m president of is my current residence.  If you have ever studied Science, you know about <a href="http://en.wikipedia.org/wiki/Potential_energy">potential energy vs kinetic</a>, Or maybe a better metaphor for the reality TV generation, is <a href="http://en.wikipedia.org/wiki/The_Swan_(TV_series)">the Swan</a>.</p>
<p><a href="http://www.opensourceconnections.com/2010/03/18/the-state-of-opensource-on-the-microsoft-stack./" class="more-link">Read more on The state of opensource on the Microsoft stack&#8230;.</a></p>
]]></description>
			<content:encoded><![CDATA[<p>This is like the state of the union address, except in mid march, and the only thing I&#8217;m president of is my current residence.  If you have ever studied Science, you know about <a href="http://en.wikipedia.org/wiki/Potential_energy">potential energy vs kinetic</a>, Or maybe a better metaphor for the reality TV generation, is <a href="http://en.wikipedia.org/wiki/The_Swan_(TV_series)">the Swan</a>.</p>
<p>Opensource software on the Microsoft stack has tons of stored potential, even some movement, but it is still left wanting.  The evil empire has embraced opensource software, releasing jQuery with Visual Studio, starting <a href="http://www.codeplex.com">codeplex.com</a> and the <a href="http://www.codeplex.org/">Codeplex Foundation</a>.</p>
<p>The are tons of abandoned projects or ones that have gone stale (<a href="http://logging.apache.org/log4net/">log4net</a> anyone?).  Compared to java or even the new kid ruby, we&#8217;re lagging behind.  We don&#8217;t even have a fully managed opensource enterprise web server, compared to Java&#8217;s n-th variety of containers to pick and use.  Even rails has a built in server.</p>
<p>Of course there is <a href="http://kayakhttp.com/">kayak http web server framework</a> and <a href="http://www.codeplex.com/webserver"> webserver on codeplex</a>, but they&#8217;re new, far from mature and their not an industry defacto standard like jboss or tomcat.</p>
<p>Don&#8217;t get me wrong there are some amazing opensource projects out there. <a href="http://www.gallio.org/">Gallio</a>, <a href="http://www.db4o.com/">db4o</a>, <a href="http://subtextproject.com/Default.aspx?AspxAutoDetectCookieSupport=1">Subtext</a>, <a href="http://blogengine.codeplex.com/">blogengine.net</a>, <a href="http://www.codeplex.com/FacebookToolkit">facebook developer toolkit</a> to name a few.</p>
<p>However, there are gaps in having a full opensource Microsoft stack. We have plenty of unit testing and mock testing libraries, but with NDoc gone, left to SandCastles release schedule, libraries left to rust like log4net wit not even .net 4.0 beta build or silverlight build.  <a href="http://confluence.public.thoughtworks.org/display/CCNET/Welcome+to+CruiseControl.NET">CruiseControl.Net</a> is in dire need of revamp and version 2, at the very least it needs some decent competition that isn&#8217;t java.  </p>
<p>With plenty of single person projects out there who just end up getting burnt out, seemingly stagnated public dialog from the likes of the <a href="http://groups.google.com/group/codeplex-foundation">code plex foundation</a>, its hard to really get developers to rally and get some much needed things done. </p>
<p>The community need some decent leaders, organizers, and some company backing.  Most software vendors and clients get a great productivity boost from these projects. It would only make sense to invest in their growth, even pool resources for joint projects. </p>
<p>Organize some hack-a-thons days with some cool prizes for work top-notch work.  Even put together a small guild of programmers, just have 20 or so companies pitch in, put their banners on a website and churn out some decent open source projects that everyone can use.  </p>
<p>.Net isn&#8217;t going away and its time the community and companies invest more into the opensource community instead of letting all that potential go to waste.     </p>
]]></content:encoded>
			<wfw:commentRss>http://www.opensourceconnections.com/2010/03/18/the-state-of-opensource-on-the-microsoft-stack./feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Things I learned Last Week Part 2</title>
		<link>http://www.opensourceconnections.com/2010/03/18/things-i-learned-last-week-part-2/</link>
		<comments>http://www.opensourceconnections.com/2010/03/18/things-i-learned-last-week-part-2/#comments</comments>
		<pubDate>Fri, 19 Mar 2010 03:08:09 +0000</pubDate>
		<dc:creator>Eric Pugh</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[solr]]></category>

		<guid isPermaLink="false">http://www.opensourceconnections.com/?p=927</guid>
		<description><![CDATA[<h3>Favicon and Rails?</h3>
<p>Want to use a favicon.ico but don&#8217;t want to put it at the root as favicon.ico? Â Then add &#60;LINK REL=&#8221;SHORTCUT ICON&#8221; href=&#8221;&#60;%=image_path(&#8216;limelight.ico&#8217;)%&#62;&#8221;&#62;. Â  The use of image_path means that you get all the goodness of Rails routing to generate a complete image path that will work. Â Even if you deploy under some sub URL, like a war file in JBoss!</p>
<p><a href="http://www.opensourceconnections.com/2010/03/18/things-i-learned-last-week-part-2/" class="more-link">Read more on Things I learned Last Week Part 2&#8230;</a></p>
]]></description>
			<content:encoded><![CDATA[<h3>Favicon and Rails?</h3>
<p>Want to use a favicon.ico but don&#8217;t want to put it at the root as favicon.ico? Â Then add &lt;LINK REL=&#8221;SHORTCUT ICON&#8221; href=&#8221;&lt;%=image_path(&#8216;limelight.ico&#8217;)%&gt;&#8221;&gt;. Â  The use of image_path means that you get all the goodness of Rails routing to generate a complete image path that will work. Â Even if you deploy under some sub URL, like a war file in JBoss!</p>
<p>Are you working with ISO-8859-1 encoded text, (more info at Â at http://www.w3schools.com/tags/ref_entities.asp).</p>
<h3>ISO 8859-1 Characters</h3>
<p>And look at the character Ã€ Â (should be a capital A with a caret on top called a grave accent). Â That will kill Solr, regardless of container deployed in, like Jetty versus Tomcat. Â But the other ways of representing this entity work great:</p>
<table style="font-family: verdana, helvetica, arial, sans-serif; font-size: 11px; border-collapse: collapse; border: 1px solid #c3c3c3;" border="1" cellspacing="0" width="100%">
<tbody>
<tr>
<td style="font-family: verdana, helvetica, arial, sans-serif; font-size: 11px; vertical-align: top; padding: 3px; border: 1px solid #c3c3c3;">&amp;#192;</td>
<td style="font-family: verdana, helvetica, arial, sans-serif; font-size: 11px; vertical-align: top; padding: 3px; border: 1px solid #c3c3c3;">&amp;Agrave;</td>
</tr>
</tbody>
</table>
<p>Of course, there is a bit of confusion on this, as supposedly if the XML document posted to Solr is UTF-8 encoded, then Solr shouldn&#8217;t have any issues. Â So, still some digging to do!</p>
<h3>Solritas and JBoss and Velocity Oh My</h3>
<p>I recently ran into a Java Classloader issue between JBoss and Solr when loading Velocity. If you are getting in the browser:</p>
<h3>TTP Status 500 &#8211; loader constraint violation: when resolving method  &#8220;org.apache.velocity.Template.merge</h3>
<p>or messages like &#8220;SEVERE: java.lang.LinkageError: loader constraint violation: when resolving method &#8220;org.apache.velocity.Template.merge&#8221; in the logs, then that means a conflict in the velocity jars. Â Oddly enough, I could not actually find a velocity.jar anywhere in my JBoss app. Â However, the fix was to copy the velocity jar from Solr into my JBoss ./lib/ directory.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.opensourceconnections.com/2010/03/18/things-i-learned-last-week-part-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Things I Learned About Last Week</title>
		<link>http://www.opensourceconnections.com/2010/03/09/vthings-i-learned-about-last-week/</link>
		<comments>http://www.opensourceconnections.com/2010/03/09/vthings-i-learned-about-last-week/#comments</comments>
		<pubDate>Wed, 10 Mar 2010 02:47:41 +0000</pubDate>
		<dc:creator>Eric Pugh</dc:creator>
				<category><![CDATA[Opinion]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[solr]]></category>
		<category><![CDATA[virtualbox]]></category>

		<guid isPermaLink="false">http://www.opensourceconnections.com/?p=922</guid>
		<description><![CDATA[<p>Last week was the crucial week on my current Lucene -&#62; Solr project for making our goals. Â A lot of work the previous couple of weeks came together. Â I wanted to take a couple of minutes and just record some of the little things that I&#8217;ve been learning about:</p>
<p><a href="http://www.opensourceconnections.com/2010/03/09/vthings-i-learned-about-last-week/" class="more-link">Read more on Things I Learned About Last Week&#8230;</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Last week was the crucial week on my current Lucene -&gt; Solr project for making our goals. Â A lot of work the previous couple of weeks came together. Â I wanted to take a couple of minutes and just record some of the little things that I&#8217;ve been learning about:</p>
<h3>Solr</h3>
<p><a href="http://github.com/outoftime/sunspot">Sunspot</a> is the up and coming solution for integrating Solr into Ruby on Rails, and fortunately enough, the 1.0 release (followed quickly by 1.0.1!) has just come out last week. Â Between acts_as_solr and Sunspot, Sunspot wins hands down for it&#8217;s support of a master/slave Solr configurations, embedded Solr for testing, richer indexing semantics, and not being tied to ActiveRecord. Â The companion <a href="http://github.com/outoftime/sunspot_rails">sunspot_rails</a> gem does give wonderful ActiveRecord integration however.</p>
<p>Solr cores are the <a href="http://www.phrases.org.uk/meanings/the-bees-knees.html">bees knees</a>! Â We&#8217;ve built a simple RoR webapp using HTTParty and the Solr API that allows you to perform all the <a href="http://wiki.apache.org/solr/CoreAdmin">admin functions for cores</a>, and allows you to quickly clone a core for your own nefarious purposes! Â Simplifies hacking around with a new schema or configuration without having a local copy of Solr running. Â Allows multiple QA environments to potentially share a single Solr infrastructure.</p>
<p>Solr master and slave setup in a single VM. Â While pointless from a scaling perspective, it&#8217;s a really great way to work out the kinks! Â It&#8217;s funny to see a slave core polling the same Solr VM its in for updated segments!</p>
<h3>JRuby</h3>
<p>Doesn&#8217;t suck after all. Â Actually, maybe I should say that JBoss, when combined with JRuby, means that JBoss doesn&#8217;t suck so much. Â I had the aforementioned Solr core admin tool bundled up as a WAR file with JRuby, and was able to deploy it to an existing environment that had JBoss installed! Â I didn&#8217;t have to install ruby on the box, (or JRuby for that matter!) Â I just deployed the WAR file and bamn, off to the races. Â Ops folks get the JBoss they love, I get the Ruby on Rails that I love.</p>
<p>And on a related note, <a href="http://kenai.com/projects/warbler/pages/Home">Warbler</a> was the key to thinking JRuby is cool. Â I&#8217;d never actually had to package up a RoR app, so Warbler came to the rescue. Â And you know what? Â It was nice to build a single file that I knew had everything that I needed in it that could be scp&#8217;ed around! Â And thanks to some cool code in the environment.rb, my app was able to load up the right configuration file for the environment based on an environmental variable set in JBoss.</p>
<h3>Virtual Machines</h3>
<p>I recently migrated a Linux VPS based RoR + Solr app (see a trend in tech choices <img src='http://www.opensourceconnections.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  ) Â to a Windows environment. Â And to deliever the new Windows environment, I used <a href="http://www.virtualbox.org/">VirtualBox</a> to host the Windows Vista environment on my Mac laptop.</p>
<p>A couple of notes:</p>
<ul>
<li>VirtualBox may not have all the snazzy integration points of Parallels with the host computer like seamless application sharing, but it seems to be much lighter weight. Â Starts up quicker, and I don&#8217;t get the spinning beach ball of death as much.</li>
<li>If you are shipping a 11 GB file, you can&#8217;t use a 16 GB USB Memory Stick&#8230; Â Turns out the biggest file is 4 GB. Â (Although I never tried formatting the stick as NTFS, maybe that would have allowed a single 11 GB file???)</li>
<li>Uploading 11 GB to a remote out on the internet server will take a long long long time. Â Even on a really fast network. connection.</li>
<li>If you need to format an external USB hard drive as NTFS on a Mac, it is possible! Â Just fire up your trusty Windows Vista image in Parallels, plug the USB drive in, download and install the correct USB drivers so the drive doesn&#8217;t show up as a network share mapped to the Mac, and then use the built in reformatting tools! Â Warning: This will take a loooong time!</li>
<li>Lastly, if you are using VirtualBox, and you attempt to create a Windows XP machine, and attach a Windows Vista hard disk image to it, VirtualBox will let you! Â And then Windows won&#8217;t start. Â sigh.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.opensourceconnections.com/2010/03/09/vthings-i-learned-about-last-week/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
